sqlframe 3.27.1__tar.gz → 3.28.1__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.
- {sqlframe-3.27.1 → sqlframe-3.28.1}/PKG-INFO +1 -1
- {sqlframe-3.27.1 → sqlframe-3.28.1}/setup.py +1 -1
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/_version.py +2 -2
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/dataframe.py +3 -1
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/decorators.py +20 -13
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/functions.py +2 -5
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/group.py +7 -3
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe.egg-info/requires.txt +1 -1
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/test_int_dataframe.py +38 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_dataframe.py +8 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_functions.py +13 -5
- {sqlframe-3.27.1 → sqlframe-3.28.1}/.github/CODEOWNERS +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/.gitignore +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/.readthedocs.yaml +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/LICENSE +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/Makefile +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/README.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/cake.gif +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/bigquery.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/configuration.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/databricks.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/docs/postgres.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/duckdb.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/images/SF.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/images/favicon.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/index.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/postgres.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/redshift.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/requirements.txt +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/snowflake.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/spark.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/standalone.md +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/mkdocs.yml +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/pytest.ini +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/renovate.json +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/setup.cfg +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/LICENSE +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/util.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/base/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/py.typed +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/common_fixtures.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/conftest.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/conftest.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.27.1 → sqlframe-3.28.1}/tests/unit/test_util.py +0 -0
@@ -910,6 +910,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
910
910
|
|
911
911
|
@operation(Operation.GROUP_BY)
|
912
912
|
def groupBy(self, *cols, **kwargs) -> GROUP_DATA:
|
913
|
+
if cols and isinstance(cols[0], list):
|
914
|
+
cols = cols[0] # type: ignore
|
913
915
|
columns = self._ensure_and_normalize_cols(cols)
|
914
916
|
return self._group_data(self, columns, self.last_op)
|
915
917
|
|
@@ -1084,7 +1086,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1084
1086
|
for left_col, right_col in join_column_pairs
|
1085
1087
|
]
|
1086
1088
|
# To match spark behavior only the join clause gets deduplicated and it gets put in the front of the column list
|
1087
|
-
select_column_names = [
|
1089
|
+
select_column_names: list[str | Column] = [
|
1088
1090
|
(
|
1089
1091
|
column.alias_or_name
|
1090
1092
|
if not isinstance(column.expression.this, exp.Star)
|
@@ -1,19 +1,23 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
import functools
|
3
2
|
import re
|
4
3
|
import typing as t
|
5
4
|
|
6
5
|
from sqlglot import exp
|
7
6
|
from sqlglot.helper import ensure_list
|
7
|
+
from typing_extensions import ParamSpec
|
8
8
|
|
9
9
|
from sqlframe.base.column import Column
|
10
10
|
|
11
|
-
|
11
|
+
P = ParamSpec("P")
|
12
|
+
T = t.TypeVar("T")
|
12
13
|
|
13
14
|
|
14
|
-
def func_metadata(
|
15
|
-
|
16
|
-
|
15
|
+
def func_metadata(
|
16
|
+
unsupported_engines: t.Optional[t.Union[str, t.List[str]]] = None,
|
17
|
+
) -> t.Callable[[t.Callable[P, T]], t.Callable[P, T]]:
|
18
|
+
def _metadata(func: t.Callable[P, T]) -> t.Callable[P, T]:
|
19
|
+
@functools.wraps(func)
|
20
|
+
def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
|
17
21
|
funcs_to_not_auto_alias = [
|
18
22
|
"posexplode",
|
19
23
|
"explode_outer",
|
@@ -34,14 +38,17 @@ def func_metadata(unsupported_engines: t.Optional[t.Union[str, t.List[str]]] = N
|
|
34
38
|
and not isinstance(result.expression, exp.Alias)
|
35
39
|
and func.__name__ not in funcs_to_not_auto_alias
|
36
40
|
):
|
37
|
-
col_name =
|
38
|
-
|
39
|
-
|
41
|
+
col_name = ""
|
42
|
+
col_name_exp: t.Optional[exp.Expression] = result.column_expression.find(
|
43
|
+
exp.Identifier
|
44
|
+
)
|
45
|
+
if col_name_exp:
|
46
|
+
col_name = col_name_exp.name
|
40
47
|
else:
|
41
|
-
|
42
|
-
if
|
43
|
-
col_name =
|
44
|
-
alias_name = f"{func.__name__}__{col_name
|
48
|
+
col_name_exp = result.column_expression.find(exp.Literal)
|
49
|
+
if col_name_exp:
|
50
|
+
col_name = col_name_exp.this
|
51
|
+
alias_name = f"{func.__name__}__{col_name}__"
|
45
52
|
# BigQuery has restrictions on alias names so we constrain it to alphanumeric characters and underscores
|
46
53
|
return result.alias(re.sub(r"\W", "_", alias_name)) # type: ignore
|
47
54
|
return result
|
@@ -3481,12 +3481,9 @@ def hll_union(
|
|
3481
3481
|
+------------+
|
3482
3482
|
"""
|
3483
3483
|
if allowDifferentLgConfigK is not None:
|
3484
|
-
|
3485
|
-
lit(allowDifferentLgConfigK)
|
3486
|
-
if isinstance(allowDifferentLgConfigK, bool)
|
3487
|
-
else allowDifferentLgConfigK
|
3484
|
+
return Column.invoke_anonymous_function(
|
3485
|
+
col1, "hll_union", col2, lit(allowDifferentLgConfigK)
|
3488
3486
|
)
|
3489
|
-
return Column.invoke_anonymous_function(col1, "hll_union", col2, allowDifferentLgConfigK) # type: ignore
|
3490
3487
|
else:
|
3491
3488
|
return Column.invoke_anonymous_function(col1, "hll_union", col2)
|
3492
3489
|
|
@@ -47,7 +47,10 @@ class _BaseGroupedData(t.Generic[DF]):
|
|
47
47
|
from sqlframe.base.column import Column
|
48
48
|
|
49
49
|
columns = (
|
50
|
-
[
|
50
|
+
[
|
51
|
+
self._get_function_applied_columns(agg_func, (column_name,))[0]
|
52
|
+
for column_name, agg_func in exprs[0].items()
|
53
|
+
]
|
51
54
|
if isinstance(exprs[0], dict)
|
52
55
|
else exprs
|
53
56
|
)
|
@@ -55,7 +58,8 @@ class _BaseGroupedData(t.Generic[DF]):
|
|
55
58
|
|
56
59
|
if not self.group_by_cols or not isinstance(self.group_by_cols[0], (list, tuple, set)):
|
57
60
|
expression = self._df.expression.group_by(
|
58
|
-
|
61
|
+
# User column_expression for group by to avoid alias in group by
|
62
|
+
*[x.column_expression for x in self.group_by_cols] # type: ignore
|
59
63
|
).select(*[x.expression for x in self.group_by_cols + cols], append=False) # type: ignore
|
60
64
|
group_by_cols = self.group_by_cols
|
61
65
|
else:
|
@@ -66,7 +70,7 @@ class _BaseGroupedData(t.Generic[DF]):
|
|
66
70
|
group_by_cols = []
|
67
71
|
for grouping_set in self.group_by_cols:
|
68
72
|
all_grouping_sets.append(
|
69
|
-
exp.Tuple(expressions=[x.
|
73
|
+
exp.Tuple(expressions=[x.column_expression for x in grouping_set]) # type: ignore
|
70
74
|
)
|
71
75
|
group_by_cols.extend(grouping_set) # type: ignore
|
72
76
|
group_by_cols = list(dict.fromkeys(group_by_cols))
|
@@ -2634,3 +2634,41 @@ def test_rows_between_positive_both_start_end(
|
|
2634
2634
|
dfs = dfs.withColumn("rolling_price", SF.mean("price").over(swindow))
|
2635
2635
|
|
2636
2636
|
compare_frames(df, dfs, compare_schema=False)
|
2637
|
+
|
2638
|
+
|
2639
|
+
# https://github.com/eakmanrq/sqlframe/issues/356
|
2640
|
+
def test_array_of_grouping_columns(
|
2641
|
+
pyspark_employee: PySparkDataFrame,
|
2642
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
2643
|
+
compare_frames: t.Callable,
|
2644
|
+
):
|
2645
|
+
df = pyspark_employee.sparkSession.createDataFrame(
|
2646
|
+
[(2, "Alice"), (2, "Bob"), (2, "Bob"), (5, "Bob")], schema=["age", "name"]
|
2647
|
+
)
|
2648
|
+
df = df.groupBy(["name", df.age]).count().sort("name", "age") # type: ignore
|
2649
|
+
|
2650
|
+
dfs = get_df("employee").sparkSession.createDataFrame(
|
2651
|
+
[(2, "Alice"), (2, "Bob"), (2, "Bob"), (5, "Bob")], schema=["age", "name"]
|
2652
|
+
)
|
2653
|
+
dfs = dfs.groupBy(["name", dfs.age]).count().sort("name", "age")
|
2654
|
+
|
2655
|
+
compare_frames(df, dfs, compare_schema=False, sort=True)
|
2656
|
+
|
2657
|
+
|
2658
|
+
# https://github.com/eakmanrq/sqlframe/issues/356
|
2659
|
+
def test_alias_group_by_column(
|
2660
|
+
pyspark_employee: PySparkDataFrame,
|
2661
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
2662
|
+
compare_frames: t.Callable,
|
2663
|
+
):
|
2664
|
+
df = pyspark_employee.sparkSession.createDataFrame(
|
2665
|
+
[(2, "Alice"), (2, "Bob"), (2, "Bob"), (5, "Bob")], schema=["age", "name"]
|
2666
|
+
)
|
2667
|
+
df = df.groupBy(F.col("name").alias("Firstname")).count()
|
2668
|
+
|
2669
|
+
dfs = get_df("employee").sparkSession.createDataFrame(
|
2670
|
+
[(2, "Alice"), (2, "Bob"), (2, "Bob"), (5, "Bob")], schema=["age", "name"]
|
2671
|
+
)
|
2672
|
+
dfs = dfs.groupBy(SF.col("name").alias("Firstname")).count()
|
2673
|
+
|
2674
|
+
compare_frames(df, dfs, compare_schema=False, sort=True)
|
@@ -156,3 +156,11 @@ def test_unquoted_identifiers(standalone_employee: StandaloneDataFrame):
|
|
156
156
|
standalone_employee.sql(dialect="snowflake", pretty=False, quote_identifiers=False)
|
157
157
|
== """SELECT A1.EMPLOYEE_ID AS "employee_id", CAST(A1.FNAME AS TEXT) AS "fname", CAST(A1.LNAME AS TEXT) AS "lname", A1.AGE AS "age", A1.STORE_ID AS "store_id" FROM (VALUES (1, 'Jack', 'Shephard', 37, 1), (2, 'John', 'Locke', 65, 1), (3, 'Kate', 'Austen', 37, 2), (4, 'Claire', 'Littleton', 27, 2), (5, 'Hugo', 'Reyes', 29, 100)) AS A1(EMPLOYEE_ID, FNAME, LNAME, AGE, STORE_ID)"""
|
158
158
|
)
|
159
|
+
|
160
|
+
|
161
|
+
# https://github.com/eakmanrq/sqlframe/issues/356
|
162
|
+
def test_aliased_dictionary_agg(standalone_employee: StandaloneDataFrame):
|
163
|
+
assert (
|
164
|
+
standalone_employee.groupBy("fname").agg({"age": "avg", "lname": "count"}).sql(pretty=False)
|
165
|
+
== "SELECT CAST(`a1`.`fname` AS STRING) AS `fname`, AVG(`a1`.`age`) AS `avg(age)`, COUNT(CAST(`a1`.`lname` AS STRING)) AS `count(lname)` FROM VALUES (1, 'Jack', 'Shephard', 37, 1), (2, 'John', 'Locke', 65, 1), (3, 'Kate', 'Austen', 37, 2), (4, 'Claire', 'Littleton', 27, 2), (5, 'Hugo', 'Reyes', 29, 100) AS `a1`(`employee_id`, `fname`, `lname`, `age`, `store_id`) GROUP BY CAST(`a1`.`fname` AS STRING)"
|
166
|
+
)
|
@@ -17,7 +17,16 @@ def test_invoke_anonymous(name, func):
|
|
17
17
|
# make_interval - SQLGlot doesn't support week
|
18
18
|
# to_char - convert to a cast that ignores the format provided
|
19
19
|
# ltrim/rtrim - don't seem to convert correctly on some engines
|
20
|
-
ignore_funcs = {
|
20
|
+
ignore_funcs = {
|
21
|
+
"array_size",
|
22
|
+
"exists",
|
23
|
+
"make_interval",
|
24
|
+
"to_char",
|
25
|
+
"ltrim",
|
26
|
+
"rtrim",
|
27
|
+
"ascii",
|
28
|
+
"current_schema",
|
29
|
+
}
|
21
30
|
if "invoke_anonymous_function" in inspect.getsource(func) and name not in ignore_funcs:
|
22
31
|
func = parse_one(f"{name}()", read="spark", error_level=ErrorLevel.IGNORE)
|
23
32
|
assert isinstance(func, exp.Anonymous)
|
@@ -3332,7 +3341,7 @@ def test_contains(expression, expected):
|
|
3332
3341
|
"CONVERT_TIMEZONE(cola, CAST(colb AS TIMESTAMP_LTZ))",
|
3333
3342
|
),
|
3334
3343
|
(
|
3335
|
-
SF.convert_timezone(SF.col("colc"), "cola", "colb"),
|
3344
|
+
SF.convert_timezone(SF.col("colc"), SF.col("cola"), "colb"),
|
3336
3345
|
"CONVERT_TIMEZONE(colc, cola, CAST(colb AS TIMESTAMP_LTZ))",
|
3337
3346
|
),
|
3338
3347
|
],
|
@@ -3632,7 +3641,7 @@ def test_histogram_numeric(expression, expected):
|
|
3632
3641
|
(SF.hll_sketch_agg("cola"), "HLL_SKETCH_AGG(cola)"),
|
3633
3642
|
(SF.hll_sketch_agg(SF.col("cola")), "HLL_SKETCH_AGG(cola)"),
|
3634
3643
|
(SF.hll_sketch_agg("cola", 12), "HLL_SKETCH_AGG(cola, 12)"),
|
3635
|
-
(SF.hll_sketch_agg("cola",
|
3644
|
+
(SF.hll_sketch_agg("cola", SF.lit(12)), "HLL_SKETCH_AGG(cola, 12)"),
|
3636
3645
|
],
|
3637
3646
|
)
|
3638
3647
|
def test_hll_sketch_agg(expression, expected):
|
@@ -3655,7 +3664,6 @@ def test_hll_sketch_estimate(expression, expected):
|
|
3655
3664
|
[
|
3656
3665
|
(SF.hll_union("cola", "colb"), "HLL_UNION(cola, colb)"),
|
3657
3666
|
(SF.hll_union(SF.col("cola"), SF.col("colb")), "HLL_UNION(cola, colb)"),
|
3658
|
-
(SF.hll_union("cola", "colb", "colc"), "HLL_UNION(cola, colb, colc)"),
|
3659
3667
|
(SF.hll_union("cola", "colb", False), "HLL_UNION(cola, colb, FALSE)"),
|
3660
3668
|
],
|
3661
3669
|
)
|
@@ -3668,7 +3676,7 @@ def test_hll_union(expression, expected):
|
|
3668
3676
|
[
|
3669
3677
|
(SF.hll_union_agg("cola"), "HLL_UNION_AGG(cola)"),
|
3670
3678
|
(SF.hll_union_agg(SF.col("cola")), "HLL_UNION_AGG(cola)"),
|
3671
|
-
(SF.hll_union_agg("cola",
|
3679
|
+
(SF.hll_union_agg("cola", SF.lit(True)), "HLL_UNION_AGG(cola, TRUE)"),
|
3672
3680
|
(SF.hll_union_agg("cola", False), "HLL_UNION_AGG(cola, FALSE)"),
|
3673
3681
|
],
|
3674
3682
|
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.27.1 → sqlframe-3.28.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|