bigframes 2.3.0__tar.gz → 2.4.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 (731) hide show
  1. {bigframes-2.3.0/bigframes.egg-info → bigframes-2.4.0}/PKG-INFO +5 -3
  2. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_config/__init__.py +18 -0
  3. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_config/bigquery_options.py +20 -9
  4. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_config/compute_options.py +9 -1
  5. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_config/display_options.py +4 -0
  6. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_config/experiment_options.py +46 -18
  7. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/__init__.py +2 -0
  8. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/json.py +34 -0
  9. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/blob/_functions.py +32 -0
  10. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/array_value.py +0 -27
  11. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/blocks.py +3 -3
  12. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/__init__.py +6 -2
  13. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/api.py +2 -32
  14. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/scalar_op_compiler.py +57 -13
  15. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/sqlglot/compiler.py +10 -0
  16. bigframes-2.4.0/bigframes/core/compile/sqlglot/scalar_compiler.py +77 -0
  17. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/sqlglot/sqlglot_ir.py +15 -0
  18. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/indexes/__init__.py +2 -0
  19. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/indexes/base.py +24 -5
  20. bigframes-2.4.0/bigframes/core/indexes/datetimes.py +56 -0
  21. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/local_data.py +20 -4
  22. bigframes-2.4.0/bigframes/core/pyarrow_utils.py +87 -0
  23. bigframes-2.4.0/bigframes/core/pyformat.py +111 -0
  24. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/sql.py +15 -3
  25. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/utils.py +20 -0
  26. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/dataframe.py +76 -21
  27. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/forecasting.py +21 -0
  28. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/llm.py +26 -11
  29. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/loader.py +1 -0
  30. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/metrics/_metrics.py +2 -2
  31. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/__init__.py +16 -7
  32. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/blob.py +48 -65
  33. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/date_ops.py +19 -0
  34. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/datetimes.py +49 -1
  35. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/numeric_ops.py +22 -2
  36. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/string_ops.py +27 -12
  37. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/strings.py +16 -10
  38. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/__init__.py +2 -0
  39. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/series.py +68 -7
  40. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/__init__.py +70 -8
  41. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/_io/bigquery/__init__.py +1 -9
  42. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/_io/bigquery/read_gbq_table.py +10 -1
  43. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/bq_caching_executor.py +137 -109
  44. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/dry_runs.py +13 -9
  45. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/executor.py +24 -7
  46. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/loader.py +18 -9
  47. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/local_scan_executor.py +10 -16
  48. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/read_api_execution.py +21 -22
  49. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/testing/mocks.py +19 -3
  50. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/version.py +2 -2
  51. {bigframes-2.3.0 → bigframes-2.4.0/bigframes.egg-info}/PKG-INFO +5 -3
  52. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes.egg-info/SOURCES.txt +16 -1
  53. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes.egg-info/requires.txt +4 -2
  54. {bigframes-2.3.0 → bigframes-2.4.0}/setup.py +6 -3
  55. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/conftest.py +4 -12
  56. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/blob/test_function.py +24 -22
  57. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_forecasting.py +3 -0
  58. bigframes-2.4.0/tests/system/large/streaming/test_bigtable.py +104 -0
  59. bigframes-2.3.0/tests/system/large/test_streaming.py → bigframes-2.4.0/tests/system/large/streaming/test_pubsub.py +5 -82
  60. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/test_dataframe_io.py +7 -13
  61. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/load/test_llm.py +3 -2
  62. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_json.py +28 -0
  63. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/blob/test_io.py +0 -6
  64. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/blob/test_properties.py +21 -37
  65. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/blob/test_urls.py +0 -5
  66. bigframes-2.4.0/tests/system/small/core/indexes/test_datetimes.py +46 -0
  67. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_llm.py +7 -11
  68. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_multimodal_llm.py +3 -9
  69. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_datetimes.py +73 -0
  70. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_strings.py +66 -0
  71. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_timedeltas.py +3 -0
  72. bigframes-2.4.0/tests/system/small/session/test_read_gbq_colab.py +75 -0
  73. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_dataframe.py +38 -1
  74. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_dataframe_io.py +70 -2
  75. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_index_io.py +2 -2
  76. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_progress_bar.py +1 -1
  77. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_series.py +26 -1
  78. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_series_io.py +1 -1
  79. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_session.py +10 -5
  80. bigframes-2.4.0/tests/unit/_config/test_compute_options.py +22 -0
  81. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/_config/test_experiment_options.py +0 -15
  82. bigframes-2.4.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_projection/test_compile_projection/out.sql +12 -0
  83. bigframes-2.4.0/tests/unit/core/compile/sqlglot/test_compile_projection.py +31 -0
  84. bigframes-2.4.0/tests/unit/core/test_pyarrow_utils.py +65 -0
  85. bigframes-2.4.0/tests/unit/core/test_pyformat.py +145 -0
  86. bigframes-2.4.0/tests/unit/core/tools/__init__.py +13 -0
  87. bigframes-2.4.0/tests/unit/functions/__init__.py +13 -0
  88. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/polars_session.py +1 -1
  89. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/test_io_bigquery.py +3 -4
  90. bigframes-2.4.0/tests/unit/session/test_read_gbq_colab.py +68 -0
  91. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_local_data.py +20 -0
  92. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/config_init.py +6 -0
  93. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/frame.py +22 -6
  94. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/indexes/accessor.py +131 -0
  95. bigframes-2.4.0/third_party/bigframes_vendored/pandas/core/indexes/datetimes.py +106 -0
  96. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/series.py +8 -2
  97. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/strings/accessor.py +32 -7
  98. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q11.py +1 -1
  99. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/version.py +2 -2
  100. bigframes-2.3.0/bigframes/core/compile/sqlglot/scalar_compiler.py +0 -33
  101. {bigframes-2.3.0 → bigframes-2.4.0}/LICENSE +0 -0
  102. {bigframes-2.3.0 → bigframes-2.4.0}/MANIFEST.in +0 -0
  103. {bigframes-2.3.0 → bigframes-2.4.0}/README.rst +0 -0
  104. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/__init__.py +0 -0
  105. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_config/sampling_options.py +0 -0
  106. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_tools/__init__.py +0 -0
  107. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/_tools/strings.py +0 -0
  108. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/__init__.py +0 -0
  109. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/approx_agg.py +0 -0
  110. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/array.py +0 -0
  111. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/datetime.py +0 -0
  112. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/geo.py +0 -0
  113. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/search.py +0 -0
  114. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/sql.py +0 -0
  115. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/bigquery/_operations/struct.py +0 -0
  116. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/clients.py +0 -0
  117. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/constants.py +0 -0
  118. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/__init__.py +0 -0
  119. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/bigframe_node.py +0 -0
  120. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/block_transforms.py +0 -0
  121. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/aggregate_compiler.py +0 -0
  122. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/compiled.py +0 -0
  123. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/compiler.py +0 -0
  124. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/concat.py +0 -0
  125. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/configs.py +0 -0
  126. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/constants.py +0 -0
  127. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/default_ordering.py +0 -0
  128. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/explode.py +0 -0
  129. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/googlesql/__init__.py +0 -0
  130. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/googlesql/abc.py +0 -0
  131. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/googlesql/datatype.py +0 -0
  132. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/googlesql/expression.py +0 -0
  133. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/googlesql/function.py +0 -0
  134. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/googlesql/query.py +0 -0
  135. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/ibis_types.py +0 -0
  136. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/polars/__init__.py +0 -0
  137. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/polars/compiler.py +0 -0
  138. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/schema_translator.py +0 -0
  139. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/sqlglot/__init__.py +0 -0
  140. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/compile/sqlglot/sqlglot_types.py +0 -0
  141. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/convert.py +0 -0
  142. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/eval.py +0 -0
  143. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/explode.py +0 -0
  144. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/expression.py +0 -0
  145. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/global_session.py +0 -0
  146. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/groupby/__init__.py +0 -0
  147. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/groupby/aggs.py +0 -0
  148. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/groupby/dataframe_group_by.py +0 -0
  149. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/groupby/series_group_by.py +0 -0
  150. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/guid.py +0 -0
  151. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/identifiers.py +0 -0
  152. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/indexers.py +0 -0
  153. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/indexes/multi.py +0 -0
  154. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/join_def.py +0 -0
  155. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/log_adapter.py +0 -0
  156. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/nodes.py +0 -0
  157. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/ordering.py +0 -0
  158. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/pruning.py +0 -0
  159. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/reshape/__init__.py +0 -0
  160. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/reshape/api.py +0 -0
  161. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/reshape/concat.py +0 -0
  162. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/reshape/encoding.py +0 -0
  163. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/reshape/merge.py +0 -0
  164. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/reshape/tile.py +0 -0
  165. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/__init__.py +0 -0
  166. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/fold_row_count.py +0 -0
  167. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/identifiers.py +0 -0
  168. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/implicit_align.py +0 -0
  169. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/legacy_align.py +0 -0
  170. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/order.py +0 -0
  171. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/pruning.py +0 -0
  172. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/scan_reduction.py +0 -0
  173. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/slices.py +0 -0
  174. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/timedeltas.py +0 -0
  175. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/rewrite/windows.py +0 -0
  176. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/scalar.py +0 -0
  177. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/schema.py +0 -0
  178. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/sequences.py +0 -0
  179. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/slices.py +0 -0
  180. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/tools/__init__.py +0 -0
  181. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/tools/datetimes.py +0 -0
  182. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/tree_properties.py +0 -0
  183. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/validations.py +0 -0
  184. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/window/__init__.py +0 -0
  185. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/window/ordering.py +0 -0
  186. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/window/rolling.py +0 -0
  187. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/core/window_spec.py +0 -0
  188. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/dtypes.py +0 -0
  189. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/enums.py +0 -0
  190. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/exceptions.py +0 -0
  191. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/features.py +0 -0
  192. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/formatting_helpers.py +0 -0
  193. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/functions/__init__.py +0 -0
  194. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/functions/_function_client.py +0 -0
  195. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/functions/_function_session.py +0 -0
  196. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/functions/_utils.py +0 -0
  197. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/functions/function.py +0 -0
  198. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/functions/function_template.py +0 -0
  199. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/geopandas/__init__.py +0 -0
  200. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/geopandas/geoseries.py +0 -0
  201. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/__init__.py +0 -0
  202. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/base.py +0 -0
  203. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/cluster.py +0 -0
  204. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/compose.py +0 -0
  205. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/core.py +0 -0
  206. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/decomposition.py +0 -0
  207. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/ensemble.py +0 -0
  208. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/globals.py +0 -0
  209. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/imported.py +0 -0
  210. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/impute.py +0 -0
  211. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/linear_model.py +0 -0
  212. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/metrics/__init__.py +0 -0
  213. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/metrics/pairwise.py +0 -0
  214. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/model_selection.py +0 -0
  215. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/pipeline.py +0 -0
  216. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/preprocessing.py +0 -0
  217. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/remote.py +0 -0
  218. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/sql.py +0 -0
  219. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/ml/utils.py +0 -0
  220. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/_matplotlib/__init__.py +0 -0
  221. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/_matplotlib/core.py +0 -0
  222. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/_matplotlib/hist.py +0 -0
  223. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/_op_converters.py +0 -0
  224. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/aggregations.py +0 -0
  225. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/ai.py +0 -0
  226. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/array_ops.py +0 -0
  227. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/base.py +0 -0
  228. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/base_ops.py +0 -0
  229. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/blob_ops.py +0 -0
  230. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/bool_ops.py +0 -0
  231. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/comparison_ops.py +0 -0
  232. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/datetime_ops.py +0 -0
  233. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/distance_ops.py +0 -0
  234. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/frequency_ops.py +0 -0
  235. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/generic_ops.py +0 -0
  236. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/geo_ops.py +0 -0
  237. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/json_ops.py +0 -0
  238. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/lists.py +0 -0
  239. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/numpy_op_maps.py +0 -0
  240. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/plotting.py +0 -0
  241. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/remote_function_ops.py +0 -0
  242. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/semantics.py +0 -0
  243. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/struct_ops.py +0 -0
  244. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/structs.py +0 -0
  245. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/time_ops.py +0 -0
  246. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/timedelta_ops.py +0 -0
  247. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/operations/type.py +0 -0
  248. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/core/__init__.py +0 -0
  249. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/core/api.py +0 -0
  250. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/core/tools/__init__.py +0 -0
  251. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/core/tools/timedeltas.py +0 -0
  252. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/io/__init__.py +0 -0
  253. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/pandas/io/api.py +0 -0
  254. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/py.typed +0 -0
  255. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/_io/__init__.py +0 -0
  256. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/_io/pandas.py +0 -0
  257. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/anonymous_dataset.py +0 -0
  258. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/bigquery_session.py +0 -0
  259. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/clients.py +0 -0
  260. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/environment.py +0 -0
  261. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/metrics.py +0 -0
  262. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/planner.py +0 -0
  263. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/semi_executor.py +0 -0
  264. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/temporary_storage.py +0 -0
  265. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/time.py +0 -0
  266. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/session/validation.py +0 -0
  267. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/streaming/__init__.py +0 -0
  268. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/streaming/dataframe.py +0 -0
  269. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes/testing/__init__.py +0 -0
  270. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes.egg-info/dependency_links.txt +0 -0
  271. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes.egg-info/not-zip-safe +0 -0
  272. {bigframes-2.3.0 → bigframes-2.4.0}/bigframes.egg-info/top_level.txt +0 -0
  273. {bigframes-2.3.0 → bigframes-2.4.0}/pyproject.toml +0 -0
  274. {bigframes-2.3.0 → bigframes-2.4.0}/setup.cfg +0 -0
  275. {bigframes-2.3.0 → bigframes-2.4.0}/tests/__init__.py +0 -0
  276. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/README.md +0 -0
  277. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/__init__.py +0 -0
  278. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/config.jsonl +0 -0
  279. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q1.py +0 -0
  280. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q10.py +0 -0
  281. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q2.py +0 -0
  282. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q3.py +0 -0
  283. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q4.py +0 -0
  284. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q5.py +0 -0
  285. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q6.py +0 -0
  286. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q7.py +0 -0
  287. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/groupby/q8.py +0 -0
  288. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/join/config.jsonl +0 -0
  289. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/join/q1.py +0 -0
  290. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/join/q2.py +0 -0
  291. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/join/q3.py +0 -0
  292. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/join/q4.py +0 -0
  293. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/join/q5.py +0 -0
  294. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/sort/config.jsonl +0 -0
  295. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/db_benchmark/sort/q1.py +0 -0
  296. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/config.jsonl +0 -0
  297. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q1.py +0 -0
  298. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q10.py +0 -0
  299. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q11.py +0 -0
  300. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q12.py +0 -0
  301. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q13.py +0 -0
  302. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q14.py +0 -0
  303. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q15.py +0 -0
  304. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q16.py +0 -0
  305. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q17.py +0 -0
  306. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q18.py +0 -0
  307. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q19.py +0 -0
  308. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q2.py +0 -0
  309. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q20.py +0 -0
  310. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q21.py +0 -0
  311. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q22.py +0 -0
  312. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q3.py +0 -0
  313. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q4.py +0 -0
  314. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q5.py +0 -0
  315. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q6.py +0 -0
  316. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q7.py +0 -0
  317. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q8.py +0 -0
  318. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/tpch/q9.py +0 -0
  319. {bigframes-2.3.0 → bigframes-2.4.0}/tests/benchmark/utils.py +0 -0
  320. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/hockey_players.json +0 -0
  321. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/hockey_players.jsonl +0 -0
  322. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/json.jsonl +0 -0
  323. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/json_schema.json +0 -0
  324. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/matrix_2by3.json +0 -0
  325. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/matrix_2by3.jsonl +0 -0
  326. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/matrix_3by4.json +0 -0
  327. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/matrix_3by4.jsonl +0 -0
  328. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/nested.jsonl +0 -0
  329. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/nested_schema.json +0 -0
  330. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/nested_structs.jsonl +0 -0
  331. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/nested_structs_schema.json +0 -0
  332. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/penguins.jsonl +0 -0
  333. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/penguins_schema.json +0 -0
  334. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/people.csv +0 -0
  335. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/ratings.jsonl +0 -0
  336. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/ratings_schema.json +0 -0
  337. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/repeated.jsonl +0 -0
  338. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/repeated_schema.json +0 -0
  339. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/scalars.jsonl +0 -0
  340. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/scalars_schema.json +0 -0
  341. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/time_series.jsonl +0 -0
  342. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/time_series_schema.json +0 -0
  343. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/urban_areas.jsonl +0 -0
  344. {bigframes-2.3.0 → bigframes-2.4.0}/tests/data/urban_areas_schema.json +0 -0
  345. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/__init__.py +0 -0
  346. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/__init__.py +0 -0
  347. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/functions/__init__.py +0 -0
  348. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/functions/test_managed_function.py +0 -0
  349. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/functions/test_remote_function.py +0 -0
  350. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_cluster.py +0 -0
  351. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_compose.py +0 -0
  352. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_core.py +0 -0
  353. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_decomposition.py +0 -0
  354. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_ensemble.py +0 -0
  355. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_linear_model.py +0 -0
  356. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_model_selection.py +0 -0
  357. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/ml/test_pipeline.py +0 -0
  358. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/operations/__init__.py +0 -0
  359. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/operations/conftest.py +0 -0
  360. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/operations/test_ai.py +0 -0
  361. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/operations/test_semantics.py +0 -0
  362. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/test_dataframe.py +0 -0
  363. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/test_location.py +0 -0
  364. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/large/test_session.py +0 -0
  365. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/load/conftest.py +0 -0
  366. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/load/test_large_tables.py +0 -0
  367. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/__init__.py +0 -0
  368. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/__init__.py +0 -0
  369. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_approx_agg.py +0 -0
  370. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_array.py +0 -0
  371. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_datetime.py +0 -0
  372. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_geo.py +0 -0
  373. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_sql.py +0 -0
  374. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_struct.py +0 -0
  375. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/bigquery/test_vector_search.py +0 -0
  376. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/core/__init__.py +0 -0
  377. {bigframes-2.3.0/tests/system/small/functions → bigframes-2.4.0/tests/system/small/core/indexes}/__init__.py +0 -0
  378. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/core/test_convert.py +0 -0
  379. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/core/test_indexers.py +0 -0
  380. {bigframes-2.3.0/tests/unit/bigquery → bigframes-2.4.0/tests/system/small/functions}/__init__.py +0 -0
  381. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/functions/test_remote_function.py +0 -0
  382. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/geopandas/test_geoseries.py +0 -0
  383. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/__init__.py +0 -0
  384. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/conftest.py +0 -0
  385. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_cluster.py +0 -0
  386. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_core.py +0 -0
  387. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_decomposition.py +0 -0
  388. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_ensemble.py +0 -0
  389. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_forecasting.py +0 -0
  390. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_imported.py +0 -0
  391. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_impute.py +0 -0
  392. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_linear_model.py +0 -0
  393. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_metrics.py +0 -0
  394. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_metrics_pairwise.py +0 -0
  395. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_model_selection.py +0 -0
  396. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_preprocessing.py +0 -0
  397. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_register.py +0 -0
  398. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_remote.py +0 -0
  399. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/ml/test_utils.py +0 -0
  400. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/__init__.py +0 -0
  401. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_ai.py +0 -0
  402. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_dates.py +0 -0
  403. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_lists.py +0 -0
  404. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_plotting.py +0 -0
  405. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_semantics.py +0 -0
  406. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/operations/test_struct.py +0 -0
  407. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/regression/test_issue355_merge_after_filter.py +0 -0
  408. {bigframes-2.3.0/tests/unit/core/compile/sqlglot → bigframes-2.4.0/tests/system/small/session}/__init__.py +0 -0
  409. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_bq_sessions.py +0 -0
  410. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_encryption.py +0 -0
  411. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_groupby.py +0 -0
  412. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_index.py +0 -0
  413. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_ipython.py +0 -0
  414. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_multiindex.py +0 -0
  415. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_null_index.py +0 -0
  416. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_numpy.py +0 -0
  417. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_pandas.py +0 -0
  418. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_pandas_options.py +0 -0
  419. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_scalar.py +0 -0
  420. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_unordered.py +0 -0
  421. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/small/test_window.py +0 -0
  422. {bigframes-2.3.0 → bigframes-2.4.0}/tests/system/utils.py +0 -0
  423. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/__init__.py +0 -0
  424. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/_config/__init__.py +0 -0
  425. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/_config/test_bigquery_options.py +0 -0
  426. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/_config/test_threaded_options.py +0 -0
  427. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/_tools/__init__.py +0 -0
  428. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/_tools/test_strings.py +0 -0
  429. {bigframes-2.3.0/tests/unit/core/tools → bigframes-2.4.0/tests/unit/bigquery}/__init__.py +0 -0
  430. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/bigquery/test_json.py +0 -0
  431. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/__init__.py +0 -0
  432. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/__init__.py +0 -0
  433. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/googlesql/__init__.py +0 -0
  434. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/googlesql/test_expression.py +0 -0
  435. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/googlesql/test_function.py +0 -0
  436. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/googlesql/test_query.py +0 -0
  437. {bigframes-2.3.0/tests/unit/functions → bigframes-2.4.0/tests/unit/core/compile/sqlglot}/__init__.py +0 -0
  438. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/compiler_session.py +0 -0
  439. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/conftest.py +0 -0
  440. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal/out.sql +0 -0
  441. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_json_df/out.sql +0 -0
  442. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_lists_df/out.sql +0 -0
  443. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_nested_structs_df/out.sql +0 -0
  444. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_structs_df/out.sql +0 -0
  445. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/test_compile_readlocal.py +0 -0
  446. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/compile/sqlglot/test_sqlglot_types.py +0 -0
  447. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_bf_utils.py +0 -0
  448. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_blocks.py +0 -0
  449. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_dtypes.py +0 -0
  450. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_expression.py +0 -0
  451. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_indexes.py +0 -0
  452. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_log_adapter.py +0 -0
  453. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_rewrite.py +0 -0
  454. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_slices.py +0 -0
  455. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_sql.py +0 -0
  456. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/test_windowspec.py +0 -0
  457. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/core/tools/test_datetimes.py +0 -0
  458. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/functions/test_function_template.py +0 -0
  459. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/functions/test_remote_function.py +0 -0
  460. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/functions/test_remote_function_utils.py +0 -0
  461. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/__init__.py +0 -0
  462. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_api_primitives.py +0 -0
  463. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_compose.py +0 -0
  464. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_forecasting.py +0 -0
  465. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_golden_sql.py +0 -0
  466. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_matrix_factorization.py +0 -0
  467. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_pipeline.py +0 -0
  468. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/ml/test_sql.py +0 -0
  469. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/operations/__init__.py +0 -0
  470. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/__init__.py +0 -0
  471. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/test_clients.py +0 -0
  472. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/test_io_pandas.py +0 -0
  473. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/test_read_gbq_table.py +0 -0
  474. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/test_session.py +0 -0
  475. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/session/test_time.py +0 -0
  476. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_clients.py +0 -0
  477. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_constants.py +0 -0
  478. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_daemon.py +0 -0
  479. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_dataframe.py +0 -0
  480. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_dataframe_io.py +0 -0
  481. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_features.py +0 -0
  482. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_formatting_helpers.py +0 -0
  483. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_local_engine.py +0 -0
  484. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_notebook.py +0 -0
  485. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_pandas.py +0 -0
  486. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_planner.py +0 -0
  487. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_sequences.py +0 -0
  488. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_series.py +0 -0
  489. {bigframes-2.3.0 → bigframes-2.4.0}/tests/unit/test_series_io.py +0 -0
  490. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/__init__.py +0 -0
  491. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/constants.py +0 -0
  492. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/cpython/LICENSE +0 -0
  493. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/cpython/__init__.py +0 -0
  494. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/cpython/_pprint.py +0 -0
  495. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/LICENSE +0 -0
  496. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/METADATA +0 -0
  497. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/README.md +0 -0
  498. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/__init__.py +0 -0
  499. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/groupby_queries.py +0 -0
  500. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/join_queries.py +0 -0
  501. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/db_benchmark/sort_queries.py +0 -0
  502. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/geopandas/LICENSE.txt +0 -0
  503. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/geopandas/geoseries.py +0 -0
  504. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/google_cloud_bigquery/LICENSE +0 -0
  505. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/google_cloud_bigquery/__init__.py +0 -0
  506. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/google_cloud_bigquery/_pandas_helpers.py +0 -0
  507. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/__init__.py +0 -0
  508. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/unit/__init__.py +0 -0
  509. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/unit/test_pandas_helpers.py +0 -0
  510. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/LICENSE.txt +0 -0
  511. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/README.md +0 -0
  512. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/__init__.py +0 -0
  513. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/__init__.py +0 -0
  514. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/__init__.py +0 -0
  515. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/backend.py +0 -0
  516. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/client.py +0 -0
  517. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/converter.py +0 -0
  518. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/datatypes.py +0 -0
  519. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/__init__.py +0 -0
  520. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/core.py +0 -0
  521. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/find.py +0 -0
  522. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/rewrite.py +0 -0
  523. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/sql/__init__.py +0 -0
  524. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/__init__.py +0 -0
  525. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/base.py +0 -0
  526. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/bigquery/__init__.py +0 -0
  527. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/sql/datatypes.py +0 -0
  528. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/backends/sql/rewrites.py +0 -0
  529. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/__init__.py +0 -0
  530. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/annotations.py +0 -0
  531. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/bases.py +0 -0
  532. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/caching.py +0 -0
  533. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/collections.py +0 -0
  534. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/deferred.py +0 -0
  535. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/dispatch.py +0 -0
  536. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/egraph.py +0 -0
  537. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/exceptions.py +0 -0
  538. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/graph.py +0 -0
  539. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/grounds.py +0 -0
  540. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/numeric.py +0 -0
  541. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/patterns.py +0 -0
  542. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/selectors.py +0 -0
  543. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/temporal.py +0 -0
  544. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/common/typing.py +0 -0
  545. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/config.py +0 -0
  546. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/__init__.py +0 -0
  547. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/api.py +0 -0
  548. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/builders.py +0 -0
  549. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/datashape.py +0 -0
  550. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/datatypes/__init__.py +0 -0
  551. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/datatypes/cast.py +0 -0
  552. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/datatypes/core.py +0 -0
  553. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/datatypes/value.py +0 -0
  554. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/decompile.py +0 -0
  555. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/format.py +0 -0
  556. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/__init__.py +0 -0
  557. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/analytic.py +0 -0
  558. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/arrays.py +0 -0
  559. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/core.py +0 -0
  560. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/generic.py +0 -0
  561. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/geospatial.py +0 -0
  562. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/histograms.py +0 -0
  563. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/json.py +0 -0
  564. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/logical.py +0 -0
  565. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/maps.py +0 -0
  566. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/numeric.py +0 -0
  567. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/reductions.py +0 -0
  568. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/relations.py +0 -0
  569. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/sortkeys.py +0 -0
  570. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/strings.py +0 -0
  571. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/structs.py +0 -0
  572. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/subqueries.py +0 -0
  573. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/temporal.py +0 -0
  574. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/udf.py +0 -0
  575. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/operations/window.py +0 -0
  576. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/rewrites.py +0 -0
  577. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/rules.py +0 -0
  578. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/schema.py +0 -0
  579. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/sql.py +0 -0
  580. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/__init__.py +0 -0
  581. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/arrays.py +0 -0
  582. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/binary.py +0 -0
  583. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/core.py +0 -0
  584. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/dataframe_interchange.py +0 -0
  585. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/generic.py +0 -0
  586. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/geospatial.py +0 -0
  587. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/groupby.py +0 -0
  588. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/joins.py +0 -0
  589. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/json.py +0 -0
  590. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/logical.py +0 -0
  591. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/maps.py +0 -0
  592. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/numeric.py +0 -0
  593. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/pretty.py +0 -0
  594. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/relations.py +0 -0
  595. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/strings.py +0 -0
  596. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/structs.py +0 -0
  597. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/temporal.py +0 -0
  598. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/temporal_windows.py +0 -0
  599. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/typing.py +0 -0
  600. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/types/uuid.py +0 -0
  601. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/expr/visualize.py +0 -0
  602. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/formats/__init__.py +0 -0
  603. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/formats/numpy.py +0 -0
  604. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/formats/pandas.py +0 -0
  605. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/formats/polars.py +0 -0
  606. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/formats/pyarrow.py +0 -0
  607. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/selectors.py +0 -0
  608. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/ibis/util.py +0 -0
  609. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/AUTHORS.md +0 -0
  610. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/LICENSE +0 -0
  611. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/README.md +0 -0
  612. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/__init__.py +0 -0
  613. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/_config/config.py +0 -0
  614. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/arrays/__init__.py +0 -0
  615. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/arrays/arrow/__init__.py +0 -0
  616. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/arrays/arrow/accessors.py +0 -0
  617. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/arrays/datetimelike.py +0 -0
  618. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/common.py +0 -0
  619. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/align.py +0 -0
  620. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/common.py +0 -0
  621. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/engines.py +0 -0
  622. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/eval.py +0 -0
  623. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/expr.py +0 -0
  624. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/ops.py +0 -0
  625. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/parsing.py +0 -0
  626. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/computation/scope.py +0 -0
  627. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/dtypes/inference.py +0 -0
  628. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/generic.py +0 -0
  629. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/groupby/__init__.py +0 -0
  630. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/indexes/__init__.py +0 -0
  631. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/indexes/base.py +0 -0
  632. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/indexes/multi.py +0 -0
  633. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/indexing.py +0 -0
  634. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/reshape/__init__.py +0 -0
  635. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/reshape/concat.py +0 -0
  636. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/reshape/encoding.py +0 -0
  637. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/reshape/merge.py +0 -0
  638. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/reshape/tile.py +0 -0
  639. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/tools/__init__.py +0 -0
  640. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/tools/datetimes.py +0 -0
  641. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/tools/timedeltas.py +0 -0
  642. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/window/__init__.py +0 -0
  643. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/core/window/rolling.py +0 -0
  644. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/__init__.py +0 -0
  645. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/common.py +0 -0
  646. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/gbq.py +0 -0
  647. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/parquet.py +0 -0
  648. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/parsers/__init__.py +0 -0
  649. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/parsers/readers.py +0 -0
  650. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/io/pickle.py +0 -0
  651. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/pandas/_typing.py +0 -0
  652. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/plotting/_core.py +0 -0
  653. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/util/_exceptions.py +0 -0
  654. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/pandas/util/_validators.py +0 -0
  655. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/py.typed +0 -0
  656. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/COPYING +0 -0
  657. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/__init__.py +0 -0
  658. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/base.py +0 -0
  659. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/cluster/_kmeans.py +0 -0
  660. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/compose/_column_transformer.py +0 -0
  661. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/decomposition/_mf.py +0 -0
  662. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/decomposition/_pca.py +0 -0
  663. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/ensemble/__init__.py +0 -0
  664. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/ensemble/_forest.py +0 -0
  665. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/impute/_base.py +0 -0
  666. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/linear_model/_base.py +0 -0
  667. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/linear_model/_logistic.py +0 -0
  668. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/metrics/_classification.py +0 -0
  669. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/metrics/_ranking.py +0 -0
  670. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/metrics/_regression.py +0 -0
  671. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/metrics/pairwise.py +0 -0
  672. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/model_selection/_split.py +0 -0
  673. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/model_selection/_validation.py +0 -0
  674. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/pipeline.py +0 -0
  675. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/preprocessing/_data.py +0 -0
  676. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/preprocessing/_discretization.py +0 -0
  677. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/preprocessing/_encoder.py +0 -0
  678. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/preprocessing/_label.py +0 -0
  679. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/sklearn/preprocessing/_polynomial.py +0 -0
  680. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/LICENSE +0 -0
  681. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/METADATA +0 -0
  682. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/README.md +0 -0
  683. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/TPC-EULA.txt +0 -0
  684. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/__init__.py +0 -0
  685. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/__init__.py +0 -0
  686. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q1.py +0 -0
  687. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q10.py +0 -0
  688. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q12.py +0 -0
  689. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q13.py +0 -0
  690. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q14.py +0 -0
  691. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q15.py +0 -0
  692. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q16.py +0 -0
  693. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q17.py +0 -0
  694. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q18.py +0 -0
  695. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q19.py +0 -0
  696. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q2.py +0 -0
  697. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q20.py +0 -0
  698. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q21.py +0 -0
  699. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q22.py +0 -0
  700. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q3.py +0 -0
  701. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q4.py +0 -0
  702. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q5.py +0 -0
  703. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q6.py +0 -0
  704. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q7.py +0 -0
  705. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q8.py +0 -0
  706. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/queries/q9.py +0 -0
  707. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q1.sql +0 -0
  708. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q10.sql +0 -0
  709. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q11.sql +0 -0
  710. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q12.sql +0 -0
  711. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q13.sql +0 -0
  712. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q14.sql +0 -0
  713. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q15.sql +0 -0
  714. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q16.sql +0 -0
  715. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q17.sql +0 -0
  716. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q18.sql +0 -0
  717. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q19.sql +0 -0
  718. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q2.sql +0 -0
  719. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q20.sql +0 -0
  720. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q21.sql +0 -0
  721. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q22.sql +0 -0
  722. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q3.sql +0 -0
  723. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q4.sql +0 -0
  724. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q5.sql +0 -0
  725. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q6.sql +0 -0
  726. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q7.sql +0 -0
  727. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q8.sql +0 -0
  728. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/tpch/sql_queries/q9.sql +0 -0
  729. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/xgboost/LICENSE +0 -0
  730. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/xgboost/__init__.py +0 -0
  731. {bigframes-2.3.0 → bigframes-2.4.0}/third_party/bigframes_vendored/xgboost/sklearn.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bigframes
