google-cloud-bigquery 3.36.0__tar.gz → 3.37.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.
Files changed (161) hide show
  1. {google_cloud_bigquery-3.36.0/google_cloud_bigquery.egg-info → google_cloud_bigquery-3.37.0}/PKG-INFO +1 -1
  2. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_job_helpers.py +3 -0
  3. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/client.py +2 -1
  4. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/job/base.py +50 -3
  5. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/query.py +1 -1
  6. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/table.py +3 -3
  7. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/version.py +1 -1
  8. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0/google_cloud_bigquery.egg-info}/PKG-INFO +1 -1
  9. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_base.py +41 -0
  10. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_query_config.py +5 -0
  11. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__job_helpers.py +28 -0
  12. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_table.py +68 -76
  13. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/LICENSE +0 -0
  14. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/MANIFEST.in +0 -0
  15. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/README.rst +0 -0
  16. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/__init__.py +0 -0
  17. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_helpers.py +0 -0
  18. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_http.py +0 -0
  19. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_pandas_helpers.py +0 -0
  20. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_pyarrow_helpers.py +0 -0
  21. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_tqdm_helpers.py +0 -0
  22. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/_versions_helpers.py +0 -0
  23. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dataset.py +0 -0
  24. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dbapi/__init__.py +0 -0
  25. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dbapi/_helpers.py +0 -0
  26. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dbapi/connection.py +0 -0
  27. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dbapi/cursor.py +0 -0
  28. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dbapi/exceptions.py +0 -0
  29. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/dbapi/types.py +0 -0
  30. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/encryption_configuration.py +0 -0
  31. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/enums.py +0 -0
  32. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/exceptions.py +0 -0
  33. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/external_config.py +0 -0
  34. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/format_options.py +0 -0
  35. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/iam.py +0 -0
  36. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/job/__init__.py +0 -0
  37. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/job/copy_.py +0 -0
  38. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/job/extract.py +0 -0
  39. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/job/load.py +0 -0
  40. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/job/query.py +0 -0
  41. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/__init__.py +0 -0
  42. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/line_arg_parser/__init__.py +0 -0
  43. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/line_arg_parser/exceptions.py +0 -0
  44. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/line_arg_parser/lexer.py +0 -0
  45. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/line_arg_parser/parser.py +0 -0
  46. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/line_arg_parser/visitors.py +0 -0
  47. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/magics/magics.py +0 -0
  48. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/model.py +0 -0
  49. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/opentelemetry_tracing.py +0 -0
  50. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/py.typed +0 -0
  51. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/retry.py +0 -0
  52. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/routine/__init__.py +0 -0
  53. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/routine/routine.py +0 -0
  54. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/schema.py +0 -0
  55. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery/standard_sql.py +0 -0
  56. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/__init__.py +0 -0
  57. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/types/__init__.py +0 -0
  58. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/types/encryption_config.py +0 -0
  59. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/types/model.py +0 -0
  60. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/types/model_reference.py +0 -0
  61. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/types/standard_sql.py +0 -0
  62. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google/cloud/bigquery_v2/types/table_reference.py +0 -0
  63. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google_cloud_bigquery.egg-info/SOURCES.txt +0 -0
  64. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google_cloud_bigquery.egg-info/dependency_links.txt +0 -0
  65. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google_cloud_bigquery.egg-info/requires.txt +0 -0
  66. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/google_cloud_bigquery.egg-info/top_level.txt +0 -0
  67. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/pyproject.toml +0 -0
  68. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/setup.cfg +0 -0
  69. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/setup.py +0 -0
  70. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/__init__.py +0 -0
  71. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/characters.json +0 -0
  72. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/characters.jsonl +0 -0
  73. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/colors.avro +0 -0
  74. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/numeric_38_12.parquet +0 -0
  75. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/people.csv +0 -0
  76. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/scalars.csv +0 -0
  77. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/scalars.jsonl +0 -0
  78. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/scalars_extreme.jsonl +0 -0
  79. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/scalars_schema.json +0 -0
  80. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/scalars_schema_csv.json +0 -0
  81. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/data/schema.json +0 -0
  82. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/scrub_datasets.py +0 -0
  83. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/__init__.py +0 -0
  84. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/conftest.py +0 -0
  85. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/helpers.py +0 -0
  86. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_arrow.py +0 -0
  87. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_client.py +0 -0
  88. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_job_retry.py +0 -0
  89. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_list_rows.py +0 -0
  90. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_magics.py +0 -0
  91. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_pandas.py +0 -0
  92. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_query.py +0 -0
  93. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/system/test_structs.py +0 -0
  94. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/__init__.py +0 -0
  95. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/_helpers/__init__.py +0 -0
  96. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/_helpers/test_cell_data_parser.py +0 -0
  97. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/_helpers/test_data_frame_cell_data_parser.py +0 -0
  98. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/_helpers/test_scalar_query_param_parser.py +0 -0
  99. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/conftest.py +0 -0
  100. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/helpers.py +0 -0
  101. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/__init__.py +0 -0
  102. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/helpers.py +0 -0
  103. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_async_job_retry.py +0 -0
  104. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_copy.py +0 -0
  105. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_extract.py +0 -0
  106. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_load.py +0 -0
  107. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_load_config.py +0 -0
  108. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_query.py +0 -0
  109. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_query_job_retry.py +0 -0
  110. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_query_pandas.py +0 -0
  111. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/job/test_query_stats.py +0 -0
  112. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/line_arg_parser/__init__.py +0 -0
  113. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/line_arg_parser/test_lexer.py +0 -0
  114. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/line_arg_parser/test_parser.py +0 -0
  115. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/line_arg_parser/test_visitors.py +0 -0
  116. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/model/__init__.py +0 -0
  117. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/model/test_model.py +0 -0
  118. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/model/test_model_reference.py +0 -0
  119. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/routine/__init__.py +0 -0
  120. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/routine/test_remote_function_options.py +0 -0
  121. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/routine/test_routine.py +0 -0
  122. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/routine/test_routine_argument.py +0 -0
  123. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/routine/test_routine_reference.py +0 -0
  124. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__helpers.py +0 -0
  125. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__http.py +0 -0
  126. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__job_helpers_retry.py +0 -0
  127. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__pandas_helpers.py +0 -0
  128. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__pyarrow_helpers.py +0 -0
  129. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test__versions_helpers.py +0 -0
  130. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_client.py +0 -0
  131. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_client_bigframes.py +0 -0
  132. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_client_resumable_media_upload.py +0 -0
  133. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_client_retry.py +0 -0
  134. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_create_dataset.py +0 -0
  135. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_dataset.py +0 -0
  136. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_dbapi__helpers.py +0 -0
  137. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_dbapi_connection.py +0 -0
  138. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_dbapi_cursor.py +0 -0
  139. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_dbapi_types.py +0 -0
  140. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_delete_dataset.py +0 -0
  141. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_encryption_configuration.py +0 -0
  142. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_external_config.py +0 -0
  143. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_format_options.py +0 -0
  144. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_job_retry.py +0 -0
  145. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_legacy_types.py +0 -0
  146. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_list_datasets.py +0 -0
  147. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_list_jobs.py +0 -0
  148. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_list_models.py +0 -0
  149. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_list_projects.py +0 -0
  150. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_list_routines.py +0 -0
  151. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_list_tables.py +0 -0
  152. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_magics.py +0 -0
  153. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_opentelemetry_tracing.py +0 -0
  154. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_packaging.py +0 -0
  155. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_query.py +0 -0
  156. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_retry.py +0 -0
  157. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_schema.py +0 -0
  158. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_signature_compatibility.py +0 -0
  159. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_standard_sql_types.py +0 -0
  160. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/tests/unit/test_table_arrow.py +0 -0
  161. {google_cloud_bigquery-3.36.0 → google_cloud_bigquery-3.37.0}/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.36.0
