sqlframe 3.28.0__tar.gz → 3.28.2__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.28.0 → sqlframe-3.28.2}/PKG-INFO +1 -1
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/_version.py +2 -2
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/dataframe.py +4 -6
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/group.py +7 -3
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/test_int_dataframe.py +39 -1
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_dataframe.py +8 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/.github/CODEOWNERS +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/.gitignore +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/.readthedocs.yaml +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/LICENSE +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/Makefile +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/README.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/cake.gif +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/bigquery.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/configuration.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/databricks.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/docs/postgres.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/duckdb.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/images/SF.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/images/favicon.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/index.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/postgres.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/redshift.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/requirements.txt +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/snowflake.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/spark.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/standalone.md +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/mkdocs.yml +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/pytest.ini +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/renovate.json +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/setup.cfg +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/setup.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/LICENSE +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/util.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/base/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/py.typed +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/common_fixtures.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/conftest.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/conftest.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.28.0 → sqlframe-3.28.2}/tests/unit/test_util.py +0 -0
@@ -80,8 +80,6 @@ JOIN_HINTS = {
|
|
80
80
|
}
|
81
81
|
|
82
82
|
JOIN_TYPE_MAPPING = {
|
83
|
-
"inner": "inner",
|
84
|
-
"cross": "cross",
|
85
83
|
"outer": "full_outer",
|
86
84
|
"full": "full_outer",
|
87
85
|
"fullouter": "full_outer",
|
@@ -91,10 +89,8 @@ JOIN_TYPE_MAPPING = {
|
|
91
89
|
"rightouter": "right_outer",
|
92
90
|
"semi": "left_semi",
|
93
91
|
"leftsemi": "left_semi",
|
94
|
-
"left_semi": "left_semi",
|
95
92
|
"anti": "left_anti",
|
96
93
|
"leftanti": "left_anti",
|
97
|
-
"left_anti": "left_anti",
|
98
94
|
}
|
99
95
|
|
100
96
|
DF = t.TypeVar("DF", bound="BaseDataFrame")
|
@@ -910,6 +906,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
910
906
|
|
911
907
|
@operation(Operation.GROUP_BY)
|
912
908
|
def groupBy(self, *cols, **kwargs) -> GROUP_DATA:
|
909
|
+
if cols and isinstance(cols[0], list):
|
910
|
+
cols = cols[0] # type: ignore
|
913
911
|
columns = self._ensure_and_normalize_cols(cols)
|
914
912
|
return self._group_data(self, columns, self.last_op)
|
915
913
|
|
@@ -1026,7 +1024,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1026
1024
|
@operation(Operation.FROM)
|
1027
1025
|
def join(
|
1028
1026
|
self,
|
1029
|
-
|
1027
|
+
other: Self,
|
1030
1028
|
on: t.Optional[t.Union[str, t.List[str], Column, t.List[Column]]] = None,
|
1031
1029
|
how: str = "inner",
|
1032
1030
|
**kwargs,
|
@@ -1042,7 +1040,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1042
1040
|
logger.warning("Got cross join with an 'on' value. This will result in an inner join.")
|
1043
1041
|
how = "inner"
|
1044
1042
|
|
1045
|
-
other_df =
|
1043
|
+
other_df = other._convert_leaf_to_cte()
|
1046
1044
|
join_expression = self._add_ctes_to_expression(self.expression, other_df.expression.ctes)
|
1047
1045
|
# We will determine actual "join on" expression later so we don't provide it at first
|
1048
1046
|
join_type = JOIN_TYPE_MAPPING.get(how, how).replace("_", " ")
|
@@ -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))
|
@@ -431,7 +431,7 @@ def test_join_inner(
|
|
431
431
|
):
|
432
432
|
employee = get_df("employee")
|
433
433
|
store = get_df("store")
|
434
|
-
df_joined = pyspark_employee.join(pyspark_store, on=["store_id"], how="inner").select(
|
434
|
+
df_joined = pyspark_employee.join(other=pyspark_store, on=["store_id"], how="inner").select(
|
435
435
|
pyspark_employee.employee_id,
|
436
436
|
pyspark_employee["fname"],
|
437
437
|
F.col("lname"),
|
@@ -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
|
+
)
|
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.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.28.0 → sqlframe-3.28.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.28.0 → sqlframe-3.28.2}/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
|
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
|