google-cloud-spanner 3.43.0__tar.gz → 3.45.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.43.0/google_cloud_spanner.egg-info → google-cloud-spanner-3.45.0}/PKG-INFO +1 -2
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/gapic_version.py +1 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/gapic_version.py +1 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/_helpers.py +2 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/connection.py +4 -4
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/parse_utils.py +5 -2
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/types.py +1 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/_helpers.py +41 -3
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/gapic_version.py +1 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/param_types.py +2 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/streamed.py +1 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0/google_cloud_spanner.egg-info}/PKG-INFO +1 -2
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google_cloud_spanner.egg-info/requires.txt +0 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/setup.py +0 -1
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/_sample_data.py +3 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_session_api.py +53 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test__helpers.py +65 -5
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_param_types.py +26 -10
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/LICENSE +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/MANIFEST.in +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/README.rst +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/gapic_metadata.json +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/py.typed +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/async_client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/pagers.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/base.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/grpc_asyncio.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/services/database_admin/transports/rest.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/types/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/types/backup.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/types/common.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_database_v1/types/spanner_database_admin.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/gapic_metadata.json +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/py.typed +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/async_client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/pagers.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/base.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/grpc_asyncio.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/services/instance_admin/transports/rest.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/types/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/types/common.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_admin_instance_v1/types/spanner_instance_admin.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/batch_dml_executor.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/checksum.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/client_side_statement_executor.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/client_side_statement_parser.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/cursor.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/exceptions.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/parsed_statement.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/parser.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/partition_helper.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/transaction_helper.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/utils.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/version.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/_opentelemetry_tracing.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/backup.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/batch.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/data_types.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/database.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/gapic_metadata.json +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/instance.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/keyset.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/merged_result_set.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/pool.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/py.typed +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/async_client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/pagers.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/transports/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/transports/base.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/transports/grpc.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/transports/grpc_asyncio.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/services/spanner/transports/rest.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/session.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/snapshot.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/table.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/testing/database_test.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/testing/interceptors.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/transaction.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/commit_response.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/keys.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/mutation.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/query_plan.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/result_set.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/spanner.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/transaction.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/type.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google_cloud_spanner.egg-info/SOURCES.txt +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google_cloud_spanner.egg-info/dependency_links.txt +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google_cloud_spanner.egg-info/not-zip-safe +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google_cloud_spanner.egg-info/top_level.txt +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/setup.cfg +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/_fixtures.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/_helpers.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/_helpers.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/conftest.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_backup_api.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_database_api.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_dbapi.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_instance_api.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_streaming_chunking.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_table_api.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/clear_streaming.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/populate_streaming.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/scrub_instances.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/streaming_utils.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_admin_database_v1/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_admin_database_v1/test_database_admin.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_admin_instance_v1/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_admin_instance_v1/test_instance_admin.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_v1/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_v1/test_spanner.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/__init__.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test__helpers.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_batch_dml_executor.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_checksum.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_connect.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_connection.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_cursor.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_globals.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_parse_utils.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_parser.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_transaction_helper.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_types.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_utils.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/streaming-read-acceptance-test.json +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test__opentelemetry_tracing.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_backup.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_batch.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_client.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_database.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_instance.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_keyset.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_packaging.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_pool.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_session.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_snapshot.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_spanner.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_streamed.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_table.py +0 -0
- {google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/test_transaction.py +0 -0
{google-cloud-spanner-3.43.0/google_cloud_spanner.egg-info → google-cloud-spanner-3.45.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: google-cloud-spanner
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.45.0
|
|
4
4
|
Summary: Google Cloud Spanner API client library
|
|
5
5
|
Home-page: https://github.com/googleapis/python-spanner
|
|
6
6
|
Author: Google LLC
|
|
@@ -29,7 +29,6 @@ Requires-Dist: proto-plus<2.0.0dev,>=1.22.0
|
|
|
29
29
|
Requires-Dist: sqlparse>=0.4.4
|
|
30
30
|
Requires-Dist: proto-plus<2.0.0dev,>=1.22.2; python_version >= "3.11"
|
|
31
31
|
Requires-Dist: protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5
|
|
32
|
-
Requires-Dist: deprecated>=1.2.14
|
|
33
32
|
Requires-Dist: grpc-interceptor>=0.15.4
|
|
34
33
|
Provides-Extra: tracing
|
|
35
34
|
Requires-Dist: opentelemetry-api>=1.1.0; extra == "tracing"
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/_helpers.py
RENAMED
|
@@ -24,7 +24,7 @@ WHERE table_catalog = '' AND table_schema = @table_schema
|
|
|
24
24
|
SQL_GET_TABLE_COLUMN_SCHEMA = """
|
|
25
25
|
SELECT COLUMN_NAME, IS_NULLABLE, SPANNER_TYPE
|
|
26
26
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
27
|
-
WHERE TABLE_SCHEMA = @
|
|
27
|
+
WHERE TABLE_SCHEMA = @schema_name AND TABLE_NAME = @table_name
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
# This table maps spanner_types to Spanner's data type sizes as per
|
|
@@ -40,6 +40,7 @@ CODE_TO_DISPLAY_SIZE = {
|
|
|
40
40
|
param_types.BOOL.code: 1,
|
|
41
41
|
param_types.DATE.code: 4,
|
|
42
42
|
param_types.FLOAT64.code: 8,
|
|
43
|
+
param_types.FLOAT32.code: 4,
|
|
43
44
|
param_types.INT64.code: 8,
|
|
44
45
|
param_types.TIMESTAMP.code: 12,
|
|
45
46
|
}
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/connection.py
RENAMED
|
@@ -31,7 +31,6 @@ from google.cloud.spanner_dbapi.transaction_helper import TransactionRetryHelper
|
|
|
31
31
|
from google.cloud.spanner_dbapi.cursor import Cursor
|
|
32
32
|
from google.cloud.spanner_v1 import RequestOptions
|
|
33
33
|
from google.cloud.spanner_v1.snapshot import Snapshot
|
|
34
|
-
from deprecated import deprecated
|
|
35
34
|
|
|
36
35
|
from google.cloud.spanner_dbapi.exceptions import (
|
|
37
36
|
InterfaceError,
|
|
@@ -187,10 +186,11 @@ class Connection:
|
|
|
187
186
|
return self._autocommit_dml_mode
|
|
188
187
|
|
|
189
188
|
@property
|
|
190
|
-
@deprecated(
|
|
191
|
-
reason="This method is deprecated. Use _spanner_transaction_started field"
|
|
192
|
-
)
|
|
193
189
|
def inside_transaction(self):
|
|
190
|
+
warnings.warn(
|
|
191
|
+
"This method is deprecated. Use _spanner_transaction_started field",
|
|
192
|
+
DeprecationWarning,
|
|
193
|
+
)
|
|
194
194
|
return (
|
|
195
195
|
self._transaction
|
|
196
196
|
and not self._transaction.committed
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
import datetime
|
|
18
18
|
import decimal
|
|
19
19
|
import re
|
|
20
|
+
import warnings
|
|
20
21
|
|
|
21
22
|
import sqlparse
|
|
22
23
|
from google.cloud import spanner_v1 as spanner
|
|
23
24
|
from google.cloud.spanner_v1 import JsonObject
|
|
24
25
|
from . import client_side_statement_parser
|
|
25
|
-
from deprecated import deprecated
|
|
26
26
|
|
|
27
27
|
from .exceptions import Error
|
|
28
28
|
from .parsed_statement import ParsedStatement, StatementType, Statement
|
|
@@ -179,7 +179,6 @@ RE_VALUES_PYFORMAT = re.compile(
|
|
|
179
179
|
RE_PYFORMAT = re.compile(r"(%s|%\([^\(\)]+\)s)+", re.DOTALL)
|
|
180
180
|
|
|
181
181
|
|
|
182
|
-
@deprecated(reason="This method is deprecated. Use _classify_stmt method")
|
|
183
182
|
def classify_stmt(query):
|
|
184
183
|
"""Determine SQL query type.
|
|
185
184
|
:type query: str
|
|
@@ -187,6 +186,10 @@ def classify_stmt(query):
|
|
|
187
186
|
:rtype: str
|
|
188
187
|
:returns: The query type name.
|
|
189
188
|
"""
|
|
189
|
+
warnings.warn(
|
|
190
|
+
"This method is deprecated. Use _classify_stmt method", DeprecationWarning
|
|
191
|
+
)
|
|
192
|
+
|
|
190
193
|
# sqlparse will strip Cloud Spanner comments,
|
|
191
194
|
# still, special commenting styles, like
|
|
192
195
|
# PostgreSQL dollar quoted comments are not
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/types.py
RENAMED
|
@@ -73,7 +73,7 @@ Binary = b64encode
|
|
|
73
73
|
|
|
74
74
|
STRING = "STRING"
|
|
75
75
|
BINARY = _DBAPITypeObject("TYPE_CODE_UNSPECIFIED", "BYTES", "ARRAY", "STRUCT")
|
|
76
|
-
NUMBER = _DBAPITypeObject("BOOL", "INT64", "FLOAT64", "NUMERIC")
|
|
76
|
+
NUMBER = _DBAPITypeObject("BOOL", "INT64", "FLOAT64", "FLOAT32", "NUMERIC")
|
|
77
77
|
DATETIME = _DBAPITypeObject("TIMESTAMP", "DATE")
|
|
78
78
|
ROWID = "STRING"
|
|
79
79
|
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/_helpers.py
RENAMED
|
@@ -24,7 +24,6 @@ from google.protobuf.struct_pb2 import Value
|
|
|
24
24
|
|
|
25
25
|
from google.api_core import datetime_helpers
|
|
26
26
|
from google.cloud._helpers import _date_from_iso8601_date
|
|
27
|
-
from google.cloud._helpers import _datetime_to_rfc3339
|
|
28
27
|
from google.cloud.spanner_v1 import TypeCode
|
|
29
28
|
from google.cloud.spanner_v1 import ExecuteSqlRequest
|
|
30
29
|
from google.cloud.spanner_v1 import JsonObject
|
|
@@ -122,6 +121,40 @@ def _assert_numeric_precision_and_scale(value):
|
|
|
122
121
|
raise ValueError(NUMERIC_MAX_PRECISION_ERR_MSG.format(precision + scale))
|
|
123
122
|
|
|
124
123
|
|
|
124
|
+
def _datetime_to_rfc3339(value):
|
|
125
|
+
"""Format the provided datatime in the RFC 3339 format.
|
|
126
|
+
|
|
127
|
+
:type value: datetime.datetime
|
|
128
|
+
:param value: value to format
|
|
129
|
+
|
|
130
|
+
:rtype: str
|
|
131
|
+
:returns: RFC 3339 formatted datetime string
|
|
132
|
+
"""
|
|
133
|
+
# Convert to UTC and then drop the timezone so we can append "Z" in lieu of
|
|
134
|
+
# allowing isoformat to append the "+00:00" zone offset.
|
|
135
|
+
value = value.astimezone(datetime.timezone.utc).replace(tzinfo=None)
|
|
136
|
+
return value.isoformat(sep="T", timespec="microseconds") + "Z"
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def _datetime_to_rfc3339_nanoseconds(value):
|
|
140
|
+
"""Format the provided datatime in the RFC 3339 format.
|
|
141
|
+
|
|
142
|
+
:type value: datetime_helpers.DatetimeWithNanoseconds
|
|
143
|
+
:param value: value to format
|
|
144
|
+
|
|
145
|
+
:rtype: str
|
|
146
|
+
:returns: RFC 3339 formatted datetime string
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
if value.nanosecond == 0:
|
|
150
|
+
return _datetime_to_rfc3339(value)
|
|
151
|
+
nanos = str(value.nanosecond).rjust(9, "0").rstrip("0")
|
|
152
|
+
# Convert to UTC and then drop the timezone so we can append "Z" in lieu of
|
|
153
|
+
# allowing isoformat to append the "+00:00" zone offset.
|
|
154
|
+
value = value.astimezone(datetime.timezone.utc).replace(tzinfo=None)
|
|
155
|
+
return "{}.{}Z".format(value.isoformat(sep="T", timespec="seconds"), nanos)
|
|
156
|
+
|
|
157
|
+
|
|
125
158
|
def _make_value_pb(value):
|
|
126
159
|
"""Helper for :func:`_make_list_value_pbs`.
|
|
127
160
|
|
|
@@ -150,9 +183,9 @@ def _make_value_pb(value):
|
|
|
150
183
|
return Value(string_value="-Infinity")
|
|
151
184
|
return Value(number_value=value)
|
|
152
185
|
if isinstance(value, datetime_helpers.DatetimeWithNanoseconds):
|
|
153
|
-
return Value(string_value=value
|
|
186
|
+
return Value(string_value=_datetime_to_rfc3339_nanoseconds(value))
|
|
154
187
|
if isinstance(value, datetime.datetime):
|
|
155
|
-
return Value(string_value=_datetime_to_rfc3339(value
|
|
188
|
+
return Value(string_value=_datetime_to_rfc3339(value))
|
|
156
189
|
if isinstance(value, datetime.date):
|
|
157
190
|
return Value(string_value=value.isoformat())
|
|
158
191
|
if isinstance(value, bytes):
|
|
@@ -228,6 +261,11 @@ def _parse_value_pb(value_pb, field_type):
|
|
|
228
261
|
return float(value_pb.string_value)
|
|
229
262
|
else:
|
|
230
263
|
return value_pb.number_value
|
|
264
|
+
elif type_code == TypeCode.FLOAT32:
|
|
265
|
+
if value_pb.HasField("string_value"):
|
|
266
|
+
return float(value_pb.string_value)
|
|
267
|
+
else:
|
|
268
|
+
return value_pb.number_value
|
|
231
269
|
elif type_code == TypeCode.DATE:
|
|
232
270
|
return _date_from_iso8601_date(value_pb.string_value)
|
|
233
271
|
elif type_code == TypeCode.TIMESTAMP:
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/param_types.py
RENAMED
|
@@ -26,12 +26,14 @@ BYTES = Type(code=TypeCode.BYTES)
|
|
|
26
26
|
BOOL = Type(code=TypeCode.BOOL)
|
|
27
27
|
INT64 = Type(code=TypeCode.INT64)
|
|
28
28
|
FLOAT64 = Type(code=TypeCode.FLOAT64)
|
|
29
|
+
FLOAT32 = Type(code=TypeCode.FLOAT32)
|
|
29
30
|
DATE = Type(code=TypeCode.DATE)
|
|
30
31
|
TIMESTAMP = Type(code=TypeCode.TIMESTAMP)
|
|
31
32
|
NUMERIC = Type(code=TypeCode.NUMERIC)
|
|
32
33
|
JSON = Type(code=TypeCode.JSON)
|
|
33
34
|
PG_NUMERIC = Type(code=TypeCode.NUMERIC, type_annotation=TypeAnnotationCode.PG_NUMERIC)
|
|
34
35
|
PG_JSONB = Type(code=TypeCode.JSON, type_annotation=TypeAnnotationCode.PG_JSONB)
|
|
36
|
+
PG_OID = Type(code=TypeCode.INT64, type_annotation=TypeAnnotationCode.PG_OID)
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
def Array(element_type):
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/streamed.py
RENAMED
|
@@ -332,6 +332,7 @@ _MERGE_BY_TYPE = {
|
|
|
332
332
|
TypeCode.BYTES: _merge_string,
|
|
333
333
|
TypeCode.DATE: _merge_string,
|
|
334
334
|
TypeCode.FLOAT64: _merge_float64,
|
|
335
|
+
TypeCode.FLOAT32: _merge_float64,
|
|
335
336
|
TypeCode.INT64: _merge_string,
|
|
336
337
|
TypeCode.STRING: _merge_string,
|
|
337
338
|
TypeCode.STRUCT: _merge_struct,
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0/google_cloud_spanner.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: google-cloud-spanner
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.45.0
|
|
4
4
|
Summary: Google Cloud Spanner API client library
|
|
5
5
|
Home-page: https://github.com/googleapis/python-spanner
|
|
6
6
|
Author: Google LLC
|
|
@@ -29,7 +29,6 @@ Requires-Dist: proto-plus<2.0.0dev,>=1.22.0
|
|
|
29
29
|
Requires-Dist: sqlparse>=0.4.4
|
|
30
30
|
Requires-Dist: proto-plus<2.0.0dev,>=1.22.2; python_version >= "3.11"
|
|
31
31
|
Requires-Dist: protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5
|
|
32
|
-
Requires-Dist: deprecated>=1.2.14
|
|
33
32
|
Requires-Dist: grpc-interceptor>=0.15.4
|
|
34
33
|
Provides-Extra: tracing
|
|
35
34
|
Requires-Dist: opentelemetry-api>=1.1.0; extra == "tracing"
|
|
@@ -43,7 +43,6 @@ dependencies = [
|
|
|
43
43
|
"sqlparse >= 0.4.4",
|
|
44
44
|
"proto-plus >= 1.22.2, <2.0.0dev; python_version>='3.11'",
|
|
45
45
|
"protobuf>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5",
|
|
46
|
-
"deprecated >= 1.2.14",
|
|
47
46
|
"grpc-interceptor >= 0.15.4",
|
|
48
47
|
]
|
|
49
48
|
extras = {
|
|
@@ -90,5 +90,8 @@ def _check_cell_data(found_cell, expected_cell, recurse_into_lists=True):
|
|
|
90
90
|
for found_item, expected_item in zip(found_cell, expected_cell):
|
|
91
91
|
_check_cell_data(found_item, expected_item)
|
|
92
92
|
|
|
93
|
+
elif isinstance(found_cell, float) and not math.isinf(found_cell):
|
|
94
|
+
assert abs(found_cell - expected_cell) < 0.00001
|
|
95
|
+
|
|
93
96
|
else:
|
|
94
97
|
assert found_cell == expected_cell
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_session_api.py
RENAMED
|
@@ -2216,6 +2216,47 @@ def test_execute_sql_w_float_bindings_transfinite(sessions_database, database_di
|
|
|
2216
2216
|
)
|
|
2217
2217
|
|
|
2218
2218
|
|
|
2219
|
+
def test_execute_sql_w_float32_bindings(sessions_database, database_dialect):
|
|
2220
|
+
pytest.skip("float32 is not yet supported in production.")
|
|
2221
|
+
_bind_test_helper(
|
|
2222
|
+
sessions_database,
|
|
2223
|
+
database_dialect,
|
|
2224
|
+
spanner_v1.param_types.FLOAT32,
|
|
2225
|
+
42.3,
|
|
2226
|
+
[12.3, 456.0, 7.89],
|
|
2227
|
+
)
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
def test_execute_sql_w_float32_bindings_transfinite(
|
|
2231
|
+
sessions_database, database_dialect
|
|
2232
|
+
):
|
|
2233
|
+
pytest.skip("float32 is not yet supported in production.")
|
|
2234
|
+
key = "p1" if database_dialect == DatabaseDialect.POSTGRESQL else "neg_inf"
|
|
2235
|
+
placeholder = "$1" if database_dialect == DatabaseDialect.POSTGRESQL else f"@{key}"
|
|
2236
|
+
|
|
2237
|
+
# Find -inf
|
|
2238
|
+
_check_sql_results(
|
|
2239
|
+
sessions_database,
|
|
2240
|
+
sql=f"SELECT {placeholder}",
|
|
2241
|
+
params={key: NEG_INF},
|
|
2242
|
+
param_types={key: spanner_v1.param_types.FLOAT32},
|
|
2243
|
+
expected=[(NEG_INF,)],
|
|
2244
|
+
order=False,
|
|
2245
|
+
)
|
|
2246
|
+
|
|
2247
|
+
key = "p1" if database_dialect == DatabaseDialect.POSTGRESQL else "pos_inf"
|
|
2248
|
+
placeholder = "$1" if database_dialect == DatabaseDialect.POSTGRESQL else f"@{key}"
|
|
2249
|
+
# Find +inf
|
|
2250
|
+
_check_sql_results(
|
|
2251
|
+
sessions_database,
|
|
2252
|
+
sql=f"SELECT {placeholder}",
|
|
2253
|
+
params={key: POS_INF},
|
|
2254
|
+
param_types={key: spanner_v1.param_types.FLOAT32},
|
|
2255
|
+
expected=[(POS_INF,)],
|
|
2256
|
+
order=False,
|
|
2257
|
+
)
|
|
2258
|
+
|
|
2259
|
+
|
|
2219
2260
|
def test_execute_sql_w_bytes_bindings(sessions_database, database_dialect):
|
|
2220
2261
|
_bind_test_helper(
|
|
2221
2262
|
sessions_database,
|
|
@@ -2307,6 +2348,18 @@ def test_execute_sql_w_jsonb_bindings(
|
|
|
2307
2348
|
)
|
|
2308
2349
|
|
|
2309
2350
|
|
|
2351
|
+
def test_execute_sql_w_oid_bindings(
|
|
2352
|
+
not_emulator, not_google_standard_sql, sessions_database, database_dialect
|
|
2353
|
+
):
|
|
2354
|
+
_bind_test_helper(
|
|
2355
|
+
sessions_database,
|
|
2356
|
+
database_dialect,
|
|
2357
|
+
spanner_v1.param_types.PG_OID,
|
|
2358
|
+
123,
|
|
2359
|
+
[123, 456],
|
|
2360
|
+
)
|
|
2361
|
+
|
|
2362
|
+
|
|
2310
2363
|
def test_execute_sql_w_query_param_struct(sessions_database, not_postgres):
|
|
2311
2364
|
name = "Phred"
|
|
2312
2365
|
count = 123
|
|
@@ -190,6 +190,15 @@ class Test_make_value_pb(unittest.TestCase):
|
|
|
190
190
|
self.assertIsInstance(value_pb, Value)
|
|
191
191
|
self.assertEqual(value_pb.string_value, today.isoformat())
|
|
192
192
|
|
|
193
|
+
def test_w_date_pre1000ad(self):
|
|
194
|
+
import datetime
|
|
195
|
+
from google.protobuf.struct_pb2 import Value
|
|
196
|
+
|
|
197
|
+
when = datetime.date(800, 2, 25)
|
|
198
|
+
value_pb = self._callFUT(when)
|
|
199
|
+
self.assertIsInstance(value_pb, Value)
|
|
200
|
+
self.assertEqual(value_pb.string_value, "0800-02-25")
|
|
201
|
+
|
|
193
202
|
def test_w_timestamp_w_nanos(self):
|
|
194
203
|
import datetime
|
|
195
204
|
from google.protobuf.struct_pb2 import Value
|
|
@@ -200,7 +209,19 @@ class Test_make_value_pb(unittest.TestCase):
|
|
|
200
209
|
)
|
|
201
210
|
value_pb = self._callFUT(when)
|
|
202
211
|
self.assertIsInstance(value_pb, Value)
|
|
203
|
-
self.assertEqual(value_pb.string_value,
|
|
212
|
+
self.assertEqual(value_pb.string_value, "2016-12-20T21:13:47.123456789Z")
|
|
213
|
+
|
|
214
|
+
def test_w_timestamp_w_nanos_pre1000ad(self):
|
|
215
|
+
import datetime
|
|
216
|
+
from google.protobuf.struct_pb2 import Value
|
|
217
|
+
from google.api_core import datetime_helpers
|
|
218
|
+
|
|
219
|
+
when = datetime_helpers.DatetimeWithNanoseconds(
|
|
220
|
+
850, 12, 20, 21, 13, 47, nanosecond=123456789, tzinfo=datetime.timezone.utc
|
|
221
|
+
)
|
|
222
|
+
value_pb = self._callFUT(when)
|
|
223
|
+
self.assertIsInstance(value_pb, Value)
|
|
224
|
+
self.assertEqual(value_pb.string_value, "0850-12-20T21:13:47.123456789Z")
|
|
204
225
|
|
|
205
226
|
def test_w_listvalue(self):
|
|
206
227
|
from google.protobuf.struct_pb2 import Value
|
|
@@ -214,12 +235,20 @@ class Test_make_value_pb(unittest.TestCase):
|
|
|
214
235
|
def test_w_datetime(self):
|
|
215
236
|
import datetime
|
|
216
237
|
from google.protobuf.struct_pb2 import Value
|
|
217
|
-
from google.api_core import datetime_helpers
|
|
218
238
|
|
|
219
|
-
|
|
220
|
-
value_pb = self._callFUT(
|
|
239
|
+
when = datetime.datetime(2021, 2, 8, 0, 0, 0, tzinfo=datetime.timezone.utc)
|
|
240
|
+
value_pb = self._callFUT(when)
|
|
241
|
+
self.assertIsInstance(value_pb, Value)
|
|
242
|
+
self.assertEqual(value_pb.string_value, "2021-02-08T00:00:00.000000Z")
|
|
243
|
+
|
|
244
|
+
def test_w_datetime_pre1000ad(self):
|
|
245
|
+
import datetime
|
|
246
|
+
from google.protobuf.struct_pb2 import Value
|
|
247
|
+
|
|
248
|
+
when = datetime.datetime(916, 2, 8, 0, 0, 0, tzinfo=datetime.timezone.utc)
|
|
249
|
+
value_pb = self._callFUT(when)
|
|
221
250
|
self.assertIsInstance(value_pb, Value)
|
|
222
|
-
self.assertEqual(value_pb.string_value,
|
|
251
|
+
self.assertEqual(value_pb.string_value, "0916-02-08T00:00:00.000000Z")
|
|
223
252
|
|
|
224
253
|
def test_w_timestamp_w_tz(self):
|
|
225
254
|
import datetime
|
|
@@ -231,6 +260,16 @@ class Test_make_value_pb(unittest.TestCase):
|
|
|
231
260
|
self.assertIsInstance(value_pb, Value)
|
|
232
261
|
self.assertEqual(value_pb.string_value, "2021-02-07T23:00:00.000000Z")
|
|
233
262
|
|
|
263
|
+
def test_w_timestamp_w_tz_pre1000ad(self):
|
|
264
|
+
import datetime
|
|
265
|
+
from google.protobuf.struct_pb2 import Value
|
|
266
|
+
|
|
267
|
+
zone = datetime.timezone(datetime.timedelta(hours=+1), name="CET")
|
|
268
|
+
when = datetime.datetime(721, 2, 8, 0, 0, 0, tzinfo=zone)
|
|
269
|
+
value_pb = self._callFUT(when)
|
|
270
|
+
self.assertIsInstance(value_pb, Value)
|
|
271
|
+
self.assertEqual(value_pb.string_value, "0721-02-07T23:00:00.000000Z")
|
|
272
|
+
|
|
234
273
|
def test_w_unknown_type(self):
|
|
235
274
|
with self.assertRaises(ValueError):
|
|
236
275
|
self._callFUT(object())
|
|
@@ -466,6 +505,27 @@ class Test_parse_value_pb(unittest.TestCase):
|
|
|
466
505
|
|
|
467
506
|
self.assertEqual(self._callFUT(value_pb, field_type), expected_value)
|
|
468
507
|
|
|
508
|
+
def test_w_float32(self):
|
|
509
|
+
from google.cloud.spanner_v1 import Type, TypeCode
|
|
510
|
+
from google.protobuf.struct_pb2 import Value
|
|
511
|
+
|
|
512
|
+
VALUE = 3.14159
|
|
513
|
+
field_type = Type(code=TypeCode.FLOAT32)
|
|
514
|
+
value_pb = Value(number_value=VALUE)
|
|
515
|
+
|
|
516
|
+
self.assertEqual(self._callFUT(value_pb, field_type), VALUE)
|
|
517
|
+
|
|
518
|
+
def test_w_float32_str(self):
|
|
519
|
+
from google.cloud.spanner_v1 import Type, TypeCode
|
|
520
|
+
from google.protobuf.struct_pb2 import Value
|
|
521
|
+
|
|
522
|
+
VALUE = "3.14159"
|
|
523
|
+
field_type = Type(code=TypeCode.FLOAT32)
|
|
524
|
+
value_pb = Value(string_value=VALUE)
|
|
525
|
+
expected_value = 3.14159
|
|
526
|
+
|
|
527
|
+
self.assertEqual(self._callFUT(value_pb, field_type), expected_value)
|
|
528
|
+
|
|
469
529
|
def test_w_date(self):
|
|
470
530
|
import datetime
|
|
471
531
|
from google.protobuf.struct_pb2 import Value
|
|
@@ -18,9 +18,7 @@ import unittest
|
|
|
18
18
|
|
|
19
19
|
class Test_ArrayParamType(unittest.TestCase):
|
|
20
20
|
def test_it(self):
|
|
21
|
-
from google.cloud.spanner_v1 import Type
|
|
22
|
-
from google.cloud.spanner_v1 import TypeCode
|
|
23
|
-
from google.cloud.spanner_v1 import param_types
|
|
21
|
+
from google.cloud.spanner_v1 import Type, TypeCode, param_types
|
|
24
22
|
|
|
25
23
|
expected = Type(
|
|
26
24
|
code=TypeCode.ARRAY, array_element_type=Type(code=TypeCode.INT64)
|
|
@@ -33,15 +31,13 @@ class Test_ArrayParamType(unittest.TestCase):
|
|
|
33
31
|
|
|
34
32
|
class Test_Struct(unittest.TestCase):
|
|
35
33
|
def test_it(self):
|
|
36
|
-
from google.cloud.spanner_v1 import Type
|
|
37
|
-
from google.cloud.spanner_v1 import TypeCode
|
|
38
|
-
from google.cloud.spanner_v1 import StructType
|
|
39
|
-
from google.cloud.spanner_v1 import param_types
|
|
34
|
+
from google.cloud.spanner_v1 import StructType, Type, TypeCode, param_types
|
|
40
35
|
|
|
41
36
|
struct_type = StructType(
|
|
42
37
|
fields=[
|
|
43
38
|
StructType.Field(name="name", type_=Type(code=TypeCode.STRING)),
|
|
44
39
|
StructType.Field(name="count", type_=Type(code=TypeCode.INT64)),
|
|
40
|
+
StructType.Field(name="float32", type_=Type(code=TypeCode.FLOAT32)),
|
|
45
41
|
]
|
|
46
42
|
)
|
|
47
43
|
expected = Type(code=TypeCode.STRUCT, struct_type=struct_type)
|
|
@@ -50,6 +46,7 @@ class Test_Struct(unittest.TestCase):
|
|
|
50
46
|
[
|
|
51
47
|
param_types.StructField("name", param_types.STRING),
|
|
52
48
|
param_types.StructField("count", param_types.INT64),
|
|
49
|
+
param_types.StructField("float32", param_types.FLOAT32),
|
|
53
50
|
]
|
|
54
51
|
)
|
|
55
52
|
|
|
@@ -57,6 +54,25 @@ class Test_Struct(unittest.TestCase):
|
|
|
57
54
|
|
|
58
55
|
|
|
59
56
|
class Test_JsonbParamType(unittest.TestCase):
|
|
57
|
+
def test_it(self):
|
|
58
|
+
from google.cloud.spanner_v1 import (
|
|
59
|
+
Type,
|
|
60
|
+
TypeAnnotationCode,
|
|
61
|
+
TypeCode,
|
|
62
|
+
param_types,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
expected = Type(
|
|
66
|
+
code=TypeCode.JSON,
|
|
67
|
+
type_annotation=TypeAnnotationCode(TypeAnnotationCode.PG_JSONB),
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
found = param_types.PG_JSONB
|
|
71
|
+
|
|
72
|
+
self.assertEqual(found, expected)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class Test_OidParamType(unittest.TestCase):
|
|
60
76
|
def test_it(self):
|
|
61
77
|
from google.cloud.spanner_v1 import Type
|
|
62
78
|
from google.cloud.spanner_v1 import TypeCode
|
|
@@ -64,10 +80,10 @@ class Test_JsonbParamType(unittest.TestCase):
|
|
|
64
80
|
from google.cloud.spanner_v1 import param_types
|
|
65
81
|
|
|
66
82
|
expected = Type(
|
|
67
|
-
code=TypeCode.
|
|
68
|
-
type_annotation=TypeAnnotationCode
|
|
83
|
+
code=TypeCode.INT64,
|
|
84
|
+
type_annotation=TypeAnnotationCode.PG_OID,
|
|
69
85
|
)
|
|
70
86
|
|
|
71
|
-
found = param_types.
|
|
87
|
+
found = param_types.PG_OID
|
|
72
88
|
|
|
73
89
|
self.assertEqual(found, expected)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/checksum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/cursor.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/utils.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_dbapi/version.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/backup.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/batch.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/client.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/data_types.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/instance.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/keyset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/py.typed
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/session.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/snapshot.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/table.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/transaction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/keys.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/spanner.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/google/cloud/spanner_v1/types/type.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_database_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_instance_api.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/test_streaming_chunking.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/clear_streaming.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/populate_streaming.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/scrub_instances.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/system/utils/streaming_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/gapic/spanner_v1/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_connect.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_cursor.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_globals.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_types.py
RENAMED
|
File without changes
|
{google-cloud-spanner-3.43.0 → google-cloud-spanner-3.45.0}/tests/unit/spanner_dbapi/test_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|