google-cloud-spanner 3.67.0__tar.gz → 3.69.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.
- {google_cloud_spanner-3.67.0/google_cloud_spanner.egg-info → google_cloud_spanner-3.69.0}/PKG-INFO +13 -7
- {google_cloud_spanner-3.67.0/google/cloud/spanner_admin_instance → google_cloud_spanner-3.69.0/google/cloud/spanner}/gapic_version.py +1 -1
- {google_cloud_spanner-3.67.0/google/cloud/spanner_admin_database_v1 → google_cloud_spanner-3.69.0/google/cloud/spanner_admin_database}/gapic_version.py +1 -1
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/__init__.py +4 -4
- {google_cloud_spanner-3.67.0/google/cloud/spanner_admin_database → google_cloud_spanner-3.69.0/google/cloud/spanner_admin_database_v1}/gapic_version.py +1 -1
- {google_cloud_spanner-3.67.0/google/cloud/spanner → google_cloud_spanner-3.69.0/google/cloud/spanner_admin_instance}/gapic_version.py +1 -1
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/__init__.py +4 -4
- google_cloud_spanner-3.69.0/google/cloud/spanner_admin_instance_v1/gapic_version.py +16 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/partition_helper.py +1 -20
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/version.py +1 -1
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/streamed.py +33 -10
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_helpers.py +88 -47
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/data_types.py +6 -2
- google_cloud_spanner-3.69.0/google/cloud/spanner_v1/gapic_version.py +16 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/streamed.py +31 -12
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0/google_cloud_spanner.egg-info}/PKG-INFO +13 -7
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google_cloud_spanner.egg-info/requires.txt +13 -8
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/setup.py +20 -8
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_dbapi_partition_query.py +1 -2
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/_async/test_database_api.py +4 -1
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/_helpers.py +5 -2
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/conftest.py +5 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_client.py +3 -1
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_client_extra.py +24 -8
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_session.py +17 -6
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/conftest.py +18 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/conftest.py +8 -4
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_partition_helper.py +2 -3
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test__helpers.py +136 -5
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_client.py +3 -1
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics.py +3 -4
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_session.py +19 -4
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_spanner.py +47 -187
- google_cloud_spanner-3.67.0/google/cloud/spanner_admin_instance_v1/gapic_version.py +0 -16
- google_cloud_spanner-3.67.0/google/cloud/spanner_v1/gapic_version.py +0 -16
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/LICENSE +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/MANIFEST.in +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/README.rst +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/aio/_cross_sync/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/aio/_cross_sync/_decorators.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/aio/_cross_sync/_mapping_meta.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/aio/_cross_sync/cross_sync.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner/py.typed +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database/py.typed +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/gapic_metadata.json +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/py.typed +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/types/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/types/backup.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/types/backup_schedule.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/types/common.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance/py.typed +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/gapic_metadata.json +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/py.typed +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/types/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/types/common.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/_helpers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/batch_dml_executor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/checksum.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/client_side_statement_executor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/client_side_statement_parser.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/connection.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/cursor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/exceptions.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/parse_utils.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/parsed_statement.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/parser.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/transaction_helper.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/types.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_dbapi/utils.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/_helpers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/batch.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/database.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/database_sessions_manager.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/instance.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/pool.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/session.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/snapshot.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/testing/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/testing/database_test.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/testing/interceptors.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_async/transaction.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_opentelemetry_tracing.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/backup.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/batch.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/database.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/database_sessions_manager.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/exceptions.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/gapic_metadata.json +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/instance.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/keyset.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/merged_result_set.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/constants.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/metrics_capture.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/metrics_exporter.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/metrics_interceptor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/metrics_tracer.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/metrics/spanner_metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/param_types.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/pool.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/py.typed +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/request_id_header.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/async_client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/client.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/pagers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/transports/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/transports/base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/transports/grpc.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/transports/rest.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/services/spanner/transports/rest_base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/session.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/snapshot.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/snapshot_helpers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/table.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/database_test.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/interceptors.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/mock_database_admin.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/mock_spanner.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/spanner_database_admin_pb2_grpc.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/testing/spanner_pb2_grpc.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/transaction.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/change_stream.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/commit_response.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/keys.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/location.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/mutation.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/query_plan.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/result_set.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/spanner.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/transaction.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/types/type.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google_cloud_spanner.egg-info/SOURCES.txt +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google_cloud_spanner.egg-info/dependency_links.txt +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google_cloud_spanner.egg-info/not-zip-safe +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google_cloud_spanner.egg-info/top_level.txt +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/setup.cfg +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/_builders.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/_fixtures.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/_helpers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/mock_server_test_base.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_aborted_transaction.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_basics.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_dbapi_autocommit.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_dbapi_inline_begin.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_dbapi_isolation_level.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_request_id_header.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/mockserver_tests/test_tags.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/_async/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/_async/conftest.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/_async/pytest.ini +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/_sample_data.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_backup_api.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_database_api.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_dbapi.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_instance_api.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_metrics.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_observability_options.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_session_api.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_streaming_chunking.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/test_table_api.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/testdata/descriptors.pb +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/testdata/singer.proto +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/testdata/singer_pb2.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/utils/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/utils/clear_streaming.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/utils/populate_streaming.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/utils/scrub_instances.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/system/utils/streaming_utils.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_batch.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_database.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_database_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_helpers_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_instance_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_pool.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_sessions_manager_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_snapshot.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_streamed.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_streamed_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_transaction.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/_async/test_transaction_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/spanner_admin_database_v1/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/spanner_admin_instance_v1/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/spanner_v1/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/gapic/spanner_v1/test_spanner.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/__init__.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test__helpers.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_batch_dml_executor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_checksum.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_client_side_statement_executor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_connect.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_connection.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_cursor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_globals.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_parse_utils.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_parser.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_transaction_helper.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_types.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/spanner_dbapi/test_utils.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/streaming-read-acceptance-test.json +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test__opentelemetry_tracing.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_atomic_counter.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_backup.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_batch.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_client_context.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_database.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_database_session_manager.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_datatypes.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_decorators_extra.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_exceptions.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_instance.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_keyset.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_merged_result_set.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics_capture.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics_concurrency.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics_exporter.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics_interceptor.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics_tracer.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_packaging.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_param_types.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_pool.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_snapshot.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_spanner_metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_streamed.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_table.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/test_transaction.py +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/testdata/singer.proto +0 -0
- {google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/tests/unit/testdata/singer_pb2.py +0 -0
{google_cloud_spanner-3.67.0/google_cloud_spanner.egg-info → google_cloud_spanner-3.69.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-cloud-spanner
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.69.0
|
|
4
4
|
Summary: Google Cloud Spanner API client library
|
|
5
5
|
Home-page: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-spanner
|
|
6
6
|
Author: Google LLC
|
|
@@ -21,25 +21,31 @@ 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
|
+
Requires-Dist: google-api-core[grpc]<3.0.0,>=2.24.2
|
|
25
25
|
Requires-Dist: google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
|
|
26
26
|
Requires-Dist: google-cloud-core<3.0.0,>=2.0.0
|
|
27
27
|
Requires-Dist: grpcio<2.0.0,>=1.49.1
|
|
28
28
|
Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14"
|
|
29
|
-
Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.
|
|
30
|
-
Requires-Dist: proto-plus<2.0.0,>=1.
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist: protobuf<8.0.0,>=4.25.8
|
|
29
|
+
Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.14.2
|
|
30
|
+
Requires-Dist: proto-plus<2.0.0,>=1.26.1
|
|
31
|
+
Requires-Dist: protobuf<8.0.0,>=6.33.5
|
|
33
32
|
Requires-Dist: grpc-interceptor>=0.15.4
|
|
34
33
|
Requires-Dist: sqlparse>=0.4.4
|
|
35
34
|
Requires-Dist: opentelemetry-api>=1.22.0
|
|
36
35
|
Requires-Dist: opentelemetry-sdk>=1.22.0
|
|
37
36
|
Requires-Dist: opentelemetry-semantic-conventions>=0.43b0
|
|
38
37
|
Requires-Dist: opentelemetry-resourcedetector-gcp>=1.8.0a0
|
|
39
|
-
Requires-Dist: google-cloud-monitoring>=2.
|
|
38
|
+
Requires-Dist: google-cloud-monitoring>=2.28.0
|
|
40
39
|
Requires-Dist: mmh3>=4.1.0
|
|
41
40
|
Provides-Extra: libcst
|
|
42
41
|
Requires-Dist: libcst>=0.2.5; extra == "libcst"
|
|
42
|
+
Provides-Extra: test
|
|
43
|
+
Requires-Dist: pytest; extra == "test"
|
|
44
|
+
Requires-Dist: mock; extra == "test"
|
|
45
|
+
Requires-Dist: asyncmock; extra == "test"
|
|
46
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
47
|
+
Requires-Dist: pytest-asyncio; extra == "test"
|
|
48
|
+
Requires-Dist: pytest-xdist; extra == "test"
|
|
43
49
|
Dynamic: author
|
|
44
50
|
Dynamic: author-email
|
|
45
51
|
Dynamic: classifier
|
|
@@ -119,7 +119,7 @@ else: # pragma: NO COVER
|
|
|
119
119
|
|
|
120
120
|
def parse_version_to_tuple(version_string: str):
|
|
121
121
|
"""Safely converts a semantic version string to a comparable tuple of integers.
|
|
122
|
-
Example: "
|
|
122
|
+
Example: "6.33.5" -> (6, 33, 5)
|
|
123
123
|
Ignores non-numeric parts and handles common version formats.
|
|
124
124
|
Args:
|
|
125
125
|
version_string: Version string in the format "x.y.z" or "x.y.z<suffix>"
|
|
@@ -148,9 +148,9 @@ else: # pragma: NO COVER
|
|
|
148
148
|
return (None, "--")
|
|
149
149
|
|
|
150
150
|
_dependency_package = "google.protobuf"
|
|
151
|
-
_next_supported_version = "
|
|
152
|
-
_next_supported_version_tuple = (
|
|
153
|
-
_recommendation = " (we recommend
|
|
151
|
+
_next_supported_version = "6.33.5"
|
|
152
|
+
_next_supported_version_tuple = (6, 33, 5)
|
|
153
|
+
_recommendation = " (we recommend 7.x)"
|
|
154
154
|
(_version_used, _version_used_string) = _get_version(_dependency_package)
|
|
155
155
|
if _version_used and _version_used < _next_supported_version_tuple:
|
|
156
156
|
warnings.warn(
|
|
@@ -91,7 +91,7 @@ else: # pragma: NO COVER
|
|
|
91
91
|
|
|
92
92
|
def parse_version_to_tuple(version_string: str):
|
|
93
93
|
"""Safely converts a semantic version string to a comparable tuple of integers.
|
|
94
|
-
Example: "
|
|
94
|
+
Example: "6.33.5" -> (6, 33, 5)
|
|
95
95
|
Ignores non-numeric parts and handles common version formats.
|
|
96
96
|
Args:
|
|
97
97
|
version_string: Version string in the format "x.y.z" or "x.y.z<suffix>"
|
|
@@ -120,9 +120,9 @@ else: # pragma: NO COVER
|
|
|
120
120
|
return (None, "--")
|
|
121
121
|
|
|
122
122
|
_dependency_package = "google.protobuf"
|
|
123
|
-
_next_supported_version = "
|
|
124
|
-
_next_supported_version_tuple = (
|
|
125
|
-
_recommendation = " (we recommend
|
|
123
|
+
_next_supported_version = "6.33.5"
|
|
124
|
+
_next_supported_version_tuple = (6, 33, 5)
|
|
125
|
+
_recommendation = " (we recommend 7.x)"
|
|
126
126
|
(_version_used, _version_used_string) = _get_version(_dependency_package)
|
|
127
127
|
if _version_used and _version_used < _next_supported_version_tuple:
|
|
128
128
|
warnings.warn(
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2026 Google LLC
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
#
|
|
16
|
+
__version__ = "3.69.0" # {x-release-please-version}
|
|
@@ -90,23 +90,6 @@ def _deserialize_value(val: Any) -> Any:
|
|
|
90
90
|
return val
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
def _unpack_value_pb(value):
|
|
94
|
-
which = value.WhichOneof("kind")
|
|
95
|
-
if which == "null_value":
|
|
96
|
-
return None
|
|
97
|
-
elif which == "number_value":
|
|
98
|
-
return value.number_value
|
|
99
|
-
elif which == "string_value":
|
|
100
|
-
return value.string_value
|
|
101
|
-
elif which == "bool_value":
|
|
102
|
-
return value.bool_value
|
|
103
|
-
elif which == "struct_value":
|
|
104
|
-
return {k: _unpack_value_pb(v) for k, v in value.struct_value.fields.items()}
|
|
105
|
-
elif which == "list_value":
|
|
106
|
-
return [_unpack_value_pb(v) for v in value.list_value.values]
|
|
107
|
-
return None
|
|
108
|
-
|
|
109
|
-
|
|
110
93
|
def decode_from_string(encoded_partition_id):
|
|
111
94
|
gzip_bytes = base64.b64decode(bytes(encoded_partition_id, "utf-8"))
|
|
112
95
|
partition_id_bytes = gzip.decompress(gzip_bytes)
|
|
@@ -124,9 +107,7 @@ def decode_from_string(encoded_partition_id):
|
|
|
124
107
|
if "query" in partition_result and "params" in partition_result["query"]:
|
|
125
108
|
params_pb = partition_result["query"]["params"]
|
|
126
109
|
if params_pb:
|
|
127
|
-
partition_result["query"]["params"] =
|
|
128
|
-
k: _unpack_value_pb(v) for k, v in params_pb.fields.items()
|
|
129
|
-
}
|
|
110
|
+
partition_result["query"]["params"] = MessageToDict(params_pb)
|
|
130
111
|
|
|
131
112
|
return PartitionId(btid, partition_result)
|
|
132
113
|
|
|
@@ -129,16 +129,39 @@ class StreamedResultSet(object):
|
|
|
129
129
|
decoders = self._decoders
|
|
130
130
|
width = len(self.fields)
|
|
131
131
|
index = len(self._current_row)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
index
|
|
132
|
+
current_row = self._current_row
|
|
133
|
+
rows = self._rows
|
|
134
|
+
|
|
135
|
+
current_row_append = current_row.append
|
|
136
|
+
rows_append = rows.append
|
|
137
|
+
|
|
138
|
+
if self._lazy_decode:
|
|
139
|
+
for value in values:
|
|
140
|
+
current_row_append(value)
|
|
141
|
+
index += 1
|
|
142
|
+
if index == width:
|
|
143
|
+
rows_append(current_row)
|
|
144
|
+
current_row = []
|
|
145
|
+
current_row_append = current_row.append
|
|
146
|
+
index = 0
|
|
147
|
+
else:
|
|
148
|
+
for value in values:
|
|
149
|
+
# Note: We manually check value.HasField("null_value") here instead of
|
|
150
|
+
# wrapping every decoder in _parse_nullable to avoid the overhead of
|
|
151
|
+
# an extra Python function call layer for every cell value decoded in this loop.
|
|
152
|
+
# If the nullable check logic is updated in _parse_nullable, update this check.
|
|
153
|
+
if value.HasField("null_value"):
|
|
154
|
+
current_row_append(None)
|
|
155
|
+
else:
|
|
156
|
+
current_row_append(decoders[index](value))
|
|
157
|
+
index += 1
|
|
158
|
+
if index == width:
|
|
159
|
+
rows_append(current_row)
|
|
160
|
+
current_row = []
|
|
161
|
+
current_row_append = current_row.append
|
|
162
|
+
index = 0
|
|
163
|
+
|
|
164
|
+
self._current_row = current_row
|
|
142
165
|
|
|
143
166
|
@CrossSync.convert
|
|
144
167
|
async def _consume_next(self):
|
{google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/_helpers.py
RENAMED
|
@@ -19,6 +19,7 @@ import datetime
|
|
|
19
19
|
import decimal
|
|
20
20
|
import logging
|
|
21
21
|
import math
|
|
22
|
+
import operator
|
|
22
23
|
import threading
|
|
23
24
|
import time
|
|
24
25
|
import uuid
|
|
@@ -26,7 +27,6 @@ from contextlib import contextmanager
|
|
|
26
27
|
|
|
27
28
|
from google.api_core import datetime_helpers
|
|
28
29
|
from google.api_core.exceptions import Aborted
|
|
29
|
-
from google.cloud._helpers import _date_from_iso8601_date
|
|
30
30
|
from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper
|
|
31
31
|
from google.protobuf.message import DecodeError, Message
|
|
32
32
|
from google.protobuf.struct_pb2 import ListValue, Value
|
|
@@ -465,6 +465,12 @@ def _parse_value_pb(value_pb, field_type, field_name, column_info=None):
|
|
|
465
465
|
return _parse_nullable(value_pb, decoder)
|
|
466
466
|
|
|
467
467
|
|
|
468
|
+
_date_fromisoformat = datetime.date.fromisoformat
|
|
469
|
+
_Decimal = decimal.Decimal
|
|
470
|
+
_json_from_str = JsonObject.from_str
|
|
471
|
+
_uuid_UUID = uuid.UUID
|
|
472
|
+
|
|
473
|
+
|
|
468
474
|
def _get_type_decoder(field_type, field_name, column_info=None):
|
|
469
475
|
"""Returns a function that converts a Value protobuf to cell data.
|
|
470
476
|
|
|
@@ -489,28 +495,30 @@ def _get_type_decoder(field_type, field_name, column_info=None):
|
|
|
489
495
|
"""
|
|
490
496
|
|
|
491
497
|
type_code = field_type.code
|
|
498
|
+
# Note: STRING and BOOL use operator.attrgetter because direct attribute extraction
|
|
499
|
+
# is faster in Python. Other types require type transformation, so they use lambdas.
|
|
492
500
|
if type_code == TypeCode.STRING:
|
|
493
|
-
return
|
|
501
|
+
return operator.attrgetter("string_value")
|
|
494
502
|
elif type_code == TypeCode.BYTES:
|
|
495
|
-
return
|
|
503
|
+
return lambda value_pb: value_pb.string_value.encode("utf8")
|
|
496
504
|
elif type_code == TypeCode.BOOL:
|
|
497
|
-
return
|
|
505
|
+
return operator.attrgetter("bool_value")
|
|
498
506
|
elif type_code == TypeCode.INT64:
|
|
499
|
-
return
|
|
507
|
+
return lambda value_pb: int(value_pb.string_value)
|
|
500
508
|
elif type_code == TypeCode.FLOAT64:
|
|
501
509
|
return _parse_float
|
|
502
510
|
elif type_code == TypeCode.FLOAT32:
|
|
503
511
|
return _parse_float
|
|
504
512
|
elif type_code == TypeCode.DATE:
|
|
505
|
-
return
|
|
513
|
+
return lambda value_pb: _date_fromisoformat(value_pb.string_value)
|
|
506
514
|
elif type_code == TypeCode.TIMESTAMP:
|
|
507
515
|
return _parse_timestamp
|
|
508
516
|
elif type_code == TypeCode.NUMERIC:
|
|
509
|
-
return
|
|
517
|
+
return lambda value_pb: _Decimal(value_pb.string_value)
|
|
510
518
|
elif type_code == TypeCode.JSON:
|
|
511
|
-
return
|
|
519
|
+
return lambda value_pb: _json_from_str(value_pb.string_value)
|
|
512
520
|
elif type_code == TypeCode.UUID:
|
|
513
|
-
return
|
|
521
|
+
return lambda value_pb: _uuid_UUID(value_pb.string_value)
|
|
514
522
|
elif type_code == TypeCode.PROTO:
|
|
515
523
|
return lambda value_pb: _parse_proto(value_pb, column_info, field_name)
|
|
516
524
|
elif type_code == TypeCode.ENUM:
|
|
@@ -553,48 +561,81 @@ def _parse_list_value_pbs(rows, row_type):
|
|
|
553
561
|
return result
|
|
554
562
|
|
|
555
563
|
|
|
556
|
-
def _parse_string(value_pb) -> str:
|
|
557
|
-
return value_pb.string_value
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
def _parse_bytes(value_pb):
|
|
561
|
-
return value_pb.string_value.encode("utf8")
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
def _parse_bool(value_pb) -> bool:
|
|
565
|
-
return value_pb.bool_value
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
def _parse_int64(value_pb) -> int:
|
|
569
|
-
return int(value_pb.string_value)
|
|
570
|
-
|
|
571
|
-
|
|
572
564
|
def _parse_float(value_pb) -> float:
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
565
|
+
# Note: Storing val = value_pb.string_value and doing a truthiness check is faster
|
|
566
|
+
# than calling value_pb.HasField("string_value") because it avoids the C-extension
|
|
567
|
+
# method lookup/call overhead and accesses the attribute only once.
|
|
568
|
+
val = value_pb.string_value
|
|
569
|
+
return float(val) if val else value_pb.number_value
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
_POWERS_OF_10 = (
|
|
573
|
+
1,
|
|
574
|
+
10,
|
|
575
|
+
100,
|
|
576
|
+
1000,
|
|
577
|
+
10000,
|
|
578
|
+
100000,
|
|
579
|
+
1000000,
|
|
580
|
+
10000000,
|
|
581
|
+
100000000,
|
|
582
|
+
1000000000,
|
|
583
|
+
)
|
|
581
584
|
|
|
582
585
|
|
|
583
586
|
def _parse_timestamp(value_pb):
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
587
|
+
val = value_pb.string_value
|
|
588
|
+
try:
|
|
589
|
+
if len(val) < 20 or val[10] != "T":
|
|
590
|
+
raise ValueError()
|
|
591
|
+
no_fraction = val[:19]
|
|
592
|
+
bare = datetime.datetime.fromisoformat(no_fraction)
|
|
593
|
+
if val[19] == ".":
|
|
594
|
+
if val.endswith("Z"):
|
|
595
|
+
offset = "Z"
|
|
596
|
+
fraction = val[20:-1]
|
|
597
|
+
elif val[-6] in ("+", "-"):
|
|
598
|
+
offset = val[-6:]
|
|
599
|
+
fraction = val[20:-6]
|
|
600
|
+
else:
|
|
601
|
+
raise ValueError()
|
|
602
|
+
if not fraction or len(fraction) > 9 or not fraction.isdigit():
|
|
603
|
+
raise ValueError()
|
|
604
|
+
scale = 9 - len(fraction)
|
|
605
|
+
nanos = int(fraction) * _POWERS_OF_10[scale]
|
|
606
|
+
else:
|
|
607
|
+
nanos = 0
|
|
608
|
+
if val.endswith("Z"):
|
|
609
|
+
offset = "Z"
|
|
610
|
+
elif val[-6] in ("+", "-"):
|
|
611
|
+
offset = val[-6:]
|
|
612
|
+
else:
|
|
613
|
+
raise ValueError()
|
|
614
|
+
|
|
615
|
+
if offset != "Z":
|
|
616
|
+
sign = offset[0]
|
|
617
|
+
hours = int(offset[1:3])
|
|
618
|
+
minutes = int(offset[4:6])
|
|
619
|
+
if offset[3] != ":":
|
|
620
|
+
raise ValueError()
|
|
621
|
+
delta = datetime.timedelta(hours=hours, minutes=minutes)
|
|
622
|
+
if sign == "-":
|
|
623
|
+
delta = -delta
|
|
624
|
+
tzinfo = datetime.timezone(delta)
|
|
625
|
+
bare = bare.replace(tzinfo=tzinfo).astimezone(datetime.timezone.utc)
|
|
626
|
+
|
|
627
|
+
return datetime_helpers.DatetimeWithNanoseconds(
|
|
628
|
+
bare.year,
|
|
629
|
+
bare.month,
|
|
630
|
+
bare.day,
|
|
631
|
+
bare.hour,
|
|
632
|
+
bare.minute,
|
|
633
|
+
bare.second,
|
|
634
|
+
nanosecond=nanos,
|
|
635
|
+
tzinfo=datetime.timezone.utc,
|
|
636
|
+
)
|
|
637
|
+
except (IndexError, ValueError) as e:
|
|
638
|
+
raise ValueError("Timestamp: {} does not match pattern".format(val)) from e
|
|
598
639
|
|
|
599
640
|
|
|
600
641
|
def _parse_proto(value_pb, column_info, field_name):
|
{google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/data_types.py
RENAMED
|
@@ -99,6 +99,11 @@ class JsonObject(dict):
|
|
|
99
99
|
return json.dumps(self, sort_keys=True, separators=(",", ":"))
|
|
100
100
|
|
|
101
101
|
|
|
102
|
+
_INTERVAL_PATTERN = re.compile(
|
|
103
|
+
r"^P(-?\d+Y)?(-?\d+M)?(-?\d+D)?(T(-?\d+H)?(-?\d+M)?(-?((\d+([.,]\d{1,9})?)|([.,]\d{1,9}))S)?)?$"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
|
|
102
107
|
@dataclass
|
|
103
108
|
class Interval:
|
|
104
109
|
"""Represents a Spanner INTERVAL type.
|
|
@@ -187,8 +192,7 @@ class Interval:
|
|
|
187
192
|
@classmethod
|
|
188
193
|
def from_str(cls, s: str) -> "Interval":
|
|
189
194
|
"""Parse an ISO8601 duration format string into an Interval."""
|
|
190
|
-
|
|
191
|
-
match = re.match(pattern, s)
|
|
195
|
+
match = _INTERVAL_PATTERN.match(s)
|
|
192
196
|
if not match or len(s) == 1:
|
|
193
197
|
raise ValueError(f"Invalid interval format: {s}")
|
|
194
198
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2026 Google LLC
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
#
|
|
16
|
+
__version__ = "3.69.0" # {x-release-please-version}
|
{google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0}/google/cloud/spanner_v1/streamed.py
RENAMED
|
@@ -35,8 +35,7 @@ class StreamedResultSet(object):
|
|
|
35
35
|
instances.
|
|
36
36
|
|
|
37
37
|
:type source: :class:`~google.cloud.spanner_v1.snapshot.Snapshot`
|
|
38
|
-
:param source: Deprecated. Snapshot from which the result set was fetched.
|
|
39
|
-
"""
|
|
38
|
+
:param source: Deprecated. Snapshot from which the result set was fetched."""
|
|
40
39
|
|
|
41
40
|
def __init__(
|
|
42
41
|
self,
|
|
@@ -117,16 +116,36 @@ class StreamedResultSet(object):
|
|
|
117
116
|
decoders = self._decoders
|
|
118
117
|
width = len(self.fields)
|
|
119
118
|
index = len(self._current_row)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
119
|
+
current_row = self._current_row
|
|
120
|
+
rows = self._rows
|
|
121
|
+
current_row_append = current_row.append
|
|
122
|
+
rows_append = rows.append
|
|
123
|
+
if self._lazy_decode:
|
|
124
|
+
for value in values:
|
|
125
|
+
current_row_append(value)
|
|
126
|
+
index += 1
|
|
127
|
+
if index == width:
|
|
128
|
+
rows_append(current_row)
|
|
129
|
+
current_row = []
|
|
130
|
+
current_row_append = current_row.append
|
|
131
|
+
index = 0
|
|
132
|
+
else:
|
|
133
|
+
for value in values:
|
|
134
|
+
# Note: We manually check value.HasField("null_value") here instead of
|
|
135
|
+
# wrapping every decoder in _parse_nullable to avoid the overhead of
|
|
136
|
+
# an extra Python function call layer for every cell value decoded in this loop.
|
|
137
|
+
# If the nullable check logic is updated in _parse_nullable, update this check.
|
|
138
|
+
if value.HasField("null_value"):
|
|
139
|
+
current_row_append(None)
|
|
140
|
+
else:
|
|
141
|
+
current_row_append(decoders[index](value))
|
|
142
|
+
index += 1
|
|
143
|
+
if index == width:
|
|
144
|
+
rows_append(current_row)
|
|
145
|
+
current_row = []
|
|
146
|
+
current_row_append = current_row.append
|
|
147
|
+
index = 0
|
|
148
|
+
self._current_row = current_row
|
|
130
149
|
|
|
131
150
|
def _consume_next(self):
|
|
132
151
|
"""Consume the next partial result set from the stream.
|
{google_cloud_spanner-3.67.0 → google_cloud_spanner-3.69.0/google_cloud_spanner.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-cloud-spanner
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.69.0
|
|
4
4
|
Summary: Google Cloud Spanner API client library
|
|
5
5
|
Home-page: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-spanner
|
|
6
6
|
Author: Google LLC
|
|
@@ -21,25 +21,31 @@ 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
|
+
Requires-Dist: google-api-core[grpc]<3.0.0,>=2.24.2
|
|
25
25
|
Requires-Dist: google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
|
|
26
26
|
Requires-Dist: google-cloud-core<3.0.0,>=2.0.0
|
|
27
27
|
Requires-Dist: grpcio<2.0.0,>=1.49.1
|
|
28
28
|
Requires-Dist: grpcio<2.0.0,>=1.75.1; python_version >= "3.14"
|
|
29
|
-
Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.
|
|
30
|
-
Requires-Dist: proto-plus<2.0.0,>=1.
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist: protobuf<8.0.0,>=4.25.8
|
|
29
|
+
Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.14.2
|
|
30
|
+
Requires-Dist: proto-plus<2.0.0,>=1.26.1
|
|
31
|
+
Requires-Dist: protobuf<8.0.0,>=6.33.5
|
|
33
32
|
Requires-Dist: grpc-interceptor>=0.15.4
|
|
34
33
|
Requires-Dist: sqlparse>=0.4.4
|
|
35
34
|
Requires-Dist: opentelemetry-api>=1.22.0
|
|
36
35
|
Requires-Dist: opentelemetry-sdk>=1.22.0
|
|
37
36
|
Requires-Dist: opentelemetry-semantic-conventions>=0.43b0
|
|
38
37
|
Requires-Dist: opentelemetry-resourcedetector-gcp>=1.8.0a0
|
|
39
|
-
Requires-Dist: google-cloud-monitoring>=2.
|
|
38
|
+
Requires-Dist: google-cloud-monitoring>=2.28.0
|
|
40
39
|
Requires-Dist: mmh3>=4.1.0
|
|
41
40
|
Provides-Extra: libcst
|
|
42
41
|
Requires-Dist: libcst>=0.2.5; extra == "libcst"
|
|
42
|
+
Provides-Extra: test
|
|
43
|
+
Requires-Dist: pytest; extra == "test"
|
|
44
|
+
Requires-Dist: mock; extra == "test"
|
|
45
|
+
Requires-Dist: asyncmock; extra == "test"
|
|
46
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
47
|
+
Requires-Dist: pytest-asyncio; extra == "test"
|
|
48
|
+
Requires-Dist: pytest-xdist; extra == "test"
|
|
43
49
|
Dynamic: author
|
|
44
50
|
Dynamic: author-email
|
|
45
51
|
Dynamic: classifier
|
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
google-api-core[grpc]<3.0.0,>=2.
|
|
1
|
+
google-api-core[grpc]<3.0.0,>=2.24.2
|
|
2
2
|
google-auth!=2.24.0,!=2.25.0,<3.0.0,>=2.14.1
|
|
3
3
|
google-cloud-core<3.0.0,>=2.0.0
|
|
4
4
|
grpcio<2.0.0,>=1.49.1
|
|
5
|
-
grpc-google-iam-v1<1.0.0,>=0.
|
|
6
|
-
proto-plus<2.0.0,>=1.
|
|
7
|
-
protobuf<8.0.0,>=
|
|
5
|
+
grpc-google-iam-v1<1.0.0,>=0.14.2
|
|
6
|
+
proto-plus<2.0.0,>=1.26.1
|
|
7
|
+
protobuf<8.0.0,>=6.33.5
|
|
8
8
|
grpc-interceptor>=0.15.4
|
|
9
9
|
sqlparse>=0.4.4
|
|
10
10
|
opentelemetry-api>=1.22.0
|
|
11
11
|
opentelemetry-sdk>=1.22.0
|
|
12
12
|
opentelemetry-semantic-conventions>=0.43b0
|
|
13
13
|
opentelemetry-resourcedetector-gcp>=1.8.0a0
|
|
14
|
-
google-cloud-monitoring>=2.
|
|
14
|
+
google-cloud-monitoring>=2.28.0
|
|
15
15
|
mmh3>=4.1.0
|
|
16
16
|
|
|
17
|
-
[:python_version >= "3.13"]
|
|
18
|
-
proto-plus<2.0.0,>=1.25.0
|
|
19
|
-
|
|
20
17
|
[:python_version >= "3.14"]
|
|
21
18
|
grpcio<2.0.0,>=1.75.1
|
|
22
19
|
|
|
23
20
|
[libcst]
|
|
24
21
|
libcst>=0.2.5
|
|
22
|
+
|
|
23
|
+
[test]
|
|
24
|
+
pytest
|
|
25
|
+
mock
|
|
26
|
+
asyncmock
|
|
27
|
+
pytest-cov
|
|
28
|
+
pytest-asyncio
|
|
29
|
+
pytest-xdist
|
|
@@ -29,7 +29,10 @@ description = "Google Cloud Spanner API client library"
|
|
|
29
29
|
version = None
|
|
30
30
|
|
|
31
31
|
with open(os.path.join(package_root, "google/cloud/spanner/gapic_version.py")) as fp:
|
|
32
|
-
version_candidates = re.findall(
|
|
32
|
+
version_candidates = re.findall(
|
|
33
|
+
r"(?<=\")\d+\.\d+\.\d+[^\"\s]*(?=\")",
|
|
34
|
+
fp.read(),
|
|
35
|
+
)
|
|
33
36
|
assert len(version_candidates) == 1
|
|
34
37
|
version = version_candidates[0]
|
|
35
38
|
|
|
@@ -39,17 +42,16 @@ else:
|
|
|
39
42
|
release_status = "Development Status :: 5 - Production/Stable"
|
|
40
43
|
|
|
41
44
|
dependencies = [
|
|
42
|
-
"google-api-core[grpc] >= 2.
|
|
45
|
+
"google-api-core[grpc] >= 2.24.2, <3.0.0",
|
|
43
46
|
# Exclude incompatible versions of `google-auth`
|
|
44
47
|
# See https://github.com/googleapis/google-cloud-python/issues/12364
|
|
45
48
|
"google-auth >= 2.14.1, <3.0.0,!=2.24.0,!=2.25.0",
|
|
46
49
|
"google-cloud-core >= 2.0.0, < 3.0.0",
|
|
47
50
|
"grpcio >= 1.49.1, < 2.0.0",
|
|
48
51
|
"grpcio >= 1.75.1, < 2.0.0; python_version >= '3.14'",
|
|
49
|
-
"grpc-google-iam-v1 >= 0.
|
|
50
|
-
"proto-plus >= 1.
|
|
51
|
-
"
|
|
52
|
-
"protobuf >= 4.25.8, < 8.0.0",
|
|
52
|
+
"grpc-google-iam-v1 >= 0.14.2, <1.0.0",
|
|
53
|
+
"proto-plus >= 1.26.1, <2.0.0",
|
|
54
|
+
"protobuf >= 6.33.5, < 8.0.0",
|
|
53
55
|
"grpc-interceptor >= 0.15.4",
|
|
54
56
|
"sqlparse >= 0.4.4",
|
|
55
57
|
# Make OpenTelemetry a core dependency
|
|
@@ -57,10 +59,20 @@ dependencies = [
|
|
|
57
59
|
"opentelemetry-sdk >= 1.22.0",
|
|
58
60
|
"opentelemetry-semantic-conventions >= 0.43b0",
|
|
59
61
|
"opentelemetry-resourcedetector-gcp >= 1.8.0a0",
|
|
60
|
-
"google-cloud-monitoring >= 2.
|
|
62
|
+
"google-cloud-monitoring >= 2.28.0",
|
|
61
63
|
"mmh3 >= 4.1.0",
|
|
62
64
|
]
|
|
63
|
-
extras = {
|
|
65
|
+
extras = {
|
|
66
|
+
"libcst": "libcst >= 0.2.5",
|
|
67
|
+
"test": [
|
|
68
|
+
"pytest",
|
|
69
|
+
"mock",
|
|
70
|
+
"asyncmock",
|
|
71
|
+
"pytest-cov",
|
|
72
|
+
"pytest-asyncio",
|
|
73
|
+
"pytest-xdist",
|
|
74
|
+
],
|
|
75
|
+
}
|
|
64
76
|
|
|
65
77
|
url = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-spanner"
|
|
66
78
|
|