3
+ Version: 3.37.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
@@ -658,6 +658,9 @@ def _supported_by_jobs_query(request_body: Dict[str, Any]) -> bool:
658
658
  "requestId",
659
659
  "createSession",
660
660
  "writeIncrementalResults",
661
+ "jobTimeoutMs",
662
+ "reservation",
663
+ "maxSlots",
661
664
  }
662
665
 
663
666
  unsupported_keys = request_keys - keys_allowlist
@@ -3519,7 +3519,8 @@ class Client(ClientWithProject):
3519
3519
  specified here becomes the default ``job_retry`` for
3520
3520
  ``result()``, where it can also be specified.
3521
3521
  api_method (Union[str, enums.QueryApiMethod]):
3522
- Method with which to start the query job.
3522
+ Method with which to start the query job. By default,
3523
+ the jobs.insert API is used for starting a query.
3523
3524
 
3524
3525
  See :class:`google.cloud.bigquery.enums.QueryApiMethod` for
3525
3526
  details on the difference between the query start methods.
@@ -224,6 +224,37 @@ class _JobConfig(object):
224
224
  else:
225
225
  self._properties.pop("jobTimeoutMs", None)
226
226
 
227
+ @property
228
+ def max_slots(self) -> Optional[int]:
229
+ """The maximum rate of slot consumption to allow for this job.
230
+
231
+ If set, the number of slots used to execute the job will be throttled
232
+ to try and keep its slot consumption below the requested rate.
233
+ This feature is not generally available.
234
+ """
235
+
236
+ max_slots = self._properties.get("maxSlots")
237
+ if max_slots is not None:
238
+ if isinstance(max_slots, str):
239
+ return int(max_slots)
240
+ if isinstance(max_slots, int):
241
+ return max_slots
242
+ return None
243
+
244
+ @max_slots.setter
245
+ def max_slots(self, value):
246
+ try:
247
+ value = _int_or_none(value)
248
+ except ValueError as err:
249
+ raise ValueError("Pass an int for max slots, e.g. 100").with_traceback(
250
+ err.__traceback__
251
+ )
252
+
253
+ if value is not None:
254
+ self._properties["maxSlots"] = str(value)
255
+ else:
256
+ self._properties.pop("maxSlots", None)
257
+
227
258
  @property
