bigframes 2.1.0__tar.gz → 2.2.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.1.0/bigframes.egg-info → bigframes-2.2.0}/PKG-INFO +7 -4
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_config/experiment_options.py +31 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/geo.py +10 -4
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/array_value.py +11 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/bigframe_node.py +2 -3
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/blocks.py +9 -19
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/api.py +3 -3
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/compiled.py +1 -7
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/compiler.py +6 -29
- bigframes-2.2.0/bigframes/core/compile/configs.py +36 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/googlesql/expression.py +1 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/polars/compiler.py +0 -5
- bigframes-2.2.0/bigframes/core/compile/sqlglot/__init__.py +18 -0
- bigframes-2.2.0/bigframes/core/compile/sqlglot/compiler.py +168 -0
- bigframes-2.2.0/bigframes/core/compile/sqlglot/scalar_compiler.py +33 -0
- bigframes-2.2.0/bigframes/core/compile/sqlglot/sqlglot_ir.py +147 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/sqlglot/sqlglot_types.py +1 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/local_data.py +142 -48
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/nodes.py +61 -83
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/__init__.py +7 -1
- bigframes-2.2.0/bigframes/core/rewrite/fold_row_count.py +44 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/order.py +0 -5
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/pruning.py +20 -4
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/scan_reduction.py +17 -2
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/schema.py +5 -2
- bigframes-2.2.0/bigframes/core/sequences.py +105 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/sql.py +7 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/utils.py +7 -2
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/dataframe.py +37 -8
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/dtypes.py +15 -2
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/functions/_function_session.py +18 -6
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/base.py +8 -14
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/core.py +29 -2
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/globals.py +1 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/imported.py +19 -16
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/llm.py +50 -69
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/remote.py +8 -13
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/sql.py +26 -14
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/utils.py +24 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/blob.py +5 -2
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/__init__.py +33 -26
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/_io/bigquery/__init__.py +2 -3
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/_io/bigquery/read_gbq_table.py +14 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/bq_caching_executor.py +27 -48
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/clients.py +31 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/executor.py +33 -7
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/loader.py +108 -27
- bigframes-2.2.0/bigframes/session/local_scan_executor.py +66 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/metrics.py +26 -25
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/read_api_execution.py +9 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/version.py +2 -2
- {bigframes-2.1.0 → bigframes-2.2.0/bigframes.egg-info}/PKG-INFO +7 -4
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes.egg-info/SOURCES.txt +17 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes.egg-info/requires.txt +6 -3
- {bigframes-2.1.0 → bigframes-2.2.0}/setup.py +5 -4
- bigframes-2.2.0/tests/data/scalars.jsonl +9 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/test_session.py +0 -37
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_geo.py +19 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_json.py +1 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_llm.py +190 -116
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_multimodal_llm.py +1 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_dataframe.py +27 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_dataframe_io.py +83 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_session.py +131 -65
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/compiler_session.py +76 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/conftest.py +112 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal/out.sql +171 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_json_df/out.sql +4 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_lists_df/out.sql +41 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_nested_structs_df/out.sql +19 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/snapshots/test_compile_readlocal/test_compile_readlocal_w_structs_df/out.sql +21 -0
- bigframes-2.2.0/tests/unit/core/compile/sqlglot/test_compile_readlocal.py +55 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_bf_utils.py +1 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_blocks.py +0 -2
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_dtypes.py +4 -4
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_sql.py +61 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/test_session.py +18 -6
- bigframes-2.2.0/tests/unit/test_local_data.py +46 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_local_engine.py +1 -1
- bigframes-2.2.0/tests/unit/test_sequences.py +55 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/constants.py +5 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/bigquery/__init__.py +0 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/parsers/readers.py +1 -1
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/version.py +2 -2
- bigframes-2.1.0/tests/data/scalars.jsonl +0 -9
- bigframes-2.1.0/tests/unit/functions/__init__.py +0 -13
- {bigframes-2.1.0 → bigframes-2.2.0}/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/MANIFEST.in +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/README.rst +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_config/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_config/bigquery_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_config/compute_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_config/display_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_config/sampling_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_tools/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/_tools/strings.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/approx_agg.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/array.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/datetime.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/json.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/search.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/sql.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/bigquery/_operations/struct.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/blob/_functions.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/clients.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/constants.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/block_transforms.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/aggregate_compiler.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/concat.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/constants.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/default_ordering.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/explode.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/googlesql/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/googlesql/abc.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/googlesql/datatype.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/googlesql/function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/googlesql/query.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/ibis_types.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/polars/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/scalar_op_compiler.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/compile/schema_translator.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/convert.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/eval.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/explode.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/expression.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/global_session.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/groupby/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/groupby/aggs.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/groupby/dataframe_group_by.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/groupby/series_group_by.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/guid.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/identifiers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/indexers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/indexes/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/indexes/base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/indexes/multi.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/join_def.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/log_adapter.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/ordering.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/pruning.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/reshape/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/reshape/api.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/reshape/concat.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/reshape/encoding.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/reshape/merge.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/reshape/tile.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/identifiers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/implicit_align.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/legacy_align.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/slices.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/timedeltas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/rewrite/windows.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/scalar.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/slices.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/tools/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/tools/datetimes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/tree_properties.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/validations.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/window/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/window/ordering.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/window/rolling.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/core/window_spec.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/enums.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/exceptions.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/features.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/formatting_helpers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/functions/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/functions/_function_client.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/functions/_utils.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/functions/function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/functions/function_template.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/geopandas/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/geopandas/geoseries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/cluster.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/compose.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/decomposition.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/ensemble.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/forecasting.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/impute.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/linear_model.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/loader.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/metrics/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/metrics/_metrics.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/metrics/pairwise.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/model_selection.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/pipeline.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/ml/preprocessing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/_matplotlib/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/_matplotlib/core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/_matplotlib/hist.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/_op_converters.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/aggregations.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/ai.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/array_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/base_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/blob_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/bool_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/comparison_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/date_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/datetime_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/datetimes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/distance_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/frequency_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/generic_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/geo_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/json_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/lists.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/numeric_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/numpy_op_maps.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/plotting.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/remote_function_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/semantics.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/string_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/strings.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/struct_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/structs.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/time_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/timedelta_ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/operations/type.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/pandas/__init__.py +0 -0
- {bigframes-2.1.0/bigframes/core/compile/sqlglot → bigframes-2.2.0/bigframes/pandas/core}/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/pandas/core/api.py +0 -0
- {bigframes-2.1.0/bigframes/pandas/core → bigframes-2.2.0/bigframes/pandas/core/tools}/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/pandas/core/tools/timedeltas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/pandas/io/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/pandas/io/api.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/py.typed +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/series.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/_io/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/_io/pandas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/anonymous_dataset.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/bigquery_session.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/environment.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/planner.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/semi_executor.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/temporary_storage.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/time.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/session/validation.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/streaming/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/streaming/dataframe.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/testing/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes/testing/mocks.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes.egg-info/dependency_links.txt +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes.egg-info/not-zip-safe +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/bigframes.egg-info/top_level.txt +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/pyproject.toml +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/setup.cfg +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/README.md +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/config.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q1.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q10.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q2.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q3.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q4.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q5.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q6.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q7.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/groupby/q8.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/join/config.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/join/q1.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/join/q2.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/join/q3.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/join/q4.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/join/q5.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/sort/config.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/db_benchmark/sort/q1.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/config.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q1.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q10.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q11.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q12.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q13.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q14.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q15.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q16.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q17.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q18.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q19.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q2.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q20.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q21.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q22.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q3.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q4.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q5.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q6.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q7.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q8.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/tpch/q9.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/benchmark/utils.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/hockey_players.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/hockey_players.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/json.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/json_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/matrix_2by3.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/matrix_2by3.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/matrix_3by4.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/matrix_3by4.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/nested.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/nested_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/nested_structs.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/nested_structs_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/penguins.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/penguins_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/people.csv +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/ratings.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/ratings_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/repeated.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/repeated_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/scalars_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/time_series.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/time_series_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/urban_areas.jsonl +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/data/urban_areas_schema.json +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/conftest.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/blob/test_function.py +0 -0
- {bigframes-2.1.0/bigframes/pandas/core/tools → bigframes-2.2.0/tests/system/large/functions}/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/functions/test_managed_function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/functions/test_remote_function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_cluster.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_compose.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_decomposition.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_ensemble.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_forecasting.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_linear_model.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_model_selection.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/ml/test_pipeline.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/operations/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/operations/conftest.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/operations/test_ai.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/operations/test_semantics.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/test_dataframe.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/test_dataframe_io.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/test_location.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/large/test_streaming.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/load/conftest.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/load/test_large_tables.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/load/test_llm.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_approx_agg.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_array.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_datetime.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_sql.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_struct.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/bigquery/test_vector_search.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/blob/test_io.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/blob/test_properties.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/blob/test_urls.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/core/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/core/test_convert.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/core/test_indexers.py +0 -0
- {bigframes-2.1.0/tests/system/large → bigframes-2.2.0/tests/system/small}/functions/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/functions/test_remote_function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/geopandas/test_geoseries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/conftest.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_cluster.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_decomposition.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_ensemble.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_forecasting.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_imported.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_impute.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_linear_model.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_metrics.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_metrics_pairwise.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_model_selection.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_preprocessing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_register.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_remote.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/ml/test_utils.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_ai.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_dates.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_datetimes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_lists.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_plotting.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_semantics.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_strings.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_struct.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/operations/test_timedeltas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/regression/test_issue355_merge_after_filter.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_bq_sessions.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_encryption.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_groupby.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_index.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_index_io.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_ipython.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_multiindex.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_null_index.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_numpy.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_pandas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_pandas_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_progress_bar.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_scalar.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_series.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_series_io.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_unordered.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/small/test_window.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/system/utils.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/_config/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/_config/test_bigquery_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/_config/test_experiment_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/_config/test_threaded_options.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/_tools/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/_tools/test_strings.py +0 -0
- {bigframes-2.1.0/tests/system/small/functions → bigframes-2.2.0/tests/unit/bigquery}/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/bigquery/test_json.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/compile/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/compile/googlesql/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/compile/googlesql/test_expression.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/compile/googlesql/test_function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/compile/googlesql/test_query.py +0 -0
- {bigframes-2.1.0/tests/unit/bigquery → bigframes-2.2.0/tests/unit/core/compile/sqlglot}/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/compile/sqlglot/test_sqlglot_types.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_expression.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_indexes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_log_adapter.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_rewrite.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_slices.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/core/test_windowspec.py +0 -0
- {bigframes-2.1.0/tests/unit/core/compile/sqlglot → bigframes-2.2.0/tests/unit/functions}/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/functions/test_function_template.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/functions/test_remote_function.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/functions/test_remote_function_utils.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_api_primitives.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_compose.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_forecasting.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_golden_sql.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_matrix_factorization.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_pipeline.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/ml/test_sql.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/operations/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/polars_session.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/test_clients.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/test_io_bigquery.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/test_io_pandas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/test_read_gbq_table.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/session/test_time.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_clients.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_constants.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_daemon.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_dataframe.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_dataframe_io.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_features.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_formatting_helpers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_notebook.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_pandas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_planner.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_series.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/tests/unit/test_series_io.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/cpython/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/cpython/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/cpython/_pprint.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/METADATA +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/README.md +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/groupby_queries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/join_queries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/db_benchmark/sort_queries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/geopandas/LICENSE.txt +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/geopandas/geoseries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/google_cloud_bigquery/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/google_cloud_bigquery/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/google_cloud_bigquery/_pandas_helpers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/unit/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/google_cloud_bigquery/tests/unit/test_pandas_helpers.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/LICENSE.txt +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/README.md +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/backend.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/client.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/converter.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/datatypes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/find.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/bigquery/udf/rewrite.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/sql/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/sql/compilers/base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/sql/datatypes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/backends/sql/rewrites.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/annotations.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/bases.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/caching.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/collections.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/deferred.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/dispatch.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/egraph.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/exceptions.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/graph.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/grounds.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/numeric.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/patterns.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/selectors.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/temporal.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/common/typing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/config.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/api.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/builders.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/datashape.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/datatypes/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/datatypes/cast.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/datatypes/core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/datatypes/value.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/decompile.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/format.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/analytic.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/arrays.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/generic.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/geospatial.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/histograms.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/json.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/logical.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/maps.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/numeric.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/reductions.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/relations.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/sortkeys.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/strings.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/structs.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/subqueries.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/temporal.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/udf.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/operations/window.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/rewrites.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/rules.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/schema.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/sql.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/arrays.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/binary.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/dataframe_interchange.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/generic.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/geospatial.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/groupby.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/joins.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/json.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/logical.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/maps.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/numeric.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/pretty.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/relations.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/strings.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/structs.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/temporal.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/temporal_windows.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/typing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/types/uuid.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/expr/visualize.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/formats/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/formats/numpy.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/formats/pandas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/formats/polars.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/formats/pyarrow.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/selectors.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/ibis/util.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/AUTHORS.md +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/README.md +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/_config/config.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/arrays/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/arrays/arrow/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/arrays/arrow/accessors.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/arrays/datetimelike.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/common.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/align.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/common.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/engines.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/eval.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/expr.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/ops.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/parsing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/computation/scope.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/config_init.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/dtypes/inference.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/frame.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/generic.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/groupby/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/indexes/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/indexes/accessor.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/indexes/base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/indexes/multi.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/indexing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/reshape/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/reshape/concat.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/reshape/encoding.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/reshape/merge.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/reshape/tile.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/series.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/strings/accessor.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/tools/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/tools/datetimes.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/tools/timedeltas.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/window/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/core/window/rolling.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/common.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/gbq.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/parquet.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/parsers/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/io/pickle.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/pandas/_typing.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/plotting/_core.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/util/_exceptions.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/pandas/util/_validators.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/py.typed +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/COPYING +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/cluster/_kmeans.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/compose/_column_transformer.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/decomposition/_mf.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/decomposition/_pca.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/ensemble/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/ensemble/_forest.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/impute/_base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/linear_model/_base.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/linear_model/_logistic.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/metrics/_classification.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/metrics/_ranking.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/metrics/_regression.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/metrics/pairwise.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/model_selection/_split.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/model_selection/_validation.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/pipeline.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/preprocessing/_data.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/preprocessing/_discretization.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/preprocessing/_encoder.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/preprocessing/_label.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/sklearn/preprocessing/_polynomial.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/METADATA +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/README.md +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/TPC-EULA.txt +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q1.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q10.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q11.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q12.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q13.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q14.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q15.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q16.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q17.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q18.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q19.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q2.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q20.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q21.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q22.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q3.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q4.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q5.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q6.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q7.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q8.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/queries/q9.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q1.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q10.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q11.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q12.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q13.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q14.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q15.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q16.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q17.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q18.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q19.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q2.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q20.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q21.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q22.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q3.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q4.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q5.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q6.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q7.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q8.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/tpch/sql_queries/q9.sql +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/xgboost/LICENSE +0 -0
- {bigframes-2.1.0 → bigframes-2.2.0}/third_party/bigframes_vendored/xgboost/__init__.py +0 -0
- {bigframes-2.1.0 → bigframes-2.2.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
|
+
Version: 2.2.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
|
|
@@ -26,10 +26,11 @@ Requires-Dist: cloudpickle>=2.0.0
|
|
|
26
26
|
Requires-Dist: fsspec>=2023.3.0
|
|
27
27
|
Requires-Dist: gcsfs>=2023.3.0
|
|
28
28
|
Requires-Dist: geopandas>=0.12.2
|
|
29
|
-
Requires-Dist: google-auth<3.
|
|
29
|
+
Requires-Dist: google-auth<3.0,>=2.15.0
|
|
30
30
|
Requires-Dist: google-cloud-bigtable>=2.24.0
|
|
31
31
|
Requires-Dist: google-cloud-pubsub>=2.21.4
|
|
32
32
|
Requires-Dist: google-cloud-bigquery[bqstorage,pandas]>=3.31.0
|
|
33
|
+
Requires-Dist: google-cloud-bigquery-storage<3.0.0,>=2.30.0
|
|
33
34
|
Requires-Dist: google-cloud-functions>=1.12.0
|
|
34
35
|
Requires-Dist: google-cloud-bigquery-connection>=1.12.0
|
|
35
36
|
Requires-Dist: google-cloud-iam>=2.12.1
|
|
@@ -41,7 +42,7 @@ Requires-Dist: pandas-gbq>=0.26.1
|
|
|
41
42
|
Requires-Dist: pyarrow>=15.0.2
|
|
42
43
|
Requires-Dist: pydata-google-auth>=1.8.2
|
|
43
44
|
Requires-Dist: requests>=2.27.1
|
|
44
|
-
Requires-Dist: shapely>=
|
|
45
|
+
Requires-Dist: shapely>=1.8.5
|
|
45
46
|
Requires-Dist: sqlglot>=23.6.3
|
|
46
47
|
Requires-Dist: tabulate>=0.9
|
|
47
48
|
Requires-Dist: ipywidgets>=7.7.1
|
|
@@ -55,6 +56,8 @@ Requires-Dist: toolz<2,>=0.11
|
|
|
55
56
|
Requires-Dist: typing-extensions<5,>=4.5.0
|
|
56
57
|
Requires-Dist: rich<14,>=12.4.4
|
|
57
58
|
Provides-Extra: tests
|
|
59
|
+
Requires-Dist: freezegun; extra == "tests"
|
|
60
|
+
Requires-Dist: pytest-snapshot; extra == "tests"
|
|
58
61
|
Provides-Extra: polars
|
|
59
62
|
Requires-Dist: polars>=1.7.0; extra == "polars"
|
|
60
63
|
Provides-Extra: scikit-learn
|
|
@@ -64,7 +67,6 @@ Requires-Dist: pytest; extra == "dev"
|
|
|
64
67
|
Requires-Dist: pre-commit; extra == "dev"
|
|
65
68
|
Requires-Dist: nox; extra == "dev"
|
|
66
69
|
Requires-Dist: google-cloud-testutils; extra == "dev"
|
|
67
|
-
Requires-Dist: freezegun; extra == "dev"
|
|
68
70
|
Provides-Extra: all
|
|
69
71
|
Requires-Dist: freezegun; extra == "all"
|
|
70
72
|
Requires-Dist: google-cloud-testutils; extra == "all"
|
|
@@ -72,6 +74,7 @@ Requires-Dist: nox; extra == "all"
|
|
|
72
74
|
Requires-Dist: polars>=1.7.0; extra == "all"
|
|
73
75
|
Requires-Dist: pre-commit; extra == "all"
|
|
74
76
|
Requires-Dist: pytest; extra == "all"
|
|
77
|
+
Requires-Dist: pytest-snapshot; extra == "all"
|
|
75
78
|
Requires-Dist: scikit-learn>=1.2.2; extra == "all"
|
|
76
79
|
|
|
77
80
|
BigQuery DataFrames
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from typing import Optional
|
|
15
16
|
import warnings
|
|
16
17
|
|
|
17
18
|
import bigframes.exceptions as bfe
|
|
@@ -26,6 +27,9 @@ class ExperimentOptions:
|
|
|
26
27
|
self._semantic_operators: bool = False
|
|
27
28
|
self._ai_operators: bool = False
|
|
28
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
|
|
29
33
|
|
|
30
34
|
@property
|
|
31
35
|
def semantic_operators(self) -> bool:
|
|
@@ -67,3 +71,30 @@ class ExperimentOptions:
|
|
|
67
71
|
)
|
|
68
72
|
warnings.warn(msg, category=bfe.PreviewWarning)
|
|
69
73
|
self._blob = value
|
|
74
|
+
|
|
75
|
+
@property
|
|
76
|
+
def blob_display(self) -> bool:
|
|
77
|
+
"""Whether to display the blob content in notebook DataFrame preview. Default True."""
|
|
78
|
+
return self._blob_display
|
|
79
|
+
|
|
80
|
+
@blob_display.setter
|
|
81
|
+
def blob_display(self, value: bool):
|
|
82
|
+
self._blob_display = value
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def blob_display_width(self) -> Optional[int]:
|
|
86
|
+
"""Width in pixels that the blob constrained to."""
|
|
87
|
+
return self._blob_display_width
|
|
88
|
+
|
|
89
|
+
@blob_display_width.setter
|
|
90
|
+
def blob_display_width(self, value: Optional[int]):
|
|
91
|
+
self._blob_display_width = value
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def blob_display_height(self) -> Optional[int]:
|
|
95
|
+
"""Height in pixels that the blob constrained to."""
|
|
96
|
+
return self._blob_display_height
|
|
97
|
+
|
|
98
|
+
@blob_display_height.setter
|
|
99
|
+
def blob_display_height(self, value: Optional[int]):
|
|
100
|
+
self._blob_display_height = value
|
|
@@ -106,7 +106,9 @@ def st_area(
|
|
|
106
106
|
def st_difference(
|
|
107
107
|
series: Union[bigframes.series.Series, bigframes.geopandas.GeoSeries],
|
|
108
108
|
other: Union[
|
|
109
|
-
bigframes.series.Series,
|
|
109
|
+
bigframes.series.Series,
|
|
110
|
+
bigframes.geopandas.GeoSeries,
|
|
111
|
+
shapely.geometry.base.BaseGeometry,
|
|
110
112
|
],
|
|
111
113
|
) -> bigframes.series.Series:
|
|
112
114
|
"""
|
|
@@ -207,7 +209,9 @@ def st_difference(
|
|
|
207
209
|
def st_distance(
|
|
208
210
|
series: Union[bigframes.series.Series, bigframes.geopandas.GeoSeries],
|
|
209
211
|
other: Union[
|
|
210
|
-
bigframes.series.Series,
|
|
212
|
+
bigframes.series.Series,
|
|
213
|
+
bigframes.geopandas.GeoSeries,
|
|
214
|
+
shapely.geometry.base.BaseGeometry,
|
|
211
215
|
],
|
|
212
216
|
*,
|
|
213
217
|
use_spheroid: bool = False,
|
|
@@ -260,7 +264,7 @@ def st_distance(
|
|
|
260
264
|
A series containing geography objects.
|
|
261
265
|
other (bigframes.pandas.Series | bigframes.geopandas.GeoSeries | shapely.Geometry):
|
|
262
266
|
The series or geometric object to calculate the distance in meters
|
|
263
|
-
to
|
|
267
|
+
to form the geography objects in ``series``.
|
|
264
268
|
use_spheroid (optional, default ``False``):
|
|
265
269
|
Determines how this function measures distance. If ``use_spheroid``
|
|
266
270
|
is False, the function measures distance on the surface of a perfect
|
|
@@ -282,7 +286,9 @@ def st_distance(
|
|
|
282
286
|
def st_intersection(
|
|
283
287
|
series: Union[bigframes.series.Series, bigframes.geopandas.GeoSeries],
|
|
284
288
|
other: Union[
|
|
285
|
-
bigframes.series.Series,
|
|
289
|
+
bigframes.series.Series,
|
|
290
|
+
bigframes.geopandas.GeoSeries,
|
|
291
|
+
shapely.geometry.base.BaseGeometry,
|
|
286
292
|
],
|
|
287
293
|
) -> bigframes.series.Series:
|
|
288
294
|
"""
|
|
@@ -204,7 +204,17 @@ class ArrayValue:
|
|
|
204
204
|
|
|
205
205
|
def row_count(self) -> ArrayValue:
|
|
206
206
|
"""Get number of rows in ArrayValue as a single-entry ArrayValue."""
|
|
207
|
-
return ArrayValue(
|
|
207
|
+
return ArrayValue(
|
|
208
|
+
nodes.AggregateNode(
|
|
209
|
+
child=self.node,
|
|
210
|
+
aggregations=(
|
|
211
|
+
(
|
|
212
|
+
ex.NullaryAggregation(agg_ops.size_op),
|
|
213
|
+
ids.ColumnId(bigframes.core.guid.generate_guid()),
|
|
214
|
+
),
|
|
215
|
+
),
|
|
216
|
+
)
|
|
217
|
+
)
|
|
208
218
|
|
|
209
219
|
# Operations
|
|
210
220
|
def filter_by_id(self, predicate_id: str, keep_null: bool = False) -> ArrayValue:
|
|
@@ -20,10 +20,9 @@ import dataclasses
|
|
|
20
20
|
import functools
|
|
21
21
|
import itertools
|
|
22
22
|
import typing
|
|
23
|
-
from typing import Callable, Dict, Generator, Iterable, Mapping, Set, Tuple
|
|
23
|
+
from typing import Callable, Dict, Generator, Iterable, Mapping, Sequence, Set, Tuple
|
|
24
24
|
|
|
25
25
|
from bigframes.core import identifiers
|
|
26
|
-
import bigframes.core.guid
|
|
27
26
|
import bigframes.core.schema as schemata
|
|
28
27
|
import bigframes.dtypes
|
|
29
28
|
|
|
@@ -163,7 +162,7 @@ class BigFrameNode:
|
|
|
163
162
|
# TODO: Store some local data lazily for select, aggregate nodes.
|
|
164
163
|
@property
|
|
165
164
|
@abc.abstractmethod
|
|
166
|
-
def fields(self) ->
|
|
165
|
+
def fields(self) -> Sequence[Field]:
|
|
167
166
|
...
|
|
168
167
|
|
|
169
168
|
@property
|
|
@@ -39,7 +39,6 @@ from typing import (
|
|
|
39
39
|
Optional,
|
|
40
40
|
Sequence,
|
|
41
41
|
Tuple,
|
|
42
|
-
TYPE_CHECKING,
|
|
43
42
|
Union,
|
|
44
43
|
)
|
|
45
44
|
import warnings
|
|
@@ -68,13 +67,8 @@ import bigframes.core.utils as utils
|
|
|
68
67
|
import bigframes.core.window_spec as windows
|
|
69
68
|
import bigframes.dtypes
|
|
70
69
|
import bigframes.exceptions as bfe
|
|
71
|
-
import bigframes.features
|
|
72
70
|
import bigframes.operations as ops
|
|
73
71
|
import bigframes.operations.aggregations as agg_ops
|
|
74
|
-
import bigframes.session._io.pandas as io_pandas
|
|
75
|
-
|
|
76
|
-
if TYPE_CHECKING:
|
|
77
|
-
import bigframes.session.executor
|
|
78
72
|
|
|
79
73
|
# Type constraint for wherever column labels are used
|
|
80
74
|
Label = typing.Hashable
|
|
@@ -221,7 +215,7 @@ class Block:
|
|
|
221
215
|
except Exception:
|
|
222
216
|
pass
|
|
223
217
|
|
|
224
|
-
row_count = self.session._executor.
|
|
218
|
+
row_count = self.session._executor.execute(self.expr.row_count()).to_py_scalar()
|
|
225
219
|
return (row_count, len(self.value_columns))
|
|
226
220
|
|
|
227
221
|
@property
|
|
@@ -485,7 +479,7 @@ class Block:
|
|
|
485
479
|
*,
|
|
486
480
|
ordered: bool = True,
|
|
487
481
|
allow_large_results: Optional[bool] = None,
|
|
488
|
-
) -> Tuple[pa.Table, bigquery.QueryJob]:
|
|
482
|
+
) -> Tuple[pa.Table, Optional[bigquery.QueryJob]]:
|
|
489
483
|
"""Run query and download results as a pyarrow Table."""
|
|
490
484
|
execute_result = self.session._executor.execute(
|
|
491
485
|
self.expr, ordered=ordered, use_explicit_destination=allow_large_results
|
|
@@ -580,7 +574,7 @@ class Block:
|
|
|
580
574
|
result = self.session._executor.peek(
|
|
581
575
|
self.expr, n, use_explicit_destination=allow_large_results
|
|
582
576
|
)
|
|
583
|
-
df =
|
|
577
|
+
df = result.to_pandas()
|
|
584
578
|
self._copy_index_to_pandas(df)
|
|
585
579
|
return df
|
|
586
580
|
else:
|
|
@@ -604,8 +598,7 @@ class Block:
|
|
|
604
598
|
page_size=page_size,
|
|
605
599
|
max_results=max_results,
|
|
606
600
|
)
|
|
607
|
-
for
|
|
608
|
-
df = io_pandas.arrow_to_pandas(record_batch, self.expr.schema)
|
|
601
|
+
for df in execute_result.to_pandas_batches():
|
|
609
602
|
self._copy_index_to_pandas(df)
|
|
610
603
|
if squeeze:
|
|
611
604
|
yield df.squeeze(axis=1)
|
|
@@ -659,7 +652,7 @@ class Block:
|
|
|
659
652
|
|
|
660
653
|
# TODO: Maybe materialize before downsampling
|
|
661
654
|
# Some downsampling methods
|
|
662
|
-
if fraction < 1:
|
|
655
|
+
if fraction < 1 and (execute_result.total_rows is not None):
|
|
663
656
|
if not sample_config.enable_downsampling:
|
|
664
657
|
raise RuntimeError(
|
|
665
658
|
f"The data size ({table_mb:.2f} MB) exceeds the maximum download limit of "
|
|
@@ -690,9 +683,7 @@ class Block:
|
|
|
690
683
|
MaterializationOptions(ordered=materialize_options.ordered)
|
|
691
684
|
)
|
|
692
685
|
else:
|
|
693
|
-
|
|
694
|
-
arrow = execute_result.to_arrow_table()
|
|
695
|
-
df = io_pandas.arrow_to_pandas(arrow, schema=self.expr.schema)
|
|
686
|
+
df = execute_result.to_pandas()
|
|
696
687
|
self._copy_index_to_pandas(df)
|
|
697
688
|
|
|
698
689
|
return df, execute_result.query_job
|
|
@@ -1570,12 +1561,11 @@ class Block:
|
|
|
1570
1561
|
|
|
1571
1562
|
# head caches full underlying expression, so row_count will be free after
|
|
1572
1563
|
head_result = self.session._executor.head(self.expr, max_results)
|
|
1573
|
-
|
|
1564
|
+
row_count = self.session._executor.execute(self.expr.row_count()).to_py_scalar()
|
|
1574
1565
|
|
|
1575
|
-
|
|
1576
|
-
df = io_pandas.arrow_to_pandas(arrow, schema=self.expr.schema)
|
|
1566
|
+
df = head_result.to_pandas()
|
|
1577
1567
|
self._copy_index_to_pandas(df)
|
|
1578
|
-
return df,
|
|
1568
|
+
return df, row_count, head_result.query_job
|
|
1579
1569
|
|
|
1580
1570
|
def promote_offsets(self, label: Label = None) -> typing.Tuple[Block, str]:
|
|
1581
1571
|
expr, result_id = self._expr.promote_offsets()
|
|
@@ -18,7 +18,7 @@ from typing import Optional, Sequence, Tuple, TYPE_CHECKING
|
|
|
18
18
|
import google.cloud.bigquery as bigquery
|
|
19
19
|
|
|
20
20
|
from bigframes.core import rewrite
|
|
21
|
-
from bigframes.core.compile import compiler
|
|
21
|
+
from bigframes.core.compile import compiler, configs
|
|
22
22
|
|
|
23
23
|
if TYPE_CHECKING:
|
|
24
24
|
import bigframes.core.nodes
|
|
@@ -34,7 +34,7 @@ class SQLCompiler:
|
|
|
34
34
|
limit: Optional[int] = None,
|
|
35
35
|
) -> str:
|
|
36
36
|
"""Compile node into sql where rows are sorted with ORDER BY."""
|
|
37
|
-
request =
|
|
37
|
+
request = configs.CompileRequest(node, sort_rows=ordered, peek_count=limit)
|
|
38
38
|
return compiler.compile_sql(request).sql
|
|
39
39
|
|
|
40
40
|
def compile_raw(
|
|
@@ -44,7 +44,7 @@ class SQLCompiler:
|
|
|
44
44
|
str, Sequence[bigquery.SchemaField], bigframes.core.ordering.RowOrdering
|
|
45
45
|
]:
|
|
46
46
|
"""Compile node into sql that exposes all columns, including hidden ordering-only columns."""
|
|
47
|
-
request =
|
|
47
|
+
request = configs.CompileRequest(
|
|
48
48
|
node, sort_rows=False, materialize_all_order_keys=True
|
|
49
49
|
)
|
|
50
50
|
result = compiler.compile_sql(request)
|
|
@@ -288,13 +288,7 @@ class UnorderedIR:
|
|
|
288
288
|
def from_polars(
|
|
289
289
|
cls, pa_table: pa.Table, schema: Sequence[bigquery.SchemaField]
|
|
290
290
|
) -> UnorderedIR:
|
|
291
|
-
|
|
292
|
-
"""
|
|
293
|
-
Builds an in-memory only (SQL only) expr from a pandas dataframe.
|
|
294
|
-
|
|
295
|
-
Assumed that the dataframe has unique string column names and bigframes-suppported
|
|
296
|
-
dtypes.
|
|
297
|
-
"""
|
|
291
|
+
"""Builds an in-memory only (SQL only) expr from a pyarrow table."""
|
|
298
292
|
import bigframes_vendored.ibis.backends.bigquery.datatypes as third_party_ibis_bqtypes
|
|
299
293
|
|
|
300
294
|
# derive the ibis schema from the original pandas schema
|
|
@@ -22,13 +22,13 @@ import bigframes_vendored.ibis.backends.bigquery as ibis_bigquery
|
|
|
22
22
|
import bigframes_vendored.ibis.expr.api as ibis_api
|
|
23
23
|
import bigframes_vendored.ibis.expr.datatypes as ibis_dtypes
|
|
24
24
|
import bigframes_vendored.ibis.expr.types as ibis_types
|
|
25
|
-
import google.cloud.bigquery
|
|
26
25
|
import pyarrow as pa
|
|
27
26
|
|
|
28
27
|
from bigframes import dtypes, operations
|
|
29
28
|
from bigframes.core import expression
|
|
30
29
|
import bigframes.core.compile.compiled as compiled
|
|
31
30
|
import bigframes.core.compile.concat as concat_impl
|
|
31
|
+
import bigframes.core.compile.configs as configs
|
|
32
32
|
import bigframes.core.compile.explode
|
|
33
33
|
import bigframes.core.compile.scalar_op_compiler as compile_scalar
|
|
34
34
|
import bigframes.core.nodes as nodes
|
|
@@ -39,22 +39,7 @@ if typing.TYPE_CHECKING:
|
|
|
39
39
|
import bigframes.core
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
class CompileRequest:
|
|
44
|
-
node: nodes.BigFrameNode
|
|
45
|
-
sort_rows: bool
|
|
46
|
-
materialize_all_order_keys: bool = False
|
|
47
|
-
peek_count: typing.Optional[int] = None
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@dataclasses.dataclass(frozen=True)
|
|
51
|
-
class CompileResult:
|
|
52
|
-
sql: str
|
|
53
|
-
sql_schema: typing.Sequence[google.cloud.bigquery.SchemaField]
|
|
54
|
-
row_order: Optional[bf_ordering.RowOrdering]
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def compile_sql(request: CompileRequest) -> CompileResult:
|
|
42
|
+
def compile_sql(request: configs.CompileRequest) -> configs.CompileResult:
|
|
58
43
|
output_names = tuple((expression.DerefOp(id), id.sql) for id in request.node.ids)
|
|
59
44
|
result_node = nodes.ResultNode(
|
|
60
45
|
request.node,
|
|
@@ -74,7 +59,7 @@ def compile_sql(request: CompileRequest) -> CompileResult:
|
|
|
74
59
|
if request.sort_rows:
|
|
75
60
|
result_node = cast(nodes.ResultNode, rewrites.column_pruning(result_node))
|
|
76
61
|
sql = compile_result_node(result_node)
|
|
77
|
-
return CompileResult(
|
|
62
|
+
return configs.CompileResult(
|
|
78
63
|
sql, result_node.schema.to_bigquery(), result_node.order_by
|
|
79
64
|
)
|
|
80
65
|
|
|
@@ -88,7 +73,7 @@ def compile_sql(request: CompileRequest) -> CompileResult:
|
|
|
88
73
|
ordering if ordering.referenced_columns.issubset(result_node.ids) else None
|
|
89
74
|
)
|
|
90
75
|
assert (not request.materialize_all_order_keys) or (output_order is not None)
|
|
91
|
-
return CompileResult(sql, result_node.schema.to_bigquery(), output_order)
|
|
76
|
+
return configs.CompileResult(sql, result_node.schema.to_bigquery(), output_order)
|
|
92
77
|
|
|
93
78
|
|
|
94
79
|
def _replace_unsupported_ops(node: nodes.BigFrameNode):
|
|
@@ -183,16 +168,13 @@ def compile_readlocal(node: nodes.ReadLocalNode, *args):
|
|
|
183
168
|
pa_table = node.local_data_source.data
|
|
184
169
|
bq_schema = node.schema.to_bigquery()
|
|
185
170
|
|
|
186
|
-
pa_table = pa_table.select(
|
|
187
|
-
pa_table = pa_table.rename_columns(
|
|
188
|
-
{item.source_id: item.id.sql for item in node.scan_list.items}
|
|
189
|
-
)
|
|
171
|
+
pa_table = pa_table.select([item.source_id for item in node.scan_list.items])
|
|
172
|
+
pa_table = pa_table.rename_columns([item.id.sql for item in node.scan_list.items])
|
|
190
173
|
|
|
191
174
|
if offsets:
|
|
192
175
|
pa_table = pa_table.append_column(
|
|
193
176
|
offsets, pa.array(range(pa_table.num_rows), type=pa.int64())
|
|
194
177
|
)
|
|
195
|
-
bq_schema = (*bq_schema, google.cloud.bigquery.SchemaField(offsets, "INT64"))
|
|
196
178
|
return compiled.UnorderedIR.from_polars(pa_table, bq_schema)
|
|
197
179
|
|
|
198
180
|
|
|
@@ -270,11 +252,6 @@ def compile_concat(node: nodes.ConcatNode, *children: compiled.UnorderedIR):
|
|
|
270
252
|
return concat_impl.concat_unordered(children, output_ids)
|
|
271
253
|
|
|
272
254
|
|
|
273
|
-
@_compile_node.register
|
|
274
|
-
def compile_rowcount(node: nodes.RowCountNode, child: compiled.UnorderedIR):
|
|
275
|
-
return child.row_count(name=node.col_id.sql)
|
|
276
|
-
|
|
277
|
-
|
|
278
255
|
@_compile_node.register
|
|
279
256
|
def compile_aggregate(node: nodes.AggregateNode, child: compiled.UnorderedIR):
|
|
280
257
|
aggs = tuple((agg, id.sql) for agg, id in node.aggregations)
|
|
@@ -0,0 +1,36 @@
|
|
|
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 dataclasses
|
|
17
|
+
import typing
|
|
18
|
+
|
|
19
|
+
import google.cloud.bigquery
|
|
20
|
+
|
|
21
|
+
from bigframes.core import nodes, ordering
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclasses.dataclass(frozen=True)
|
|
25
|
+
class CompileRequest:
|
|
26
|
+
node: nodes.BigFrameNode
|
|
27
|
+
sort_rows: bool
|
|
28
|
+
materialize_all_order_keys: bool = False
|
|
29
|
+
peek_count: typing.Optional[int] = None
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclasses.dataclass(frozen=True)
|
|
33
|
+
class CompileResult:
|
|
34
|
+
sql: str
|
|
35
|
+
sql_schema: typing.Sequence[google.cloud.bigquery.SchemaField]
|
|
36
|
+
row_order: typing.Optional[ordering.RowOrdering]
|
|
@@ -25,7 +25,7 @@ Core class:
|
|
|
25
25
|
* `expression`: Models basic SQL expressions.
|
|
26
26
|
|
|
27
27
|
Extended classes (not part of standard GoogleSQL syntax, but added for convenience):
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
* `ColumnExpression`: Represents column references.
|
|
30
30
|
* `TableExpression`: Represents table references.
|
|
31
31
|
* `AliasExpression`: Represents aliased expressions.
|
|
@@ -252,11 +252,6 @@ class PolarsCompiler:
|
|
|
252
252
|
]
|
|
253
253
|
return self.compile_node(node.child).with_columns(new_cols)
|
|
254
254
|
|
|
255
|
-
@compile_node.register
|
|
256
|
-
def compile_rowcount(self, node: nodes.RowCountNode):
|
|
257
|
-
df = cast(pl.LazyFrame, self.compile_node(node.child))
|
|
258
|
-
return df.select(pl.len().alias(node.col_id.sql))
|
|
259
|
-
|
|
260
255
|
@compile_node.register
|
|
261
256
|
def compile_offsets(self, node: nodes.PromoteOffsetsNode):
|
|
262
257
|
return self.compile_node(node.child).with_columns(
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
from bigframes.core.compile.sqlglot.compiler import SQLGlotCompiler
|
|
17
|
+
|
|
18
|
+
__all__ = ["SQLGlotCompiler"]
|
|
@@ -0,0 +1,168 @@
|
|
|
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
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import dataclasses
|
|
17
|
+
import functools
|
|
18
|
+
import itertools
|
|
19
|
+
import typing
|
|
20
|
+
|
|
21
|
+
from google.cloud import bigquery
|
|
22
|
+
import pyarrow as pa
|
|
23
|
+
import sqlglot.expressions as sge
|
|
24
|
+
|
|
25
|
+
from bigframes.core import expression, identifiers, nodes, rewrite
|
|
26
|
+
from bigframes.core.compile import configs
|
|
27
|
+
import bigframes.core.compile.sqlglot.scalar_compiler as scalar_compiler
|
|
28
|
+
import bigframes.core.compile.sqlglot.sqlglot_ir as ir
|
|
29
|
+
import bigframes.core.ordering as bf_ordering
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclasses.dataclass(frozen=True)
|
|
33
|
+
class SQLGlotCompiler:
|
|
34
|
+
"""Compiles BigFrame nodes into SQL using SQLGlot."""
|
|
35
|
+
|
|
36
|
+
def compile(
|
|
37
|
+
self,
|
|
38
|
+
node: nodes.BigFrameNode,
|
|
39
|
+
*,
|
|
40
|
+
ordered: bool = True,
|
|
41
|
+
limit: typing.Optional[int] = None,
|
|
42
|
+
) -> str:
|
|
43
|
+
"""Compiles node into sql where rows are sorted with ORDER BY."""
|
|
44
|
+
request = configs.CompileRequest(node, sort_rows=ordered, peek_count=limit)
|
|
45
|
+
return self._compile_sql(request).sql
|
|
46
|
+
|
|
47
|
+
def compile_raw(
|
|
48
|
+
self,
|
|
49
|
+
node: nodes.BigFrameNode,
|
|
50
|
+
) -> typing.Tuple[
|
|
51
|
+
str, typing.Sequence[bigquery.SchemaField], bf_ordering.RowOrdering
|
|
52
|
+
]:
|
|
53
|
+
"""Compiles node into sql that exposes all columns, including hidden
|
|
54
|
+
ordering-only columns."""
|
|
55
|
+
request = configs.CompileRequest(
|
|
56
|
+
node, sort_rows=False, materialize_all_order_keys=True
|
|
57
|
+
)
|
|
58
|
+
result = self._compile_sql(request)
|
|
59
|
+
assert result.row_order is not None
|
|
60
|
+
return result.sql, result.sql_schema, result.row_order
|
|
61
|
+
|
|
62
|
+
def _compile_sql(self, request: configs.CompileRequest) -> configs.CompileResult:
|
|
63
|
+
output_names = tuple(
|
|
64
|
+
(expression.DerefOp(id), id.sql) for id in request.node.ids
|
|
65
|
+
)
|
|
66
|
+
result_node = nodes.ResultNode(
|
|
67
|
+
request.node,
|
|
68
|
+
output_cols=output_names,
|
|
69
|
+
limit=request.peek_count,
|
|
70
|
+
)
|
|
71
|
+
if request.sort_rows:
|
|
72
|
+
# Can only pullup slice if we are doing ORDER BY in outermost SELECT
|
|
73
|
+
# Need to do this before replacing unsupported ops, as that will rewrite slice ops
|
|
74
|
+
result_node = rewrite.pull_up_limits(result_node)
|
|
75
|
+
result_node = _replace_unsupported_ops(result_node)
|
|
76
|
+
# prune before pulling up order to avoid unnnecessary row_number() ops
|
|
77
|
+
result_node = typing.cast(nodes.ResultNode, rewrite.column_pruning(result_node))
|
|
78
|
+
result_node = rewrite.defer_order(
|
|
79
|
+
result_node, output_hidden_row_keys=request.materialize_all_order_keys
|
|
80
|
+
)
|
|
81
|
+
if request.sort_rows:
|
|
82
|
+
result_node = typing.cast(
|
|
83
|
+
nodes.ResultNode, rewrite.column_pruning(result_node)
|
|
84
|
+
)
|
|
85
|
+
result_node = _remap_variables(result_node)
|
|
86
|
+
sql = self._compile_result_node(result_node)
|
|
87
|
+
return configs.CompileResult(
|
|
88
|
+
sql, result_node.schema.to_bigquery(), result_node.order_by
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
ordering: typing.Optional[bf_ordering.RowOrdering] = result_node.order_by
|
|
92
|
+
result_node = dataclasses.replace(result_node, order_by=None)
|
|
93
|
+
result_node = typing.cast(nodes.ResultNode, rewrite.column_pruning(result_node))
|
|
94
|
+
|
|
95
|
+
result_node = _remap_variables(result_node)
|
|
96
|
+
sql = self._compile_result_node(result_node)
|
|
97
|
+
# Return the ordering iff no extra columns are needed to define the row order
|
|
98
|
+
if ordering is not None:
|
|
99
|
+
output_order = (
|
|
100
|
+
ordering
|
|
101
|
+
if ordering.referenced_columns.issubset(result_node.ids)
|
|
102
|
+
else None
|
|
103
|
+
)
|
|
104
|
+
assert (not request.materialize_all_order_keys) or (output_order is not None)
|
|
105
|
+
return configs.CompileResult(
|
|
106
|
+
sql, result_node.schema.to_bigquery(), output_order
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
def _compile_result_node(self, root: nodes.ResultNode) -> str:
|
|
110
|
+
sqlglot_ir = compile_node(root.child)
|
|
111
|
+
# TODO: add order_by, limit, and selections to sqlglot_expr
|
|
112
|
+
return sqlglot_ir.sql
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _replace_unsupported_ops(node: nodes.BigFrameNode):
|
|
116
|
+
node = nodes.bottom_up(node, rewrite.rewrite_slice)
|
|
117
|
+
node = nodes.bottom_up(node, rewrite.rewrite_timedelta_expressions)
|
|
118
|
+
node = nodes.bottom_up(node, rewrite.rewrite_range_rolling)
|
|
119
|
+
return node
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _remap_variables(node: nodes.ResultNode) -> nodes.ResultNode:
|
|
123
|
+
"""Remaps `ColumnId`s in the BFET of a `ResultNode` to produce deterministic UIDs."""
|
|
124
|
+
|
|
125
|
+
def anonymous_column_ids() -> typing.Generator[identifiers.ColumnId, None, None]:
|
|
126
|
+
for i in itertools.count():
|
|
127
|
+
yield identifiers.ColumnId(name=f"bfcol_{i}")
|
|
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}")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
@_compile_node.register
|
|
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])
|
|
152
|
+
|
|
153
|
+
offsets = node.offsets_col.sql if node.offsets_col else None
|
|
154
|
+
if offsets:
|
|
155
|
+
pa_table = pa_table.append_column(
|
|
156
|
+
offsets, pa.array(range(pa_table.num_rows), type=pa.int64())
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
return ir.SQLGlotIR.from_pyarrow(pa_table, node.schema)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
@_compile_node.register
|
|
163
|
+
def compile_selection(node: nodes.SelectionNode, child: ir.SQLGlotIR) -> ir.SQLGlotIR:
|
|
164
|
+
select_cols: typing.Dict[str, sge.Expression] = {
|
|
165
|
+
id.name: scalar_compiler.compile_scalar_expression(expr)
|
|
166
|
+
for expr, id in node.input_output_pairs
|
|
167
|
+
}
|
|
168
|
+
return child.select(select_cols)
|