Skip to content

feat: Deprecate blob.exif and replace with sample notebook#2429

Open
shuoweil wants to merge 11 commits intomainfrom
shuowei-blob-deprecate-exif
Open

feat: Deprecate blob.exif and replace with sample notebook#2429
shuoweil wants to merge 11 commits intomainfrom
shuowei-blob-deprecate-exif

Conversation

@shuoweil
Copy link
Contributor

@shuoweil shuoweil commented Feb 4, 2026

This PR removes the deprecated blob.exif functionality from the BigFrames codebase and provides a replacement solution via sample notebook.

Changes:

  • Deprecation: Removed blob.exif method from BlobAccessor in bigframes/operations/blob.py.
  • Cleanup: Deleted the internal exif_func implementation from bigframes/blob/_functions.py.
  • Tests: Removed test_blob_exif and test_blob_exif_verbose from tests/system/large/blob/test_function.py.
  • Replacement: Added a new testcase to notebooks/multimodal/multimodal_dataframe.ipynb. This new testcase demonstrates how to achieve the same EXIF extraction functionality using a user-defined function (UDF) with BigQuery DataFrames, giving users more control and flexibility.

Migration Guide:
Users previously using df.blob.exif() can now refer to notebooks/multimodal/multimodal_dataframe.ipynb to implement a custom UDF using the pillow library for extracting metadata from images in Google Cloud Storage.

Fixes #<478952827> 🦕

GarrettWu and others added 9 commits February 3, 2026 18:59
Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/python-bigquery-dataframes/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕
…tching the backend compiler (#2417)

This change adds `bigframes.pandas.options.experiments.sql_compiler` to
allow switching the backend compiler. Currently, the default remains set
to 'legacy' (ibis), but users can now optionally switch to the
'experimental' (sqlglot) compiler.

Fixes internal issue 479912001🦕
Thank you for opening a Pull Request! Before submitting your PR, there
are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a
[bug/issue](https://github.com/googleapis/python-bigquery-dataframes/issues/new/choose)
before writing your code! That way we can discuss the change, evaluate
designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕
This should complete the dev on the client side.

Manually verified: https://screenshot.googleplex.com/jv3UfJCm75dCzwn

Related bug 406578908 🦕
This PR refines the visual feedback provided during operation progress.
Specifically, it prevents the display of a standalone "✅ Completed."
message and green checkmark when no query execution information (like
slot time or bytes processed) is available. This often occurs during
metadata-only operations or cached results where the "Completed" status
is redundant.

Fixes #<479944983> 🦕
PR created by the Librarian CLI to initialize a release. Merging this PR
will auto trigger a release.

Librarian Version: v0.7.0
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/python-librarian-generator@sha256:e7cc6823efb073a8a26e7cefdd869f12ec228abfbd2a44aa9a7eacc284023677
<details><summary>bigframes: 2.34.0</summary>

##
[2.34.0](v2.33.0...v2.34.0)
(2026-02-02)


### Features

* add `bigframes.pandas.options.experiments.sql_compiler` for switching
the backend compiler (#2417)
([7eba6ee](7eba6ee))
* add bigquery.ml.generate_embedding function (#2422)
([35f3f5e](35f3f5e))
* add bigquery.create_external_table method (#2415)
([76db295](76db295))
* add deprecation warnings for .blob accessor and read_gbq_object_table
(#2408)
([7261a4e](7261a4e))
* add bigquery.ml.generate_text function (#2403)
([5ac6810](5ac6810))


### Bug Fixes

* broken job url (#2411)
([fcb5bc1](fcb5bc1))
@shuoweil shuoweil requested a review from GarrettWu February 4, 2026 18:41
@shuoweil shuoweil self-assigned this Feb 4, 2026
@shuoweil shuoweil requested review from a team as code owners February 4, 2026 18:41
@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@product-auto-label product-auto-label bot added size: l Pull request size is large. api: bigquery Issues related to the googleapis/python-bigquery-dataframes API. samples Issues that are directly related to samples. labels Feb 4, 2026
@shuoweil shuoweil marked this pull request as draft February 4, 2026 18:51
@shuoweil shuoweil force-pushed the shuowei-blob-deprecate-exif branch from 9e8ca0f to ecc270c Compare February 4, 2026 22:57
@shuoweil shuoweil marked this pull request as ready for review February 4, 2026 23:07
@GarrettWu
Copy link
Contributor

Lets finish updating all the public docs and notebooks, then to actually deprecate the functions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: bigquery Issues related to the googleapis/python-bigquery-dataframes API. samples Issues that are directly related to samples. size: l Pull request size is large.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants