google-cloud-bigtable 2.40.0__tar.gz → 2.42.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. {google_cloud_bigtable-2.40.0/google_cloud_bigtable.egg-info → google_cloud_bigtable-2.42.0}/PKG-INFO +6 -3
  2. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/batcher.py +51 -9
  3. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/client.py +22 -15
  4. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/__init__.py +4 -0
  5. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/_mutate_rows.py +13 -1
  6. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/_read_rows.py +1 -1
  7. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/client.py +335 -38
  8. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/mutations_batcher.py +1 -1
  9. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_helpers.py +3 -0
  10. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_metrics/__init__.py +8 -0
  11. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_metrics/data_model.py +12 -1
  12. google_cloud_bigtable-2.42.0/google/cloud/bigtable/data/_metrics/handlers/gcp_exporter.py +334 -0
  13. google_cloud_bigtable-2.42.0/google/cloud/bigtable/data/_metrics/handlers/opentelemetry.py +251 -0
  14. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_metrics/tracked_retry.py +4 -1
  15. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_sync_autogen/_mutate_rows.py +8 -1
  16. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_sync_autogen/_read_rows.py +1 -1
  17. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_sync_autogen/client.py +253 -34
  18. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_sync_autogen/mutations_batcher.py +1 -1
  19. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/gapic_version.py +1 -1
  20. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/row_data.py +1 -1
  21. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/table.py +6 -0
  22. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin/gapic_version.py +1 -1
  23. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/__init__.py +18 -0
  24. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/gapic_version.py +1 -1
  25. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/async_client.py +1 -3
  26. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/client.py +1 -3
  27. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/transports/base.py +1 -3
  28. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/transports/rest.py +1 -2
  29. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/async_client.py +1 -3
  30. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/client.py +1 -3
  31. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/transports/base.py +1 -3
  32. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/transports/rest.py +1 -2
  33. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/table.py +4 -0
  34. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/__init__.py +19 -0
  35. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/gapic_version.py +1 -1
  36. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/async_client.py +1 -3
  37. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/client.py +1 -3
  38. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/transports/base.py +1 -3
  39. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/transports/rest.py +1 -2
  40. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/data.py +33 -0
  41. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0/google_cloud_bigtable.egg-info}/PKG-INFO +6 -3
  42. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google_cloud_bigtable.egg-info/SOURCES.txt +4 -0
  43. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google_cloud_bigtable.egg-info/requires.txt +5 -2
  44. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/setup.py +5 -2
  45. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/data/__init__.py +12 -1
  46. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/data/test_metrics_async.py +8 -7
  47. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/data/test_metrics_autogen.py +7 -7
  48. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/data/test_system_async.py +91 -11
  49. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/data/test_system_autogen.py +76 -11
  50. google_cloud_bigtable-2.42.0/tests/system/v2_client/test_data_api.py +1264 -0
  51. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test__mutate_rows.py +52 -3
  52. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test_client.py +502 -37
  53. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test_mutations_batcher.py +15 -5
  54. google_cloud_bigtable-2.42.0/tests/unit/data/_metrics/test_gcp_exporter_handler.py +445 -0
  55. google_cloud_bigtable-2.42.0/tests/unit/data/_metrics/test_opentelemetry_handler.py +404 -0
  56. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test__mutate_rows.py +46 -3
  57. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test_client.py +456 -40
  58. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test_mutations_batcher.py +12 -4
  59. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/gapic/bigtable_admin_v2/test_bigtable_instance_admin.py +48 -2
  60. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/gapic/bigtable_admin_v2/test_bigtable_table_admin.py +56 -2
  61. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/gapic/bigtable_v2/test_bigtable.py +16 -2
  62. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/_testing.py +15 -3
  63. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_batcher.py +94 -10
  64. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_client.py +144 -41
  65. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_instance.py +1 -1
  66. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_row.py +5 -3
  67. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_table.py +100 -54
  68. google_cloud_bigtable-2.40.0/tests/system/v2_client/test_data_api.py +0 -424
  69. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/LICENSE +0 -0
  70. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/MANIFEST.in +0 -0
  71. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/README.rst +0 -0
  72. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/__init__.py +0 -0
  73. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/app_profile.py +0 -0
  74. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/backup.py +0 -0
  75. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/cluster.py +0 -0
  76. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/column_family.py +0 -0
  77. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/__init__.py +0 -0
  78. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/_swappable_channel.py +0 -0
  79. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_async/metrics_interceptor.py +0 -0
  80. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_cross_sync/__init__.py +0 -0
  81. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_cross_sync/_decorators.py +0 -0
  82. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_cross_sync/_mapping_meta.py +0 -0
  83. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_cross_sync/cross_sync.py +0 -0
  84. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_metrics/handlers/_base.py +0 -0
  85. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_metrics/metrics_controller.py +0 -0
  86. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_sync_autogen/_swappable_channel.py +0 -0
  87. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/_sync_autogen/metrics_interceptor.py +0 -0
  88. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/exceptions.py +0 -0
  89. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/__init__.py +0 -0
  90. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_async/__init__.py +0 -0
  91. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_async/execute_query_iterator.py +0 -0
  92. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_byte_cursor.py +0 -0
  93. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_checksum.py +0 -0
  94. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_parameters_formatting.py +0 -0
  95. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_query_result_parsing_utils.py +0 -0
  96. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_reader.py +0 -0
  97. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/_sync_autogen/execute_query_iterator.py +0 -0
  98. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/metadata.py +0 -0
  99. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/execute_query/values.py +0 -0
  100. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/mutations.py +0 -0
  101. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/read_modify_write_rules.py +0 -0
  102. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/read_rows_query.py +0 -0
  103. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/row.py +0 -0
  104. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/data/row_filters.py +0 -0
  105. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/encryption_info.py +0 -0
  106. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/enums.py +0 -0
  107. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/error.py +0 -0
  108. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/helpers.py +0 -0
  109. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/instance.py +0 -0
  110. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/policy.py +0 -0
  111. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/py.typed +0 -0
  112. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/row.py +0 -0
  113. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/row_filters.py +0 -0
  114. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/row_merger.py +0 -0
  115. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable/row_set.py +0 -0
  116. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin/__init__.py +0 -0
  117. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin/py.typed +0 -0
  118. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/gapic_metadata.json +0 -0
  119. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/__init__.py +0 -0
  120. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/services/__init__.py +0 -0
  121. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/services/bigtable_table_admin/__init__.py +0 -0
  122. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/services/bigtable_table_admin/async_client.py +0 -0
  123. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/services/bigtable_table_admin/client.py +0 -0
  124. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/types/__init__.py +0 -0
  125. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/types/async_consistency.py +0 -0
  126. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/types/async_restore_table.py +0 -0
  127. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/types/consistency.py +0 -0
  128. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/types/restore_table.py +0 -0
  129. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/overlay/types/wait_for_consistency_request.py +0 -0
  130. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/py.typed +0 -0
  131. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/__init__.py +0 -0
  132. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/__init__.py +0 -0
  133. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/pagers.py +0 -0
  134. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/transports/__init__.py +0 -0
  135. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/transports/grpc.py +0 -0
  136. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/transports/grpc_asyncio.py +0 -0
  137. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_instance_admin/transports/rest_base.py +0 -0
  138. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/__init__.py +0 -0
  139. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/pagers.py +0 -0
  140. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/transports/__init__.py +0 -0
  141. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/transports/grpc.py +0 -0
  142. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/transports/grpc_asyncio.py +0 -0
  143. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/services/bigtable_table_admin/transports/rest_base.py +0 -0
  144. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/__init__.py +0 -0
  145. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/bigtable_instance_admin.py +0 -0
  146. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/bigtable_table_admin.py +0 -0
  147. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/common.py +0 -0
  148. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/instance.py +0 -0
  149. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/types/types.py +0 -0
  150. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/utils/__init__.py +0 -0
  151. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_admin_v2/utils/oneof_message.py +0 -0
  152. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/gapic_metadata.json +0 -0
  153. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/py.typed +0 -0
  154. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/__init__.py +0 -0
  155. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/__init__.py +0 -0
  156. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/transports/__init__.py +0 -0
  157. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/transports/grpc.py +0 -0
  158. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/transports/grpc_asyncio.py +0 -0
  159. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/services/bigtable/transports/rest_base.py +0 -0
  160. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/__init__.py +0 -0
  161. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/bigtable.py +0 -0
  162. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/feature_flags.py +0 -0
  163. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/peer_info.py +0 -0
  164. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/request_stats.py +0 -0
  165. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/response_params.py +0 -0
  166. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/session.py +0 -0
  167. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google/cloud/bigtable_v2/types/types.py +0 -0
  168. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google_cloud_bigtable.egg-info/dependency_links.txt +0 -0
  169. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google_cloud_bigtable.egg-info/not-zip-safe +0 -0
  170. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/google_cloud_bigtable.egg-info/top_level.txt +0 -0
  171. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/setup.cfg +0 -0
  172. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/__init__.py +0 -0
  173. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/__init__.py +0 -0
  174. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/admin_overlay/__init__.py +0 -0
  175. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/admin_overlay/conftest.py +0 -0
  176. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/admin_overlay/test_system_async.py +0 -0
  177. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/admin_overlay/test_system_autogen.py +0 -0
  178. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/conftest.py +0 -0
  179. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/cross_sync/test_cases/async_to_sync.yaml +0 -0
  180. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/cross_sync/test_cases/cross_sync_files.yaml +0 -0
  181. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/cross_sync/test_cases/rm_aio.yaml +0 -0
  182. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/cross_sync/test_cases/strip_async_conditional_branches.yaml +0 -0
  183. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/cross_sync/test_cases/symbol_replacer.yaml +0 -0
  184. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/cross_sync/test_cross_sync_e2e.py +0 -0
  185. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/utils.py +0 -0
  186. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/v2_client/__init__.py +0 -0
  187. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/v2_client/_helpers.py +0 -0
  188. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/v2_client/conftest.py +0 -0
  189. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/v2_client/test_instance_admin.py +0 -0
  190. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/system/v2_client/test_table_admin.py +0 -0
  191. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/__init__.py +0 -0
  192. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/my_oneof_message.py +0 -0
  193. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_admin_packaging.py +0 -0
  194. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_async_client.py +0 -0
  195. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_async_consistency.py +0 -0
  196. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_async_restore_table.py +0 -0
  197. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_client.py +0 -0
  198. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_consistency.py +0 -0
  199. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_oneof_message.py +0 -0
  200. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/admin_overlay/test_restore_table.py +0 -0
  201. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/conftest.py +0 -0
  202. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/__init__.py +0 -0
  203. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/__init__.py +0 -0
  204. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test__read_rows.py +0 -0
  205. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test__swappable_channel.py +0 -0
  206. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test_metrics_interceptor.py +0 -0
  207. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_async/test_read_rows_acceptance.py +0 -0
  208. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_cross_sync/test_cross_sync.py +0 -0
  209. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_cross_sync/test_cross_sync_decorators.py +0 -0
  210. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_metrics/__init__.py +0 -0
  211. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_metrics/test_data_model.py +0 -0
  212. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_metrics/test_metrics_controller.py +0 -0
  213. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_metrics/test_tracked_retry.py +0 -0
  214. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/__init__.py +0 -0
  215. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test__read_rows.py +0 -0
  216. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test__swappable_channel.py +0 -0
  217. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test_metrics_interceptor.py +0 -0
  218. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/_sync_autogen/test_read_rows_acceptance.py +0 -0
  219. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/__init__.py +0 -0
  220. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/_async/__init__.py +0 -0
  221. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/_async/test_query_iterator.py +0 -0
  222. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/_sync_autogen/__init__.py +0 -0
  223. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/_sync_autogen/test_query_iterator.py +0 -0
  224. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/resources/README.md +0 -0
  225. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/resources/__init__.py +0 -0
  226. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/resources/descriptors.pb +0 -0
  227. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/resources/singer.proto +0 -0
  228. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/resources/singer_pb2.py +0 -0
  229. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/sql_helpers.py +0 -0
  230. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/test_byte_cursor.py +0 -0
  231. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/test_checksum.py +0 -0
  232. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/test_execute_query_parameters_parsing.py +0 -0
  233. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/test_metadata.py +0 -0
  234. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/test_query_result_parsing_utils.py +0 -0
  235. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/execute_query/test_query_result_row_reader.py +0 -0
  236. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/read-rows-acceptance-test.json +0 -0
  237. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test__helpers.py +0 -0
  238. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_exceptions.py +0 -0
  239. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_helpers.py +0 -0
  240. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_mutations.py +0 -0
  241. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_read_modify_write_rules.py +0 -0
  242. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_read_rows_query.py +0 -0
  243. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_row.py +0 -0
  244. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_row_filters.py +0 -0
  245. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/data/test_sync_up_to_date.py +0 -0
  246. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/gapic/__init__.py +0 -0
  247. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/gapic/bigtable_admin_v2/__init__.py +0 -0
  248. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/gapic/bigtable_v2/__init__.py +0 -0
  249. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/test_packaging.py +0 -0
  250. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/test_sql_routing_parameters.py +0 -0
  251. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/__init__.py +0 -0
  252. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/read-rows-acceptance-test.json +0 -0
  253. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_app_profile.py +0 -0
  254. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_backup.py +0 -0
  255. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_cluster.py +0 -0
  256. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_column_family.py +0 -0
  257. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_encryption_info.py +0 -0
  258. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_error.py +0 -0
  259. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_policy.py +0 -0
  260. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_row_data.py +0 -0
  261. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_row_filters.py +0 -0
  262. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_row_merger.py +0 -0
  263. {google_cloud_bigtable-2.40.0 → google_cloud_bigtable-2.42.0}/tests/unit/v2_client/test_row_set.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-cloud-bigtable
