Repository navigation
fix(bigquery): remove PendingDeprecationWarning from RowIterator.to_arrow - #18684
Conversation
…rrow Revert the PendingDeprecationWarning added to RowIterator.to_arrow() and _EmptyRowIterator.to_arrow() in #18021 while keeping the warning on to_dataframe(). Direct PyArrow table and record batch reads remain supported on RowIterator.
There was a problem hiding this comment.
Code Review
This pull request removes the deprecation warning for retrieving PyArrow Tables via google-cloud-bigquery, updating both the implementation and unit tests accordingly. A critical issue was identified in the unit tests where str(warning) is used on WarningMessage objects instead of str(warning.message). This would cause the test assertion to fail, and a code suggestion has been provided to resolve this.
| sport_warnings = [w for w in warned if "sport" in str(w.message)] | ||
| self.assertEqual(len(sport_warnings), 2) | ||
| self.assertEqual(len(warned), 2) | ||
| self.assertTrue(all("sport" in str(warning) for warning in warned)) |
There was a problem hiding this comment.
In Python's warnings.catch_warnings(record=True), the elements of the recorded list are warnings.WarningMessage objects, which do not override __str__ to return the warning message. Using str(warning) will return a generic object representation string (e.g., '<warnings.WarningMessage object at ...>'), causing the 'sport' in str(warning) check to fail. Please use str(warning.message) instead.
| self.assertTrue(all("sport" in str(warning) for warning in warned)) | |
| self.assertTrue(all('sport' in str(warning.message) for warning in warned)) |
🤖 I have created a release *beep* *boop* --- <details><summary>db-dtypes: 1.8.0</summary> ## [1.8.0](db-dtypes-v1.7.2...db-dtypes-v1.8.0) (2026-10-15) ### Features * **db-dtypes:** support pandas 3.1 ([#18590](#18590)) ([f18a11e](f18a11e)) </details> <details><summary>gapic-generator: 1.43.1</summary> ## [1.43.1](gapic-generator-v1.43.0...gapic-generator-v1.43.1) (2026-10-15) ### Bug Fixes * **gapic-generator:** do not emit empty routing metadata on client-streaming RPCs ([#18591](#18591)) ([bbdd643](bbdd643)) * **gapic-generator:** resolve showcase-mypy incompatible redefinition ([7032a89](7032a89)) * **gapic-generator:** resolve showcase-mypy incompatible redefinition and add canary CI job ([#18701](#18701)) ([7032a89](7032a89)) </details> <details><summary>gcp-sphinx-docfx-yaml: 3.4.0</summary> ## [3.4.0](gcp-sphinx-docfx-yaml-v3.3.3...gcp-sphinx-docfx-yaml-v3.4.0) (2026-10-15) ### Features * **gcp-sphinx-docfx-yaml:** optimize performance ([#18588](#18588)) ([cf1a0e5](cf1a0e5)) </details> <details><summary>google-cloud-alloydb: 0.11.4</summary> ## [0.11.4](google-cloud-alloydb-v0.11.3...google-cloud-alloydb-v0.11.4) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-bigquery: 3.46.2</summary> ## [3.46.2](google-cloud-bigquery-v3.46.1...google-cloud-bigquery-v3.46.2) (2026-10-15) ### Bug Fixes * **bigquery:** accept empty sourceFormat fields ([#18472](#18472)) ([590e43d](590e43d)) * **bigquery:** drop startIndex whenever a page token is sent ([#18603](#18603)) ([fc6eae3](fc6eae3)) * **bigquery:** remove PendingDeprecationWarning from RowIterator.to_arrow ([#18684](#18684)) ([9025061](9025061)) </details> <details><summary>google-cloud-bigquery-storage: 2.43.0</summary> ## [2.43.0](google-cloud-bigquery-storage-v2.42.0...google-cloud-bigquery-storage-v2.43.0) (2026-10-15) ### Features * **bigquery-storage:** add Arrow options and cancel to read_rows ([#18643](#18643)) ([939bdd0](939bdd0)) </details> <details><summary>google-cloud-bigtable: 2.50.1</summary> ## [2.50.1](google-cloud-bigtable-v2.50.0...google-cloud-bigtable-v2.50.1) (2026-10-15) ### Bug Fixes * **bigtable:** avoid hang when batcher not closed on process exit ([#18610](#18610)) ([7674c91](7674c91)) * **bigtable:** fix authentication scopes for metrics exporter ([#18609](#18609)) ([722d34e](722d34e)) </details> <details><summary>google-cloud-build: 3.41.0</summary> ## [3.41.0](google-cloud-build-v3.40.0...google-cloud-build-v3.41.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-compute: 1.56.0</summary> ## [1.56.0](google-cloud-compute-v1.55.0...google-cloud-compute-v1.56.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-compute-v1beta: 0.12.9</summary> ## [0.12.9](google-cloud-compute-v1beta-v0.12.8...google-cloud-compute-v1beta-v0.12.9) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-contact-center-insights: 1.29.0</summary> ## [1.29.0](google-cloud-contact-center-insights-v1.28.0...google-cloud-contact-center-insights-v1.29.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-dataproc: 5.32.0</summary> ## [5.32.0](google-cloud-dataproc-v5.31.0...google-cloud-dataproc-v5.32.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-datastream: 1.21.0</summary> ## [1.21.0](google-cloud-datastream-v1.20.0...google-cloud-datastream-v1.21.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-memorystore: 0.5.6</summary> ## [0.5.6](google-cloud-memorystore-v0.5.5...google-cloud-memorystore-v0.5.6) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-pubsub: 2.43.0</summary> ## [2.43.0](google-cloud-pubsub-v2.42.0...google-cloud-pubsub-v2.43.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-redis-cluster: 0.5.5</summary> ## [0.5.5](google-cloud-redis-cluster-v0.5.4...google-cloud-redis-cluster-v0.5.5) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-securitycenter: 1.48.0</summary> ## [1.48.0](google-cloud-securitycenter-v1.47.0...google-cloud-securitycenter-v1.48.0) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> <details><summary>google-cloud-storage: 3.17.1</summary> ## [3.17.1](google-cloud-storage-v3.17.0...google-cloud-storage-v3.17.1) (2026-10-15) ### Bug Fixes * **storage:** set GRPC_ALTS_MAX_CONCURRENT_HANDSHAKES=2 in benchmark runner ([#18703](#18703)) ([a9ca134](a9ca134)) </details> <details><summary>google-developer-knowledge: 0.1.5</summary> ## [0.1.5](google-developer-knowledge-v0.1.4...google-developer-knowledge-v0.1.5) (2026-10-15) ### Features * update API sources and regenerate ([#18699](#18699)) ([1aa57db](1aa57db)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Remove the
PendingDeprecationWarningfromRowIterator.to_arrow()and_EmptyRowIterator.to_arrow()that was added in #18021, while keeping thepandas-gbqdeprecation warning onto_dataframe()._TO_ARROW_DEPRECATEDand thePendingDeprecationWarninginRowIterator.to_arrow()and_EmptyRowIterator.to_arrow().self.to_arrow()inRowIterator.to_dataframe().tests/unit/test_table.pyto assertto_arrow()does not emit deprecation warnings.