228
259
  def reservation(self):
229
260
  """str: Optional. The reservation that job would use.
@@ -662,7 +693,12 @@ class _AsyncJob(google.api_core.future.polling.PollingFuture):
662
693
 
663
694
  @property
664
695
  def error_result(self):
665
- """Error information about the job as a whole.
696
+ """Output only. Final error result of the job.
697
+
698
+ If present, indicates that the job has completed and was unsuccessful.
699
+
700
+ See:
701
+ https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobStatus.FIELDS.error_result
666
702
 
667
703
  Returns:
668
704
  Optional[Mapping]: the error information (None until set from the server).
@@ -673,7 +709,13 @@ class _AsyncJob(google.api_core.future.polling.PollingFuture):
673
709
 
674
710
  @property
675
711
  def errors(self):
676
- """Information about individual errors generated by the job.
712
+ """Output only. The first errors encountered during the running of the job.
713
+
714
+ The final message includes the number of errors that caused the process to stop.
715
+ Errors here do not necessarily mean that the job has not completed or was unsuccessful.
716
+
717
+ See:
718
+ https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobStatus.FIELDS.errors
677
719
 
678
720
  Returns:
679
721
  Optional[List[Mapping]]:
@@ -685,7 +727,12 @@ class _AsyncJob(google.api_core.future.polling.PollingFuture):
685
727
 
686
728
  @property
687
729
  def state(self):
688
- """Status of the job.
730
+ """Output only. Running state of the job.
731
+
732
+ Valid states include 'PENDING', 'RUNNING', and 'DONE'.
733
+
734
+ See:
735
+ https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobStatus.FIELDS.state
689
736
 
690
737
  Returns:
691
738
  Optional[str]:
@@ -1400,7 +1400,7 @@ class _QueryResults(object):
1400
1400
  api_response (Dict): Response returned from an API call
1401
1401
  """