3
- Version: 2.40.0
3
+ Version: 2.42.0
4
4
  Summary: Google Cloud Bigtable API client library
5
5
  Home-page: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-bigtable
6
6
  Author: Google LLC
@@ -21,15 +21,18 @@ Classifier: Operating System :: OS Independent
21
21
  Classifier: Topic :: Internet
22
22
  Requires-Python: >=3.10
23
23
  License-File: LICENSE
24
- Requires-Dist: google-api-core[grpc]<3.0.0,>=2.24.2
24
+ Requires-Dist: google-api-core[grpc]<3.0.0,>=2.25.0
25
25
  Requires-Dist: google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
26
26
  Requires-Dist: grpcio<2.0.0,>=1.59.0
27
27
  Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14"
28
28
  Requires-Dist: proto-plus<2.0.0,>=1.26.1
29
29
  Requires-Dist: protobuf<8.0.0,>=6.33.5
30
+ Requires-Dist: google-cloud-monitoring<3.0.0dev,>=2.0.0
30
31
  Requires-Dist: google-cloud-core<3.0.0,>=2.0.0
31
32
  Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.14.2
32
- Requires-Dist: google-crc32c<2.0.0dev,>=1.6.0
33
+ Requires-Dist: google-crc32c<2.0.0,>=1.6.0
34
+ Requires-Dist: opentelemetry-api<2.0.0dev,>=1.0.0
35
+ Requires-Dist: opentelemetry-sdk<2.0.0dev,>=1.0.0
33
36
  Provides-Extra: libcst
