sqlframe 3.17.0__tar.gz → 3.18.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.
- {sqlframe-3.17.0 → sqlframe-3.18.0}/PKG-INFO +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/setup.py +2 -2
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/_version.py +2 -2
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/dataframe.py +19 -7
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/session.py +33 -9
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/session.py +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe.egg-info/requires.txt +2 -2
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/test_int_dataframe.py +37 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_dataframe.py +8 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_functions.py +2 -2
- {sqlframe-3.17.0 → sqlframe-3.18.0}/.github/CODEOWNERS +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/.gitignore +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/.readthedocs.yaml +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/LICENSE +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/Makefile +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/README.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/cake.gif +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/bigquery.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/configuration.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/databricks.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/docs/postgres.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/duckdb.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/images/SF.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/images/favicon.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/index.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/postgres.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/redshift.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/requirements.txt +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/snowflake.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/spark.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/standalone.md +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/mkdocs.yml +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/pytest.ini +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/renovate.json +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/setup.cfg +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/LICENSE +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/util.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/base/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/common_fixtures.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/conftest.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/conftest.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.17.0 → sqlframe-3.18.0}/tests/unit/test_util.py +0 -0
|
@@ -20,7 +20,7 @@ setup(
|
|
|
20
20
|
python_requires=">=3.9",
|
|
21
21
|
install_requires=[
|
|
22
22
|
"prettytable<4",
|
|
23
|
-
"sqlglot>=24.0.0,<26.
|
|
23
|
+
"sqlglot>=24.0.0,<26.5",
|
|
24
24
|
"typing_extensions",
|
|
25
25
|
],
|
|
26
26
|
extras_require={
|
|
@@ -31,7 +31,7 @@ setup(
|
|
|
31
31
|
"dev": [
|
|
32
32
|
"duckdb>=0.9,<1.2",
|
|
33
33
|
"findspark>=2,<3",
|
|
34
|
-
"mypy>=1.10.0,<1.
|
|
34
|
+
"mypy>=1.10.0,<1.16",
|
|
35
35
|
"openai>=1.30,<2",
|
|
36
36
|
"pandas>=2,<3",
|
|
37
37
|
"pandas-stubs>=2,<3",
|
|
@@ -23,7 +23,6 @@ from sqlglot import lineage as sqlglot_lineage
|
|
|
23
23
|
from sqlglot.helper import ensure_list, flatten, object_to_dict, seq_get
|
|
24
24
|
from sqlglot.optimizer.pushdown_projections import pushdown_projections
|
|
25
25
|
from sqlglot.optimizer.qualify import qualify
|
|
26
|
-
from sqlglot.optimizer.qualify_columns import quote_identifiers
|
|
27
26
|
|
|
28
27
|
from sqlframe.base.catalog import Column as CatalogColumn
|
|
29
28
|
from sqlframe.base.operations import Operation, operation
|
|
@@ -616,6 +615,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
616
615
|
self,
|
|
617
616
|
optimize: bool = True,
|
|
618
617
|
openai_config: t.Optional[t.Union[t.Dict[str, t.Any], OpenAIConfig]] = None,
|
|
618
|
+
quote_identifiers: bool = True,
|
|
619
619
|
) -> t.List[exp.Expression]:
|
|
620
620
|
df = self._resolve_pending_hints()
|
|
621
621
|
select_expressions = df._get_select_expressions()
|
|
@@ -644,7 +644,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
644
644
|
if optimize:
|
|
645
645
|
select_expression = t.cast(
|
|
646
646
|
exp.Select,
|
|
647
|
-
self.session._optimize(select_expression),
|
|
647
|
+
self.session._optimize(select_expression, quote_identifiers=quote_identifiers),
|
|
648
648
|
)
|
|
649
649
|
elif openai_config:
|
|
650
650
|
qualify(
|
|
@@ -713,8 +713,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
713
713
|
dialect: DialectType = ...,
|
|
714
714
|
optimize: bool = ...,
|
|
715
715
|
pretty: bool = ...,
|
|
716
|
+
quote_identifiers: bool = ...,
|
|
716
717
|
*,
|
|
717
|
-
as_list: t.Literal[False],
|
|
718
|
+
as_list: t.Literal[False] = False,
|
|
718
719
|
**kwargs: t.Any,
|
|
719
720
|
) -> str: ...
|
|
720
721
|
|
|
@@ -724,6 +725,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
724
725
|
dialect: DialectType = ...,
|
|
725
726
|
optimize: bool = ...,
|
|
726
727
|
pretty: bool = ...,
|
|
728
|
+
quote_identifiers: bool = ...,
|
|
727
729
|
*,
|
|
728
730
|
as_list: t.Literal[True],
|
|
729
731
|
**kwargs: t.Any,
|
|
@@ -734,14 +736,23 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
734
736
|
dialect: DialectType = None,
|
|
735
737
|
optimize: bool = True,
|
|
736
738
|
pretty: bool = True,
|
|
739
|
+
quote_identifiers: bool = True,
|
|
737
740
|
openai_config: t.Optional[t.Union[t.Dict[str, t.Any], OpenAIConfig]] = None,
|
|
738
741
|
as_list: bool = False,
|
|
739
742
|
**kwargs,
|
|
740
743
|
) -> t.Union[str, t.List[str]]:
|
|
741
744
|
dialect = Dialect.get_or_raise(dialect) if dialect else self.session.output_dialect
|
|
742
745
|
results = []
|
|
743
|
-
for expression in self._get_expressions(
|
|
744
|
-
|
|
746
|
+
for expression in self._get_expressions(
|
|
747
|
+
optimize=optimize, openai_config=openai_config, quote_identifiers=quote_identifiers
|
|
748
|
+
):
|
|
749
|
+
sql = self.session._to_sql(
|
|
750
|
+
expression,
|
|
751
|
+
dialect=dialect,
|
|
752
|
+
pretty=pretty,
|
|
753
|
+
quote_identifiers=quote_identifiers,
|
|
754
|
+
**kwargs,
|
|
755
|
+
)
|
|
745
756
|
if openai_config:
|
|
746
757
|
assert isinstance(openai_config, OpenAIConfig)
|
|
747
758
|
verify_openai_installed()
|
|
@@ -822,8 +833,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
822
833
|
if cte:
|
|
823
834
|
resolved_column_position[ambiguous_col] += 1
|
|
824
835
|
else:
|
|
825
|
-
cte = ctes_with_column
|
|
826
|
-
|
|
836
|
+
cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col])
|
|
837
|
+
if cte:
|
|
838
|
+
ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
|
|
827
839
|
|
|
828
840
|
@operation(Operation.SELECT)
|
|
829
841
|
def select(self, *cols, **kwargs) -> Self:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import contextlib
|
|
5
6
|
import datetime
|
|
6
7
|
import logging
|
|
7
8
|
import sys
|
|
@@ -15,6 +16,7 @@ from sqlglot import Dialect, exp
|
|
|
15
16
|
from sqlglot.dialects.dialect import DialectType, NormalizationStrategy
|
|
16
17
|
from sqlglot.expressions import parse_identifier
|
|
17
18
|
from sqlglot.helper import ensure_list, seq_get
|
|
19
|
+
from sqlglot.optimizer import RULES as OPTIMIZER_RULES
|
|
18
20
|
from sqlglot.optimizer import optimize
|
|
19
21
|
from sqlglot.optimizer.normalize_identifiers import normalize_identifiers
|
|
20
22
|
from sqlglot.optimizer.qualify import qualify as qualify_func
|
|
@@ -213,13 +215,16 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
213
215
|
|
|
214
216
|
def createDataFrame(
|
|
215
217
|
self,
|
|
216
|
-
data: t.
|
|
217
|
-
t.
|
|
218
|
-
t.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
218
|
+
data: t.Union[
|
|
219
|
+
t.Sequence[
|
|
220
|
+
t.Union[
|
|
221
|
+
t.Dict[str, ColumnLiterals],
|
|
222
|
+
t.List[ColumnLiterals],
|
|
223
|
+
t.Tuple[ColumnLiterals, ...],
|
|
224
|
+
ColumnLiterals,
|
|
225
|
+
],
|
|
226
|
+
],
|
|
227
|
+
pd.DataFrame,
|
|
223
228
|
],
|
|
224
229
|
schema: t.Optional[SchemaInput] = None,
|
|
225
230
|
samplingRatio: t.Optional[float] = None,
|
|
@@ -240,11 +245,18 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
240
245
|
):
|
|
241
246
|
raise NotImplementedError("Only schema of either list or string of list supported")
|
|
242
247
|
|
|
248
|
+
with contextlib.suppress(ImportError):
|
|
249
|
+
from pandas import DataFrame as pd_DataFrame
|
|
250
|
+
|
|
251
|
+
if isinstance(data, pd_DataFrame):
|
|
252
|
+
data = data.to_dict("records") # type: ignore
|
|
253
|
+
|
|
243
254
|
column_mapping: t.Mapping[str, t.Optional[exp.DataType]]
|
|
244
255
|
if schema is not None:
|
|
245
256
|
column_mapping = get_column_mapping_from_schema_input(
|
|
246
257
|
schema, dialect=self.input_dialect
|
|
247
258
|
)
|
|
259
|
+
|
|
248
260
|
elif data:
|
|
249
261
|
if isinstance(data[0], Row):
|
|
250
262
|
column_mapping = {col_name.strip(): None for col_name in data[0].__fields__}
|
|
@@ -386,7 +398,8 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
386
398
|
dialect = Dialect.get_or_raise(dialect or self.input_dialect)
|
|
387
399
|
expression = (
|
|
388
400
|
sqlglot.parse_one(
|
|
389
|
-
normalize_string(sqlQuery, from_dialect=dialect, is_query=True),
|
|
401
|
+
normalize_string(sqlQuery, from_dialect=dialect, is_query=True),
|
|
402
|
+
read=dialect,
|
|
390
403
|
)
|
|
391
404
|
if isinstance(sqlQuery, str)
|
|
392
405
|
else sqlQuery
|
|
@@ -544,6 +557,7 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
544
557
|
dialect: DialectType = None,
|
|
545
558
|
quote_identifiers: bool = True,
|
|
546
559
|
pretty: bool = False,
|
|
560
|
+
**kwargs,
|
|
547
561
|
) -> str:
|
|
548
562
|
return normalize_string(
|
|
549
563
|
sql,
|
|
@@ -562,9 +576,19 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
562
576
|
) -> exp.Expression:
|
|
563
577
|
dialect = dialect or self.input_dialect
|
|
564
578
|
normalize_identifiers(expression, dialect=dialect)
|
|
579
|
+
rules = list(OPTIMIZER_RULES)
|
|
565
580
|
if quote_identifiers:
|
|
566
581
|
quote_identifiers_func(expression, dialect=dialect)
|
|
567
|
-
|
|
582
|
+
else:
|
|
583
|
+
rules.remove(quote_identifiers_func)
|
|
584
|
+
return optimize(
|
|
585
|
+
expression,
|
|
586
|
+
dialect=dialect,
|
|
587
|
+
schema=self.catalog._schema,
|
|
588
|
+
infer_schema=True,
|
|
589
|
+
quote_identifiers=quote_identifiers,
|
|
590
|
+
rules=rules, # type: ignore
|
|
591
|
+
)
|
|
568
592
|
|
|
569
593
|
def _execute(self, sql: str) -> None:
|
|
570
594
|
self._cur.execute(sql)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
prettytable<4
|
|
2
|
-
sqlglot<26.
|
|
2
|
+
sqlglot<26.5,>=24.0.0
|
|
3
3
|
typing_extensions
|
|
4
4
|
|
|
5
5
|
[bigquery]
|
|
@@ -12,7 +12,7 @@ databricks-sql-connector<5,>=3.6
|
|
|
12
12
|
[dev]
|
|
13
13
|
duckdb<1.2,>=0.9
|
|
14
14
|
findspark<3,>=2
|
|
15
|
-
mypy<1.
|
|
15
|
+
mypy<1.16,>=1.10.0
|
|
16
16
|
openai<2,>=1.30
|
|
17
17
|
pandas-stubs<3,>=2
|
|
18
18
|
pandas<3,>=2
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing as t
|
|
4
4
|
|
|
5
|
+
import pandas as pd
|
|
5
6
|
import pytest
|
|
6
7
|
from _pytest.fixtures import FixtureRequest
|
|
7
8
|
from pyspark.sql import DataFrame as PySparkDataFrame
|
|
@@ -29,6 +30,20 @@ def test_empty_df(
|
|
|
29
30
|
compare_frames(df_empty, dfs_empty, no_empty=False)
|
|
30
31
|
|
|
31
32
|
|
|
33
|
+
def test_dataframe_from_pandas(
|
|
34
|
+
pyspark_employee: PySparkDataFrame,
|
|
35
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
|
36
|
+
compare_frames: t.Callable,
|
|
37
|
+
):
|
|
38
|
+
employee = get_df("employee")
|
|
39
|
+
compare_frames(
|
|
40
|
+
pyspark_employee,
|
|
41
|
+
employee.session.createDataFrame(
|
|
42
|
+
pyspark_employee.toPandas(), schema=pyspark_employee.schema.simpleString()
|
|
43
|
+
),
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
32
47
|
def test_simple_select(
|
|
33
48
|
pyspark_employee: PySparkDataFrame,
|
|
34
49
|
get_df: t.Callable[[str], BaseDataFrame],
|
|
@@ -2414,3 +2429,25 @@ def test_filtering_join_key(
|
|
|
2414
2429
|
).filter(SF.col("store_id") > 1)
|
|
2415
2430
|
|
|
2416
2431
|
compare_frames(df, dfs, compare_schema=False, sort=True)
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
# https://github.com/eakmanrq/sqlframe/issues/281
|
|
2435
|
+
def test_create_column_after_join(
|
|
2436
|
+
pyspark_employee: PySparkDataFrame,
|
|
2437
|
+
pyspark_store: PySparkDataFrame,
|
|
2438
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
|
2439
|
+
compare_frames: t.Callable,
|
|
2440
|
+
):
|
|
2441
|
+
df = pyspark_employee.join(
|
|
2442
|
+
pyspark_store,
|
|
2443
|
+
on="store_id",
|
|
2444
|
+
).withColumn("new_col", F.lit(1))
|
|
2445
|
+
|
|
2446
|
+
employee = get_df("employee")
|
|
2447
|
+
store = get_df("store")
|
|
2448
|
+
dfs = employee.join(
|
|
2449
|
+
store,
|
|
2450
|
+
on="store_id",
|
|
2451
|
+
).withColumn("new_col", SF.lit(1))
|
|
2452
|
+
|
|
2453
|
+
compare_frames(df, dfs, compare_schema=False, sort=True)
|
|
@@ -148,3 +148,11 @@ def test_lineage(standalone_employee: StandaloneDataFrame):
|
|
|
148
148
|
standalone_employee.session.sql("SELECT * FROM employee").lineage("age").source.sql()
|
|
149
149
|
== "SELECT employee.age AS age FROM employee AS employee"
|
|
150
150
|
)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
# Issue: https://github.com/eakmanrq/sqlframe/issues/286
|
|
154
|
+
def test_unquoted_identifiers(standalone_employee: StandaloneDataFrame):
|
|
155
|
+
assert (
|
|
156
|
+
standalone_employee.sql(dialect="snowflake", pretty=False, quote_identifiers=False)
|
|
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
|
+
)
|
|
@@ -1197,10 +1197,10 @@ def test_current_timestamp():
|
|
|
1197
1197
|
@pytest.mark.parametrize(
|
|
1198
1198
|
"expression, expected",
|
|
1199
1199
|
[
|
|
1200
|
-
(SF.date_format("cola", "MM/dd/yyy"), "DATE_FORMAT(
|
|
1200
|
+
(SF.date_format("cola", "MM/dd/yyy"), "DATE_FORMAT(cola, 'MM/dd/yyy')"),
|
|
1201
1201
|
(
|
|
1202
1202
|
SF.date_format(SF.col("cola"), "MM/dd/yyy"),
|
|
1203
|
-
"DATE_FORMAT(
|
|
1203
|
+
"DATE_FORMAT(cola, 'MM/dd/yyy')",
|
|
1204
1204
|
),
|
|
1205
1205
|
],
|
|
1206
1206
|
)
|
|
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.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
|
File without changes
|
{sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.17.0 → sqlframe-3.18.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
{sqlframe-3.17.0 → sqlframe-3.18.0}/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
|