1402
1402
  self._properties.clear()
1403
- self._properties.update(copy.deepcopy(api_response))
1403
+ self._properties.update(api_response)
1404
1404
 
1405
1405
 
1406
1406
  def _query_param_from_api_repr(resource):
@@ -3574,9 +3574,9 @@ class TableConstraints:
3574
3574
  def __eq__(self, other):
3575
3575
  if not isinstance(other, TableConstraints) and other is not None:
3576
3576
  raise TypeError("The value provided is not a BigQuery TableConstraints.")
3577
- return (
3578
- self.primary_key == other.primary_key if other.primary_key else None
3579
- ) and (self.foreign_keys == other.foreign_keys if other.foreign_keys else None)
3577
+ return self.primary_key == (
3578
+ other.primary_key if other.primary_key else None
3579
+ ) and self.foreign_keys == (other.foreign_keys if other.foreign_keys else None)
3580
3580
 
3581
3581
  @classmethod
3582
3582
  def from_api_repr(cls, resource: Dict[str, Any]) -> "TableConstraints":
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "3.36.0"
15
+ __version__ = "3.37.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-cloud-bigquery
3
- Version: 3.36.0
3
+ Version: 3.37.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
@@ -1276,3 +1276,44 @@ class Test_JobConfig(unittest.TestCase):
1276
1276
  job_config = self._make_one()
1277
1277
  job_config.reservation = "foo"
1278
1278
  self.assertEqual(job_config._properties["reservation"], "foo")
1279
+
1280
+ def test_max_slots_miss(self):
1281
+ job_config = self._make_one()
1282
+ self.assertEqual(job_config.max_slots, None)
1283
+
1284
+ def test_max_slots_set_and_clear(self):
1285
+ job_config = self._make_one()
1286
+ job_config.max_slots = 14
1287
+ self.assertEqual(job_config.max_slots, 14)
1288
+ job_config.max_slots = None
1289
+ self.assertEqual(job_config.max_slots, None)
1290
+
1291
+ def test_max_slots_hit_str(self):
1292
+ job_config = self._make_one()
1293
+ job_config._properties["maxSlots"] = "4"
1294
+ self.assertEqual(job_config.max_slots, 4)
1295
+
1296
+ def test_max_slots_hit_int(self):
1297
+ job_config = self._make_one()
1298
+ job_config._properties["maxSlots"] = int(3)
1299
+ self.assertEqual(job_config.max_slots, 3)
1300
+
1301
+ def test_max_slots_hit_invalid(self):
1302
+ job_config = self._make_one()
1303
+ job_config._properties["maxSlots"] = object()
1304
+ self.assertEqual(job_config.max_slots, None)
1305
+
1306
+ def test_max_slots_update_in_place(self):
1307
+ job_config = self._make_one()
1308
+ job_config.max_slots = 45 # update in place
1309
+ self.assertEqual(job_config.max_slots, 45)
1310
+
1311
+ def test_max_slots_setter_invalid(self):
1312
+ job_config = self._make_one()
1313
+ with self.assertRaises(ValueError):
1314
+ job_config.max_slots = "foo"
1315
+
1316
+ def test_max_slots_setter(self):
1317
+ job_config = self._make_one()
1318
+ job_config.max_slots = 123
1319
+ self.assertEqual(job_config._properties["maxSlots"], "123")
@@ -172,6 +172,11 @@ class TestQueryJobConfig(_Base):
172
172
  config.write_incremental_results = True
173
173
  self.assertEqual(config.write_incremental_results, True)
174
174
 
175
+ def test_max_slots(self):
176
+ config = self._get_target_class()()
177
+ config.max_slots = 99
178
+ self.assertEqual(config.max_slots, 99)
179
+
175
180
  def test_create_session(self):
176
181
  config = self._get_target_class()()
