feat: Rerouted ReadRows to data client - #18198
Conversation
There was a problem hiding this comment.
Code Review
This pull request refactors the Bigtable client to delegate row reading and streaming to the underlying _table_impl data client, deprecating legacy classes like _RowMerger and several attributes on PartialRowsData. The review feedback identifies potential AttributeError risks when accessing retry.deadline directly (since google.api_core.retry.Retry typically uses _deadline internally) in table.py and unit tests, as well as when calling close() on _generator in row_data.py if the generator does not support it.
92da437 to
e435179
Compare
|
|
||
| self.rows = {} | ||
| @property | ||
| def last_scanned_row_key(self): |
There was a problem hiding this comment.
I think this property was only used in the internal method? Would it actually be called? Is it safe to just remove it?
Same question with read_method and retry, and request
There was a problem hiding this comment.
They were technically public attributes before, even though they weren't advertised. Hopefully they aren't used, but I thought the safer choice would be to raise a warning and return None when they are accessed, instead of letting the program raise an AttributeError
| :type row_key: bytes | ||
| :param row_key: The key of the row to read from. | ||
|
|
||
| :type filter_: :class:`.RowFilter` |
There was a problem hiding this comment.
Did we rewrite the RowFilter class?
There was a problem hiding this comment.
The data client originally duplicated the row_filter file, with a few small changes to some of the classes. The shim deleted the original row_filter file, and aliases in the data client classes instead (with a few patches to make sure the API is consistent)
ce411c0 to
dad8a76
Compare
caea489 to
3451e38
Compare
**Changes Made:** - Added methods to convert `Row` and `Cell` objects in the data client to `PartialRowData` and `Cell` objects in the legacy client. - Removed legacy client code related to processing `ReadRowResponse` chunks and testing `ReadRowResponse` chunks. - Removed `_update_message_request` from `RowSet` because it's no longer needed to create a `ReadRowQuery` - Rerouted `read_row` and `read_rows` to use their data client counterparts in `table.py`.
3451e38 to
498b4bc
Compare
🤖 I have created a release *beep* *boop* --- <details><summary>google-ads-admanager: 0.10.5</summary> ## [0.10.5](google-ads-admanager-v0.10.4...google-ads-admanager-v0.10.5) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-ads-datamanager: 0.9.3</summary> ## [0.9.3](google-ads-datamanager-v0.9.2...google-ads-datamanager-v0.9.3) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-analytics-data: 0.23.1</summary> ## [0.23.1](google-analytics-data-v0.23.0...google-analytics-data-v0.23.1) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-api-core: 2.38.0</summary> ## [2.38.0](google-api-core-v2.37.0...google-api-core-v2.38.0) (2026-09-17) ### Features * **core:** add request hook to enrich T4 network spans with GCP resource attributes (E) ([#18272](#18272)) ([1ca95e9](1ca95e9)) </details> <details><summary>google-apps-meet: 0.5.1</summary> ## [0.5.1](google-apps-meet-v0.5.0...google-apps-meet-v0.5.1) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-api-gateway: 1.17.0</summary> ## [1.17.0](google-cloud-api-gateway-v1.16.0...google-cloud-api-gateway-v1.17.0) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-auditmanager: 0.3.2</summary> ## [0.3.2](google-cloud-auditmanager-v0.3.1...google-cloud-auditmanager-v0.3.2) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-backupdr: 0.10.2</summary> ## [0.10.2](google-cloud-backupdr-v0.10.1...google-cloud-backupdr-v0.10.2) (2026-09-17) ### Features * **google/cloud/backupdr/v1beta:** add google-cloud-backupdr ([#18399](#18399)) ([91b7ae7](91b7ae7)) </details> <details><summary>google-cloud-bigquery: 3.45.2</summary> ## [3.45.2](google-cloud-bigquery-v3.45.1...google-cloud-bigquery-v3.45.2) (2026-09-17) ### Bug Fixes * disambiguate google-cloud-bigquery `to_dataframe` usage from `pandas-gbq` in ua. ([#18369](#18369)) ([0d7d59c](0d7d59c)) </details> <details><summary>google-cloud-bigtable: 2.46.0</summary> ## [2.46.0](google-cloud-bigtable-v2.45.0...google-cloud-bigtable-v2.46.0) (2026-09-17) ### Features * **bigtable:** Rerouted RowSet and RowRange to use ReadRows from data client ([#18196](#18196)) ([1857302](1857302)) * Rerouted ReadRows to data client ([#18198](#18198)) ([934cd2d](934cd2d)) * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) ### Bug Fixes * **bigtable:** Added rst_stream exception handling for ReadRows. ([#18197](#18197)) ([f30df60](f30df60)) </details> <details><summary>google-cloud-compute: 1.54.0</summary> ## [1.54.0](google-cloud-compute-v1.53.0...google-cloud-compute-v1.54.0) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-compute-v1beta: 0.12.6</summary> ## [0.12.6](google-cloud-compute-v1beta-v0.12.5...google-cloud-compute-v1beta-v0.12.6) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-devicestreaming: 0.5.1</summary> ## [0.5.1](google-cloud-devicestreaming-v0.5.0...google-cloud-devicestreaming-v0.5.1) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-discoveryengine: 0.20.4</summary> ## [0.20.4](google-cloud-discoveryengine-v0.20.3...google-cloud-discoveryengine-v0.20.4) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-firestore: 2.31.0</summary> ## [2.31.0](google-cloud-firestore-v2.30.0...google-cloud-firestore-v2.31.0) (2026-09-17) ### Features * **firestore:** add BSONInt32 support ([#18388](#18388)) ([136d4b9](136d4b9)) * **firestore:** add BSONMinKey and BSONMaxKey support ([#18385](#18385)) ([9a1fb24](9a1fb24)) </details> <details><summary>google-cloud-kms: 3.17.0</summary> ## [3.17.0](google-cloud-kms-v3.16.0...google-cloud-kms-v3.17.0) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-network-services: 0.10.3</summary> ## [0.10.3](google-cloud-network-services-v0.10.2...google-cloud-network-services-v0.10.3) (2026-09-17) ### Features * **google/cloud/networkservices/v1beta1:** add google-cloud-network-services ([#18398](#18398)) ([8df34ce](8df34ce)) ### Bug Fixes * empty commit to bump v1beta version ([#18411](#18411)) ([3b3cc6f](3b3cc6f)) </details> <details><summary>google-cloud-pubsub: 2.41.0</summary> ## [2.41.0](google-cloud-pubsub-v2.40.0...google-cloud-pubsub-v2.41.0) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-cloud-securesourcemanager: 0.6.2</summary> ## [0.6.2](google-cloud-securesourcemanager-v0.6.1...google-cloud-securesourcemanager-v0.6.2) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </details> <details><summary>google-maps-solar: 0.6.1</summary> ## [0.6.1](google-maps-solar-v0.6.0...google-maps-solar-v0.6.1) (2026-09-17) ### Features * update API sources and regenerate ([#18396](#18396)) ([e9f8e59](e9f8e59)) * update API sources and regenerate. ([e9f8e59](e9f8e59)) </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>
Migrating over @gkevinzheng PR from bigtable monorepo googleapis/python-bigtable#1299
Original description:
Additional Changes:
Applied some guards against removed semi-private APIs, after internal discussion:
Note to reviewers: This PR has already been reviewed and merged to a staging branch, with the intention of doing a single merge to main. We are now planning to slowly rollout these changes back to the main branch. Minimal re-review should be necessary