3
- Version: 2.3.0
3
+ Version: 2.4.0
4
4
  Summary: BigQuery DataFrames -- scalable analytics and machine learning with BigQuery
5
5
  Home-page: https://github.com/googleapis/python-bigquery-dataframes
6
6
  Author: Google LLC
@@ -27,8 +27,6 @@ Requires-Dist: fsspec>=2023.3.0
27
27
  Requires-Dist: gcsfs>=2023.3.0
28
28
  Requires-Dist: geopandas>=0.12.2
29
29
  Requires-Dist: google-auth<3.0,>=2.15.0
30
- Requires-Dist: google-cloud-bigtable>=2.24.0
31
- Requires-Dist: google-cloud-pubsub>=2.21.4
32
30
  Requires-Dist: google-cloud-bigquery[bqstorage,pandas]>=3.31.0
33
31
  Requires-Dist: google-cloud-bigquery-storage<3.0.0,>=2.30.0
34
32
  Requires-Dist: google-cloud-functions>=1.12.0
@@ -58,6 +56,8 @@ Requires-Dist: rich<14,>=12.4.4
58
56
  Provides-Extra: tests
59
57
  Requires-Dist: freezegun; extra == "tests"
60
58
  Requires-Dist: pytest-snapshot; extra == "tests"
59
+ Requires-Dist: google-cloud-bigtable>=2.24.0; extra == "tests"
60
+ Requires-Dist: google-cloud-pubsub>=2.21.4; extra == "tests"
61
61
  Provides-Extra: polars
