google-cloud-bigquery 3.42.1__tar.gz → 3.42.2__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_bigquery-3.42.1/google_cloud_bigquery.egg-info → google_cloud_bigquery-3.42.2}/PKG-INFO +2 -2
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/client.py +102 -61
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/retry.py +11 -2
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/version.py +1 -1
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2/google_cloud_bigquery.egg-info}/PKG-INFO +2 -2
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google_cloud_bigquery.egg-info/SOURCES.txt +1 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google_cloud_bigquery.egg-info/requires.txt +1 -1
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/pyproject.toml +1 -1
- google_cloud_bigquery-3.42.2/tests/system/test_ssl_retry.py +66 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_client.py +231 -115
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_legacy_types.py +3 -3
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_magics.py +2 -1
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_retry.py +4 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/LICENSE +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/MANIFEST.in +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/README.rst +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_http.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_job_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_pandas_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_pyarrow_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_string_references.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_tqdm_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/_versions_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dataset.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dbapi/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dbapi/_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dbapi/connection.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dbapi/cursor.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dbapi/exceptions.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/dbapi/types.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/encryption_configuration.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/enums.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/exceptions.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/external_config.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/format_options.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/iam.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/job/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/job/base.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/job/copy_.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/job/extract.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/job/load.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/job/query.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/line_arg_parser/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/line_arg_parser/exceptions.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/line_arg_parser/lexer.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/line_arg_parser/parser.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/line_arg_parser/visitors.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/magics/magics.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/model.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/opentelemetry_tracing.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/py.typed +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/query.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/routine/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/routine/routine.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/schema.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/standard_sql.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/table.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/types/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/types/encryption_config.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/types/model.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/types/model_reference.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/types/standard_sql.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery_v2/types/table_reference.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google_cloud_bigquery.egg-info/dependency_links.txt +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google_cloud_bigquery.egg-info/top_level.txt +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/setup.cfg +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/setup.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/characters.json +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/characters.jsonl +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/colors.avro +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/numeric_38_12.parquet +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/people.csv +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/pico.csv +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/pico_schema.json +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/scalars.csv +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/scalars.jsonl +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/scalars_extreme.jsonl +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/scalars_schema.json +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/scalars_schema_csv.json +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/data/schema.json +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/scrub_datasets.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/conftest.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_arrow.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_client.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_job_retry.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_list_rows.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_magics.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_pandas.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_query.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/system/test_structs.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/_helpers/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/_helpers/test_cell_data_parser.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/_helpers/test_data_frame_cell_data_parser.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/_helpers/test_scalar_query_param_parser.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/conftest.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_async_job_retry.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_base.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_copy.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_extract.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_load.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_load_config.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_query.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_query_config.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_query_job_retry.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_query_pandas.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/job/test_query_stats.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/line_arg_parser/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/line_arg_parser/test_lexer.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/line_arg_parser/test_parser.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/line_arg_parser/test_visitors.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/model/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/model/test_model.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/model/test_model_reference.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/routine/__init__.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/routine/test_external_runtime_options.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/routine/test_remote_function_options.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/routine/test_routine.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/routine/test_routine_argument.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/routine/test_routine_reference.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__http.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__job_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__job_helpers_retry.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__pandas_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__pyarrow_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test__versions_helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_client_bigframes.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_client_resumable_media_upload.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_client_retry.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_create_dataset.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_dataset.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_dbapi__helpers.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_dbapi_connection.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_dbapi_cursor.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_dbapi_types.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_delete_dataset.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_encryption_configuration.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_external_config.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_format_options.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_job_retry.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_list_datasets.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_list_jobs.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_list_models.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_list_projects.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_list_routines.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_list_tables.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_opentelemetry_tracing.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_packaging.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_query.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_schema.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_signature_compatibility.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_standard_sql_types.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_string_references.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_table.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_table_arrow.py +0 -0
- {google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/tests/unit/test_table_pandas.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-cloud-bigquery
|
|
3
|
-
Version: 3.42.
|
|
3
|
+
Version: 3.42.2
|
|
4
4
|
Summary: Google BigQuery API client library
|
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -19,7 +19,7 @@ Classifier: Topic :: Internet
|
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
Description-Content-Type: text/x-rst
|
|
21
21
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: google-api-core[grpc]<3.0.0,>=2.
|
|
22
|
+
Requires-Dist: google-api-core[grpc]<3.0.0,>=2.25.0
|
|
23
23
|
Requires-Dist: google-auth[pyopenssl]<3.0.0,>=2.14.1
|
|
24
24
|
Requires-Dist: google-cloud-core<3.0.0,>=2.4.1
|
|
25
25
|
Requires-Dist: google-resumable-media<3.0.0,>=2.0.0
|
{google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/client.py
RENAMED
|
@@ -14,11 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
"""Client for interacting with the Google BigQuery API."""
|
|
16
16
|
|
|
17
|
-
from __future__ import absolute_import
|
|
18
|
-
from __future__ import annotations
|
|
19
|
-
from __future__ import division
|
|
17
|
+
from __future__ import absolute_import, annotations, division
|
|
20
18
|
|
|
21
|
-
from collections import abc as collections_abc
|
|
22
19
|
import copy
|
|
23
20
|
import datetime
|
|
24
21
|
import functools
|
|
@@ -30,36 +27,39 @@ import math
|
|
|
30
27
|
import os
|
|
31
28
|
import tempfile
|
|
32
29
|
import typing
|
|
30
|
+
import uuid
|
|
31
|
+
import warnings
|
|
32
|
+
from collections import abc as collections_abc
|
|
33
33
|
from typing import (
|
|
34
|
+
IO,
|
|
34
35
|
Any,
|
|
35
36
|
Callable,
|
|
36
37
|
Dict,
|
|
37
|
-
IO,
|
|
38
38
|
Iterable,
|
|
39
|
-
Mapping,
|
|
40
39
|
List,
|
|
40
|
+
Mapping,
|
|
41
41
|
Optional,
|
|
42
42
|
Sequence,
|
|
43
43
|
Tuple,
|
|
44
44
|
Union,
|
|
45
45
|
)
|
|
46
|
-
import uuid
|
|
47
|
-
import warnings
|
|
48
|
-
|
|
49
|
-
import requests
|
|
50
|
-
|
|
51
|
-
from google import resumable_media # type: ignore
|
|
52
|
-
from google.resumable_media.requests import MultipartUpload # type: ignore
|
|
53
|
-
from google.resumable_media.requests import ResumableUpload
|
|
54
46
|
|
|
55
47
|
import google.api_core.client_options
|
|
56
48
|
import google.api_core.exceptions as core_exceptions
|
|
57
|
-
|
|
49
|
+
import google.cloud._helpers # type: ignore
|
|
50
|
+
import requests
|
|
51
|
+
from google import resumable_media # type: ignore
|
|
58
52
|
from google.api_core import page_iterator
|
|
59
53
|
from google.api_core import retry as retries
|
|
60
|
-
|
|
54
|
+
from google.api_core.iam import Policy
|
|
61
55
|
from google.cloud import exceptions # pytype: disable=import-error
|
|
62
|
-
from google.cloud.client import
|
|
56
|
+
from google.cloud.client import (
|
|
57
|
+
ClientWithProject, # type: ignore # pytype: disable=import-error
|
|
58
|
+
)
|
|
59
|
+
from google.resumable_media.requests import (
|
|
60
|
+
MultipartUpload, # type: ignore
|
|
61
|
+
ResumableUpload,
|
|
62
|
+
)
|
|
63
63
|
|
|
64
64
|
try:
|
|
65
65
|
from google.cloud.bigquery_storage_v1.services.big_query_read.client import (
|
|
@@ -70,29 +70,30 @@ except ImportError:
|
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
from google.auth.credentials import Credentials
|
|
73
|
-
from google.cloud.bigquery
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
from google.cloud.bigquery import (
|
|
74
|
+
_job_helpers,
|
|
75
|
+
_pandas_helpers,
|
|
76
|
+
_versions_helpers,
|
|
77
|
+
enums,
|
|
78
|
+
job,
|
|
79
|
+
)
|
|
78
80
|
from google.cloud.bigquery import exceptions as bq_exceptions
|
|
79
|
-
from google.cloud.bigquery import
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
from google.cloud.bigquery._helpers import (
|
|
82
|
+
_DEFAULT_HOST,
|
|
83
|
+
_DEFAULT_HOST_TEMPLATE,
|
|
84
|
+
_DEFAULT_UNIVERSE,
|
|
85
|
+
TimeoutType,
|
|
86
|
+
_get_bigquery_host,
|
|
87
|
+
_get_client_universe,
|
|
88
|
+
_get_sub_prop,
|
|
89
|
+
_record_field_to_json,
|
|
90
|
+
_str_or_none,
|
|
91
|
+
_validate_universe,
|
|
92
|
+
_verify_job_config_type,
|
|
93
|
+
)
|
|
94
|
+
from google.cloud.bigquery._http import Connection
|
|
91
95
|
from google.cloud.bigquery._job_helpers import make_job_id as _make_job_id
|
|
92
|
-
from google.cloud.bigquery.dataset import Dataset
|
|
93
|
-
from google.cloud.bigquery.dataset import DatasetListItem
|
|
94
|
-
from google.cloud.bigquery.dataset import DatasetReference
|
|
95
|
-
|
|
96
|
+
from google.cloud.bigquery.dataset import Dataset, DatasetListItem, DatasetReference
|
|
96
97
|
from google.cloud.bigquery.enums import AutoRowIDs, DatasetView, UpdateMode
|
|
97
98
|
from google.cloud.bigquery.format_options import ParquetOptions
|
|
98
99
|
from google.cloud.bigquery.job import (
|
|
@@ -105,27 +106,26 @@ from google.cloud.bigquery.job import (
|
|
|
105
106
|
QueryJob,
|
|
106
107
|
QueryJobConfig,
|
|
107
108
|
)
|
|
108
|
-
from google.cloud.bigquery.model import Model
|
|
109
|
-
from google.cloud.bigquery.model import ModelReference
|
|
110
|
-
from google.cloud.bigquery.model import _model_arg_to_model_ref
|
|
109
|
+
from google.cloud.bigquery.model import Model, ModelReference, _model_arg_to_model_ref
|
|
111
110
|
from google.cloud.bigquery.opentelemetry_tracing import create_span
|
|
112
111
|
from google.cloud.bigquery.query import _QueryResults
|
|
113
112
|
from google.cloud.bigquery.retry import (
|
|
113
|
+
DEFAULT_GET_JOB_TIMEOUT,
|
|
114
114
|
DEFAULT_JOB_RETRY,
|
|
115
115
|
DEFAULT_RETRY,
|
|
116
116
|
DEFAULT_TIMEOUT,
|
|
117
|
-
DEFAULT_GET_JOB_TIMEOUT,
|
|
118
117
|
POLLING_DEFAULT_VALUE,
|
|
119
118
|
)
|
|
120
|
-
from google.cloud.bigquery.routine import Routine
|
|
121
|
-
from google.cloud.bigquery.routine import RoutineReference
|
|
119
|
+
from google.cloud.bigquery.routine import Routine, RoutineReference
|
|
122
120
|
from google.cloud.bigquery.schema import SchemaField
|
|
123
|
-
from google.cloud.bigquery.table import
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
121
|
+
from google.cloud.bigquery.table import (
|
|
122
|
+
RowIterator,
|
|
123
|
+
Table,
|
|
124
|
+
TableListItem,
|
|
125
|
+
TableReference,
|
|
126
|
+
_table_arg_to_table,
|
|
127
|
+
_table_arg_to_table_ref,
|
|
128
|
+
)
|
|
129
129
|
|
|
130
130
|
pyarrow = _versions_helpers.PYARROW_VERSIONS.try_import()
|
|
131
131
|
pandas = (
|
|
@@ -621,11 +621,45 @@ class Client(ClientWithProject):
|
|
|
621
621
|
)
|
|
622
622
|
return None
|
|
623
623
|
|
|
624
|
-
if
|
|
624
|
+
# Import here since it should be installed if the BQ Storage client is
|
|
625
|
+
# also installed.
|
|
626
|
+
import google.api_core.gapic_v1.client_info
|
|
627
|
+
|
|
628
|
+
try:
|
|
629
|
+
import pandas_gbq # type: ignore
|
|
630
|
+
except ImportError:
|
|
631
|
+
pandas_gbq = None # type: ignore
|
|
632
|
+
|
|
633
|
+
if pandas_gbq is None:
|
|
634
|
+
user_agent = "pandas-gbq/0.0.0"
|
|
635
|
+
else:
|
|
636
|
+
user_agent = f"pandas-gbq/{pandas_gbq.__version__}"
|
|
637
|
+
|
|
638
|
+
if client_info is None:
|
|
639
|
+
amended_client_info = google.api_core.gapic_v1.client_info.ClientInfo(
|
|
640
|
+
user_agent=user_agent,
|
|
641
|
+
)
|
|
642
|
+
else:
|
|
643
|
+
if client_info.user_agent is None:
|
|
644
|
+
amended_user_agent = user_agent
|
|
645
|
+
else:
|
|
646
|
+
amended_user_agent = client_info.user_agent + " " + user_agent
|
|
647
|
+
|
|
648
|
+
amended_client_info = google.api_core.gapic_v1.client_info.ClientInfo(
|
|
649
|
+
python_version=client_info.python_version,
|
|
650
|
+
grpc_version=client_info.grpc_version,
|
|
651
|
+
api_core_version=client_info.api_core_version,
|
|
652
|
+
gapic_version=client_info.gapic_version,
|
|
653
|
+
user_agent=amended_user_agent,
|
|
654
|
+
rest_version=client_info.rest_version,
|
|
655
|
+
protobuf_runtime_version=client_info.protobuf_runtime_version,
|
|
656
|
+
)
|
|
657
|
+
|
|
658
|
+
if bqstorage_client is None:
|
|
625
659
|
bqstorage_client = bigquery_storage.BigQueryReadClient(
|
|
626
660
|
credentials=self._credentials,
|
|
627
661
|
client_options=client_options,
|
|
628
|
-
client_info=
|
|
662
|
+
client_info=amended_client_info,
|
|
629
663
|
)
|
|
630
664
|
|
|
631
665
|
return bqstorage_client
|
|
@@ -4012,15 +4046,22 @@ class Client(ClientWithProject):
|
|
|
4012
4046
|
path = "%s/insertAll" % table.path
|
|
4013
4047
|
# We can always retry, because every row has an insert ID.
|
|
4014
4048
|
span_attributes = {"path": path}
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4049
|
+
try:
|
|
4050
|
+
response = self._call_api(
|
|
4051
|
+
retry,
|
|
4052
|
+
span_name="BigQuery.insertRowsJson",
|
|
4053
|
+
span_attributes=span_attributes,
|
|
4054
|
+
method="POST",
|
|
4055
|
+
path=path,
|
|
4056
|
+
data=data,
|
|
4057
|
+
timeout=timeout,
|
|
4058
|
+
)
|
|
4059
|
+
except requests.exceptions.SSLError as exc:
|
|
4060
|
+
msg = (
|
|
4061
|
+
"An SSL/Connection error occurred while streaming rows. This "
|
|
4062
|
+
"could be due to an invalid request (e.g., invalid table schema)."
|
|
4063
|
+
)
|
|
4064
|
+
raise requests.exceptions.SSLError(msg) from exc
|
|
4024
4065
|
errors = []
|
|
4025
4066
|
|
|
4026
4067
|
for error in response.get("insertErrors", ()):
|
{google_cloud_bigquery-3.42.1 → google_cloud_bigquery-3.42.2}/google/cloud/bigquery/retry.py
RENAMED
|
@@ -40,6 +40,11 @@ _UNSTRUCTURED_RETRYABLE_TYPES = (
|
|
|
40
40
|
|
|
41
41
|
_DEFAULT_RETRY_DEADLINE = 10.0 * 60.0 # 10 minutes
|
|
42
42
|
|
|
43
|
+
# Exceptions that are subclasses of types in _UNSTRUCTURED_RETRYABLE_TYPES
|
|
44
|
+
# but should not be retried because they typically indicate persistent
|
|
45
|
+
# configuration or security issues.
|
|
46
|
+
_UNSTRUCTURED_NON_RETRYABLE_TYPES = (requests.exceptions.SSLError,)
|
|
47
|
+
|
|
43
48
|
# Ambiguous errors (e.g. internalError, backendError, rateLimitExceeded) retry
|
|
44
49
|
# until the full `_DEFAULT_RETRY_DEADLINE`. This is because the
|
|
45
50
|
# `jobs.getQueryResults` REST API translates a job failure into an HTTP error.
|
|
@@ -64,9 +69,13 @@ _DEFAULT_JOB_DEADLINE = 2.0 * (2.0 * _DEFAULT_RETRY_DEADLINE)
|
|
|
64
69
|
def _should_retry(exc):
|
|
65
70
|
"""Predicate for determining when to retry.
|
|
66
71
|
|
|
67
|
-
We retry if
|
|
68
|
-
|
|
72
|
+
We retry if the 'reason' is in _RETRYABLE_REASONS or if the exception
|
|
73
|
+
is an instance of one of the _UNSTRUCTURED_RETRYABLE_TYPES, unless it
|
|
74
|
+
is explicitly excluded by being in _UNSTRUCTURED_NON_RETRYABLE_TYPES.
|
|
69
75
|
"""
|
|
76
|
+
if isinstance(exc, _UNSTRUCTURED_NON_RETRYABLE_TYPES):
|
|
77
|
+
return False
|
|
78
|
+
|
|
70
79
|
try:
|
|
71
80
|
reason = exc.errors[0]["reason"]
|
|
72
81
|
except (AttributeError, IndexError, TypeError, KeyError):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-cloud-bigquery
|
|
3
|
-
Version: 3.42.
|
|
3
|
+
Version: 3.42.2
|
|
4
4
|
Summary: Google BigQuery API client library
|
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -19,7 +19,7 @@ Classifier: Topic :: Internet
|
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
Description-Content-Type: text/x-rst
|
|
21
21
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: google-api-core[grpc]<3.0.0,>=2.
|
|
22
|
+
Requires-Dist: google-api-core[grpc]<3.0.0,>=2.25.0
|
|
23
23
|
Requires-Dist: google-auth[pyopenssl]<3.0.0,>=2.14.1
|
|
24
24
|
Requires-Dist: google-cloud-core<3.0.0,>=2.4.1
|
|
25
25
|
Requires-Dist: google-resumable-media<3.0.0,>=2.0.0
|
|
@@ -41,7 +41,7 @@ classifiers = [
|
|
|
41
41
|
"Topic :: Internet",
|
|
42
42
|
]
|
|
43
43
|
dependencies = [
|
|
44
|
-
"google-api-core[grpc] >= 2.
|
|
44
|
+
"google-api-core[grpc] >= 2.25.0, < 3.0.0",
|
|
45
45
|
"google-auth[pyopenssl] >= 2.14.1, < 3.0.0",
|
|
46
46
|
"google-cloud-core >= 2.4.1, < 3.0.0",
|
|
47
47
|
"google-resumable-media >= 2.0.0, < 3.0.0",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Copyright 2026 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import time
|
|
16
|
+
from unittest import mock
|
|
17
|
+
|
|
18
|
+
import pytest
|
|
19
|
+
import requests.exceptions
|
|
20
|
+
from google.cloud import bigquery
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_insert_rows_json_ssl_error_no_retry(bigquery_client, dataset_id, project_id):
|
|
24
|
+
"""
|
|
25
|
+
Verify that SSLError during insert_rows_json is NOT retried and
|
|
26
|
+
propagates a descriptive error message immediately.
|
|
27
|
+
"""
|
|
28
|
+
table_id = f"{project_id}.{dataset_id}.test_ssl_retry_{int(time.time())}"
|
|
29
|
+
schema = [bigquery.SchemaField("name", "STRING")]
|
|
30
|
+
table = bigquery.Table(table_id, schema=schema)
|
|
31
|
+
bigquery_client.create_table(table)
|
|
32
|
+
try:
|
|
33
|
+
# We mock the api_request to simulate the GFE abruptly closing the connection
|
|
34
|
+
# which manifests as a requests.exceptions.SSLError.
|
|
35
|
+
bigquery_client._connection.api_request
|
|
36
|
+
call_count = 0
|
|
37
|
+
|
|
38
|
+
def mock_api_request(*args, **kwargs):
|
|
39
|
+
nonlocal call_count
|
|
40
|
+
call_count += 1
|
|
41
|
+
raise requests.exceptions.SSLError("EOF occurred in violation of protocol")
|
|
42
|
+
|
|
43
|
+
with mock.patch.object(
|
|
44
|
+
bigquery_client._connection, "api_request", side_effect=mock_api_request
|
|
45
|
+
):
|
|
46
|
+
# Use a reasonably short deadline for the test, although it should fail on the first attempt anyway.
|
|
47
|
+
retry = bigquery.DEFAULT_RETRY.with_deadline(5.0)
|
|
48
|
+
|
|
49
|
+
start_time = time.time()
|
|
50
|
+
with pytest.raises(requests.exceptions.SSLError) as excinfo:
|
|
51
|
+
bigquery_client.insert_rows_json(table, [{"name": "test"}], retry=retry)
|
|
52
|
+
duration = time.time() - start_time
|
|
53
|
+
|
|
54
|
+
# Verification:
|
|
55
|
+
# 1. It should NOT have retried (total calls should be 1)
|
|
56
|
+
assert call_count == 1
|
|
57
|
+
|
|
58
|
+
# 2. It should have failed quickly (much less than the 5s deadline)
|
|
59
|
+
assert duration < 2.0
|
|
60
|
+
|
|
61
|
+
# 3. The error message should contain our descriptive wrapping
|
|
62
|
+
assert "invalid table schema" in str(excinfo.value)
|
|
63
|
+
assert "SSL/Connection error occurred" in str(excinfo.value)
|
|
64
|
+
finally:
|
|
65
|
+
# Cleanup
|
|
66
|
+
bigquery_client.delete_table(table_id)
|