177
182
  self.assertIsNone(config.create_session)
@@ -200,6 +200,19 @@ def make_query_response(
200
200
  make_query_request({"writeIncrementalResults": True}),
201
201
  id="job_config-with-incremental-results",
202
202
  ),
203
+ pytest.param(
204
+ job_query.QueryJobConfig(
205
+ reservation="foo",
206
+ max_slots=100,
207
+ ),
208
+ make_query_request(
209
+ {
210
+ "maxSlots": "100",
211
+ "reservation": "foo",
212
+ }
213
+ ),
214
+ id="job_config-with-reservation-and-slots",
215
+ ),
203
216
  ),
204
217
  )
205
218
  def test__to_query_request(job_config, expected):
@@ -1048,6 +1061,21 @@ def test_make_job_id_w_job_id_overrides_prefix():
1048
1061
  True,
1049
1062
  id="write_incremental_results",
1050
1063
  ),
1064
+ pytest.param(
1065
+ job_query.QueryJobConfig(job_timeout_ms=1000),
1066
+ True,
1067
+ id="job_timeout_ms",
1068
+ ),
1069
+ pytest.param(
1070
+ job_query.QueryJobConfig(reservation="foo"),
1071
+ True,
1072
+ id="reservation",
1073
+ ),
1074
+ pytest.param(
1075
+ job_query.QueryJobConfig(max_slots=20),
1076
+ True,
1077
+ id="max_slots",
1078
+ ),
1051
1079
  ),
1052
1080
  )