34
37
  Requires-Dist: libcst>=0.2.5; extra == "libcst"
35
38
  Dynamic: author
@@ -174,10 +174,15 @@ class MutationsBatcher(object):
174
174
  request.
175
175
 
176
176
  This class is not suited for usage in systems where each mutation
177
- must be guaranteed to be sent, since calling mutate may only result in an
178
- in-memory change. In a case of a system crash, any :class:`DirectRow` remaining in
179
- memory will not necessarily be sent to the service, even after the
180
- completion of the :func:`mutate()` method.
177
+ must be guaranteed to be sent, since calling :func:`mutate()` may only
178
+ result in an in-memory change. Rows are only sent to the service when a size
179
+ limit is reached, when :func:`flush()` is called explicitly, or when the
180
+ batcher is closed (:func:`close()` is also registered to run at interpreter
181
+ exit). There is no time-based background flush. As a result, if the process
182
+ terminates abruptly -- e.g. a crash, ``SIGKILL``, or ``os._exit`` where the
183
+ ``atexit`` handler never runs -- any :class:`DirectRow` still buffered in
184
+ memory is silently dropped and never sent, even after :func:`mutate()`
185
+ returned.
181
186
 
182
187
  Note on thread safety: The same :class:`MutationBatcher` cannot be shared by multiple end-user threads.
