bigframes 2.2.0__tar.gz → 2.3.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.
- {bigframes-2.2.0/bigframes.egg-info → bigframes-2.3.0}/PKG-INFO +1 -1
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/blocks.py +28 -68
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/sqlglot/compiler.py +57 -54
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/sqlglot/sqlglot_ir.py +37 -7
- bigframes-2.3.0/bigframes/core/guid.py +46 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/identifiers.py +8 -10
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/tools/datetimes.py +6 -1
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/llm.py +1 -1
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/datetime_ops.py +4 -4
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/io/api.py +104 -3
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/__init__.py +116 -7
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/bq_caching_executor.py +26 -39
- bigframes-2.3.0/bigframes/session/dry_runs.py +134 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/executor.py +12 -12
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/loader.py +103 -3
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/version.py +2 -2
- {bigframes-2.2.0 → bigframes-2.3.0/bigframes.egg-info}/PKG-INFO +1 -1
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes.egg-info/SOURCES.txt +3 -0
- bigframes-2.3.0/tests/system/large/test_streaming.py +191 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/load/test_llm.py +1 -1
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_array.py +50 -6
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_datetime.py +49 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/conftest.py +0 -18
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_llm.py +26 -35
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_multimodal_llm.py +55 -1
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_timedeltas.py +22 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_session.py +97 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/sqlglot/compiler_session.py +4 -2
- bigframes-2.3.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal/out.sql +176 -0
- bigframes-2.3.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_json_df/out.sql +9 -0
- bigframes-2.3.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_lists_df/out.sql +46 -0
- bigframes-2.3.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_structs_df/out.sql +26 -0
- bigframes-2.3.0/tests/unit/core/tools/test_datetimes.py +43 -0
- bigframes-2.3.0/tests/unit/functions/__init__.py +13 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/version.py +2 -2
- bigframes-2.2.0/bigframes/core/guid.py +0 -21
- bigframes-2.2.0/tests/system/large/test_streaming.py +0 -81
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal/out.sql +0 -171
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_json_df/out.sql +0 -4
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_lists_df/out.sql +0 -41
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_structs_df/out.sql +0 -21
- {bigframes-2.2.0 → bigframes-2.3.0}/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/MANIFEST.in +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/README.rst +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_config/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_config/bigquery_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_config/compute_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_config/display_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_config/experiment_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_config/sampling_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_tools/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/_tools/strings.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/approx_agg.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/array.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/datetime.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/geo.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/json.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/search.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/bigquery/_operations/struct.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/blob/_functions.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/clients.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/constants.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/array_value.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/bigframe_node.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/block_transforms.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/aggregate_compiler.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/api.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/compiled.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/compiler.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/concat.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/configs.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/constants.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/default_ordering.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/explode.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/googlesql/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/googlesql/abc.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/googlesql/datatype.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/googlesql/expression.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/googlesql/function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/googlesql/query.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/ibis_types.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/polars/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/polars/compiler.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/scalar_op_compiler.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/schema_translator.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/sqlglot/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/sqlglot/scalar_compiler.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/compile/sqlglot/sqlglot_types.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/convert.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/eval.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/explode.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/expression.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/global_session.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/groupby/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/groupby/aggs.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/groupby/dataframe_group_by.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/groupby/series_group_by.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/identifiers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/indexers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/indexes/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/indexes/base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/indexes/multi.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/join_def.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/local_data.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/log_adapter.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/nodes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/ordering.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/pruning.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/reshape/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/reshape/api.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/reshape/concat.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/reshape/encoding.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/reshape/merge.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/reshape/tile.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/fold_row_count.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/implicit_align.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/legacy_align.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/order.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/pruning.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/scan_reduction.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/slices.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/timedeltas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/rewrite/windows.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/scalar.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/schema.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/sequences.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/slices.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/tools/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/tree_properties.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/validations.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/window/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/window/ordering.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/window/rolling.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/core/window_spec.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/dataframe.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/dtypes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/enums.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/exceptions.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/features.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/formatting_helpers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/functions/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/functions/_function_client.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/functions/_function_session.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/functions/_utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/functions/function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/functions/function_template.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/geopandas/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/geopandas/geoseries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/cluster.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/compose.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/decomposition.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/ensemble.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/forecasting.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/globals.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/imported.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/impute.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/linear_model.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/loader.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/metrics/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/metrics/_metrics.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/metrics/pairwise.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/model_selection.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/pipeline.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/preprocessing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/remote.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/ml/utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/_matplotlib/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/_matplotlib/core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/_matplotlib/hist.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/_op_converters.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/aggregations.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/ai.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/array_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/base_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/blob.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/blob_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/bool_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/comparison_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/date_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/datetimes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/distance_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/frequency_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/generic_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/geo_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/json_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/lists.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/numeric_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/numpy_op_maps.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/plotting.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/remote_function_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/semantics.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/string_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/strings.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/struct_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/structs.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/time_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/timedelta_ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/operations/type.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/core/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/core/api.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/core/tools/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/core/tools/timedeltas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/pandas/io/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/py.typed +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/series.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/_io/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/_io/bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/_io/bigquery/read_gbq_table.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/_io/pandas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/anonymous_dataset.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/bigquery_session.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/clients.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/environment.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/local_scan_executor.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/metrics.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/planner.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/read_api_execution.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/semi_executor.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/temporary_storage.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/time.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/session/validation.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/streaming/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/streaming/dataframe.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/testing/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes/testing/mocks.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes.egg-info/dependency_links.txt +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes.egg-info/not-zip-safe +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes.egg-info/requires.txt +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/bigframes.egg-info/top_level.txt +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/pyproject.toml +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/setup.cfg +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/setup.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/README.md +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/config.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q1.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q10.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q2.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q3.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q4.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q5.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q6.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q7.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/groupby/q8.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/join/config.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/join/q1.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/join/q2.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/join/q3.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/join/q4.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/join/q5.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/sort/config.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/db_benchmark/sort/q1.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/config.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q1.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q10.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q11.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q12.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q13.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q14.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q15.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q16.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q17.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q18.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q19.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q2.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q20.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q21.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q22.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q3.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q4.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q5.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q6.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q7.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q8.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/tpch/q9.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/benchmark/utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/hockey_players.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/hockey_players.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/json.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/json_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/matrix_2by3.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/matrix_2by3.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/matrix_3by4.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/matrix_3by4.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/nested.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/nested_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/nested_structs.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/nested_structs_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/penguins.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/penguins_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/people.csv +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/ratings.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/ratings_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/repeated.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/repeated_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/scalars.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/scalars_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/time_series.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/time_series_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/urban_areas.jsonl +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/data/urban_areas_schema.json +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/conftest.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/blob/test_function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/functions/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/functions/test_managed_function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/functions/test_remote_function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_cluster.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_compose.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_decomposition.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_ensemble.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_forecasting.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_linear_model.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_model_selection.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/ml/test_pipeline.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/operations/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/operations/conftest.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/operations/test_ai.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/operations/test_semantics.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/test_dataframe.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/test_dataframe_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/test_location.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/large/test_session.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/load/conftest.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/load/test_large_tables.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_approx_agg.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_geo.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_json.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_struct.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/bigquery/test_vector_search.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/blob/test_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/blob/test_properties.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/blob/test_urls.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/core/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/core/test_convert.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/core/test_indexers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/functions/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/functions/test_remote_function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/geopandas/test_geoseries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_cluster.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_decomposition.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_ensemble.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_forecasting.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_imported.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_impute.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_linear_model.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_metrics.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_metrics_pairwise.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_model_selection.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_preprocessing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_register.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_remote.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/ml/test_utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_ai.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_dates.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_datetimes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_lists.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_plotting.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_semantics.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_strings.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/operations/test_struct.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/regression/test_issue355_merge_after_filter.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_bq_sessions.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_dataframe.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_dataframe_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_encryption.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_groupby.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_index.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_index_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_ipython.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_multiindex.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_null_index.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_numpy.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_pandas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_pandas_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_progress_bar.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_scalar.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_series.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_series_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_unordered.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/small/test_window.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/system/utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/_config/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/_config/test_bigquery_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/_config/test_experiment_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/_config/test_threaded_options.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/_tools/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/_tools/test_strings.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/bigquery/test_json.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/googlesql/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/googlesql/test_expression.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/googlesql/test_function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/googlesql/test_query.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/sqlglot/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/sqlglot/conftest.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_nested_structs_df/out.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/sqlglot/test_compile_readlocal.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/compile/sqlglot/test_sqlglot_types.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_bf_utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_blocks.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_dtypes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_expression.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_indexes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_log_adapter.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_rewrite.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_slices.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/core/test_windowspec.py +0 -0
- {bigframes-2.2.0/tests/unit/functions → bigframes-2.3.0/tests/unit/core/tools}/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/functions/test_function_template.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/functions/test_remote_function.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/functions/test_remote_function_utils.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_api_primitives.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_compose.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_forecasting.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_golden_sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_matrix_factorization.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_pipeline.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/ml/test_sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/operations/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/polars_session.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/test_clients.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/test_io_bigquery.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/test_io_pandas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/test_read_gbq_table.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/test_session.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/session/test_time.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_clients.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_constants.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_daemon.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_dataframe.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_dataframe_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_features.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_formatting_helpers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_local_data.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_local_engine.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_notebook.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_pandas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_planner.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_sequences.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_series.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/tests/unit/test_series_io.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/constants.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/cpython/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/cpython/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/cpython/_pprint.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/METADATA +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/README.md +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/groupby_queries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/join_queries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/db_benchmark/sort_queries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/geopandas/LICENSE.txt +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/geopandas/geoseries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/google_cloud_bigquery/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/google_cloud_bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/google_cloud_bigquery/_pandas_helpers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/unit/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/unit/test_pandas_helpers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/LICENSE.txt +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/README.md +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/backend.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/client.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/converter.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/datatypes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/find.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/rewrite.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/sql/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/bigquery/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/sql/datatypes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/backends/sql/rewrites.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/annotations.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/bases.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/caching.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/collections.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/deferred.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/dispatch.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/egraph.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/exceptions.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/graph.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/grounds.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/numeric.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/patterns.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/selectors.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/temporal.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/common/typing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/config.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/api.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/builders.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/datashape.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/datatypes/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/datatypes/cast.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/datatypes/core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/datatypes/value.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/decompile.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/format.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/analytic.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/arrays.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/generic.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/geospatial.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/histograms.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/json.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/logical.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/maps.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/numeric.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/reductions.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/relations.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/sortkeys.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/strings.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/structs.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/subqueries.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/temporal.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/udf.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/operations/window.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/rewrites.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/rules.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/schema.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/sql.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/arrays.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/binary.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/dataframe_interchange.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/generic.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/geospatial.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/groupby.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/joins.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/json.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/logical.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/maps.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/numeric.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/pretty.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/relations.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/strings.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/structs.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/temporal.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/temporal_windows.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/typing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/types/uuid.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/expr/visualize.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/formats/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/formats/numpy.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/formats/pandas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/formats/polars.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/formats/pyarrow.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/selectors.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/ibis/util.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/AUTHORS.md +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/README.md +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/_config/config.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/arrays/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/arrays/arrow/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/arrays/arrow/accessors.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/arrays/datetimelike.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/common.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/align.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/common.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/engines.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/eval.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/expr.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/ops.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/parsing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/computation/scope.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/config_init.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/dtypes/inference.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/frame.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/generic.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/groupby/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/indexes/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/indexes/accessor.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/indexes/base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/indexes/multi.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/indexing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/reshape/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/reshape/concat.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/reshape/encoding.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/reshape/merge.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/reshape/tile.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/series.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/strings/accessor.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/tools/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/tools/datetimes.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/tools/timedeltas.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/window/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/core/window/rolling.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/common.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/gbq.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/parquet.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/parsers/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/parsers/readers.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/io/pickle.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/pandas/_typing.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/plotting/_core.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/util/_exceptions.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/pandas/util/_validators.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/py.typed +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/COPYING +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/cluster/_kmeans.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/compose/_column_transformer.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/decomposition/_mf.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/decomposition/_pca.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/ensemble/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/ensemble/_forest.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/impute/_base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/linear_model/_base.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/linear_model/_logistic.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/metrics/_classification.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/metrics/_ranking.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/metrics/_regression.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/metrics/pairwise.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/model_selection/_split.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/model_selection/_validation.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/pipeline.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/preprocessing/_data.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/preprocessing/_discretization.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/preprocessing/_encoder.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/preprocessing/_label.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/sklearn/preprocessing/_polynomial.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/METADATA +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/README.md +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/TPC-EULA.txt +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q1.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q10.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q11.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q12.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q13.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q14.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q15.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q16.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q17.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q18.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q19.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q2.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q20.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q21.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q22.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q3.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q4.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q5.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q6.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q7.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q8.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/queries/q9.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q1.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q10.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q11.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q12.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q13.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q14.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q15.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q16.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q17.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q18.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q19.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q2.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q20.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q21.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q22.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q3.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q4.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q5.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q6.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q7.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q8.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/tpch/sql_queries/q9.sql +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/xgboost/LICENSE +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/xgboost/__init__.py +0 -0
- {bigframes-2.2.0 → bigframes-2.3.0}/third_party/bigframes_vendored/xgboost/sklearn.py +0 -0
|
@@ -22,7 +22,6 @@ circular dependencies.
|
|
|
22
22
|
from __future__ import annotations
|
|
23
23
|
|
|
24
24
|
import ast
|
|
25
|
-
import copy
|
|
26
25
|
import dataclasses
|
|
27
26
|
import datetime
|
|
28
27
|
import functools
|
|
@@ -30,17 +29,7 @@ import itertools
|
|
|
30
29
|
import random
|
|
31
30
|
import textwrap
|
|
32
31
|
import typing
|
|
33
|
-
from typing import
|
|
34
|
-
Any,
|
|
35
|
-
Iterable,
|
|
36
|
-
List,
|
|
37
|
-
Literal,
|
|
38
|
-
Mapping,
|
|
39
|
-
Optional,
|
|
40
|
-
Sequence,
|
|
41
|
-
Tuple,
|
|
42
|
-
Union,
|
|
43
|
-
)
|
|
32
|
+
from typing import Iterable, List, Literal, Mapping, Optional, Sequence, Tuple, Union
|
|
44
33
|
import warnings
|
|
45
34
|
|
|
46
35
|
import bigframes_vendored.constants as constants
|
|
@@ -69,6 +58,8 @@ import bigframes.dtypes
|
|
|
69
58
|
import bigframes.exceptions as bfe
|
|
70
59
|
import bigframes.operations as ops
|
|
71
60
|
import bigframes.operations.aggregations as agg_ops
|
|
61
|
+
from bigframes.session import dry_runs
|
|
62
|
+
from bigframes.session import executor as executors
|
|
72
63
|
|
|
73
64
|
# Type constraint for wherever column labels are used
|
|
74
65
|
Label = typing.Hashable
|
|
@@ -821,59 +812,18 @@ class Block:
|
|
|
821
812
|
if sampling.enable_downsampling:
|
|
822
813
|
raise NotImplementedError("Dry run with sampling is not supported")
|
|
823
814
|
|
|
824
|
-
index: List[Any] = []
|
|
825
|
-
values: List[Any] = []
|
|
826
|
-
|
|
827
|
-
index.append("columnCount")
|
|
828
|
-
values.append(len(self.value_columns))
|
|
829
|
-
index.append("columnDtypes")
|
|
830
|
-
values.append(
|
|
831
|
-
{
|
|
832
|
-
col: self.expr.get_column_type(self.resolve_label_exact_or_error(col))
|
|
833
|
-
for col in self.column_labels
|
|
834
|
-
}
|
|
835
|
-
)
|
|
836
|
-
|
|
837
|
-
index.append("indexLevel")
|
|
838
|
-
values.append(self.index.nlevels)
|
|
839
|
-
index.append("indexDtypes")
|
|
840
|
-
values.append(self.index.dtypes)
|
|
841
|
-
|
|
842
815
|
expr = self._apply_value_keys_to_expr(value_keys=value_keys)
|
|
843
816
|
query_job = self.session._executor.dry_run(expr, ordered)
|
|
844
|
-
job_api_repr = copy.deepcopy(query_job._properties)
|
|
845
|
-
|
|
846
|
-
job_ref = job_api_repr["jobReference"]
|
|
847
|
-
for key, val in job_ref.items():
|
|
848
|
-
index.append(key)
|
|
849
|
-
values.append(val)
|
|
850
|
-
|
|
851
|
-
index.append("jobType")
|
|
852
|
-
values.append(job_api_repr["configuration"]["jobType"])
|
|
853
|
-
|
|
854
|
-
query_config = job_api_repr["configuration"]["query"]
|
|
855
|
-
for key in ("destinationTable", "useLegacySql"):
|
|
856
|
-
index.append(key)
|
|
857
|
-
values.append(query_config.get(key))
|
|
858
|
-
|
|
859
|
-
query_stats = job_api_repr["statistics"]["query"]
|
|
860
|
-
for key in (
|
|
861
|
-
"referencedTables",
|
|
862
|
-
"totalBytesProcessed",
|
|
863
|
-
"cacheHit",
|
|
864
|
-
"statementType",
|
|
865
|
-
):
|
|
866
|
-
index.append(key)
|
|
867
|
-
values.append(query_stats.get(key))
|
|
868
817
|
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
)
|
|
874
|
-
)
|
|
818
|
+
column_dtypes = {
|
|
819
|
+
col: self.expr.get_column_type(self.resolve_label_exact_or_error(col))
|
|
820
|
+
for col in self.column_labels
|
|
821
|
+
}
|
|
875
822
|
|
|
876
|
-
|
|
823
|
+
dry_run_stats = dry_runs.get_query_stats_with_dtypes(
|
|
824
|
+
query_job, column_dtypes, self.index.dtypes
|
|
825
|
+
)
|
|
826
|
+
return dry_run_stats, query_job
|
|
877
827
|
|
|
878
828
|
def _apply_value_keys_to_expr(self, value_keys: Optional[Iterable[str]] = None):
|
|
879
829
|
expr = self._expr
|
|
@@ -1560,12 +1510,19 @@ class Block:
|
|
|
1560
1510
|
"""
|
|
1561
1511
|
|
|
1562
1512
|
# head caches full underlying expression, so row_count will be free after
|
|
1563
|
-
|
|
1513
|
+
executor = self.session._executor
|
|
1514
|
+
executor.cached(
|
|
1515
|
+
array_value=self.expr,
|
|
1516
|
+
config=executors.CacheConfig(optimize_for="head", if_cached="reuse-strict"),
|
|
1517
|
+
)
|
|
1518
|
+
head_result = self.session._executor.execute(
|
|
1519
|
+
self.expr.slice(start=None, stop=max_results, step=None)
|
|
1520
|
+
)
|
|
1564
1521
|
row_count = self.session._executor.execute(self.expr.row_count()).to_py_scalar()
|
|
1565
1522
|
|
|
1566
|
-
|
|
1567
|
-
self._copy_index_to_pandas(
|
|
1568
|
-
return
|
|
1523
|
+
head_df = head_result.to_pandas()
|
|
1524
|
+
self._copy_index_to_pandas(head_df)
|
|
1525
|
+
return head_df, row_count, head_result.query_job
|
|
1569
1526
|
|
|
1570
1527
|
def promote_offsets(self, label: Label = None) -> typing.Tuple[Block, str]:
|
|
1571
1528
|
expr, result_id = self._expr.promote_offsets()
|
|
@@ -2535,9 +2492,12 @@ class Block:
|
|
|
2535
2492
|
# use a heuristic for whether something needs to be cached
|
|
2536
2493
|
self.session._executor.cached(
|
|
2537
2494
|
self.expr,
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2495
|
+
config=executors.CacheConfig(
|
|
2496
|
+
optimize_for="auto"
|
|
2497
|
+
if session_aware
|
|
2498
|
+
else executors.HierarchicalKey(tuple(self.index_columns)),
|
|
2499
|
+
if_cached="replace" if force else "reuse-any",
|
|
2500
|
+
),
|
|
2541
2501
|
)
|
|
2542
2502
|
|
|
2543
2503
|
def _is_monotonic(
|
|
@@ -15,24 +15,28 @@ from __future__ import annotations
|
|
|
15
15
|
|
|
16
16
|
import dataclasses
|
|
17
17
|
import functools
|
|
18
|
-
import itertools
|
|
19
18
|
import typing
|
|
20
19
|
|
|
21
20
|
from google.cloud import bigquery
|
|
22
21
|
import pyarrow as pa
|
|
23
22
|
import sqlglot.expressions as sge
|
|
24
23
|
|
|
25
|
-
from bigframes.core import expression, identifiers, nodes, rewrite
|
|
24
|
+
from bigframes.core import expression, guid, identifiers, nodes, rewrite
|
|
26
25
|
from bigframes.core.compile import configs
|
|
27
26
|
import bigframes.core.compile.sqlglot.scalar_compiler as scalar_compiler
|
|
28
27
|
import bigframes.core.compile.sqlglot.sqlglot_ir as ir
|
|
29
28
|
import bigframes.core.ordering as bf_ordering
|
|
30
29
|
|
|
31
30
|
|
|
32
|
-
@dataclasses.dataclass(frozen=True)
|
|
33
31
|
class SQLGlotCompiler:
|
|
34
32
|
"""Compiles BigFrame nodes into SQL using SQLGlot."""
|
|
35
33
|
|
|
34
|
+
uid_gen: guid.SequentialUIDGenerator
|
|
35
|
+
"""Generator for unique identifiers."""
|
|
36
|
+
|
|
37
|
+
def __init__(self):
|
|
38
|
+
self.uid_gen = guid.SequentialUIDGenerator()
|
|
39
|
+
|
|
36
40
|
def compile(
|
|
37
41
|
self,
|
|
38
42
|
node: nodes.BigFrameNode,
|
|
@@ -82,7 +86,7 @@ class SQLGlotCompiler:
|
|
|
82
86
|
result_node = typing.cast(
|
|
83
87
|
nodes.ResultNode, rewrite.column_pruning(result_node)
|
|
84
88
|
)
|
|
85
|
-
result_node = _remap_variables(result_node)
|
|
89
|
+
result_node = self._remap_variables(result_node)
|
|
86
90
|
sql = self._compile_result_node(result_node)
|
|
87
91
|
return configs.CompileResult(
|
|
88
92
|
sql, result_node.schema.to_bigquery(), result_node.order_by
|
|
@@ -92,7 +96,7 @@ class SQLGlotCompiler:
|
|
|
92
96
|
result_node = dataclasses.replace(result_node, order_by=None)
|
|
93
97
|
result_node = typing.cast(nodes.ResultNode, rewrite.column_pruning(result_node))
|
|
94
98
|
|
|
95
|
-
result_node = _remap_variables(result_node)
|
|
99
|
+
result_node = self._remap_variables(result_node)
|
|
96
100
|
sql = self._compile_result_node(result_node)
|
|
97
101
|
# Return the ordering iff no extra columns are needed to define the row order
|
|
98
102
|
if ordering is not None:
|
|
@@ -106,63 +110,62 @@ class SQLGlotCompiler:
|
|
|
106
110
|
sql, result_node.schema.to_bigquery(), output_order
|
|
107
111
|
)
|
|
108
112
|
|
|
113
|
+
def _remap_variables(self, node: nodes.ResultNode) -> nodes.ResultNode:
|
|
114
|
+
"""Remaps `ColumnId`s in the BFET of a `ResultNode` to produce deterministic UIDs."""
|
|
115
|
+
|
|
116
|
+
result_node, _ = rewrite.remap_variables(
|
|
117
|
+
node, map(identifiers.ColumnId, self.uid_gen.get_uid_stream("bfcol_"))
|
|
118
|
+
)
|
|
119
|
+
return typing.cast(nodes.ResultNode, result_node)
|
|
120
|
+
|
|
109
121
|
def _compile_result_node(self, root: nodes.ResultNode) -> str:
|
|
110
|
-
sqlglot_ir = compile_node(root.child)
|
|
122
|
+
sqlglot_ir = self.compile_node(root.child)
|
|
111
123
|
# TODO: add order_by, limit, and selections to sqlglot_expr
|
|
112
124
|
return sqlglot_ir.sql
|
|
113
125
|
|
|
126
|
+
@functools.lru_cache(maxsize=5000)
|
|
127
|
+
def compile_node(self, node: nodes.BigFrameNode) -> ir.SQLGlotIR:
|
|
128
|
+
"""Compiles node into CompileArrayValue. Caches result."""
|
|
129
|
+
return node.reduce_up(
|
|
130
|
+
lambda node, children: self._compile_node(node, *children)
|
|
131
|
+
)
|
|
114
132
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
result_node, _ = rewrite.remap_variables(node, anonymous_column_ids())
|
|
130
|
-
return typing.cast(nodes.ResultNode, result_node)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
@functools.lru_cache(maxsize=5000)
|
|
134
|
-
def compile_node(node: nodes.BigFrameNode) -> ir.SQLGlotIR:
|
|
135
|
-
"""Compiles node into CompileArrayValue. Caches result."""
|
|
136
|
-
return node.reduce_up(lambda node, children: _compile_node(node, *children))
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
@functools.singledispatch
|
|
140
|
-
def _compile_node(
|
|
141
|
-
node: nodes.BigFrameNode, *compiled_children: ir.SQLGlotIR
|
|
142
|
-
) -> ir.SQLGlotIR:
|
|
143
|
-
"""Defines transformation but isn't cached, always use compile_node instead"""
|
|
144
|
-
raise ValueError(f"Can't compile unrecognized node: {node}")
|
|
133
|
+
@functools.singledispatchmethod
|
|
134
|
+
def _compile_node(
|
|
135
|
+
self, node: nodes.BigFrameNode, *compiled_children: ir.SQLGlotIR
|
|
136
|
+
) -> ir.SQLGlotIR:
|
|
137
|
+
"""Defines transformation but isn't cached, always use compile_node instead"""
|
|
138
|
+
raise ValueError(f"Can't compile unrecognized node: {node}")
|
|
139
|
+
|
|
140
|
+
@_compile_node.register
|
|
141
|
+
def compile_readlocal(self, node: nodes.ReadLocalNode, *args) -> ir.SQLGlotIR:
|
|
142
|
+
pa_table = node.local_data_source.data
|
|
143
|
+
pa_table = pa_table.select([item.source_id for item in node.scan_list.items])
|
|
144
|
+
pa_table = pa_table.rename_columns(
|
|
145
|
+
[item.id.sql for item in node.scan_list.items]
|
|
146
|
+
)
|
|
145
147
|
|
|
148
|
+
offsets = node.offsets_col.sql if node.offsets_col else None
|
|
149
|
+
if offsets:
|
|
150
|
+
pa_table = pa_table.append_column(
|
|
151
|
+
offsets, pa.array(range(pa_table.num_rows), type=pa.int64())
|
|
152
|
+
)
|
|
146
153
|
|
|
147
|
-
|
|
148
|
-
def compile_readlocal(node: nodes.ReadLocalNode, *args) -> ir.SQLGlotIR:
|
|
149
|
-
pa_table = node.local_data_source.data
|
|
150
|
-
pa_table = pa_table.select([item.source_id for item in node.scan_list.items])
|
|
151
|
-
pa_table = pa_table.rename_columns([item.id.sql for item in node.scan_list.items])
|
|
154
|
+
return ir.SQLGlotIR.from_pyarrow(pa_table, node.schema, uid_gen=self.uid_gen)
|
|
152
155
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
156
|
+
@_compile_node.register
|
|
157
|
+
def compile_selection(
|
|
158
|
+
self, node: nodes.SelectionNode, child: ir.SQLGlotIR
|
|
159
|
+
) -> ir.SQLGlotIR:
|
|
160
|
+
selected_cols: tuple[tuple[str, sge.Expression], ...] = tuple(
|
|
161
|
+
(id.sql, scalar_compiler.compile_scalar_expression(expr))
|
|
162
|
+
for expr, id in node.input_output_pairs
|
|
157
163
|
)
|
|
164
|
+
return child.select(selected_cols)
|
|
158
165
|
|
|
159
|
-
return ir.SQLGlotIR.from_pyarrow(pa_table, node.schema)
|
|
160
166
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
for expr, id in node.input_output_pairs
|
|
167
|
-
}
|
|
168
|
-
return child.select(select_cols)
|
|
167
|
+
def _replace_unsupported_ops(node: nodes.BigFrameNode):
|
|
168
|
+
node = nodes.bottom_up(node, rewrite.rewrite_slice)
|
|
169
|
+
node = nodes.bottom_up(node, rewrite.rewrite_timedelta_expressions)
|
|
170
|
+
node = nodes.bottom_up(node, rewrite.rewrite_range_rolling)
|
|
171
|
+
return node
|
|
@@ -23,6 +23,7 @@ import sqlglot.dialects.bigquery
|
|
|
23
23
|
import sqlglot.expressions as sge
|
|
24
24
|
|
|
25
25
|
from bigframes import dtypes
|
|
26
|
+
from bigframes.core import guid
|
|
26
27
|
import bigframes.core.compile.sqlglot.sqlglot_types as sgt
|
|
27
28
|
import bigframes.core.local_data as local_data
|
|
28
29
|
import bigframes.core.schema as schemata
|
|
@@ -52,6 +53,9 @@ class SQLGlotIR:
|
|
|
52
53
|
pretty: bool = True
|
|
53
54
|
"""Whether to pretty-print the generated SQL."""
|
|
54
55
|
|
|
56
|
+
uid_gen: guid.SequentialUIDGenerator = guid.SequentialUIDGenerator()
|
|
57
|
+
"""Generator for unique identifiers."""
|
|
58
|
+
|
|
55
59
|
@property
|
|
56
60
|
def sql(self) -> str:
|
|
57
61
|
"""Generate SQL string from the given expression."""
|
|
@@ -59,7 +63,10 @@ class SQLGlotIR:
|
|
|
59
63
|
|
|
60
64
|
@classmethod
|
|
61
65
|
def from_pyarrow(
|
|
62
|
-
cls,
|
|
66
|
+
cls,
|
|
67
|
+
pa_table: pa.Table,
|
|
68
|
+
schema: schemata.ArraySchema,
|
|
69
|
+
uid_gen: guid.SequentialUIDGenerator,
|
|
63
70
|
) -> SQLGlotIR:
|
|
64
71
|
"""Builds SQLGlot expression from pyarrow table."""
|
|
65
72
|
dtype_expr = sge.DataType(
|
|
@@ -95,21 +102,44 @@ class SQLGlotIR:
|
|
|
95
102
|
),
|
|
96
103
|
],
|
|
97
104
|
)
|
|
98
|
-
return cls(expr=sg.select(sge.Star()).from_(expr))
|
|
105
|
+
return cls(expr=sg.select(sge.Star()).from_(expr), uid_gen=uid_gen)
|
|
99
106
|
|
|
100
107
|
def select(
|
|
101
108
|
self,
|
|
102
|
-
|
|
109
|
+
selected_cols: tuple[tuple[str, sge.Expression], ...],
|
|
103
110
|
) -> SQLGlotIR:
|
|
104
|
-
|
|
111
|
+
cols_expr = [
|
|
105
112
|
sge.Alias(
|
|
106
113
|
this=expr,
|
|
107
114
|
alias=sge.to_identifier(id, quoted=self.quoted),
|
|
108
115
|
)
|
|
109
|
-
for id, expr in
|
|
116
|
+
for id, expr in selected_cols
|
|
110
117
|
]
|
|
111
|
-
|
|
112
|
-
return SQLGlotIR(expr=
|
|
118
|
+
new_expr = self._encapsulate_as_cte().select(*cols_expr, append=False)
|
|
119
|
+
return SQLGlotIR(expr=new_expr)
|
|
120
|
+
|
|
121
|
+
def _encapsulate_as_cte(
|
|
122
|
+
self,
|
|
123
|
+
) -> sge.Select:
|
|
124
|
+
"""Transforms a given sge.Select query by pushing its main SELECT statement
|
|
125
|
+
into a new CTE and then generates a 'SELECT * FROM new_cte_name'
|
|
126
|
+
for the new query."""
|
|
127
|
+
select_expr = self.expr.copy()
|
|
128
|
+
|
|
129
|
+
existing_ctes = select_expr.args.pop("with", [])
|
|
130
|
+
new_cte_name = sge.to_identifier(
|
|
131
|
+
next(self.uid_gen.get_uid_stream("bfcte_")), quoted=self.quoted
|
|
132
|
+
)
|
|
133
|
+
new_cte = sge.CTE(
|
|
134
|
+
this=select_expr,
|
|
135
|
+
alias=new_cte_name,
|
|
136
|
+
)
|
|
137
|
+
new_with_clause = sge.With(expressions=existing_ctes + [new_cte])
|
|
138
|
+
new_select_expr = (
|
|
139
|
+
sge.Select().select(sge.Star()).from_(sge.Table(this=new_cte_name))
|
|
140
|
+
)
|
|
141
|
+
new_select_expr.set("with", new_with_clause)
|
|
142
|
+
return new_select_expr
|
|
113
143
|
|
|
114
144
|
|
|
115
145
|
def _literal(value: typing.Any, dtype: dtypes.Dtype) -> sge.Expression:
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Copyright 2023 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
|
+
import threading
|
|
15
|
+
import typing
|
|
16
|
+
|
|
17
|
+
_GUID_LOCK = threading.Lock()
|
|
18
|
+
_GUID_COUNTER = 0
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def generate_guid(prefix="col_"):
|
|
22
|
+
global _GUID_LOCK
|
|
23
|
+
with _GUID_LOCK:
|
|
24
|
+
global _GUID_COUNTER
|
|
25
|
+
_GUID_COUNTER += 1
|
|
26
|
+
return f"bfuid_{prefix}{_GUID_COUNTER}"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SequentialUIDGenerator:
|
|
30
|
+
"""Produces a sequence of UIDs, such as {"t0", "t1", "c0", "t2", ...}, by
|
|
31
|
+
cycling through provided prefixes (e.g., "t" and "c").
|
|
32
|
+
Note: this function is not thread-safe.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self):
|
|
36
|
+
self.prefix_counters: typing.Dict[str, int] = {}
|
|
37
|
+
|
|
38
|
+
def get_uid_stream(self, prefix: str) -> typing.Generator[str, None, None]:
|
|
39
|
+
"""Yields a continuous stream of raw UID strings for the given prefix."""
|
|
40
|
+
if prefix not in self.prefix_counters:
|
|
41
|
+
self.prefix_counters[prefix] = 0
|
|
42
|
+
|
|
43
|
+
while True:
|
|
44
|
+
uid = f"{prefix}{self.prefix_counters[prefix]}"
|
|
45
|
+
self.prefix_counters[prefix] += 1
|
|
46
|
+
yield uid
|
|
@@ -13,22 +13,20 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
from __future__ import annotations
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
import typing
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
import bigframes.core.nodes
|
|
18
|
+
from bigframes.core import identifiers, nodes
|
|
20
19
|
|
|
21
20
|
|
|
22
21
|
# TODO: May as well just outright remove selection nodes in this process.
|
|
23
22
|
def remap_variables(
|
|
24
|
-
root:
|
|
25
|
-
id_generator:
|
|
26
|
-
) -> Tuple[
|
|
27
|
-
|
|
28
|
-
dict[
|
|
23
|
+
root: nodes.BigFrameNode,
|
|
24
|
+
id_generator: typing.Iterator[identifiers.ColumnId],
|
|
25
|
+
) -> typing.Tuple[
|
|
26
|
+
nodes.BigFrameNode,
|
|
27
|
+
dict[identifiers.ColumnId, identifiers.ColumnId],
|
|
29
28
|
]:
|
|
30
|
-
"""
|
|
31
|
-
Remap all variables in the BFET using the id_generator.
|
|
29
|
+
"""Remaps `ColumnId`s in the BFET to produce deterministic and sequential UIDs.
|
|
32
30
|
|
|
33
31
|
Note: this will convert a DAG to a tree.
|
|
34
32
|
"""
|
|
@@ -52,7 +52,7 @@ def to_datetime(
|
|
|
52
52
|
f"to datetime is not implemented. {constants.FEEDBACK_LINK}"
|
|
53
53
|
)
|
|
54
54
|
|
|
55
|
-
arg = bigframes.series.Series(arg)
|
|
55
|
+
arg = bigframes.series.Series(arg)
|
|
56
56
|
|
|
57
57
|
if format and unit and arg.dtype in (bigframes.dtypes.INT_DTYPE, bigframes.dtypes.FLOAT_DTYPE): # type: ignore
|
|
58
58
|
raise ValueError("cannot specify both format and unit")
|
|
@@ -74,6 +74,11 @@ def to_datetime(
|
|
|
74
74
|
)
|
|
75
75
|
|
|
76
76
|
assert unit is None
|
|
77
|
+
|
|
78
|
+
# The following operations evaluate individual values to infer a format,
|
|
79
|
+
# so cache if needed.
|
|
80
|
+
arg = arg._cached(force=False)
|
|
81
|
+
|
|
77
82
|
as_datetime = arg._apply_unary_op( # type: ignore
|
|
78
83
|
ops.ToDatetimeOp(
|
|
79
84
|
format=format,
|
|
@@ -617,7 +617,7 @@ class GeminiTextGenerator(base.RetriableRemotePredictor):
|
|
|
617
617
|
It creates a struct column of the items of the iterable, and use the concatenated result as the input prompt. No-op if set to None.
|
|
618
618
|
output_schema (Mapping[str, str] or None, default None):
|
|
619
619
|
The schema used to generate structured output as a bigframes DataFrame. The schema is a string key-value pair of <column_name>:<type>.
|
|
620
|
-
Supported types are int64, float64, bool and
|
|
620
|
+
Supported types are int64, float64, bool, string, array<type> and struct<column type>. If None, output text result.
|
|
621
621
|
Returns:
|
|
622
622
|
bigframes.dataframe.DataFrame: DataFrame of shape (n_samples, n_input_columns + n_prediction_columns). Returns predicted values.
|
|
623
623
|
"""
|
|
@@ -84,7 +84,7 @@ class UnixSeconds(base_ops.UnaryOp):
|
|
|
84
84
|
name: typing.ClassVar[str] = "unix_seconds"
|
|
85
85
|
|
|
86
86
|
def output_type(self, *input_types: dtypes.ExpressionType) -> dtypes.ExpressionType:
|
|
87
|
-
if input_types[0]
|
|
87
|
+
if input_types[0] != dtypes.TIMESTAMP_DTYPE:
|
|
88
88
|
raise TypeError("expected timestamp input")
|
|
89
89
|
return dtypes.INT_DTYPE
|
|
90
90
|
|
|
@@ -94,7 +94,7 @@ class UnixMillis(base_ops.UnaryOp):
|
|
|
94
94
|
name: typing.ClassVar[str] = "unix_millis"
|
|
95
95
|
|
|
96
96
|
def output_type(self, *input_types: dtypes.ExpressionType) -> dtypes.ExpressionType:
|
|
97
|
-
if input_types[0]
|
|
97
|
+
if input_types[0] != dtypes.TIMESTAMP_DTYPE:
|
|
98
98
|
raise TypeError("expected timestamp input")
|
|
99
99
|
return dtypes.INT_DTYPE
|
|
100
100
|
|
|
@@ -104,7 +104,7 @@ class UnixMicros(base_ops.UnaryOp):
|
|
|
104
104
|
name: typing.ClassVar[str] = "unix_micros"
|
|
105
105
|
|
|
106
106
|
def output_type(self, *input_types: dtypes.ExpressionType) -> dtypes.ExpressionType:
|
|
107
|
-
if input_types[0]
|
|
107
|
+
if input_types[0] != dtypes.TIMESTAMP_DTYPE:
|
|
108
108
|
raise TypeError("expected timestamp input")
|
|
109
109
|
return dtypes.INT_DTYPE
|
|
110
110
|
|
|
@@ -114,7 +114,7 @@ class TimestampDiff(base_ops.BinaryOp):
|
|
|
114
114
|
name: typing.ClassVar[str] = "timestamp_diff"
|
|
115
115
|
|
|
116
116
|
def output_type(self, *input_types: dtypes.ExpressionType) -> dtypes.ExpressionType:
|
|
117
|
-
if input_types[0]
|
|
117
|
+
if input_types[0] != input_types[1]:
|
|
118
118
|
raise TypeError(
|
|
119
119
|
f"two inputs have different types. left: {input_types[0]}, right: {input_types[1]}"
|
|
120
120
|
)
|