sqlframe 3.13.1__tar.gz → 3.13.3__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.13.1 → sqlframe-3.13.3}/PKG-INFO +1 -1
- {sqlframe-3.13.1 → sqlframe-3.13.3}/setup.py +2 -2
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/_version.py +2 -2
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/dataframe.py +15 -5
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/session.py +1 -1
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/dataframe.py +5 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/dataframe.py +6 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/dataframe.py +1 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe.egg-info/requires.txt +2 -2
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +5 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/databricks/test_databricks_dataframe.py +8 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_duckdb_dataframe.py +14 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_duckdb_reader.py +9 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/postgres/test_postgres_dataframe.py +8 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +16 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/spark/test_spark_dataframe.py +7 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_session_case_sensitivity.py +3 -3
- {sqlframe-3.13.1 → sqlframe-3.13.3}/.github/CODEOWNERS +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/.gitignore +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/.readthedocs.yaml +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/LICENSE +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/Makefile +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/README.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/cake.gif +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/bigquery.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/configuration.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/databricks.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/docs/postgres.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/duckdb.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/images/SF.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/images/favicon.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/index.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/postgres.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/redshift.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/requirements.txt +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/snowflake.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/spark.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/standalone.md +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/mkdocs.yml +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/pytest.ini +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/renovate.json +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/setup.cfg +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/LICENSE +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/util.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/base/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/common_fixtures.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/conftest.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/conftest.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.13.1 → sqlframe-3.13.3}/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.3",
|
|
24
24
|
"typing_extensions",
|
|
25
25
|
],
|
|
26
26
|
extras_require={
|
|
@@ -36,7 +36,7 @@ setup(
|
|
|
36
36
|
"pandas>=2,<3",
|
|
37
37
|
"pandas-stubs>=2,<3",
|
|
38
38
|
"psycopg>=3.1,<4",
|
|
39
|
-
"pyarrow>=10,<
|
|
39
|
+
"pyarrow>=10,<20",
|
|
40
40
|
"pyspark>=2,<3.6",
|
|
41
41
|
"pytest>=8.2.0,<8.4",
|
|
42
42
|
"pytest-forked",
|
|
@@ -202,6 +202,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
202
202
|
_na: t.Type[NA]
|
|
203
203
|
_stat: t.Type[STAT]
|
|
204
204
|
_group_data: t.Type[GROUP_DATA]
|
|
205
|
+
_EXPLAIN_PREFIX = "EXPLAIN"
|
|
205
206
|
|
|
206
207
|
def __init__(
|
|
207
208
|
self,
|
|
@@ -1144,6 +1145,18 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1144
1145
|
final_df = filtered_df.select(*all_columns)
|
|
1145
1146
|
return final_df
|
|
1146
1147
|
|
|
1148
|
+
def _get_explain_plan_rows(self) -> t.List[Row]:
|
|
1149
|
+
sql_queries = self.sql(
|
|
1150
|
+
pretty=False, optimize=False, as_list=True, dialect=self.session.execution_dialect
|
|
1151
|
+
)
|
|
1152
|
+
if len(sql_queries) > 1:
|
|
1153
|
+
raise ValueError("Cannot explain a DataFrame with multiple queries")
|
|
1154
|
+
sql_query = " ".join([self._EXPLAIN_PREFIX, sql_queries[0]])
|
|
1155
|
+
results = self.session._collect(sql_query)
|
|
1156
|
+
if len(results) != 1:
|
|
1157
|
+
raise ValueError("Got more than one result from explain query")
|
|
1158
|
+
return results
|
|
1159
|
+
|
|
1147
1160
|
def explain(
|
|
1148
1161
|
self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
|
|
1149
1162
|
) -> None:
|
|
@@ -1212,11 +1225,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1212
1225
|
...Statistics...
|
|
1213
1226
|
...
|
|
1214
1227
|
"""
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
raise ValueError("Cannot explain a DataFrame with multiple queries")
|
|
1218
|
-
sql_query = "EXPLAIN " + sql_queries[0]
|
|
1219
|
-
self.session._execute(sql_query)
|
|
1228
|
+
results = self._get_explain_plan_rows()
|
|
1229
|
+
print(results[0][0])
|
|
1220
1230
|
|
|
1221
1231
|
@operation(Operation.FROM)
|
|
1222
1232
|
def fillna(
|
|
@@ -548,7 +548,7 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, CONN, UDF_REGISTRATION
|
|
|
548
548
|
normalize_identifiers(expression, dialect=dialect)
|
|
549
549
|
if quote_identifiers:
|
|
550
550
|
quote_identifiers_func(expression, dialect=dialect)
|
|
551
|
-
return optimize(expression, dialect=dialect, schema=self.catalog._schema)
|
|
551
|
+
return optimize(expression, dialect=dialect, schema=self.catalog._schema, infer_schema=True)
|
|
552
552
|
|
|
553
553
|
def _execute(self, sql: str) -> None:
|
|
554
554
|
self._cur.execute(sql)
|
|
@@ -72,3 +72,8 @@ class BigQueryDataFrame(
|
|
|
72
72
|
sql = self.session._to_sql(self.expression)
|
|
73
73
|
query_job = self.session._client.query(sql, job_config=job_config)
|
|
74
74
|
return [field_to_column(field) for field in query_job.schema]
|
|
75
|
+
|
|
76
|
+
def explain(
|
|
77
|
+
self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
|
|
78
|
+
) -> None:
|
|
79
|
+
raise NotImplementedError("BigQuery does not support EXPLAIN")
|
|
@@ -46,6 +46,12 @@ class DuckDBDataFrame(
|
|
|
46
46
|
_stat = DuckDBDataFrameStatFunctions
|
|
47
47
|
_group_data = DuckDBGroupedData
|
|
48
48
|
|
|
49
|
+
def explain(
|
|
50
|
+
self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
|
|
51
|
+
) -> None:
|
|
52
|
+
results = self._get_explain_plan_rows()
|
|
53
|
+
print(results[0][1])
|
|
54
|
+
|
|
49
55
|
@t.overload
|
|
50
56
|
def toArrow(self) -> ArrowTable: ...
|
|
51
57
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
prettytable<4
|
|
2
|
-
sqlglot<26.
|
|
2
|
+
sqlglot<26.3,>=24.0.0
|
|
3
3
|
typing_extensions
|
|
4
4
|
|
|
5
5
|
[bigquery]
|
|
@@ -18,7 +18,7 @@ pandas-stubs<3,>=2
|
|
|
18
18
|
pandas<3,>=2
|
|
19
19
|
pre-commit<5,>=3.7
|
|
20
20
|
psycopg<4,>=3.1
|
|
21
|
-
pyarrow<
|
|
21
|
+
pyarrow<20,>=10
|
|
22
22
|
pyspark<3.6,>=2
|
|
23
23
|
pytest-forked
|
|
24
24
|
pytest-postgresql<7,>=6
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/bigquery/test_bigquery_dataframe.py
RENAMED
|
@@ -157,3 +157,8 @@ def test_schema_nested(bigquery_datatypes: BigQueryDataFrame):
|
|
|
157
157
|
assert struct_fields[8].dataType == types.TimestampType()
|
|
158
158
|
assert struct_fields[9].name == "boolean_col"
|
|
159
159
|
assert struct_fields[9].dataType == types.BooleanType()
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def test_explain(bigquery_employee: BigQueryDataFrame):
|
|
163
|
+
with pytest.raises(NotImplementedError):
|
|
164
|
+
bigquery_employee.explain()
|
|
@@ -167,3 +167,11 @@ def test_schema_nested(databricks_datatypes: DatabricksDataFrame):
|
|
|
167
167
|
assert struct_fields[9].dataType == types.TimestampType()
|
|
168
168
|
assert struct_fields[10].name == "boolean_col"
|
|
169
169
|
assert struct_fields[10].dataType == types.BooleanType()
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def test_explain(databricks_employee: DatabricksDataFrame, capsys):
|
|
173
|
+
databricks_employee.explain()
|
|
174
|
+
output = capsys.readouterr().out.strip()
|
|
175
|
+
assert "== Physical Plan ==" in output
|
|
176
|
+
assert "LocalTableScan" in output
|
|
177
|
+
assert "== Photon Explanation ==" in output
|
|
@@ -252,3 +252,17 @@ def test_to_arrow_batch(duckdb_employee: DuckDBDataFrame):
|
|
|
252
252
|
assert fifth_batch.column(4).to_pylist() == [100]
|
|
253
253
|
with pytest.raises(StopIteration):
|
|
254
254
|
record_batch_reader.read_next_batch()
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def test_explain(duckdb_employee: DuckDBDataFrame, capsys):
|
|
258
|
+
duckdb_employee.explain()
|
|
259
|
+
assert (
|
|
260
|
+
capsys.readouterr().out.strip()
|
|
261
|
+
== """
|
|
262
|
+
┌───────────────────────────┐
|
|
263
|
+
│ COLUMN_DATA_SCAN │
|
|
264
|
+
│ ──────────────────── │
|
|
265
|
+
│ ~5 Rows │
|
|
266
|
+
└───────────────────────────┘
|
|
267
|
+
""".strip()
|
|
268
|
+
)
|
|
@@ -127,3 +127,12 @@ def test_issue_219(duckdb_session: DuckDBSession):
|
|
|
127
127
|
lightbulbs = duckdb_session.read.csv("tests/fixtures/issue_219.csv")
|
|
128
128
|
min_prices = lightbulbs.groupBy("kind", "make").agg(F.min("price"))
|
|
129
129
|
lightbulbs.join(min_prices, "make").show()
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# https://github.com/eakmanrq/sqlframe/issues/242
|
|
133
|
+
def test_read_parquet_optimize(duckdb_session: DuckDBSession):
|
|
134
|
+
df = duckdb_session.read.parquet(
|
|
135
|
+
"tests/fixtures/employee.parquet"
|
|
136
|
+
) # Contains a `person_id` and a `person_source_value` column
|
|
137
|
+
df.createOrReplaceTempView("employee")
|
|
138
|
+
duckdb_session.table("employee").sql(optimize=True) # type: ignore
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/postgres/test_postgres_dataframe.py
RENAMED
|
@@ -120,3 +120,11 @@ def test_schema_nested(postgres_datatypes: PostgresDataFrame):
|
|
|
120
120
|
assert struct_fields[6].dataType == types.TimestampType()
|
|
121
121
|
assert struct_fields[7].name == "boolean_col"
|
|
122
122
|
assert struct_fields[7].dataType == types.BooleanType()
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def test_explain(postgres_employee: PostgresDataFrame, capsys):
|
|
126
|
+
postgres_employee.explain()
|
|
127
|
+
assert (
|
|
128
|
+
capsys.readouterr().out.strip()
|
|
129
|
+
== """Values Scan on "*VALUES*" (cost=0.00..0.06 rows=5 width=76)""".strip()
|
|
130
|
+
)
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/tests/integration/engines/snowflake/test_snowflake_dataframe.py
RENAMED
|
@@ -156,3 +156,19 @@ def test_schema_nested(snowflake_datatypes: SnowflakeDataFrame):
|
|
|
156
156
|
assert struct_fields[9].dataType == types.TimestampType()
|
|
157
157
|
assert struct_fields[10].name == "boolean_col"
|
|
158
158
|
assert struct_fields[10].dataType == types.BooleanType()
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def test_explain(snowflake_employee: SnowflakeDataFrame, capsys):
|
|
162
|
+
snowflake_employee.explain()
|
|
163
|
+
assert (
|
|
164
|
+
capsys.readouterr().out.strip()
|
|
165
|
+
== """
|
|
166
|
+
GlobalStats:
|
|
167
|
+
partitionsTotal=0
|
|
168
|
+
partitionsAssigned=0
|
|
169
|
+
bytesAssigned=0
|
|
170
|
+
Operations:
|
|
171
|
+
1:0 ->Result A1.EMPLOYEE_ID, A1.FNAME, A1.LNAME, A1.AGE, A1.STORE_ID
|
|
172
|
+
1:1 ->ValuesClause (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)
|
|
173
|
+
""".strip()
|
|
174
|
+
)
|
|
@@ -163,3 +163,10 @@ def test_schema_nested(spark_datatypes: SparkDataFrame):
|
|
|
163
163
|
assert struct_fields[9].dataType == types.TimestampType()
|
|
164
164
|
assert struct_fields[10].name == "boolean_col"
|
|
165
165
|
assert struct_fields[10].dataType == types.BooleanType()
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def test_explain(spark_employee: SparkDataFrame, capsys):
|
|
169
|
+
spark_employee.explain()
|
|
170
|
+
output = capsys.readouterr().out.strip()
|
|
171
|
+
assert "== Physical Plan ==" in output
|
|
172
|
+
assert "LocalTableScan" in output
|
|
@@ -25,7 +25,7 @@ tests = [
|
|
|
25
25
|
'"Test"',
|
|
26
26
|
{"name": "VARCHAR"},
|
|
27
27
|
"name",
|
|
28
|
-
'''SELECT "
|
|
28
|
+
'''SELECT "TEST"."NAME" AS "NAME" FROM "Test" AS "TEST"''',
|
|
29
29
|
),
|
|
30
30
|
(
|
|
31
31
|
"Column has CS while table does not",
|
|
@@ -41,7 +41,7 @@ tests = [
|
|
|
41
41
|
'"Test"',
|
|
42
42
|
{'"Name"': "VARCHAR"},
|
|
43
43
|
'"Name"',
|
|
44
|
-
'''SELECT "
|
|
44
|
+
'''SELECT "TEST"."Name" AS "Name" FROM "Test" AS "TEST"''',
|
|
45
45
|
),
|
|
46
46
|
(
|
|
47
47
|
"Lowercase CS table and column",
|
|
@@ -49,7 +49,7 @@ tests = [
|
|
|
49
49
|
'"test"',
|
|
50
50
|
{'"name"': "VARCHAR"},
|
|
51
51
|
'"name"',
|
|
52
|
-
'''SELECT "
|
|
52
|
+
'''SELECT "TEST"."name" AS "name" FROM "test" AS "TEST"''',
|
|
53
53
|
),
|
|
54
54
|
(
|
|
55
55
|
"CS table and column and query table but no CS in query column",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
|
File without changes
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
{sqlframe-3.13.1 → sqlframe-3.13.3}/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
|