google-cloud-bigquery 3.32.0__tar.gz → 3.33.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_bigquery-3.32.0/google_cloud_bigquery.egg-info → google_cloud_bigquery-3.33.0}/PKG-INFO +6 -3
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_pandas_helpers.py +66 -88
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/client.py +11 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dataset.py +2 -2
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/base.py +32 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/query.py +36 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/schema.py +11 -17
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/table.py +46 -9
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/version.py +1 -1
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0/google_cloud_bigquery.egg-info}/PKG-INFO +6 -3
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google_cloud_bigquery.egg-info/requires.txt +10 -2
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/pyproject.toml +6 -2
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_client.py +47 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/helpers.py +3 -1
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_base.py +43 -1
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_query_pandas.py +6 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test__pandas_helpers.py +37 -78
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_client.py +56 -25
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_dataset.py +47 -1
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_dbapi_cursor.py +0 -1
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_magics.py +28 -2
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_opentelemetry_tracing.py +0 -1
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_query.py +9 -8
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_schema.py +0 -5
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_table.py +13 -11
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_table_pandas.py +103 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/LICENSE +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/MANIFEST.in +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/README.rst +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_http.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_job_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_pyarrow_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_tqdm_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/_versions_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dbapi/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dbapi/_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dbapi/connection.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dbapi/cursor.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dbapi/exceptions.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dbapi/types.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/encryption_configuration.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/enums.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/exceptions.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/external_config.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/format_options.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/iam.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/copy_.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/extract.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/load.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/line_arg_parser/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/line_arg_parser/exceptions.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/line_arg_parser/lexer.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/line_arg_parser/parser.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/line_arg_parser/visitors.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/magics/magics.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/model.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/opentelemetry_tracing.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/py.typed +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/query.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/retry.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/routine/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/routine/routine.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/standard_sql.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/types/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/types/encryption_config.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/types/model.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/types/model_reference.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/types/standard_sql.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery_v2/types/table_reference.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google_cloud_bigquery.egg-info/SOURCES.txt +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google_cloud_bigquery.egg-info/dependency_links.txt +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google_cloud_bigquery.egg-info/top_level.txt +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/setup.cfg +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/setup.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/characters.json +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/characters.jsonl +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/colors.avro +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/numeric_38_12.parquet +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/people.csv +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/scalars.csv +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/scalars.jsonl +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/scalars_extreme.jsonl +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/scalars_schema.json +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/scalars_schema_csv.json +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/data/schema.json +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/scrub_datasets.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/conftest.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_arrow.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_job_retry.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_list_rows.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_magics.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_pandas.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_query.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/system/test_structs.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/_helpers/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/_helpers/test_cell_data_parser.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/_helpers/test_data_frame_cell_data_parser.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/_helpers/test_scalar_query_param_parser.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/conftest.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_copy.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_extract.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_load.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_load_config.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_query.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_query_config.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/job/test_query_stats.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/line_arg_parser/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/line_arg_parser/test_lexer.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/line_arg_parser/test_parser.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/line_arg_parser/test_visitors.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/model/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/model/test_model.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/model/test_model_reference.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/routine/__init__.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/routine/test_remote_function_options.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/routine/test_routine.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/routine/test_routine_argument.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/routine/test_routine_reference.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test__helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test__http.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test__job_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test__pyarrow_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test__versions_helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_create_dataset.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_dbapi__helpers.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_dbapi_connection.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_dbapi_types.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_delete_dataset.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_encryption_configuration.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_external_config.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_format_options.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_job_retry.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_legacy_types.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_list_datasets.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_list_jobs.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_list_models.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_list_projects.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_list_routines.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_list_tables.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_packaging.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_retry.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_signature_compatibility.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_standard_sql_types.py +0 -0
- {google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/tests/unit/test_table_arrow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: google-cloud-bigquery
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.33.0
|
|
4
4
|
Summary: Google BigQuery API client library
|
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -48,8 +48,11 @@ Requires-Dist: Shapely<3.0.0,>=1.8.4; extra == "geopandas"
|
|
|
48
48
|
Provides-Extra: ipython
|
|
49
49
|
Requires-Dist: ipython>=7.23.1; extra == "ipython"
|
|
50
50
|
Requires-Dist: bigquery-magics>=0.6.0; extra == "ipython"
|
|
51
|
+
Provides-Extra: matplotlib
|
|
52
|
+
Requires-Dist: matplotlib<=3.9.2,>=3.7.1; python_version == "3.9" and extra == "matplotlib"
|
|
53
|
+
Requires-Dist: matplotlib>=3.10.3; python_version >= "3.10" and extra == "matplotlib"
|
|
51
54
|
Provides-Extra: tqdm
|
|
52
|
-
Requires-Dist: tqdm<5.0.0,>=4.
|
|
55
|
+
Requires-Dist: tqdm<5.0.0,>=4.23.4; extra == "tqdm"
|
|
53
56
|
Provides-Extra: opentelemetry
|
|
54
57
|
Requires-Dist: opentelemetry-api>=1.1.0; extra == "opentelemetry"
|
|
55
58
|
Requires-Dist: opentelemetry-sdk>=1.1.0; extra == "opentelemetry"
|
|
@@ -58,7 +61,7 @@ Provides-Extra: bigquery-v2
|
|
|
58
61
|
Requires-Dist: proto-plus<2.0.0,>=1.22.3; extra == "bigquery-v2"
|
|
59
62
|
Requires-Dist: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2; extra == "bigquery-v2"
|
|
60
63
|
Provides-Extra: all
|
|
61
|
-
Requires-Dist: google-cloud-bigquery[bigquery_v2,bqstorage,geopandas,ipython,ipywidgets,opentelemetry,pandas,tqdm]; extra == "all"
|
|
64
|
+
Requires-Dist: google-cloud-bigquery[bigquery_v2,bqstorage,geopandas,ipython,ipywidgets,matplotlib,opentelemetry,pandas,tqdm]; extra == "all"
|
|
62
65
|
|
|
63
66
|
Python Client for Google BigQuery
|
|
64
67
|
=================================
|
|
@@ -508,31 +508,37 @@ def dataframe_to_bq_schema(dataframe, bq_schema):
|
|
|
508
508
|
bq_schema_unused = set()
|
|
509
509
|
|
|
510
510
|
bq_schema_out = []
|
|
511
|
-
|
|
512
|
-
|
|
511
|
+
unknown_type_columns = []
|
|
512
|
+
dataframe_reset_index = dataframe.reset_index()
|
|
513
513
|
for column, dtype in list_columns_and_indexes(dataframe):
|
|
514
|
-
#
|
|
514
|
+
# Step 1: use provided type from schema, if present.
|
|
515
515
|
bq_field = bq_schema_index.get(column)
|
|
516
516
|
if bq_field:
|
|
517
517
|
bq_schema_out.append(bq_field)
|
|
518
518
|
bq_schema_unused.discard(bq_field.name)
|
|
519
519
|
continue
|
|
520
520
|
|
|
521
|
-
#
|
|
521
|
+
# Step 2: try to automatically determine the type based on the
|
|
522
522
|
# pandas dtype.
|
|
523
523
|
bq_type = _PANDAS_DTYPE_TO_BQ.get(dtype.name)
|
|
524
524
|
if bq_type is None:
|
|
525
|
-
sample_data = _first_valid(
|
|
525
|
+
sample_data = _first_valid(dataframe_reset_index[column])
|
|
526
526
|
if (
|
|
527
527
|
isinstance(sample_data, _BaseGeometry)
|
|
528
528
|
and sample_data is not None # Paranoia
|
|
529
529
|
):
|
|
530
530
|
bq_type = "GEOGRAPHY"
|
|
531
|
-
|
|
532
|
-
|
|
531
|
+
if bq_type is not None:
|
|
532
|
+
bq_schema_out.append(schema.SchemaField(column, bq_type))
|
|
533
|
+
continue
|
|
534
|
+
|
|
535
|
+
# Step 3: try with pyarrow if available
|
|
536
|
+
bq_field = _get_schema_by_pyarrow(column, dataframe_reset_index[column])
|
|
537
|
+
if bq_field is not None:
|
|
538
|
+
bq_schema_out.append(bq_field)
|
|
539
|
+
continue
|
|
533
540
|
|
|
534
|
-
|
|
535
|
-
unknown_type_fields.append(bq_field)
|
|
541
|
+
unknown_type_columns.append(column)
|
|
536
542
|
|
|
537
543
|
# Catch any schema mismatch. The developer explicitly asked to serialize a
|
|
538
544
|
# column, but it was not found.
|
|
@@ -543,98 +549,70 @@ def dataframe_to_bq_schema(dataframe, bq_schema):
|
|
|
543
549
|
)
|
|
544
550
|
)
|
|
545
551
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
)
|
|
553
|
-
warnings.warn(msg)
|
|
554
|
-
return None # We cannot detect the schema in full.
|
|
555
|
-
|
|
556
|
-
# The augment_schema() helper itself will also issue unknown type
|
|
557
|
-
# warnings if detection still fails for any of the fields.
|
|
558
|
-
bq_schema_out = augment_schema(dataframe, bq_schema_out)
|
|
552
|
+
if unknown_type_columns != []:
|
|
553
|
+
msg = "Could not determine the type of columns: {}".format(
|
|
554
|
+
", ".join(unknown_type_columns)
|
|
555
|
+
)
|
|
556
|
+
warnings.warn(msg)
|
|
557
|
+
return None # We cannot detect the schema in full.
|
|
559
558
|
|
|
560
|
-
return tuple(bq_schema_out)
|
|
559
|
+
return tuple(bq_schema_out)
|
|
561
560
|
|
|
562
561
|
|
|
563
|
-
def
|
|
564
|
-
"""
|
|
562
|
+
def _get_schema_by_pyarrow(name, series):
|
|
563
|
+
"""Attempt to detect the type of the given series by leveraging PyArrow's
|
|
564
|
+
type detection capabilities.
|
|
565
565
|
|
|
566
|
-
This function requires ``pyarrow`` to
|
|
567
|
-
|
|
568
|
-
|
|
566
|
+
This function requires the ``pyarrow`` library to be installed and
|
|
567
|
+
available. If the series type cannot be determined or ``pyarrow`` is not
|
|
568
|
+
available, ``None`` is returned.
|
|
569
569
|
|
|
570
570
|
Args:
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
the fields may be ``None``.
|
|
571
|
+
name (str):
|
|
572
|
+
the column name of the SchemaField.
|
|
573
|
+
series (pandas.Series):
|
|
574
|
+
The Series data for which to detect the data type.
|
|
576
575
|
Returns:
|
|
577
|
-
Optional[
|
|
576
|
+
Optional[google.cloud.bigquery.schema.SchemaField]:
|
|
577
|
+
A tuple containing the BigQuery-compatible type string (e.g.,
|
|
578
|
+
"STRING", "INTEGER", "TIMESTAMP", "DATETIME", "NUMERIC", "BIGNUMERIC")
|
|
579
|
+
and the mode string ("NULLABLE", "REPEATED").
|
|
580
|
+
Returns ``None`` if the type cannot be determined or ``pyarrow``
|
|
581
|
+
is not imported.
|
|
578
582
|
"""
|
|
579
|
-
# pytype: disable=attribute-error
|
|
580
|
-
augmented_schema = []
|
|
581
|
-
unknown_type_fields = []
|
|
582
|
-
for field in current_bq_schema:
|
|
583
|
-
if field.field_type is not None:
|
|
584
|
-
augmented_schema.append(field)
|
|
585
|
-
continue
|
|
586
|
-
|
|
587
|
-
arrow_table = pyarrow.array(dataframe.reset_index()[field.name])
|
|
588
|
-
|
|
589
|
-
if pyarrow.types.is_list(arrow_table.type):
|
|
590
|
-
# `pyarrow.ListType`
|
|
591
|
-
detected_mode = "REPEATED"
|
|
592
|
-
detected_type = _pyarrow_helpers.arrow_scalar_ids_to_bq(
|
|
593
|
-
arrow_table.values.type.id
|
|
594
|
-
)
|
|
595
|
-
|
|
596
|
-
# For timezone-naive datetimes, pyarrow assumes the UTC timezone and adds
|
|
597
|
-
# it to such datetimes, causing them to be recognized as TIMESTAMP type.
|
|
598
|
-
# We thus additionally check the actual data to see if we need to overrule
|
|
599
|
-
# that and choose DATETIME instead.
|
|
600
|
-
# Note that this should only be needed for datetime values inside a list,
|
|
601
|
-
# since scalar datetime values have a proper Pandas dtype that allows
|
|
602
|
-
# distinguishing between timezone-naive and timezone-aware values before
|
|
603
|
-
# even requiring the additional schema augment logic in this method.
|
|
604
|
-
if detected_type == "TIMESTAMP":
|
|
605
|
-
valid_item = _first_array_valid(dataframe[field.name])
|
|
606
|
-
if isinstance(valid_item, datetime) and valid_item.tzinfo is None:
|
|
607
|
-
detected_type = "DATETIME"
|
|
608
|
-
else:
|
|
609
|
-
detected_mode = field.mode
|
|
610
|
-
detected_type = _pyarrow_helpers.arrow_scalar_ids_to_bq(arrow_table.type.id)
|
|
611
|
-
if detected_type == "NUMERIC" and arrow_table.type.scale > 9:
|
|
612
|
-
detected_type = "BIGNUMERIC"
|
|
613
583
|
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
continue
|
|
584
|
+
if not pyarrow:
|
|
585
|
+
return None
|
|
617
586
|
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
587
|
+
arrow_table = pyarrow.array(series)
|
|
588
|
+
if pyarrow.types.is_list(arrow_table.type):
|
|
589
|
+
# `pyarrow.ListType`
|
|
590
|
+
mode = "REPEATED"
|
|
591
|
+
type = _pyarrow_helpers.arrow_scalar_ids_to_bq(arrow_table.values.type.id)
|
|
592
|
+
|
|
593
|
+
# For timezone-naive datetimes, pyarrow assumes the UTC timezone and adds
|
|
594
|
+
# it to such datetimes, causing them to be recognized as TIMESTAMP type.
|
|
595
|
+
# We thus additionally check the actual data to see if we need to overrule
|
|
596
|
+
# that and choose DATETIME instead.
|
|
597
|
+
# Note that this should only be needed for datetime values inside a list,
|
|
598
|
+
# since scalar datetime values have a proper Pandas dtype that allows
|
|
599
|
+
# distinguishing between timezone-naive and timezone-aware values before
|
|
600
|
+
# even requiring the additional schema augment logic in this method.
|
|
601
|
+
if type == "TIMESTAMP":
|
|
602
|
+
valid_item = _first_array_valid(series)
|
|
603
|
+
if isinstance(valid_item, datetime) and valid_item.tzinfo is None:
|
|
604
|
+
type = "DATETIME"
|
|
605
|
+
else:
|
|
606
|
+
mode = "NULLABLE" # default mode
|
|
607
|
+
type = _pyarrow_helpers.arrow_scalar_ids_to_bq(arrow_table.type.id)
|
|
608
|
+
if type == "NUMERIC" and arrow_table.type.scale > 9:
|
|
609
|
+
type = "BIGNUMERIC"
|
|
626
610
|
|
|
627
|
-
if
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
", ".join(field.name for field in unknown_type_fields)
|
|
631
|
-
)
|
|
632
|
-
)
|
|
611
|
+
if type is not None:
|
|
612
|
+
return schema.SchemaField(name, type, mode)
|
|
613
|
+
else:
|
|
633
614
|
return None
|
|
634
615
|
|
|
635
|
-
return augmented_schema
|
|
636
|
-
# pytype: enable=attribute-error
|
|
637
|
-
|
|
638
616
|
|
|
639
617
|
def dataframe_to_arrow(dataframe, bq_schema):
|
|
640
618
|
"""Convert pandas dataframe to Arrow table, using BigQuery schema.
|
{google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/client.py
RENAMED
|
@@ -1389,6 +1389,7 @@ class Client(ClientWithProject):
|
|
|
1389
1389
|
self,
|
|
1390
1390
|
table: Table,
|
|
1391
1391
|
fields: Sequence[str],
|
|
1392
|
+
autodetect_schema: bool = False,
|
|
1392
1393
|
retry: retries.Retry = DEFAULT_RETRY,
|
|
1393
1394
|
timeout: TimeoutType = DEFAULT_TIMEOUT,
|
|
1394
1395
|
) -> Table:
|
|
@@ -1419,6 +1420,10 @@ class Client(ClientWithProject):
|
|
|
1419
1420
|
fields (Sequence[str]):
|
|
1420
1421
|
The fields of ``table`` to change, spelled as the
|
|
1421
1422
|
:class:`~google.cloud.bigquery.table.Table` properties.
|
|
1423
|
+
autodetect_schema (bool):
|
|
1424
|
+
Specifies if the schema of the table should be autodetected when
|
|
1425
|
+
updating the table from the underlying source. Only applicable
|
|
1426
|
+
for external tables.
|
|
1422
1427
|
retry (Optional[google.api_core.retry.Retry]):
|
|
1423
1428
|
A description of how to retry the API call.
|
|
1424
1429
|
timeout (Optional[float]):
|
|
@@ -1438,12 +1443,18 @@ class Client(ClientWithProject):
|
|
|
1438
1443
|
path = table.path
|
|
1439
1444
|
span_attributes = {"path": path, "fields": fields}
|
|
1440
1445
|
|
|
1446
|
+
if autodetect_schema:
|
|
1447
|
+
query_params = {"autodetect_schema": True}
|
|
1448
|
+
else:
|
|
1449
|
+
query_params = {}
|
|
1450
|
+
|
|
1441
1451
|
api_response = self._call_api(
|
|
1442
1452
|
retry,
|
|
1443
1453
|
span_name="BigQuery.updateTable",
|
|
1444
1454
|
span_attributes=span_attributes,
|
|
1445
1455
|
method="PATCH",
|
|
1446
1456
|
path=path,
|
|
1457
|
+
query_params=query_params,
|
|
1447
1458
|
data=partial,
|
|
1448
1459
|
headers=headers,
|
|
1449
1460
|
timeout=timeout,
|
{google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/dataset.py
RENAMED
|
@@ -512,7 +512,7 @@ class AccessEntry(object):
|
|
|
512
512
|
return not self == other
|
|
513
513
|
|
|
514
514
|
def __repr__(self):
|
|
515
|
-
return f"<AccessEntry: role={self.role}, {self.
|
|
515
|
+
return f"<AccessEntry: role={self.role}, {self.entity_type}={self.entity_id}>"
|
|
516
516
|
|
|
517
517
|
def _key(self):
|
|
518
518
|
"""A tuple key that uniquely describes this field.
|
|
@@ -531,7 +531,7 @@ class AccessEntry(object):
|
|
|
531
531
|
properties["condition"] = condition_key
|
|
532
532
|
|
|
533
533
|
prop_tup = tuple(sorted(properties.items()))
|
|
534
|
-
return (self.role, self.
|
|
534
|
+
return (self.role, self.entity_type, self.entity_id, prop_tup)
|
|
535
535
|
|
|
536
536
|
def __hash__(self):
|
|
537
537
|
return hash(self._key())
|
{google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/base.py
RENAMED
|
@@ -224,6 +224,26 @@ class _JobConfig(object):
|
|
|
224
224
|
else:
|
|
225
225
|
self._properties.pop("jobTimeoutMs", None)
|
|
226
226
|
|
|
227
|
+
@property
|
|
228
|
+
def reservation(self):
|
|
229
|
+
"""str: Optional. The reservation that job would use.
|
|
230
|
+
|
|
231
|
+
User can specify a reservation to execute the job. If reservation is
|
|
232
|
+
not set, reservation is determined based on the rules defined by the
|
|
233
|
+
reservation assignments. The expected format is
|
|
234
|
+
projects/{project}/locations/{location}/reservations/{reservation}.
|
|
235
|
+
|
|
236
|
+
Raises:
|
|
237
|
+
ValueError: If ``value`` type is not None or of string type.
|
|
238
|
+
"""
|
|
239
|
+
return self._properties.setdefault("reservation", None)
|
|
240
|
+
|
|
241
|
+
@reservation.setter
|
|
242
|
+
def reservation(self, value):
|
|
243
|
+
if value and not isinstance(value, str):
|
|
244
|
+
raise ValueError("Reservation must be None or a string.")
|
|
245
|
+
self._properties["reservation"] = value
|
|
246
|
+
|
|
227
247
|
@property
|
|
228
248
|
def labels(self):
|
|
229
249
|
"""Dict[str, str]: Labels for the job.
|
|
@@ -488,6 +508,18 @@ class _AsyncJob(google.api_core.future.polling.PollingFuture):
|
|
|
488
508
|
"""str: Location where the job runs."""
|
|
489
509
|
return _helpers._get_sub_prop(self._properties, ["jobReference", "location"])
|
|
490
510
|
|
|
511
|
+
@property
|
|
512
|
+
def reservation_id(self):
|
|
513
|
+
"""str: Name of the primary reservation assigned to this job.
|
|
514
|
+
|
|
515
|
+
Note that this could be different than reservations reported in
|
|
516
|
+
the reservation field if parent reservations were used to execute
|
|
517
|
+
this job.
|
|
518
|
+
"""
|
|
519
|
+
return _helpers._get_sub_prop(
|
|
520
|
+
self._properties, ["statistics", "reservation_id"]
|
|
521
|
+
)
|
|
522
|
+
|
|
491
523
|
def _require_client(self, client):
|
|
492
524
|
"""Check client or verify over-ride.
|
|
493
525
|
|
{google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/job/query.py
RENAMED
|
@@ -2102,6 +2102,10 @@ class QueryJob(_AsyncJob):
|
|
|
2102
2102
|
create_bqstorage_client: bool = True,
|
|
2103
2103
|
max_results: Optional[int] = None,
|
|
2104
2104
|
geography_column: Optional[str] = None,
|
|
2105
|
+
bool_dtype: Union[Any, None] = DefaultPandasDTypes.BOOL_DTYPE,
|
|
2106
|
+
int_dtype: Union[Any, None] = DefaultPandasDTypes.INT_DTYPE,
|
|
2107
|
+
float_dtype: Union[Any, None] = None,
|
|
2108
|
+
string_dtype: Union[Any, None] = None,
|
|
2105
2109
|
) -> "geopandas.GeoDataFrame":
|
|
2106
2110
|
"""Return a GeoPandas GeoDataFrame from a QueryJob
|
|
2107
2111
|
|
|
@@ -2152,6 +2156,34 @@ class QueryJob(_AsyncJob):
|
|
|
2152
2156
|
identifies which one to use to construct a GeoPandas
|
|
2153
2157
|
GeoDataFrame. This option can be ommitted if there's
|
|
2154
2158
|
only one GEOGRAPHY column.
|
|
2159
|
+
bool_dtype (Optional[pandas.Series.dtype, None]):
|
|
2160
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.BooleanDtype()``)
|
|
2161
|
+
to convert BigQuery Boolean type, instead of relying on the default
|
|
2162
|
+
``pandas.BooleanDtype()``. If you explicitly set the value to ``None``,
|
|
2163
|
+
then the data type will be ``numpy.dtype("bool")``. BigQuery Boolean
|
|
2164
|
+
type can be found at:
|
|
2165
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#boolean_type
|
|
2166
|
+
int_dtype (Optional[pandas.Series.dtype, None]):
|
|
2167
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.Int64Dtype()``)
|
|
2168
|
+
to convert BigQuery Integer types, instead of relying on the default
|
|
2169
|
+
``pandas.Int64Dtype()``. If you explicitly set the value to ``None``,
|
|
2170
|
+
then the data type will be ``numpy.dtype("int64")``. A list of BigQuery
|
|
2171
|
+
Integer types can be found at:
|
|
2172
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types
|
|
2173
|
+
float_dtype (Optional[pandas.Series.dtype, None]):
|
|
2174
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.Float32Dtype()``)
|
|
2175
|
+
to convert BigQuery Float type, instead of relying on the default
|
|
2176
|
+
``numpy.dtype("float64")``. If you explicitly set the value to ``None``,
|
|
2177
|
+
then the data type will be ``numpy.dtype("float64")``. BigQuery Float
|
|
2178
|
+
type can be found at:
|
|
2179
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#floating_point_types
|
|
2180
|
+
string_dtype (Optional[pandas.Series.dtype, None]):
|
|
2181
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.StringDtype()``) to
|
|
2182
|
+
convert BigQuery String type, instead of relying on the default
|
|
2183
|
+
``numpy.dtype("object")``. If you explicitly set the value to ``None``,
|
|
2184
|
+
then the data type will be ``numpy.dtype("object")``. BigQuery String
|
|
2185
|
+
type can be found at:
|
|
2186
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#string_type
|
|
2155
2187
|
|
|
2156
2188
|
Returns:
|
|
2157
2189
|
geopandas.GeoDataFrame:
|
|
@@ -2175,6 +2207,10 @@ class QueryJob(_AsyncJob):
|
|
|
2175
2207
|
progress_bar_type=progress_bar_type,
|
|
2176
2208
|
create_bqstorage_client=create_bqstorage_client,
|
|
2177
2209
|
geography_column=geography_column,
|
|
2210
|
+
bool_dtype=bool_dtype,
|
|
2211
|
+
int_dtype=int_dtype,
|
|
2212
|
+
float_dtype=float_dtype,
|
|
2213
|
+
string_dtype=string_dtype,
|
|
2178
2214
|
)
|
|
2179
2215
|
|
|
2180
2216
|
def __iter__(self):
|
{google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/schema.py
RENAMED
|
@@ -284,15 +284,13 @@ class SchemaField(object):
|
|
|
284
284
|
return self._properties.get("name", "")
|
|
285
285
|
|
|
286
286
|
@property
|
|
287
|
-
def field_type(self):
|
|
287
|
+
def field_type(self) -> str:
|
|
288
288
|
"""str: The type of the field.
|
|
289
289
|
|
|
290
290
|
See:
|
|
291
291
|
https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#TableFieldSchema.FIELDS.type
|
|
292
292
|
"""
|
|
293
293
|
type_ = self._properties.get("type")
|
|
294
|
-
if type_ is None: # Shouldn't happen, but some unit tests do this.
|
|
295
|
-
return None
|
|
296
294
|
return cast(str, type_).upper()
|
|
297
295
|
|
|
298
296
|
@property
|
|
@@ -397,20 +395,16 @@ class SchemaField(object):
|
|
|
397
395
|
Returns:
|
|
398
396
|
Tuple: The contents of this :class:`~google.cloud.bigquery.schema.SchemaField`.
|
|
399
397
|
"""
|
|
400
|
-
field_type = self.field_type
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
if
|
|
406
|
-
if self.
|
|
407
|
-
field_type = f"{field_type}({self.
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
if self.scale is not None:
|
|
411
|
-
field_type = f"{field_type}({self.precision}, {self.scale})"
|
|
412
|
-
else:
|
|
413
|
-
field_type = f"{field_type}({self.precision})"
|
|
398
|
+
field_type = self.field_type
|
|
399
|
+
if field_type == "STRING" or field_type == "BYTES":
|
|
400
|
+
if self.max_length is not None:
|
|
401
|
+
field_type = f"{field_type}({self.max_length})"
|
|
402
|
+
elif field_type.endswith("NUMERIC"):
|
|
403
|
+
if self.precision is not None:
|
|
404
|
+
if self.scale is not None:
|
|
405
|
+
field_type = f"{field_type}({self.precision}, {self.scale})"
|
|
406
|
+
else:
|
|
407
|
+
field_type = f"{field_type}({self.precision})"
|
|
414
408
|
|
|
415
409
|
policy_tags = (
|
|
416
410
|
None if self.policy_tags is None else tuple(sorted(self.policy_tags.names))
|
{google_cloud_bigquery-3.32.0 → google_cloud_bigquery-3.33.0}/google/cloud/bigquery/table.py
RENAMED
|
@@ -1897,11 +1897,6 @@ class RowIterator(HTTPIterator):
|
|
|
1897
1897
|
"""total bytes processed from job statistics, if present."""
|
|
1898
1898
|
return self._total_bytes_processed
|
|
1899
1899
|
|
|
1900
|
-
@property
|
|
1901
|
-
def page_size(self) -> Optional[int]:
|
|
1902
|
-
"""The maximum number of rows in each page of results from this request, if present."""
|
|
1903
|
-
return self._page_size
|
|
1904
|
-
|
|
1905
1900
|
def _is_almost_completely_cached(self):
|
|
1906
1901
|
"""Check if all results are completely cached.
|
|
1907
1902
|
|
|
@@ -1953,7 +1948,7 @@ class RowIterator(HTTPIterator):
|
|
|
1953
1948
|
if self._is_almost_completely_cached():
|
|
1954
1949
|
return False
|
|
1955
1950
|
|
|
1956
|
-
if self.max_results is not None
|
|
1951
|
+
if self.max_results is not None:
|
|
1957
1952
|
return False
|
|
1958
1953
|
|
|
1959
1954
|
try:
|
|
@@ -2023,9 +2018,7 @@ class RowIterator(HTTPIterator):
|
|
|
2023
2018
|
bqstorage_client:
|
|
2024
2019
|
The BigQuery Storage client intended to use for downloading result rows.
|
|
2025
2020
|
"""
|
|
2026
|
-
if bqstorage_client is not None and
|
|
2027
|
-
self.max_results is not None or self.page_size is not None
|
|
2028
|
-
):
|
|
2021
|
+
if bqstorage_client is not None and self.max_results is not None:
|
|
2029
2022
|
warnings.warn(
|
|
2030
2023
|
"Cannot use bqstorage_client if max_results is set, "
|
|
2031
2024
|
"reverting to fetching data with the REST endpoint.",
|
|
@@ -2727,6 +2720,10 @@ class RowIterator(HTTPIterator):
|
|
|
2727
2720
|
progress_bar_type: Optional[str] = None,
|
|
2728
2721
|
create_bqstorage_client: bool = True,
|
|
2729
2722
|
geography_column: Optional[str] = None,
|
|
2723
|
+
bool_dtype: Union[Any, None] = DefaultPandasDTypes.BOOL_DTYPE,
|
|
2724
|
+
int_dtype: Union[Any, None] = DefaultPandasDTypes.INT_DTYPE,
|
|
2725
|
+
float_dtype: Union[Any, None] = None,
|
|
2726
|
+
string_dtype: Union[Any, None] = None,
|
|
2730
2727
|
) -> "geopandas.GeoDataFrame":
|
|
2731
2728
|
"""Create a GeoPandas GeoDataFrame by loading all pages of a query.
|
|
2732
2729
|
|
|
@@ -2778,6 +2775,34 @@ class RowIterator(HTTPIterator):
|
|
|
2778
2775
|
identifies which one to use to construct a geopandas
|
|
2779
2776
|
GeoDataFrame. This option can be ommitted if there's
|
|
2780
2777
|
only one GEOGRAPHY column.
|
|
2778
|
+
bool_dtype (Optional[pandas.Series.dtype, None]):
|
|
2779
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.BooleanDtype()``)
|
|
2780
|
+
to convert BigQuery Boolean type, instead of relying on the default
|
|
2781
|
+
``pandas.BooleanDtype()``. If you explicitly set the value to ``None``,
|
|
2782
|
+
then the data type will be ``numpy.dtype("bool")``. BigQuery Boolean
|
|
2783
|
+
type can be found at:
|
|
2784
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#boolean_type
|
|
2785
|
+
int_dtype (Optional[pandas.Series.dtype, None]):
|
|
2786
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.Int64Dtype()``)
|
|
2787
|
+
to convert BigQuery Integer types, instead of relying on the default
|
|
2788
|
+
``pandas.Int64Dtype()``. If you explicitly set the value to ``None``,
|
|
2789
|
+
then the data type will be ``numpy.dtype("int64")``. A list of BigQuery
|
|
2790
|
+
Integer types can be found at:
|
|
2791
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#integer_types
|
|
2792
|
+
float_dtype (Optional[pandas.Series.dtype, None]):
|
|
2793
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.Float32Dtype()``)
|
|
2794
|
+
to convert BigQuery Float type, instead of relying on the default
|
|
2795
|
+
``numpy.dtype("float64")``. If you explicitly set the value to ``None``,
|
|
2796
|
+
then the data type will be ``numpy.dtype("float64")``. BigQuery Float
|
|
2797
|
+
type can be found at:
|
|
2798
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#floating_point_types
|
|
2799
|
+
string_dtype (Optional[pandas.Series.dtype, None]):
|
|
2800
|
+
If set, indicate a pandas ExtensionDtype (e.g. ``pandas.StringDtype()``) to
|
|
2801
|
+
convert BigQuery String type, instead of relying on the default
|
|
2802
|
+
``numpy.dtype("object")``. If you explicitly set the value to ``None``,
|
|
2803
|
+
then the data type will be ``numpy.dtype("object")``. BigQuery String
|
|
2804
|
+
type can be found at:
|
|
2805
|
+
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#string_type
|
|
2781
2806
|
|
|
2782
2807
|
Returns:
|
|
2783
2808
|
geopandas.GeoDataFrame:
|
|
@@ -2829,6 +2854,10 @@ class RowIterator(HTTPIterator):
|
|
|
2829
2854
|
progress_bar_type,
|
|
2830
2855
|
create_bqstorage_client,
|
|
2831
2856
|
geography_as_object=True,
|
|
2857
|
+
bool_dtype=bool_dtype,
|
|
2858
|
+
int_dtype=int_dtype,
|
|
2859
|
+
float_dtype=float_dtype,
|
|
2860
|
+
string_dtype=string_dtype,
|
|
2832
2861
|
)
|
|
2833
2862
|
|
|
2834
2863
|
return geopandas.GeoDataFrame(
|
|
@@ -2932,6 +2961,10 @@ class _EmptyRowIterator(RowIterator):
|
|
|
2932
2961
|
progress_bar_type=None,
|
|
2933
2962
|
create_bqstorage_client=True,
|
|
2934
2963
|
geography_column: Optional[str] = None,
|
|
2964
|
+
bool_dtype: Union[Any, None] = DefaultPandasDTypes.BOOL_DTYPE,
|
|
2965
|
+
int_dtype: Union[Any, None] = DefaultPandasDTypes.INT_DTYPE,
|
|
2966
|
+
float_dtype: Union[Any, None] = None,
|
|
2967
|
+
string_dtype: Union[Any, None] = None,
|
|
2935
2968
|
) -> "pandas.DataFrame":
|
|
2936
2969
|
"""Create an empty dataframe.
|
|
2937
2970
|
|
|
@@ -2941,6 +2974,10 @@ class _EmptyRowIterator(RowIterator):
|
|
|
2941
2974
|
progress_bar_type (Any): Ignored. Added for compatibility with RowIterator.
|
|
2942
2975
|
create_bqstorage_client (bool): Ignored. Added for compatibility with RowIterator.
|
|
2943
2976
|
geography_column (str): Ignored. Added for compatibility with RowIterator.
|
|
2977
|
+
bool_dtype (Any): Ignored. Added for compatibility with RowIterator.
|
|
2978
|
+
int_dtype (Any): Ignored. Added for compatibility with RowIterator.
|
|
2979
|
+
float_dtype (Any): Ignored. Added for compatibility with RowIterator.
|
|
2980
|
+
string_dtype (Any): Ignored. Added for compatibility with RowIterator.
|
|
2944
2981
|
|
|
2945
2982
|
Returns:
|
|
2946
2983
|
pandas.DataFrame: An empty :class:`~pandas.DataFrame`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: google-cloud-bigquery
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.33.0
|
|
4
4
|
Summary: Google BigQuery API client library
|
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
|
6
6
|
License: Apache 2.0
|
|
@@ -48,8 +48,11 @@ Requires-Dist: Shapely<3.0.0,>=1.8.4; extra == "geopandas"
|
|
|
48
48
|
Provides-Extra: ipython
|
|
49
49
|
Requires-Dist: ipython>=7.23.1; extra == "ipython"
|
|
50
50
|
Requires-Dist: bigquery-magics>=0.6.0; extra == "ipython"
|
|
51
|
+
Provides-Extra: matplotlib
|
|
52
|
+
Requires-Dist: matplotlib<=3.9.2,>=3.7.1; python_version == "3.9" and extra == "matplotlib"
|
|
53
|
+
Requires-Dist: matplotlib>=3.10.3; python_version >= "3.10" and extra == "matplotlib"
|
|
51
54
|
Provides-Extra: tqdm
|
|
52
|
-
Requires-Dist: tqdm<5.0.0,>=4.
|
|
55
|
+
Requires-Dist: tqdm<5.0.0,>=4.23.4; extra == "tqdm"
|
|
53
56
|
Provides-Extra: opentelemetry
|
|
54
57
|
Requires-Dist: opentelemetry-api>=1.1.0; extra == "opentelemetry"
|
|
55
58
|
Requires-Dist: opentelemetry-sdk>=1.1.0; extra == "opentelemetry"
|
|
@@ -58,7 +61,7 @@ Provides-Extra: bigquery-v2
|
|
|
58
61
|
Requires-Dist: proto-plus<2.0.0,>=1.22.3; extra == "bigquery-v2"
|
|
59
62
|
Requires-Dist: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2; extra == "bigquery-v2"
|
|
60
63
|
Provides-Extra: all
|
|
61
|
-
Requires-Dist: google-cloud-bigquery[bigquery_v2,bqstorage,geopandas,ipython,ipywidgets,opentelemetry,pandas,tqdm]; extra == "all"
|
|
64
|
+
Requires-Dist: google-cloud-bigquery[bigquery_v2,bqstorage,geopandas,ipython,ipywidgets,matplotlib,opentelemetry,pandas,tqdm]; extra == "all"
|
|
62
65
|
|
|
63
66
|
Python Client for Google BigQuery
|
|
64
67
|
=================================
|
|
@@ -7,7 +7,7 @@ python-dateutil<3.0.0,>=2.8.2
|
|
|
7
7
|
requests<3.0.0,>=2.21.0
|
|
8
8
|
|
|
9
9
|
[all]
|
|
10
|
-
google-cloud-bigquery[bigquery_v2,bqstorage,geopandas,ipython,ipywidgets,opentelemetry,pandas,tqdm]
|
|
10
|
+
google-cloud-bigquery[bigquery_v2,bqstorage,geopandas,ipython,ipywidgets,matplotlib,opentelemetry,pandas,tqdm]
|
|
11
11
|
|
|
12
12
|
[bigquery_v2]
|
|
13
13
|
proto-plus<2.0.0,>=1.22.3
|
|
@@ -33,6 +33,14 @@ bigquery-magics>=0.6.0
|
|
|
33
33
|
ipywidgets>=7.7.1
|
|
34
34
|
ipykernel>=6.2.0
|
|
35
35
|
|
|
36
|
+
[matplotlib]
|
|
37
|
+
|
|
38
|
+
[matplotlib:python_version == "3.9"]
|
|
39
|
+
matplotlib<=3.9.2,>=3.7.1
|
|
40
|
+
|
|
41
|
+
[matplotlib:python_version >= "3.10"]
|
|
42
|
+
matplotlib>=3.10.3
|
|
43
|
+
|
|
36
44
|
[opentelemetry]
|
|
37
45
|
opentelemetry-api>=1.1.0
|
|
38
46
|
opentelemetry-sdk>=1.1.0
|
|
@@ -49,4 +57,4 @@ db-dtypes<2.0.0,>=1.0.4
|
|
|
49
57
|
grpcio<2.0.0,>=1.49.1
|
|
50
58
|
|
|
51
59
|
[tqdm]
|
|
52
|
-
tqdm<5.0.0,>=4.
|
|
60
|
+
tqdm<5.0.0,>=4.23.4
|
|
@@ -82,7 +82,11 @@ pandas = [
|
|
|
82
82
|
ipywidgets = ["ipywidgets >= 7.7.1", "ipykernel >= 6.2.0"]
|
|
83
83
|
geopandas = ["geopandas >= 0.9.0, < 2.0.0", "Shapely >= 1.8.4, < 3.0.0"]
|
|
84
84
|
ipython = ["ipython >= 7.23.1", "bigquery-magics >= 0.6.0"]
|
|
85
|
-
|
|
85
|
+
matplotlib = [
|
|
86
|
+
"matplotlib >= 3.7.1, <= 3.9.2; python_version == '3.9'",
|
|
87
|
+
"matplotlib >= 3.10.3; python_version >= '3.10'",
|
|
88
|
+
]
|
|
89
|
+
tqdm = ["tqdm >= 4.23.4, < 5.0.0"]
|
|
86
90
|
opentelemetry = [
|
|
87
91
|
"opentelemetry-api >= 1.1.0",
|
|
88
92
|
"opentelemetry-sdk >= 1.1.0",
|
|
@@ -93,7 +97,7 @@ bigquery_v2 = [
|
|
|
93
97
|
"protobuf >= 3.20.2, < 7.0.0, != 4.21.0, != 4.21.1, != 4.21.2, != 4.21.3, != 4.21.4, != 4.21.5", # For the legacy proto-based types.
|
|
94
98
|
]
|
|
95
99
|
all = [
|
|
96
|
-
"google-cloud-bigquery[bqstorage,pandas,ipywidgets,geopandas,ipython,tqdm,opentelemetry,bigquery_v2]",
|
|
100
|
+
"google-cloud-bigquery[bqstorage,pandas,ipywidgets,geopandas,ipython,matplotlib,tqdm,opentelemetry,bigquery_v2]",
|
|
97
101
|
]
|
|
98
102
|
|
|
99
103
|
[tool.setuptools.dynamic]
|