62
62
  Requires-Dist: polars>=1.7.0; extra == "polars"
63
63
  Provides-Extra: scikit-learn
@@ -69,6 +69,8 @@ Requires-Dist: nox; extra == "dev"
69
69
  Requires-Dist: google-cloud-testutils; extra == "dev"
70
70
  Provides-Extra: all
71
71
  Requires-Dist: freezegun; extra == "all"
72
+ Requires-Dist: google-cloud-bigtable>=2.24.0; extra == "all"
73
+ Requires-Dist: google-cloud-pubsub>=2.21.4; extra == "all"
72
74
  Requires-Dist: google-cloud-testutils; extra == "all"
73
75
  Requires-Dist: nox; extra == "all"
74
76
  Requires-Dist: polars>=1.7.0; extra == "all"
@@ -150,6 +150,24 @@ class Options:
150
150
  """
151
151
  return self._local.bigquery_options is not None
152
152
 
153
+ @property
154
+ def _allow_large_results(self) -> bool:
155
+ """The effective 'allow_large_results' setting.
156
+
157
+ This value is `self.compute.allow_large_results` if set (not `None`),
158
+ otherwise it defaults to `self.bigquery.allow_large_results`.
159
+
160
+ Returns:
161
+ bool:
162
+ Whether large query results are permitted.
163
+ - `True`: The BigQuery result size limit (e.g., 10 GB) is removed.
164
+ - `False`: Results are restricted to this limit (potentially faster).
165
+ BigQuery will raise an error if this limit is exceeded.
166
+ """
167
+ if self.compute.allow_large_results is None:
168
+ return self.bigquery.allow_large_results
169
+ return self.compute.allow_large_results
170
+
153
171
 
154
172
  options = Options()
155
173
  """Global options for default session."""
@@ -19,10 +19,8 @@ from __future__ import annotations
19
19
  from typing import Literal, Optional
20
20
  import warnings
21
21
 
22
- import google.api_core.exceptions
23
22
  import google.auth.credentials
24
23
 
25
- import bigframes.constants
26
24
  import bigframes.enums
27
25
  import bigframes.exceptions as bfe
28
26
 
@@ -239,21 +237,34 @@ class BigQueryOptions:
239
237
  @property
240
238
  def allow_large_results(self) -> bool:
241
239
  """
