google-cloud-spanner 3.64.0__tar.gz → 3.65.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.65.0/MANIFEST.in +20 -0
- {google_cloud_spanner-3.64.0/google_cloud_spanner.egg-info → google_cloud_spanner-3.65.0}/PKG-INFO +154 -47
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/README.rst +151 -44
- google_cloud_spanner-3.64.0/google/cloud/spanner.py → google_cloud_spanner-3.65.0/google/cloud/spanner/__init__.py +3 -2
- {google_cloud_spanner-3.64.0/google/cloud/spanner_v1 → google_cloud_spanner-3.65.0/google/cloud/spanner}/gapic_version.py +1 -1
- google_cloud_spanner-3.65.0/google/cloud/spanner_admin_database/__init__.py +161 -0
- {google_cloud_spanner-3.64.0/google/cloud/spanner_admin_instance_v1 → google_cloud_spanner-3.65.0/google/cloud/spanner_admin_database}/gapic_version.py +1 -1
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/__init__.py +1 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/gapic_version.py +1 -1
- google_cloud_spanner-3.65.0/google/cloud/spanner_admin_database_v1/py.typed +2 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/client.py +3 -5
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/types/__init__.py +6 -1
- google_cloud_spanner-3.65.0/google/cloud/spanner_admin_instance/__init__.py +117 -0
- google_cloud_spanner-3.65.0/google/cloud/spanner_admin_instance/gapic_version.py +16 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/__init__.py +1 -0
- google_cloud_spanner-3.65.0/google/cloud/spanner_admin_instance_v1/gapic_version.py +16 -0
- google_cloud_spanner-3.65.0/google/cloud/spanner_admin_instance_v1/py.typed +2 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py +3 -5
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py +12 -15
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/types/__init__.py +5 -1
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/version.py +1 -1
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/__init__.py +1 -3
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/client.py +2 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_helpers.py +11 -5
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/client.py +2 -0
- google_cloud_spanner-3.65.0/google/cloud/spanner_v1/gapic_version.py +16 -0
- google_cloud_spanner-3.65.0/google/cloud/spanner_v1/py.typed +2 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/async_client.py +6 -2
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/client.py +3 -5
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/transports/grpc.py +1 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/__init__.py +30 -7
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0/google_cloud_spanner.egg-info}/PKG-INFO +154 -47
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google_cloud_spanner.egg-info/SOURCES.txt +9 -1
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google_cloud_spanner.egg-info/requires.txt +1 -1
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/setup.py +12 -13
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/_async/conftest.py +4 -1
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py +9 -12
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py +9 -12
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/spanner_v1/test_spanner.py +9 -12
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test__helpers.py +53 -0
- google_cloud_spanner-3.64.0/MANIFEST.in +0 -25
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/LICENSE +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/aio/_cross_sync/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/aio/_cross_sync/_decorators.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/aio/_cross_sync/_mapping_meta.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/aio/_cross_sync/cross_sync.py +0 -0
- {google_cloud_spanner-3.64.0/google/cloud/spanner_v1 → google_cloud_spanner-3.65.0/google/cloud/spanner}/py.typed +0 -0
- {google_cloud_spanner-3.64.0/google/cloud/spanner_admin_database_v1 → google_cloud_spanner-3.65.0/google/cloud/spanner_admin_database}/py.typed +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/gapic_metadata.json +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest_base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/types/backup.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/types/backup_schedule.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/types/common.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py +0 -0
- {google_cloud_spanner-3.64.0/google/cloud/spanner_admin_instance_v1 → google_cloud_spanner-3.65.0/google/cloud/spanner_admin_instance}/py.typed +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/gapic_metadata.json +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest_base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/types/common.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/_helpers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/batch_dml_executor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/checksum.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/client_side_statement_executor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/client_side_statement_parser.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/connection.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/cursor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/exceptions.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/parse_utils.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/parsed_statement.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/parser.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/partition_helper.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/transaction_helper.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/types.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_dbapi/utils.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/_helpers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/batch.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/database.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/database_sessions_manager.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/instance.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/pool.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/session.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/snapshot.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/streamed.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/testing/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/testing/database_test.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/testing/interceptors.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_async/transaction.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/_opentelemetry_tracing.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/backup.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/batch.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/data_types.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/database.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/database_sessions_manager.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/exceptions.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/gapic_metadata.json +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/instance.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/keyset.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/merged_result_set.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/constants.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/metrics_capture.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/metrics_exporter.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/metrics_interceptor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/metrics_tracer.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/metrics/spanner_metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/param_types.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/pool.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/request_id_header.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/pagers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/transports/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/transports/base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/transports/rest.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/services/spanner/transports/rest_base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/session.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/snapshot.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/snapshot_helpers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/streamed.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/table.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/database_test.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/interceptors.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/mock_database_admin.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/mock_spanner.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/spanner_database_admin_pb2_grpc.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/testing/spanner_pb2_grpc.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/transaction.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/change_stream.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/commit_response.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/keys.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/location.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/mutation.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/query_plan.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/result_set.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/spanner.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/transaction.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google/cloud/spanner_v1/types/type.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google_cloud_spanner.egg-info/dependency_links.txt +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google_cloud_spanner.egg-info/not-zip-safe +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/google_cloud_spanner.egg-info/top_level.txt +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/setup.cfg +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/_builders.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/_fixtures.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/_helpers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/mock_server_test_base.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_aborted_transaction.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_basics.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_dbapi_autocommit.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_dbapi_inline_begin.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_dbapi_isolation_level.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_request_id_header.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/mockserver_tests/test_tags.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/_async/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/_async/pytest.ini +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/_async/test_database_api.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/_helpers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/_sample_data.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/conftest.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_backup_api.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_database_api.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_dbapi.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_instance_api.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_metrics.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_observability_options.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_session_api.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_streaming_chunking.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/test_table_api.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/testdata/descriptors.pb +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/testdata/singer.proto +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/testdata/singer_pb2.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/utils/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/utils/clear_streaming.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/utils/populate_streaming.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/utils/scrub_instances.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/system/utils/streaming_utils.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_batch.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_client.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_client_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_database.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_database_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_helpers_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_instance_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_pool.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_session.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_sessions_manager_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_snapshot.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_streamed.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_streamed_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_transaction.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/_async/test_transaction_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/conftest.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/conftest.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/spanner_admin_database_v1/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/spanner_admin_instance_v1/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/gapic/spanner_v1/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/__init__.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test__helpers.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_batch_dml_executor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_checksum.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_client_side_statement_executor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_connect.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_connection.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_cursor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_globals.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_parse_utils.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_parser.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_transaction_helper.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_types.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/spanner_dbapi/test_utils.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/streaming-read-acceptance-test.json +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test__opentelemetry_tracing.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_atomic_counter.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_backup.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_batch.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_client.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_client_context.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_database.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_database_session_manager.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_datatypes.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_decorators_extra.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_exceptions.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_instance.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_keyset.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_merged_result_set.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics_capture.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics_concurrency.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics_exporter.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics_interceptor.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics_tracer.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_packaging.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_param_types.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_pool.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_session.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_snapshot.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_spanner.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_spanner_metrics_tracer_factory.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_streamed.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_table.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/test_transaction.py +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/testdata/singer.proto +0 -0
- {google_cloud_spanner-3.64.0 → google_cloud_spanner-3.65.0}/tests/unit/testdata/singer_pb2.py +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2025 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
|
+
include README.rst LICENSE
|
|
17
|
+
recursive-include google *.py *.pyi *.json *.proto py.typed
|
|
18
|
+
recursive-include tests *
|
|
19
|
+
global-exclude *.py[co]
|
|
20
|
+
global-exclude __pycache__
|
{google_cloud_spanner-3.64.0/google_cloud_spanner.egg-info → google_cloud_spanner-3.65.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.65.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
|
|
@@ -12,15 +12,15 @@ Classifier: Intended Audience :: Developers
|
|
|
12
12
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
13
|
Classifier: Programming Language :: Python
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.14
|
|
21
21
|
Classifier: Operating System :: OS Independent
|
|
22
22
|
Classifier: Topic :: Internet
|
|
23
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
24
|
License-File: LICENSE
|
|
25
25
|
Requires-Dist: google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.0
|
|
26
26
|
Requires-Dist: google-cloud-core<3.0.0,>=1.4.4
|
|
@@ -28,7 +28,7 @@ Requires-Dist: grpc-google-iam-v1<1.0.0,>=0.12.4
|
|
|
28
28
|
Requires-Dist: proto-plus<2.0.0,>=1.22.0
|
|
29
29
|
Requires-Dist: sqlparse>=0.4.4
|
|
30
30
|
Requires-Dist: proto-plus<2.0.0,>=1.22.2; python_version >= "3.11"
|
|
31
|
-
Requires-Dist: protobuf
|
|
31
|
+
Requires-Dist: protobuf<8.0.0,>=4.25.8
|
|
32
32
|
Requires-Dist: grpc-interceptor>=0.15.4
|
|
33
33
|
Requires-Dist: opentelemetry-api>=1.22.0
|
|
34
34
|
Requires-Dist: opentelemetry-sdk>=1.22.0
|
|
@@ -54,29 +54,28 @@ Dynamic: summary
|
|
|
54
54
|
Python Client for Cloud Spanner
|
|
55
55
|
===============================
|
|
56
56
|
|
|
57
|
-
|
|
|
57
|
+
|stable| |pypi| |versions|
|
|
58
58
|
|
|
59
|
-
`Cloud Spanner`_ is the world's first fully managed relational database service
|
|
60
|
-
to offer both strong consistency and horizontal scalability for
|
|
61
|
-
mission-critical online transaction processing (OLTP) applications. With Cloud
|
|
62
|
-
Spanner you enjoy all the traditional benefits of a relational database; but
|
|
63
|
-
unlike any other relational database service, Cloud Spanner scales horizontally
|
|
64
|
-
to hundreds or thousands of servers to handle the biggest transactional
|
|
59
|
+
`Cloud Spanner`_: is the world's first fully managed relational database service
|
|
60
|
+
to offer both strong consistency and horizontal scalability for
|
|
61
|
+
mission-critical online transaction processing (OLTP) applications. With Cloud
|
|
62
|
+
Spanner you enjoy all the traditional benefits of a relational database; but
|
|
63
|
+
unlike any other relational database service, Cloud Spanner scales horizontally
|
|
64
|
+
to hundreds or thousands of servers to handle the biggest transactional
|
|
65
65
|
workloads.
|
|
66
66
|
|
|
67
|
-
|
|
68
67
|
- `Client Library Documentation`_
|
|
69
68
|
- `Product Documentation`_
|
|
70
69
|
|
|
71
|
-
.. |
|
|
72
|
-
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#
|
|
70
|
+
.. |stable| image:: https://img.shields.io/badge/support-stable-gold.svg
|
|
71
|
+
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#stability-levels
|
|
73
72
|
.. |pypi| image:: https://img.shields.io/pypi/v/google-cloud-spanner.svg
|
|
74
73
|
:target: https://pypi.org/project/google-cloud-spanner/
|
|
75
74
|
.. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-spanner.svg
|
|
76
75
|
:target: https://pypi.org/project/google-cloud-spanner/
|
|
77
|
-
.. _Cloud Spanner: https://cloud.google.com/spanner/
|
|
78
|
-
.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/spanner/latest
|
|
79
|
-
.. _Product Documentation: https://cloud.google.com/spanner/docs
|
|
76
|
+
.. _Cloud Spanner: https://cloud.google.com/spanner/docs/
|
|
77
|
+
.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/spanner/latest/summary_overview
|
|
78
|
+
.. _Product Documentation: https://cloud.google.com/spanner/docs/
|
|
80
79
|
|
|
81
80
|
Quick Start
|
|
82
81
|
-----------
|
|
@@ -85,49 +84,64 @@ In order to use this library, you first need to go through the following steps:
|
|
|
85
84
|
|
|
86
85
|
1. `Select or create a Cloud Platform project.`_
|
|
87
86
|
2. `Enable billing for your project.`_
|
|
88
|
-
3. `Enable the
|
|
89
|
-
4. `
|
|
87
|
+
3. `Enable the Cloud Spanner.`_
|
|
88
|
+
4. `Set up Authentication.`_
|
|
90
89
|
|
|
91
90
|
.. _Select or create a Cloud Platform project.: https://console.cloud.google.com/project
|
|
92
91
|
.. _Enable billing for your project.: https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project
|
|
93
|
-
.. _Enable the
|
|
94
|
-
..
|
|
92
|
+
.. _Enable the Cloud Spanner.: https://cloud.google.com/spanner/docs/
|
|
93
|
+
.. _Set up Authentication.: https://googleapis.dev/python/google-api-core/latest/auth.html
|
|
95
94
|
|
|
96
95
|
Installation
|
|
97
96
|
~~~~~~~~~~~~
|
|
98
97
|
|
|
99
|
-
Install this library in a `
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
Install this library in a virtual environment using `venv`_. `venv`_ is a tool that
|
|
99
|
+
creates isolated Python environments. These isolated environments can have separate
|
|
100
|
+
versions of Python packages, which allows you to isolate one project's dependencies
|
|
101
|
+
from the dependencies of other projects.
|
|
102
102
|
|
|
103
|
-
With `
|
|
103
|
+
With `venv`_, it's possible to install this library without needing system
|
|
104
104
|
install permissions, and without clashing with the installed system
|
|
105
105
|
dependencies.
|
|
106
106
|
|
|
107
|
-
.. _`
|
|
107
|
+
.. _`venv`: https://docs.python.org/3/library/venv.html
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Code samples and snippets
|
|
111
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
112
|
+
|
|
113
|
+
Code samples and snippets live in the `samples/`_ folder.
|
|
114
|
+
|
|
115
|
+
.. _samples/: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-spanner/samples
|
|
108
116
|
|
|
109
117
|
|
|
110
118
|
Supported Python Versions
|
|
111
119
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
112
|
-
|
|
120
|
+
Our client libraries are compatible with all current `active`_ and `maintenance`_ versions of
|
|
121
|
+
Python.
|
|
113
122
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
Python
|
|
120
|
-
|
|
123
|
+
Python >= 3.9, including 3.14
|
|
124
|
+
|
|
125
|
+
.. _active: https://devguide.python.org/devcycle/#in-development-main-branch
|
|
126
|
+
.. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches
|
|
127
|
+
|
|
128
|
+
Unsupported Python Versions
|
|
129
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
130
|
+
Python <= 3.8
|
|
131
|
+
|
|
132
|
+
If you are using an `end-of-life`_
|
|
133
|
+
version of Python, we recommend that you update as soon as possible to an actively supported version.
|
|
134
|
+
|
|
135
|
+
.. _end-of-life: https://devguide.python.org/devcycle/#end-of-life-branches
|
|
121
136
|
|
|
122
137
|
Mac/Linux
|
|
123
138
|
^^^^^^^^^
|
|
124
139
|
|
|
125
140
|
.. code-block:: console
|
|
126
141
|
|
|
127
|
-
|
|
128
|
-
virtualenv <your-env>
|
|
142
|
+
python3 -m venv <your-env>
|
|
129
143
|
source <your-env>/bin/activate
|
|
130
|
-
|
|
144
|
+
pip install google-cloud-spanner
|
|
131
145
|
|
|
132
146
|
|
|
133
147
|
Windows
|
|
@@ -135,10 +149,9 @@ Windows
|
|
|
135
149
|
|
|
136
150
|
.. code-block:: console
|
|
137
151
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
<your-env>\Scripts\pip.exe install google-cloud-spanner
|
|
152
|
+
py -m venv <your-env>
|
|
153
|
+
.\<your-env>\Scripts\activate
|
|
154
|
+
pip install google-cloud-spanner
|
|
142
155
|
|
|
143
156
|
|
|
144
157
|
Example Usage
|
|
@@ -244,7 +257,7 @@ To add one or more records to a table, use ``insert``:
|
|
|
244
257
|
'citizens',
|
|
245
258
|
columns=['email', 'first_name', 'last_name', 'age'],
|
|
246
259
|
values=[
|
|
247
|
-
['phred@
|
|
260
|
+
['phred@example.com', 'Phred', 'Phlyntstone', 32],
|
|
248
261
|
['bharney@example.com', 'Bharney', 'Rhubble', 31],
|
|
249
262
|
],
|
|
250
263
|
)
|
|
@@ -283,7 +296,7 @@ if any of the records does not already exist.
|
|
|
283
296
|
'citizens',
|
|
284
297
|
columns=['email', 'age'],
|
|
285
298
|
values=[
|
|
286
|
-
['phred@
|
|
299
|
+
['phred@example.com', 33],
|
|
287
300
|
['bharney@example.com', 32],
|
|
288
301
|
],
|
|
289
302
|
)
|
|
@@ -324,7 +337,101 @@ Auto-retry of aborted transactions is enabled only for ``!autocommit`` mode, as
|
|
|
324
337
|
Next Steps
|
|
325
338
|
~~~~~~~~~~
|
|
326
339
|
|
|
327
|
-
-
|
|
328
|
-
|
|
329
|
-
-
|
|
330
|
-
|
|
340
|
+
- Read the `Client Library Documentation`_ for Cloud Spanner
|
|
341
|
+
to see other available methods on the client.
|
|
342
|
+
- Read the `Cloud Spanner Product documentation`_ to learn
|
|
343
|
+
more about the product and see How-to Guides.
|
|
344
|
+
- View this `README`_ to see the full list of Cloud
|
|
345
|
+
APIs that we cover.
|
|
346
|
+
|
|
347
|
+
.. _Cloud Spanner Product documentation: https://cloud.google.com/spanner/docs/
|
|
348
|
+
.. _README: https://github.com/googleapis/google-cloud-python/blob/main/README.rst
|
|
349
|
+
|
|
350
|
+
Logging
|
|
351
|
+
-------
|
|
352
|
+
|
|
353
|
+
This library uses the standard Python :code:`logging` functionality to log some RPC events that could be of interest for debugging and monitoring purposes.
|
|
354
|
+
Note the following:
|
|
355
|
+
|
|
356
|
+
#. Logs may contain sensitive information. Take care to **restrict access to the logs** if they are saved, whether it be on local storage or on Google Cloud Logging.
|
|
357
|
+
#. Google may refine the occurrence, level, and content of various log messages in this library without flagging such changes as breaking. **Do not depend on immutability of the logging events**.
|
|
358
|
+
#. By default, the logging events from this library are not handled. You must **explicitly configure log handling** using one of the mechanisms below.
|
|
359
|
+
|
|
360
|
+
Simple, environment-based configuration
|
|
361
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
362
|
+
|
|
363
|
+
To enable logging for this library without any changes in your code, set the :code:`GOOGLE_SDK_PYTHON_LOGGING_SCOPE` environment variable to a valid Google
|
|
364
|
+
logging scope. This configures handling of logging events (at level :code:`logging.DEBUG` or higher) from this library in a default manner, emitting the logged
|
|
365
|
+
messages in a structured format. It does not currently allow customizing the logging levels captured nor the handlers, formatters, etc. used for any logging
|
|
366
|
+
event.
|
|
367
|
+
|
|
368
|
+
A logging scope is a period-separated namespace that begins with :code:`google`, identifying the Python module or package to log.
|
|
369
|
+
|
|
370
|
+
- Valid logging scopes: :code:`google`, :code:`google.cloud.asset.v1`, :code:`google.api`, :code:`google.auth`, etc.
|
|
371
|
+
- Invalid logging scopes: :code:`foo`, :code:`123`, etc.
|
|
372
|
+
|
|
373
|
+
**NOTE**: If the logging scope is invalid, the library does not set up any logging handlers.
|
|
374
|
+
|
|
375
|
+
Environment-Based Examples
|
|
376
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
377
|
+
|
|
378
|
+
- Enabling the default handler for all Google-based loggers
|
|
379
|
+
|
|
380
|
+
.. code-block:: console
|
|
381
|
+
|
|
382
|
+
export GOOGLE_SDK_PYTHON_LOGGING_SCOPE=google
|
|
383
|
+
|
|
384
|
+
- Enabling the default handler for a specific Google module (for a client library called :code:`library_v1`):
|
|
385
|
+
|
|
386
|
+
.. code-block:: console
|
|
387
|
+
|
|
388
|
+
export GOOGLE_SDK_PYTHON_LOGGING_SCOPE=google.cloud.library_v1
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
Advanced, code-based configuration
|
|
392
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
393
|
+
|
|
394
|
+
You can also configure a valid logging scope using Python's standard `logging` mechanism.
|
|
395
|
+
|
|
396
|
+
Code-Based Examples
|
|
397
|
+
^^^^^^^^^^^^^^^^^^^
|
|
398
|
+
|
|
399
|
+
- Configuring a handler for all Google-based loggers
|
|
400
|
+
|
|
401
|
+
.. code-block:: python
|
|
402
|
+
|
|
403
|
+
import logging
|
|
404
|
+
|
|
405
|
+
from google.cloud import library_v1
|
|
406
|
+
|
|
407
|
+
base_logger = logging.getLogger("google")
|
|
408
|
+
base_logger.addHandler(logging.StreamHandler())
|
|
409
|
+
base_logger.setLevel(logging.DEBUG)
|
|
410
|
+
|
|
411
|
+
- Configuring a handler for a specific Google module (for a client library called :code:`library_v1`):
|
|
412
|
+
|
|
413
|
+
.. code-block:: python
|
|
414
|
+
|
|
415
|
+
import logging
|
|
416
|
+
|
|
417
|
+
from google.cloud import library_v1
|
|
418
|
+
|
|
419
|
+
base_logger = logging.getLogger("google.cloud.library_v1")
|
|
420
|
+
base_logger.addHandler(logging.StreamHandler())
|
|
421
|
+
base_logger.setLevel(logging.DEBUG)
|
|
422
|
+
|
|
423
|
+
Logging details
|
|
424
|
+
~~~~~~~~~~~~~~~
|
|
425
|
+
|
|
426
|
+
#. Regardless of which of the mechanisms above you use to configure logging for this library, by default logging events are not propagated up to the root
|
|
427
|
+
logger from the `google`-level logger. If you need the events to be propagated to the root logger, you must explicitly set
|
|
428
|
+
:code:`logging.getLogger("google").propagate = True` in your code.
|
|
429
|
+
#. You can mix the different logging configurations above for different Google modules. For example, you may want use a code-based logging configuration for
|
|
430
|
+
one library, but decide you need to also set up environment-based logging configuration for another library.
|
|
431
|
+
|
|
432
|
+
#. If you attempt to use both code-based and environment-based configuration for the same module, the environment-based configuration will be ineffectual
|
|
433
|
+
if the code -based configuration gets applied first.
|
|
434
|
+
|
|
435
|
+
#. The Google-specific logging configurations (default handlers for environment-based configuration; not propagating logging events to the root logger) get
|
|
436
|
+
executed the first time *any* client library is instantiated in your application, and only if the affected loggers have not been previously configured.
|
|
437
|
+
(This is the reason for 2.i. above.)
|
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
Python Client for Cloud Spanner
|
|
2
2
|
===============================
|
|
3
3
|
|
|
4
|
-
|
|
|
5
|
-
|
|
6
|
-
`Cloud Spanner`_ is the world's first fully managed relational database service
|
|
7
|
-
to offer both strong consistency and horizontal scalability for
|
|
8
|
-
mission-critical online transaction processing (OLTP) applications. With Cloud
|
|
9
|
-
Spanner you enjoy all the traditional benefits of a relational database; but
|
|
10
|
-
unlike any other relational database service, Cloud Spanner scales horizontally
|
|
11
|
-
to hundreds or thousands of servers to handle the biggest transactional
|
|
4
|
+
|stable| |pypi| |versions|
|
|
5
|
+
|
|
6
|
+
`Cloud Spanner`_: is the world's first fully managed relational database service
|
|
7
|
+
to offer both strong consistency and horizontal scalability for
|
|
8
|
+
mission-critical online transaction processing (OLTP) applications. With Cloud
|
|
9
|
+
Spanner you enjoy all the traditional benefits of a relational database; but
|
|
10
|
+
unlike any other relational database service, Cloud Spanner scales horizontally
|
|
11
|
+
to hundreds or thousands of servers to handle the biggest transactional
|
|
12
12
|
workloads.
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
- `Client Library Documentation`_
|
|
16
15
|
- `Product Documentation`_
|
|
17
16
|
|
|
18
|
-
.. |
|
|
19
|
-
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#
|
|
17
|
+
.. |stable| image:: https://img.shields.io/badge/support-stable-gold.svg
|
|
18
|
+
:target: https://github.com/googleapis/google-cloud-python/blob/main/README.rst#stability-levels
|
|
20
19
|
.. |pypi| image:: https://img.shields.io/pypi/v/google-cloud-spanner.svg
|
|
21
20
|
:target: https://pypi.org/project/google-cloud-spanner/
|
|
22
21
|
.. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-spanner.svg
|
|
23
22
|
:target: https://pypi.org/project/google-cloud-spanner/
|
|
24
|
-
.. _Cloud Spanner: https://cloud.google.com/spanner/
|
|
25
|
-
.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/spanner/latest
|
|
26
|
-
.. _Product Documentation: https://cloud.google.com/spanner/docs
|
|
23
|
+
.. _Cloud Spanner: https://cloud.google.com/spanner/docs/
|
|
24
|
+
.. _Client Library Documentation: https://cloud.google.com/python/docs/reference/spanner/latest/summary_overview
|
|
25
|
+
.. _Product Documentation: https://cloud.google.com/spanner/docs/
|
|
27
26
|
|
|
28
27
|
Quick Start
|
|
29
28
|
-----------
|
|
@@ -32,49 +31,64 @@ In order to use this library, you first need to go through the following steps:
|
|
|
32
31
|
|
|
33
32
|
1. `Select or create a Cloud Platform project.`_
|
|
34
33
|
2. `Enable billing for your project.`_
|
|
35
|
-
3. `Enable the
|
|
36
|
-
4. `
|
|
34
|
+
3. `Enable the Cloud Spanner.`_
|
|
35
|
+
4. `Set up Authentication.`_
|
|
37
36
|
|
|
38
37
|
.. _Select or create a Cloud Platform project.: https://console.cloud.google.com/project
|
|
39
38
|
.. _Enable billing for your project.: https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project
|
|
40
|
-
.. _Enable the
|
|
41
|
-
..
|
|
39
|
+
.. _Enable the Cloud Spanner.: https://cloud.google.com/spanner/docs/
|
|
40
|
+
.. _Set up Authentication.: https://googleapis.dev/python/google-api-core/latest/auth.html
|
|
42
41
|
|
|
43
42
|
Installation
|
|
44
43
|
~~~~~~~~~~~~
|
|
45
44
|
|
|
46
|
-
Install this library in a `
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
Install this library in a virtual environment using `venv`_. `venv`_ is a tool that
|
|
46
|
+
creates isolated Python environments. These isolated environments can have separate
|
|
47
|
+
versions of Python packages, which allows you to isolate one project's dependencies
|
|
48
|
+
from the dependencies of other projects.
|
|
49
49
|
|
|
50
|
-
With `
|
|
50
|
+
With `venv`_, it's possible to install this library without needing system
|
|
51
51
|
install permissions, and without clashing with the installed system
|
|
52
52
|
dependencies.
|
|
53
53
|
|
|
54
|
-
.. _`
|
|
54
|
+
.. _`venv`: https://docs.python.org/3/library/venv.html
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
Code samples and snippets
|
|
58
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
59
|
+
|
|
60
|
+
Code samples and snippets live in the `samples/`_ folder.
|
|
61
|
+
|
|
62
|
+
.. _samples/: https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-spanner/samples
|
|
55
63
|
|
|
56
64
|
|
|
57
65
|
Supported Python Versions
|
|
58
66
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
59
|
-
|
|
67
|
+
Our client libraries are compatible with all current `active`_ and `maintenance`_ versions of
|
|
68
|
+
Python.
|
|
60
69
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
Python
|
|
67
|
-
|
|
70
|
+
Python >= 3.9, including 3.14
|
|
71
|
+
|
|
72
|
+
.. _active: https://devguide.python.org/devcycle/#in-development-main-branch
|
|
73
|
+
.. _maintenance: https://devguide.python.org/devcycle/#maintenance-branches
|
|
74
|
+
|
|
75
|
+
Unsupported Python Versions
|
|
76
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
77
|
+
Python <= 3.8
|
|
78
|
+
|
|
79
|
+
If you are using an `end-of-life`_
|
|
80
|
+
version of Python, we recommend that you update as soon as possible to an actively supported version.
|
|
81
|
+
|
|
82
|
+
.. _end-of-life: https://devguide.python.org/devcycle/#end-of-life-branches
|
|
68
83
|
|
|
69
84
|
Mac/Linux
|
|
70
85
|
^^^^^^^^^
|
|
71
86
|
|
|
72
87
|
.. code-block:: console
|
|
73
88
|
|
|
74
|
-
|
|
75
|
-
virtualenv <your-env>
|
|
89
|
+
python3 -m venv <your-env>
|
|
76
90
|
source <your-env>/bin/activate
|
|
77
|
-
|
|
91
|
+
pip install google-cloud-spanner
|
|
78
92
|
|
|
79
93
|
|
|
80
94
|
Windows
|
|
@@ -82,10 +96,9 @@ Windows
|
|
|
82
96
|
|
|
83
97
|
.. code-block:: console
|
|
84
98
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
<your-env>\Scripts\pip.exe install google-cloud-spanner
|
|
99
|
+
py -m venv <your-env>
|
|
100
|
+
.\<your-env>\Scripts\activate
|
|
101
|
+
pip install google-cloud-spanner
|
|
89
102
|
|
|
90
103
|
|
|
91
104
|
Example Usage
|
|
@@ -191,7 +204,7 @@ To add one or more records to a table, use ``insert``:
|
|
|
191
204
|
'citizens',
|
|
192
205
|
columns=['email', 'first_name', 'last_name', 'age'],
|
|
193
206
|
values=[
|
|
194
|
-
['phred@
|
|
207
|
+
['phred@example.com', 'Phred', 'Phlyntstone', 32],
|
|
195
208
|
['bharney@example.com', 'Bharney', 'Rhubble', 31],
|
|
196
209
|
],
|
|
197
210
|
)
|
|
@@ -230,7 +243,7 @@ if any of the records does not already exist.
|
|
|
230
243
|
'citizens',
|
|
231
244
|
columns=['email', 'age'],
|
|
232
245
|
values=[
|
|
233
|
-
['phred@
|
|
246
|
+
['phred@example.com', 33],
|
|
234
247
|
['bharney@example.com', 32],
|
|
235
248
|
],
|
|
236
249
|
)
|
|
@@ -271,7 +284,101 @@ Auto-retry of aborted transactions is enabled only for ``!autocommit`` mode, as
|
|
|
271
284
|
Next Steps
|
|
272
285
|
~~~~~~~~~~
|
|
273
286
|
|
|
274
|
-
-
|
|
275
|
-
|
|
276
|
-
-
|
|
277
|
-
|
|
287
|
+
- Read the `Client Library Documentation`_ for Cloud Spanner
|
|
288
|
+
to see other available methods on the client.
|
|
289
|
+
- Read the `Cloud Spanner Product documentation`_ to learn
|
|
290
|
+
more about the product and see How-to Guides.
|
|
291
|
+
- View this `README`_ to see the full list of Cloud
|
|
292
|
+
APIs that we cover.
|
|
293
|
+
|
|
294
|
+
.. _Cloud Spanner Product documentation: https://cloud.google.com/spanner/docs/
|
|
295
|
+
.. _README: https://github.com/googleapis/google-cloud-python/blob/main/README.rst
|
|
296
|
+
|
|
297
|
+
Logging
|
|
298
|
+
-------
|
|
299
|
+
|
|
300
|
+
This library uses the standard Python :code:`logging` functionality to log some RPC events that could be of interest for debugging and monitoring purposes.
|
|
301
|
+
Note the following:
|
|
302
|
+
|
|
303
|
+
#. Logs may contain sensitive information. Take care to **restrict access to the logs** if they are saved, whether it be on local storage or on Google Cloud Logging.
|
|
304
|
+
#. Google may refine the occurrence, level, and content of various log messages in this library without flagging such changes as breaking. **Do not depend on immutability of the logging events**.
|
|
305
|
+
#. By default, the logging events from this library are not handled. You must **explicitly configure log handling** using one of the mechanisms below.
|
|
306
|
+
|
|
307
|
+
Simple, environment-based configuration
|
|
308
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
309
|
+
|
|
310
|
+
To enable logging for this library without any changes in your code, set the :code:`GOOGLE_SDK_PYTHON_LOGGING_SCOPE` environment variable to a valid Google
|
|
311
|
+
logging scope. This configures handling of logging events (at level :code:`logging.DEBUG` or higher) from this library in a default manner, emitting the logged
|
|
312
|
+
messages in a structured format. It does not currently allow customizing the logging levels captured nor the handlers, formatters, etc. used for any logging
|
|
313
|
+
event.
|
|
314
|
+
|
|
315
|
+
A logging scope is a period-separated namespace that begins with :code:`google`, identifying the Python module or package to log.
|
|
316
|
+
|
|
317
|
+
- Valid logging scopes: :code:`google`, :code:`google.cloud.asset.v1`, :code:`google.api`, :code:`google.auth`, etc.
|
|
318
|
+
- Invalid logging scopes: :code:`foo`, :code:`123`, etc.
|
|
319
|
+
|
|
320
|
+
**NOTE**: If the logging scope is invalid, the library does not set up any logging handlers.
|
|
321
|
+
|
|
322
|
+
Environment-Based Examples
|
|
323
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
324
|
+
|
|
325
|
+
- Enabling the default handler for all Google-based loggers
|
|
326
|
+
|
|
327
|
+
.. code-block:: console
|
|
328
|
+
|
|
329
|
+
export GOOGLE_SDK_PYTHON_LOGGING_SCOPE=google
|
|
330
|
+
|
|
331
|
+
- Enabling the default handler for a specific Google module (for a client library called :code:`library_v1`):
|
|
332
|
+
|
|
333
|
+
.. code-block:: console
|
|
334
|
+
|
|
335
|
+
export GOOGLE_SDK_PYTHON_LOGGING_SCOPE=google.cloud.library_v1
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
Advanced, code-based configuration
|
|
339
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
340
|
+
|
|
341
|
+
You can also configure a valid logging scope using Python's standard `logging` mechanism.
|
|
342
|
+
|
|
343
|
+
Code-Based Examples
|
|
344
|
+
^^^^^^^^^^^^^^^^^^^
|
|
345
|
+
|
|
346
|
+
- Configuring a handler for all Google-based loggers
|
|
347
|
+
|
|
348
|
+
.. code-block:: python
|
|
349
|
+
|
|
350
|
+
import logging
|
|
351
|
+
|
|
352
|
+
from google.cloud import library_v1
|
|
353
|
+
|
|
354
|
+
base_logger = logging.getLogger("google")
|
|
355
|
+
base_logger.addHandler(logging.StreamHandler())
|
|
356
|
+
base_logger.setLevel(logging.DEBUG)
|
|
357
|
+
|
|
358
|
+
- Configuring a handler for a specific Google module (for a client library called :code:`library_v1`):
|
|
359
|
+
|
|
360
|
+
.. code-block:: python
|
|
361
|
+
|
|
362
|
+
import logging
|
|
363
|
+
|
|
364
|
+
from google.cloud import library_v1
|
|
365
|
+
|
|
366
|
+
base_logger = logging.getLogger("google.cloud.library_v1")
|
|
367
|
+
base_logger.addHandler(logging.StreamHandler())
|
|
368
|
+
base_logger.setLevel(logging.DEBUG)
|
|
369
|
+
|
|
370
|
+
Logging details
|
|
371
|
+
~~~~~~~~~~~~~~~
|
|
372
|
+
|
|
373
|
+
#. Regardless of which of the mechanisms above you use to configure logging for this library, by default logging events are not propagated up to the root
|
|
374
|
+
logger from the `google`-level logger. If you need the events to be propagated to the root logger, you must explicitly set
|
|
375
|
+
:code:`logging.getLogger("google").propagate = True` in your code.
|
|
376
|
+
#. You can mix the different logging configurations above for different Google modules. For example, you may want use a code-based logging configuration for
|
|
377
|
+
one library, but decide you need to also set up environment-based logging configuration for another library.
|
|
378
|
+
|
|
379
|
+
#. If you attempt to use both code-based and environment-based configuration for the same module, the environment-based configuration will be ineffectual
|
|
380
|
+
if the code -based configuration gets applied first.
|
|
381
|
+
|
|
382
|
+
#. The Google-specific logging configurations (default handlers for environment-based configuration; not propagating logging events to the root logger) get
|
|
383
|
+
executed the first time *any* client library is instantiated in your application, and only if the affected loggers have not been previously configured.
|
|
384
|
+
(This is the reason for 2.i. above.)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Copyright 2025 Google LLC
|
|
2
3
|
#
|
|
3
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
5
|
# you may not use this file except in compliance with the License.
|
|
@@ -11,7 +12,7 @@
|
|
|
11
12
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
13
|
# See the License for the specific language governing permissions and
|
|
13
14
|
# limitations under the License.
|
|
14
|
-
|
|
15
|
+
#
|
|
15
16
|
from __future__ import absolute_import
|
|
16
17
|
|
|
17
18
|
from google.cloud.spanner_v1 import (
|