183
188
 
@@ -196,8 +201,9 @@ class MutationsBatcher(object):
196
201
  (5 MB).
197
202
 
198
203
  :type flush_interval: float
199
- :param flush_interval: (Optional) The interval (in seconds) between asynchronous flush.
200
- Default is 1 second.
204
+ :param flush_interval: (Deprecated) No longer used. Retained only for
205
+ backwards compatibility. There is no time-based background flush; see the
206
+ class docstring for when rows are sent.
201
207
 
202
208
  :type batch_completed_callback: Callable[list:[`~google.rpc.status_pb2.Status`]] = None
203
209
  :param batch_completed_callback: (Optional) A callable for handling responses
@@ -219,8 +225,12 @@ class MutationsBatcher(object):
219
225
  self.table = table
220
226
  self._executor = concurrent.futures.ThreadPoolExecutor()
221
227
  atexit.register(self.close)
222
- self._timer = threading.Timer(flush_interval, self.flush)
223
- self._timer.start()
228
+ # ``flush_interval`` is retained for backwards compatibility but is no
229
+ # longer used: the previous background ``threading.Timer`` was one-shot
230
+ # (never re-armed), so it fired at most once and could silently drop the
231
+ # rows it dequeued if that single flush raised on the timer thread.
232
+ # Flushing now happens only on size thresholds, explicit ``flush()``,
233
+ # or ``close()`` (also registered via ``atexit``).
224
234
  self.flow_control = _FlowControl(
225
235
  max_mutations=MAX_OUTSTANDING_ELEMENTS,
226
236
  max_mutation_bytes=MAX_OUTSTANDING_BYTES,
@@ -350,6 +360,26 @@ class MutationsBatcher(object):
350
360
  processed_rows = self.futures_mapping[future]
351
361
  self.flow_control.release(processed_rows)
352
362
  del self.futures_mapping[future]
363
+ # Surface any exception raised inside the async flush. Without this, an
364
+ # exception raised by ``_flush_rows`` (e.g. a non-retryable RPC error, a
365
+ # retry deadline, or a response-count mismatch) would be stored on the
366
+ # future and silently discarded, so the failed mutations would never be
367
+ # reported to the user -- effectively silent data loss. Per-row errors
368
+ # from a successful RPC are already recorded in ``self.exceptions`` by
369
+ # ``_flush_rows``; here the whole batch failed with a single exception,
370
+ # so record it once per row in the batch to keep the reported error
371
+ # count aligned with the number of affected mutations.
372
+ #
373
+ # A cancelled future is "done", so this callback still runs for it, but
374
+ # ``future.exception()`` would raise ``CancelledError``. Nothing here
375
+ # cancels futures today, but guard against it so the callback stays
376
+ # correct if cancellation is ever introduced.
377
+ if future.cancelled():
378
+ return
379
+ exc = future.exception()
380
+ if exc is not None:
381
+ for _ in range(processed_rows.rows_count):
382
+ self.exceptions.put(exc)
353
383
 
354
384
  def _row_fits_in_batch(self, row, batch_info):
355
385
  """Checks if a row can fit in the current batch.
@@ -405,7 +435,19 @@ class MutationsBatcher(object):
405
435
  :raises:
406
436
  * :exc:`.batcherMutationsBatchError` if there's any error in the mutations.
407
437
  """
408
- self.flush()
438
+ try:
439
+ self.flush()
440
+ except MutationsBatchError as exc:
441
+ for e in exc.exc:
442
+ self.exceptions.put(e)
443
+ except Exception as exc:
444
+ # A failure in this final synchronous flush must not abort cleanup.
445
+ # If it propagated here it would skip the executor shutdown (leaving
446
+ # in-flight async flushes un-awaited) and skip draining
447
+ # self.exceptions, masking every error already captured from
448
+ # earlier async flushes -- silently discarding those failures.
449
+ # Record it like any other batch failure and continue.
450
+ self.exceptions.put(exc)
409
451
  self._executor.shutdown(wait=True)
410
452
  atexit.unregister(self.close)
411
453
  if self.exceptions.qsize() > 0:
@@ -28,6 +28,7 @@ In the hierarchy of API concepts
28
28
  :class:`~google.cloud.bigtable.row.Row` (and all the cells in the row)
29
29
  """
30
30
 
31
+ import copy
31
32
  import os
32
33
  import warnings
33
34
 
@@ -37,7 +38,7 @@ from google.auth.credentials import AnonymousCredentials # type: ignore
37
38
  from google.cloud.client import ClientWithProject # type: ignore
38
39
  from google.cloud.environment_vars import BIGTABLE_EMULATOR # type: ignore
39
40
 
40
- from google.cloud import bigtable, bigtable_admin_v2, bigtable_v2
41
+ from google.cloud import bigtable, bigtable_admin_v2
41
42
  from google.cloud.bigtable.cluster import _CLUSTER_NAME_RE, Cluster
42
43
  from google.cloud.bigtable.instance import Instance
43
44
  from google.cloud.bigtable_admin_v2.services.bigtable_instance_admin.transports import (
@@ -47,7 +48,6 @@ from google.cloud.bigtable_admin_v2.services.bigtable_table_admin.transports imp
47
48
  BigtableTableAdminGrpcTransport,
48
49
  )
49
50
  from google.cloud.bigtable_admin_v2.types import instance
50
- from google.cloud.bigtable_v2.services.bigtable.transports import BigtableGrpcTransport
51
51
 
52
52
  INSTANCE_TYPE_PRODUCTION = instance.Instance.Type.PRODUCTION
53
53
  INSTANCE_TYPE_DEVELOPMENT = instance.Instance.Type.DEVELOPMENT
@@ -60,7 +60,6 @@ DATA_SCOPE = "https://www.googleapis.com/auth/bigtable.data"
60
60
  READ_ONLY_SCOPE = "https://www.googleapis.com/auth/bigtable.data.readonly"
61
61
  """Scope for reading table data."""
62
62
 
63
- _DEFAULT_BIGTABLE_EMULATOR_CLIENT = "google-cloud-bigtable-emulator"
64
63
  _GRPC_CHANNEL_OPTIONS = (
65
64
  ("grpc.max_send_message_length", -1),
66
65
  ("grpc.max_receive_message_length", -1),
@@ -68,6 +67,8 @@ _GRPC_CHANNEL_OPTIONS = (
68
67
  ("grpc.keepalive_timeout_ms", 10000),
69
68
  )
70
69
 
70
+ _DEFAULT_BIGTABLE_EMULATOR_CLIENT = "google-cloud-bigtable-emulator"
71
+
71
72
 
72
73
  def _create_gapic_client(client_class, client_options=None, transport=None):
73
74
  def inner(self):
@@ -284,18 +285,7 @@ class Client(ClientWithProject):
284
285
  :rtype: :class:`.bigtable_v2.BigtableClient`
285
286
  :returns: A BigtableClient object.
286
287
  """
287
- if self._table_data_client is None:
288
- transport = self._create_gapic_client_channel(
289
- bigtable_v2.BigtableClient,
290
- BigtableGrpcTransport,
291
- )
292
- klass = _create_gapic_client(
293
- bigtable_v2.BigtableClient,
294
- client_options=self._client_options,
295
- transport=transport,
296
- )
297
- self._table_data_client = klass(self)
298
- return self._table_data_client
288
+ return self._veneer_data_client._gapic_client
299
289
 
300
290
  @property
301
291
  def table_admin_client(self):
@@ -363,6 +353,23 @@ class Client(ClientWithProject):
363
353
  self._instance_admin_client = klass(self)
364
354
  return self._instance_admin_client
365
355
 
356
+ @property
357
+ def _veneer_data_client(self):
358
+ """Getter for the new Data Table API."""
359
+ if self._table_data_client is None:
360
+ from google.cloud.bigtable.data import BigtableDataClient
361
+
362
+ client_info = copy.copy(self._client_info)
363
+ client_info.client_library_version = f"{bigtable.__version__}-data-shim"
364
+ self._table_data_client = BigtableDataClient(
365
+ project=self.project,
366
+ credentials=self._credentials,
367
+ client_options=self._client_options,
368
+ _client_info=client_info,
369
+ _disable_background_refresh=True,
370
+ )
371
+ return self._table_data_client
372
+
366
373
  def instance(self, instance_id, display_name=None, instance_type=None, labels=None):
367
374
  """Factory to create a instance associated with this client.
368
375
 
@@ -19,6 +19,7 @@ from google.cloud.bigtable.data._async._read_rows import _ReadRowsOperationAsync
19
19
  from google.cloud.bigtable.data._async.client import (
20
20
  AuthorizedViewAsync,
21
21
  BigtableDataClientAsync,
22
+ MaterializedViewAsync,
22
23
  TableAsync,
23
24
  )
24
25
  from google.cloud.bigtable.data._async.mutations_batcher import MutationsBatcherAsync
@@ -33,6 +34,7 @@ from google.cloud.bigtable.data._sync_autogen._read_rows import _ReadRowsOperati
33
34
  from google.cloud.bigtable.data._sync_autogen.client import (
34
35
  AuthorizedView,
35
36
  BigtableDataClient,
37
+ MaterializedView,
36
38
  Table,
37
39
  )
38
40
  from google.cloud.bigtable.data._sync_autogen.mutations_batcher import MutationsBatcher
@@ -80,10 +82,12 @@ __all__ = (
80
82
  "BigtableDataClientAsync",
81
83
  "TableAsync",
82
84
  "AuthorizedViewAsync",
85
+ "MaterializedViewAsync",
83
86
  "MutationsBatcherAsync",
84
87
  "BigtableDataClient",
85
88
  "Table",
86
89
  "AuthorizedView",
90
+ "MaterializedView",
87
91
  "MutationsBatcher",
88
92
  "RowKeySamples",
89
93
  "ReadRowsQuery",
@@ -23,7 +23,7 @@ import google.cloud.bigtable.data.exceptions as bt_exceptions
23
23
  import google.cloud.bigtable_v2.types.bigtable as types_pb
24
24
  from google.cloud.bigtable.data._cross_sync import CrossSync
25
25
  from google.cloud.bigtable.data._helpers import _attempt_timeout_generator
26
- from google.cloud.bigtable.data._metrics import tracked_retry
26
+ from google.cloud.bigtable.data._metrics.tracked_retry import tracked_retry
27
27
 
28
28
  # mutate_rows requests are limited to this number of mutations
29
29
  from google.cloud.bigtable.data.mutations import (
@@ -214,6 +214,18 @@ class _MutateRowsOperationAsync:
214
214
  self._handle_entry_error(idx, exc)
215
215
  # bubble up exception to be handled by retry wrapper
216
216
  raise
217
+ # Any entries that were sent but never received a response entry (a
218
+ # successfully-closed but incomplete stream) must not be treated as
219
+ # successful. Record a retryable error so idempotent entries are retried
220
+ # and non-idempotent entries surface as failures instead of being
221
+ # silently dropped.
222
+ for idx in active_request_indices.values():
223
+ self._handle_entry_error(
224
+ idx,
225
+ bt_exceptions._MutateRowsIncomplete(
226
+ "no response entry received for mutation"
227
+ ),
228
+ )
217
229
  # check if attempt succeeded, or needs to be retried
218
230
  if self.remaining_indices:
219
231
  # unfinished work; raise exception to trigger retry
@@ -25,7 +25,7 @@ from google.cloud.bigtable.data._cross_sync import CrossSync
25
25
  from google.cloud.bigtable.data._helpers import (
26
26
  _attempt_timeout_generator,
27
27
  )
28
- from google.cloud.bigtable.data._metrics import tracked_retry
28
+ from google.cloud.bigtable.data._metrics.tracked_retry import tracked_retry
29
29
  from google.cloud.bigtable.data.exceptions import (
30
30
  InvalidChunk,
31
31
  _ResetRow,