242
- Sets the flag to allow or disallow query results larger than 10 GB.
240
+ DEPRECATED: Checks the legacy global setting for allowing large results.
241
+ Use ``bpd.options.compute.allow_large_results`` instead.
243
242
 
244
- The default setting for this flag is True, which allows queries to return results
245
- exceeding 10 GB by creating an explicit destination table. If set to False, it
246
- restricts the result size to 10 GB, and BigQuery will raise an error if this limit
247
- is exceeded.
243
+ Warning: Accessing ``bpd.options.bigquery.allow_large_results`` is deprecated
244
+ and this property will be removed in a future version. The configuration for
245
+ handling large results has moved.
248
246
 
249
247
  Returns:
250
- bool: True if large results are allowed with an explicit destination table,
251
- False if results are limited to 10 GB and errors are raised when exceeded.
248
+ bool: The value of the deprecated setting.
252
249
  """
253
250
  return self._allow_large_results
254
251
 
255
252
  @allow_large_results.setter
256
253
  def allow_large_results(self, value: bool):
254
+ warnings.warn(
255
+ "Setting `bpd.options.bigquery.allow_large_results` is deprecated, "
256
+ "and will be removed in the future. "
257
+ "Please use `bpd.options.compute.allow_large_results = <value>` instead. "
258
+ "The `bpd.options.bigquery.allow_large_results` option is ignored if "
259
+ "`bpd.options.compute.allow_large_results` is set.",
260
+ FutureWarning,
261
+ stacklevel=2,
262
+ )
263
+ if self._session_started and self._allow_large_results != value:
264
+ raise ValueError(
265
+ SESSION_STARTED_MESSAGE.format(attribute="allow_large_results")
266
+ )
267
+
257
268
  self._allow_large_results = value
258
269
 
259
270
  @property
@@ -86,6 +86,12 @@ class ComputeOptions:
86
86
  ai_ops_threshold_autofail (bool):
87
87
  Guards against unexpected processing of large amount of rows by semantic operators.
88
88
  When set to True, the operation automatically fails without asking for user inputs.
89
+
90
+ allow_large_results (bool):
91
+ Specifies whether query results can exceed 10 GB. Defaults to False. Setting this
92
+ to False (the default) restricts results to 10 GB for potentially faster execution;
93
+ BigQuery will raise an error if this limit is exceeded. Setting to True removes
94
+ this result size limit.
89
95
  """