1053
1081
  def test_supported_by_jobs_query_from_queryjobconfig(
@@ -6322,82 +6322,6 @@ class TestTableConstraint(unittest.TestCase):
6322
6322
  self.assertIsNone(table_constraint.primary_key)
6323
6323
  self.assertIsNone(table_constraint.foreign_keys)
6324
6324
 
6325
- def test__eq__primary_key_mismatch(self):
6326
- from google.cloud.bigquery.table import (
6327
- PrimaryKey,
6328
- ForeignKey,
6329
- TableReference,
6330
- ColumnReference,
6331
- )
6332
-
6333
- foriegn_keys = [
6334
- ForeignKey(
6335
- name="my_fk_id",
6336
- referenced_table=TableReference.from_string(
6337
- "my-project.my-dataset.my-table"
6338
- ),
6339
- column_references=[
6340
- ColumnReference(referencing_column="id", referenced_column="id"),
6341
- ],
6342
- ),
6343
- ]
6344
-
6345
- table_constraint = self._make_one(
6346
- primary_key=PrimaryKey(columns=["my_pk_id"]),
6347
- foreign_keys=foriegn_keys,
6348
- )
6349
- other_table_constraint = self._make_one(
6350
- primary_key=PrimaryKey(columns=["my_other_pk_id"]),
6351
- foreign_keys=foriegn_keys,
6352
- )
6353
-
6354
- self.assertNotEqual(table_constraint, other_table_constraint)
6355
-
6356
- def test__eq__foreign_keys_mismatch(self):
6357
- from google.cloud.bigquery.table import (
6358
- PrimaryKey,
6359
- ForeignKey,
6360
- TableReference,
6361
- ColumnReference,
6362
- )
6363
-
6364
- primary_key = PrimaryKey(columns=["my_pk_id"])
6365
-
6366
- table_constraint = self._make_one(
6367
- primary_key=primary_key,
6368
- foreign_keys=[
6369
- ForeignKey(
6370
- name="my_fk_id",
6371
- referenced_table=TableReference.from_string(
6372
- "my-project.my-dataset.my-table"
6373
- ),
6374
- column_references=[
6375
- ColumnReference(
6376
- referencing_column="id", referenced_column="id"
6377
- ),
6378
- ],
6379
- ),
6380
- ],
6381
- )
6382
- other_table_constraint = self._make_one(
6383
- primary_key=primary_key,
6384
- foreign_keys=[
6385
- ForeignKey(
6386
- name="my_other_fk_id",
6387
- referenced_table=TableReference.from_string(
6388
- "my-project.my-dataset.my-other-table"
6389
- ),
6390
- column_references=[
6391
- ColumnReference(
6392
- referencing_column="other_id", referenced_column="other_id"
6393
- ),
6394
- ],
6395
- ),
6396
- ],
6397
- )
6398
-
6399
- self.assertNotEqual(table_constraint, other_table_constraint)
6400
-
6401
6325
  def test__eq__other_type(self):
6402
6326
  from google.cloud.bigquery.table import (
6403
6327
  PrimaryKey,
@@ -6615,6 +6539,74 @@ class TestTableConstraint(unittest.TestCase):
6615
6539
  self.assertEqual(instance.to_api_repr(), expected)
6616
6540
 
6617
6541
 
6542
+ @pytest.mark.parametrize(
6543
+ "self_pk_name,self_fk_name,other_pk_name,other_fk_name,expected_equal",
6544
+ [
6545
+ (None, None, None, None, True),
6546
+ ("pkey", None, "pkey", None, True),
6547
+ ("pkey", "fkey", "pkey", "fkey", True),
6548
+ (None, "fkey", None, "fkey", True),
6549
+ ("pkey", None, "pkey_no_match", None, False),
6550
+ ("pkey", "fkey", "pkey_no_match", "fkey_no_match", False),
6551
+ (None, "fkey", None, "fkey_no_match", False),
6552
+ ("pkey", "fkey", "pkey_no_match", "fkey", False),
6553
+ ("pkey", "fkey", "pkey", "fkey_no_match", False),
6554
+ ],
6555
+ )
6556
+ def test_table_constraint_eq_parametrized(
6557
+ self_pk_name, self_fk_name, other_pk_name, other_fk_name, expected_equal
6558
+ ):
6559
+ # Imports are placed here to ensure they are self-contained for this example.
6560
+ # In a real test file, they would likely be at the top of the file.
6561
+ from google.cloud.bigquery.table import (
6562
+ ColumnReference,
6563
+ ForeignKey,
6564
+ PrimaryKey,
6565
+ TableReference,
6566
+ TableConstraints,
6567
+ )
6568
+
6569
+ # Helper function to create a PrimaryKey object or None
6570
+ def _create_primary_key(name):
6571
+ if name is None:
6572
+ return None
6573
+ return PrimaryKey(columns=[name])
6574
+
6575
+ # Helper function to create a list of ForeignKey objects or None
6576
+ def _create_foreign_keys(name):
6577
+ if name is None:
6578
+ return None
6579
+ # Using a generic referenced_table and column_references for simplicity
6580
+ # The 'name' parameter ensures different ForeignKey objects for different names
6581
+ return [
6582
+ ForeignKey(
6583
+ name=name,
6584
+ referenced_table=TableReference.from_string(
6585
+ f"my-project.my-dataset.{name}_referenced_table"
6586
+ ),
6587
+ column_references=[
6588
+ ColumnReference(
6589
+ referencing_column=f"{name}_ref_col",
6590
+ referenced_column=f"{name}_pk_col",
6591
+ )
6592
+ ],
6593
+ )
6594
+ ]
6595
+
6596
+ # Create the two TableConstraints instances for comparison
6597
+ tc1 = TableConstraints(
6598
+ primary_key=_create_primary_key(self_pk_name),
6599
+ foreign_keys=_create_foreign_keys(self_fk_name),
6600
+ )
6601
+ tc2 = TableConstraints(
6602
+ primary_key=_create_primary_key(other_pk_name),
6603
+ foreign_keys=_create_foreign_keys(other_fk_name),
6604
+ )
6605
+
6606
+ # Assert the equality based on the expected outcome
6607
+ assert (tc1 == tc2) == expected_equal
6608
+
6609
+
6618
6610
  class TestExternalCatalogTableOptions:
6619
6611
  PROJECT = "test-project"
6620
6612
  DATASET_ID = "test_dataset"