90
96
 
91
97
  maximum_bytes_billed: Optional[int] = None
@@ -97,7 +103,9 @@ class ComputeOptions:
97
103
  semantic_ops_threshold_autofail = False
98
104
 
99
105
  ai_ops_confirmation_threshold: Optional[int] = 0
100
- ai_ops_threshold_autofail = False
106
+ ai_ops_threshold_autofail: bool = False
107
+
108
+ allow_large_results: Optional[bool] = None
101
109
 
102
110
  def assign_extra_query_labels(self, **kwargs: Any) -> None:
103
111
  """
@@ -35,6 +35,10 @@ class DisplayOptions:
35
35
  max_info_rows: Optional[int] = 200000
36
36
  memory_usage: bool = True
37
37
 
38
+ blob_display: bool = True
39
+ blob_display_width: Optional[int] = None
40
+ blob_display_height: Optional[int] = None
41
+
38
42
 
39
43
  @contextlib.contextmanager
40
44
  def pandas_repr(display_options: DisplayOptions):
@@ -15,6 +15,7 @@
15
15
  from typing import Optional
16
16
  import warnings
17
17
 
18
+ import bigframes
18
19
  import bigframes.exceptions as bfe
19
20
 
20
21
 
@@ -26,10 +27,6 @@ class ExperimentOptions:
26
27
  def __init__(self):
27
28
  self._semantic_operators: bool = False
28
29
  self._ai_operators: bool = False
29
- self._blob: bool = False
30
- self._blob_display: bool = True
31
- self._blob_display_width: Optional[int] = None
32
- self._blob_display_height: Optional[int] = None
33
30
 
34
31
  @property
35
32
  def semantic_operators(self) -> bool:
@@ -60,41 +57,72 @@ class ExperimentOptions:
60
57
 
61
58
  @property
62
59
  def blob(self) -> bool:
63
- return self._blob
60
+ msg = bfe.format_message(
61
+ "BigFrames Blob is in preview now. This flag is no longer needed."
62
+ )
63
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
64
+ return True
64
65
 
65
66
  @blob.setter
66
67
  def blob(self, value: bool):
67
- if value is True:
68
- msg = bfe.format_message(
69
- "BigFrames Blob is still under experiments. It may not work and "
70
- "subject to change in the future."
71
- )
72
- warnings.warn(msg, category=bfe.PreviewWarning)
73
- self._blob = value
68
+ msg = bfe.format_message(
69
+ "BigFrames Blob is in preview now. This flag is no longer needed."
70
+ )
71
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
74
72
 
75
73
  @property
76
74
  def blob_display(self) -> bool:
77
75
  """Whether to display the blob content in notebook DataFrame preview. Default True."""
78
- return self._blob_display
76
+ msg = bfe.format_message(
77
+ "BigFrames Blob is in preview now. The option has been moved to bigframes.options.display.blob_display."
78
+ )
79
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
80
+
81
+ return bigframes.options.display.blob_display
79
82
 
80
83
  @blob_display.setter
81
84
  def blob_display(self, value: bool):
82
- self._blob_display = value
85
+ msg = bfe.format_message(
86
+ "BigFrames Blob is in preview now. The option has been moved to bigframes.options.display.blob_display."
87
+ )
88
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
89
+
90
+ bigframes.options.display.blob_display = value
83
91
 
84
92
  @property
85
93
  def blob_display_width(self) -> Optional[int]:
86
94
  """Width in pixels that the blob constrained to."""
87
- return self._blob_display_width
95
+ msg = bfe.format_message(
96
+ "BigFrames Blob is in preview now. The option has been moved to bigframes.options.display.blob_display_width."
97
+ )
98
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
99
+
100
+ return bigframes.options.display.blob_display_width
88
101
 
89
102
  @blob_display_width.setter
90
103
  def blob_display_width(self, value: Optional[int]):
91
- self._blob_display_width = value
104
+ msg = bfe.format_message(
105
+ "BigFrames Blob is in preview now. The option has been moved to bigframes.options.display.blob_display_width."
106
+ )
107
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
108
+
109
+ bigframes.options.display.blob_display_width = value
92
110
 
93
111
  @property
94
112
  def blob_display_height(self) -> Optional[int]:
95
113
  """Height in pixels that the blob constrained to."""
96
- return self._blob_display_height
114
+ msg = bfe.format_message(
115
+ "BigFrames Blob is in preview now. The option has been moved to bigframes.options.display.blob_display_height."
116
+ )
117
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
118
+
119
+ return bigframes.options.display.blob_display_height
97
120
 
98
121
  @blob_display_height.setter
99
122
  def blob_display_height(self, value: Optional[int]):
100
- self._blob_display_height = value
123
+ msg = bfe.format_message(
124
+ "BigFrames Blob is in preview now. The option has been moved to bigframes.options.display.blob_display_height."
125
+ )
126
+ warnings.warn(msg, category=bfe.ApiDeprecationWarning)
127
+
128
+ bigframes.options.display.blob_display_height = value
@@ -38,6 +38,7 @@ from bigframes.bigquery._operations.json import (
38
38
  json_extract_array,
39
39
  json_extract_string_array,
40
40
  json_set,
41
+ json_value,
41
42
  parse_json,
42
43
  )
43
44
  from bigframes.bigquery._operations.search import create_vector_index, vector_search
@@ -61,6 +62,7 @@ __all__ = [
61
62
  "json_extract",
62
63
  "json_extract_array",
63
64
  "json_extract_string_array",
65
+ "json_value",
64
66
  "parse_json",
65
67
  # search ops
66
68
  "create_vector_index",
@@ -231,6 +231,40 @@ def json_extract_string_array(
231
231
  return array_series
232
232
 
233
233
 
234
+ def json_value(
235
+ input: series.Series,
236
+ json_path: str,
237
+ ) -> series.Series:
238
+ """Extracts a JSON scalar value and converts it to a SQL ``STRING`` value. In
239
+ addtion, this function:
240
+ - Removes the outermost quotes and unescapes the values.
241
+ - Returns a SQL ``NULL`` if a non-scalar value is selected.
242
+ - Uses double quotes to escape invalid ``JSON_PATH`` characters in JSON keys.
243
+
244
+ **Examples:**
245
+
246
+ >>> import bigframes.pandas as bpd
247
+ >>> import bigframes.bigquery as bbq
248
+ >>> bpd.options.display.progress_bar = None
249
+
250
+ >>> s = bpd.Series(['{"name": "Jakob", "age": "6"}', '{"name": "Jakob", "age": []}'])
251
+ >>> bbq.json_value(s, json_path="$.age")
252
+ 0 6
253
+ 1 <NA>
254
+ dtype: string
255
+
256
+ Args:
257
+ input (bigframes.series.Series):
258
+ The Series containing JSON data (as native JSON objects or JSON-formatted strings).
259
+ json_path (str):
260
+ The JSON path identifying the data that you want to obtain from the input.
261
+
262
+ Returns:
263
+ bigframes.series.Series: A new Series with the JSON-formatted STRING.
264
+ """
265
+ return input._apply_unary_op(ops.JSONValue(json_path=json_path))
266
+
267
+
234
268
  @utils.preview(name="The JSON-related API `parse_json`")
235
269
  def parse_json(
236
270
  input: series.Series,
@@ -108,6 +108,38 @@ AS r\"\"\"
108
108
  return self._session.read_gbq_function(udf_name)
109
109
 
110
110
 
111
+ def exif_func(src_obj_ref_rt: str) -> str:
112
+ import io
113
+ import json
114
+
115
+ from PIL import ExifTags, Image
116
+ import requests
117
+ from requests import adapters
118
+
119
+ session = requests.Session()
120
+ session.mount("https://", adapters.HTTPAdapter(max_retries=3))
121
+
122
+ src_obj_ref_rt_json = json.loads(src_obj_ref_rt)
123
+
124
+ src_url = src_obj_ref_rt_json["access_urls"]["read_url"]
125
+
126
+ response = session.get(src_url, timeout=30)
127
+ bts = response.content
128
+
129
+ image = Image.open(io.BytesIO(bts))
130
+ exif_data = image.getexif()
131
+ exif_dict = {}
132
+ if exif_data:
133
+ for tag, value in exif_data.items():
134
+ tag_name = ExifTags.TAGS.get(tag, tag)
135
+ exif_dict[tag_name] = value
136
+
137
+ return json.dumps(exif_dict)
138
+
139
+
140
+ exif_func_def = FunctionDef(exif_func, ["pillow", "requests"])
141
+
142
+
111
143
  # Blur images. Takes ObjectRefRuntime as JSON string. Outputs ObjectRefRuntime JSON string.
112
144
  def image_blur_func(
113
145
  src_obj_ref_rt: str, dst_obj_ref_rt: str, ksize_x: int, ksize_y: int, ext: str
@@ -172,33 +172,6 @@ class ArrayValue:
172
172
  def supports_fast_peek(self) -> bool:
173
173
  return bigframes.core.tree_properties.can_fast_peek(self.node)
174
174
 
175
- def as_cached(
176
- self: ArrayValue,
177
- cache_table: google.cloud.bigquery.Table,
178
- ordering: Optional[orderings.RowOrdering],
179
- ) -> ArrayValue:
180
- """
181
- Replace the node with an equivalent one that references a table where the value has been materialized to.
182
- """
183
- table = nodes.GbqTable.from_table(cache_table)
184
- source = nodes.BigqueryDataSource(
185
- table, ordering=ordering, n_rows=cache_table.num_rows
186
- )
187
- # Assumption: GBQ cached table uses field name as bq column name
188
- scan_list = nodes.ScanList(
189
- tuple(
190
- nodes.ScanItem(field.id, field.dtype, field.id.name)
191
- for field in self.node.fields
192
- )
193
- )
194
- node = nodes.CachedTableNode(
195
- original_node=self.node,
196
- source=source,
197
- table_session=self.session,
198
- scan_list=scan_list,
199
- )
200
- return ArrayValue(node)
201
-
202
175
  def get_column_type(self, key: str) -> bigframes.dtypes.Dtype:
203
176
  return self.schema.get_type(key)
204
177
 
@@ -586,10 +586,10 @@ class Block:
586
586
  self.expr,
587
587
  ordered=True,
588
588
  use_explicit_destination=allow_large_results,
589
- page_size=page_size,
590
- max_results=max_results,
591
589
  )
592
- for df in execute_result.to_pandas_batches():
590
+ for df in execute_result.to_pandas_batches(
591
+ page_size=page_size, max_results=max_results
592
+ ):
593
593
  self._copy_index_to_pandas(df)
594
594
  if squeeze:
595
595
  yield df.squeeze(axis=1)
@@ -13,9 +13,13 @@
13
13
  # limitations under the License.
14
14
  from __future__ import annotations
15
15
 
16
- from bigframes.core.compile.api import SQLCompiler, test_only_ibis_inferred_schema
16
+ from bigframes.core.compile.api import test_only_ibis_inferred_schema
17
+ from bigframes.core.compile.compiler import compile_sql
18
+ from bigframes.core.compile.configs import CompileRequest, CompileResult
17
19
 
18
20
  __all__ = [
19
- "SQLCompiler",
20
21
  "test_only_ibis_inferred_schema",
22
+ "compile_sql",
23
+ "CompileRequest",
24
+ "CompileResult",
21
25
  ]
@@ -13,43 +13,13 @@
13
13
  # limitations under the License.
14
14
  from __future__ import annotations
15
15
 
16
- from typing import Optional, Sequence, Tuple, TYPE_CHECKING
17
-
18
- import google.cloud.bigquery as bigquery
16
+ from typing import TYPE_CHECKING
19
17
 
20
18
  from bigframes.core import rewrite
21
- from bigframes.core.compile import compiler, configs
19
+ from bigframes.core.compile import compiler
22
20
 
23
21
  if TYPE_CHECKING:
24
22
  import bigframes.core.nodes
25
- import bigframes.core.ordering
26
-
27
-
28
- class SQLCompiler:
29
- def compile(
30
- self,
31
- node: bigframes.core.nodes.BigFrameNode,
32
- *,
33
- ordered: bool = True,
34
- limit: Optional[int] = None,
35
- ) -> str:
36
- """Compile node into sql where rows are sorted with ORDER BY."""
37
- request = configs.CompileRequest(node, sort_rows=ordered, peek_count=limit)
38
- return compiler.compile_sql(request).sql
39
-
40
- def compile_raw(
41
- self,
42
- node: bigframes.core.nodes.BigFrameNode,
43
- ) -> Tuple[
44
- str, Sequence[bigquery.SchemaField], bigframes.core.ordering.RowOrdering
45
- ]:
46
- """Compile node into sql that exposes all columns, including hidden ordering-only columns."""
47
- request = configs.CompileRequest(
48
- node, sort_rows=False, materialize_all_order_keys=True
49
- )
50
- result = compiler.compile_sql(request)
51
- assert result.row_order is not None
52
- return result.sql, result.sql_schema, result.row_order
53
23
 
54
24
 
55
25
  def test_only_ibis_inferred_schema(node: bigframes.core.nodes.BigFrameNode):
@@ -456,9 +456,19 @@ def upper_op_impl(x: ibis_types.Value):
456
456
  return typing.cast(ibis_types.StringValue, x).upper()
457
457
 
458
458
 
459
- @scalar_op_compiler.register_unary_op(ops.strip_op)
460
- def strip_op_impl(x: ibis_types.Value):
461
- return typing.cast(ibis_types.StringValue, x).strip()
459
+ @scalar_op_compiler.register_unary_op(ops.StrLstripOp, pass_op=True)
460
+ def str_lstrip_op_impl(x: ibis_types.Value, op: ops.StrStripOp):
461
+ return str_lstrip_op(x, to_strip=op.to_strip)
462
+
463
+
464
+ @scalar_op_compiler.register_unary_op(ops.StrRstripOp, pass_op=True)
465
+ def str_rstrip_op_impl(x: ibis_types.Value, op: ops.StrRstripOp):
466
+ return str_rstrip_op(x, to_strip=op.to_strip)
467
+
468
+
469
+ @scalar_op_compiler.register_unary_op(ops.StrStripOp, pass_op=True)
470
+ def str_strip_op_impl(x: ibis_types.Value, op: ops.StrStripOp):
471
+ return str_strip_op(x, to_strip=op.to_strip)
462
472
 
463
473
 
464
474
  @scalar_op_compiler.register_unary_op(ops.isnumeric_op)
@@ -519,16 +529,6 @@ def isupper_op_impl(x: ibis_types.Value):
519
529
  ).re_search(r"\p{Ll}|\p{Lt}")
520
530
 
521
531
 
522
- @scalar_op_compiler.register_unary_op(ops.rstrip_op)
523
- def rstrip_op_impl(x: ibis_types.Value):
524
- return typing.cast(ibis_types.StringValue, x).rstrip()
525
-
526
-
527
- @scalar_op_compiler.register_unary_op(ops.lstrip_op)
528
- def lstrip_op_impl(x: ibis_types.Value):
529
- return typing.cast(ibis_types.StringValue, x).lstrip()
530
-
531
-
532
532
  @scalar_op_compiler.register_unary_op(ops.capitalize_op)
533
533
  def capitalize_op_impl(x: ibis_types.Value):
534
534
  return typing.cast(ibis_types.StringValue, x).capitalize()
@@ -667,6 +667,22 @@ def date_op_impl(x: ibis_types.Value):
667
667
  return typing.cast(ibis_types.TimestampValue, x).date()
668
668
 
669
669
 
670
+ @scalar_op_compiler.register_unary_op(ops.iso_day_op)
671
+ def iso_day_op_impl(x: ibis_types.Value):
672
+ # Plus 1 because iso day of week uses 1-based indexing
673
+ return dayofweek_op_impl(x) + 1
674
+
675
+
676
+ @scalar_op_compiler.register_unary_op(ops.iso_week_op)
677
+ def iso_week_op_impl(x: ibis_types.Value):
678
+ return typing.cast(ibis_types.TimestampValue, x).week_of_year()
679
+
680
+
681
+ @scalar_op_compiler.register_unary_op(ops.iso_year_op)
682
+ def iso_year_op_impl(x: ibis_types.Value):
683
+ return typing.cast(ibis_types.TimestampValue, x).iso_year()
684
+
685
+
670
686
  @scalar_op_compiler.register_unary_op(ops.dayofweek_op)
671
687
  def dayofweek_op_impl(x: ibis_types.Value):
672
688
  return (
@@ -676,6 +692,13 @@ def dayofweek_op_impl(x: ibis_types.Value):
676
692
  )
677
693
 
678
694
 
695
+ @scalar_op_compiler.register_unary_op(ops.dayofyear_op)
696
+ def dayofyear_op_impl(x: ibis_types.Value):
697
+ return (
698
+ typing.cast(ibis_types.TimestampValue, x).day_of_year().cast(ibis_dtypes.int64)
699
+ )
700
+
701
+
679
702
  @scalar_op_compiler.register_unary_op(ops.hour_op)
680
703
  def hour_op_impl(x: ibis_types.Value):
681
704
  return typing.cast(ibis_types.TimestampValue, x).hour().cast(ibis_dtypes.int64)
@@ -2070,3 +2093,24 @@ def obj_make_ref(uri: str, authorizer: str) -> _OBJ_REF_IBIS_DTYPE: # type: ign
2070
2093
  @ibis_udf.scalar.builtin(name="OBJ.GET_ACCESS_URL")
2071
2094
  def obj_get_access_url(obj_ref: _OBJ_REF_IBIS_DTYPE, mode: ibis_dtypes.String) -> ibis_dtypes.JSON: # type: ignore
2072
2095
  """Get access url (as ObjectRefRumtime JSON) from ObjectRef."""
2096
+
2097
+
2098
+ @ibis_udf.scalar.builtin(name="ltrim")
2099
+ def str_lstrip_op( # type: ignore[empty-body]
2100
+ x: ibis_dtypes.String, to_strip: ibis_dtypes.String
2101
+ ) -> ibis_dtypes.String:
2102
+ """Remove leading and trailing characters."""
2103
+
2104
+
2105
+ @ibis_udf.scalar.builtin(name="rtrim")
2106
+ def str_rstrip_op( # type: ignore[empty-body]
2107
+ x: ibis_dtypes.String, to_strip: ibis_dtypes.String
2108
+ ) -> ibis_dtypes.String:
2109
+ """Remove leading and trailing characters."""
2110
+
2111
+
2112
+ @ibis_udf.scalar.builtin(name="trim")
2113
+ def str_strip_op( # type: ignore[empty-body]
2114
+ x: ibis_dtypes.String, to_strip: ibis_dtypes.String
2115
+ ) -> ibis_dtypes.String:
2116
+ """Remove leading and trailing characters."""
@@ -163,6 +163,16 @@ class SQLGlotCompiler:
163
163
  )
164
164
  return child.select(selected_cols)
165
165
 
166
+ @_compile_node.register
167
+ def compile_projection(
168
+ self, node: nodes.ProjectionNode, child: ir.SQLGlotIR
169
+ ) -> ir.SQLGlotIR:
170
+ projected_cols: tuple[tuple[str, sge.Expression], ...] = tuple(
171
+ (id.sql, scalar_compiler.compile_scalar_expression(expr))
172
+ for expr, id in node.assignments
173
+ )
174
+ return child.project(projected_cols)
175
+
166
176
 
167
177
  def _replace_unsupported_ops(node: nodes.BigFrameNode):
168
178
  node = nodes.bottom_up(node, rewrite.rewrite_slice)
@@ -0,0 +1,77 @@
1
+ # Copyright 2025 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
+ # http://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
+ from __future__ import annotations
15
+
16
+ import functools
17
+
18
+ import sqlglot.expressions as sge
19
+
20
+ from bigframes.core import expression
21
+ import bigframes.core.compile.sqlglot.sqlglot_ir as ir
22
+ import bigframes.operations as ops
23
+
24
+
25
+ @functools.singledispatch
26
+ def compile_scalar_expression(
27
+ expression: expression.Expression,
28
+ ) -> sge.Expression:
29
+ """Compiles BigFrames scalar expression into SQLGlot expression."""
30
+ raise ValueError(f"Can't compile unrecognized node: {expression}")
31
+
32
+
33
+ @compile_scalar_expression.register
34
+ def compile_deref_expression(expr: expression.DerefOp) -> sge.Expression:
35
+ return sge.ColumnDef(this=sge.to_identifier(expr.id.sql, quoted=True))
36
+
37
+
38
+ @compile_scalar_expression.register
39
+ def compile_constant_expression(
40
+ expr: expression.ScalarConstantExpression,
41
+ ) -> sge.Expression:
42
+ return ir._literal(expr.value, expr.dtype)
43
+
44
+
45
+ @compile_scalar_expression.register
46
+ def compile_op_expression(expr: expression.OpExpression):
47
+ # Non-recursively compiles the children scalar expressions.
48
+ args = tuple(map(compile_scalar_expression, expr.inputs))
49
+
50
+ op = expr.op
51
+ op_name = expr.op.__class__.__name__
52
+ method_name = f"compile_{op_name.lower()}"
53
+ method = globals().get(method_name, None)
54
+ if method is None:
55
+ raise ValueError(
56
+ f"Compilation method '{method_name}' not found for operator '{op_name}'."
57
+ )
58
+
59
+ if isinstance(op, ops.UnaryOp):
60
+ return method(op, args[0])
61
+ elif isinstance(op, ops.BinaryOp):
62
+ return method(op, args[0], args[1])
63
+ elif isinstance(op, ops.TernaryOp):
64
+ return method(op, args[0], args[1], args[2])
65
+ elif isinstance(op, ops.NaryOp):
66
+ return method(op, *args)
67
+ else:
68
+ raise TypeError(
69
+ f"Operator '{op_name}' has an unrecognized arity or type "
70
+ "and cannot be compiled."
71
+ )
72
+
73
+
74
+ # TODO: add parenthesize for operators
75
+ def compile_addop(op: ops.AddOp, left: sge.Expression, right: sge.Expression):
76
+ # TODO: support addop for string dtype.
77
+ return sge.Add(this=left, expression=right)