sqlframe 3.13.0__tar.gz → 3.13.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.13.0 → sqlframe-3.13.2}/PKG-INFO +1 -4
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/spark.md +8 -54
- {sqlframe-3.13.0 → sqlframe-3.13.2}/setup.py +3 -3
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/_version.py +2 -2
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/dataframe.py +23 -11
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/dataframe.py +5 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/dataframe.py +6 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/dataframe.py +1 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/PKG-INFO +1 -4
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/requires.txt +3 -3
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +5 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/test_databricks_dataframe.py +8 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_dataframe.py +14 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_dataframe.py +8 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +16 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/spark/test_spark_dataframe.py +7 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_dataframe.py +14 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_session_case_sensitivity.py +3 -3
- {sqlframe-3.13.0 → sqlframe-3.13.2}/.github/CODEOWNERS +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/.gitignore +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/.readthedocs.yaml +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/LICENSE +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/Makefile +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/README.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/cake.gif +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/bigquery.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/configuration.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/databricks.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/postgres.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/duckdb.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/SF.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/favicon.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/index.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/postgres.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/redshift.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/requirements.txt +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/snowflake.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/standalone.md +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/mkdocs.yml +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/pytest.ini +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/renovate.json +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/setup.cfg +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/LICENSE +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/util.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/common_fixtures.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/conftest.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/conftest.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/test_util.py +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sqlframe
|
|
3
|
-
Version: 3.13.
|
|
3
|
+
Version: 3.13.2
|
|
4
4
|
Summary: Turning PySpark Into a Universal DataFrame API
|
|
5
5
|
Home-page: https://github.com/eakmanrq/sqlframe
|
|
6
6
|
Author: Ryan Eakman
|
|
7
7
|
Author-email: eakmanrq@gmail.com
|
|
8
8
|
License: MIT
|
|
9
|
-
Platform: UNKNOWN
|
|
10
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
10
|
Classifier: Intended Audience :: Developers
|
|
12
11
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -192,5 +191,3 @@ LIMIT 5
|
|
|
192
191
|
| 1975 | 868,985 | 10.92 |
|
|
193
192
|
+------+---------------------------+----------------+
|
|
194
193
|
```
|
|
195
|
-
|
|
196
|
-
|
|
@@ -8,13 +8,7 @@ pip install "sqlframe[spark]"
|
|
|
8
8
|
|
|
9
9
|
## Enabling SQLFrame
|
|
10
10
|
|
|
11
|
-
SQLFrame can be
|
|
12
|
-
|
|
13
|
-
* Directly importing the `sqlframe.spark` package
|
|
14
|
-
* Using the [activate](./configuration.md#activating-sqlframe) function to allow for continuing to use `pyspark.sql` but have it use SQLFrame behind the scenes.
|
|
15
|
-
|
|
16
|
-
### Import
|
|
17
|
-
|
|
11
|
+
SQLFrame can be enabled by directly importing the `sqlframe.spark` package.
|
|
18
12
|
If converting a PySpark pipeline, all `pyspark.sql` should be replaced with `sqlframe.spark`.
|
|
19
13
|
In addition, many classes will have a `Spark` prefix.
|
|
20
14
|
For example, `SparkDataFrame` instead of `DataFrame`.
|
|
@@ -30,58 +24,18 @@ from sqlframe.spark import functions as F
|
|
|
30
24
|
from sqlframe.spark import SparkDataFrame
|
|
31
25
|
```
|
|
32
26
|
|
|
33
|
-
### Activate
|
|
34
|
-
|
|
35
|
-
If you would like to continue using `pyspark.sql` but have it use SQLFrame behind the scenes, you can use the [activate](./configuration.md#activating-sqlframe) function.
|
|
36
|
-
|
|
37
|
-
```python
|
|
38
|
-
from sqlframe import activate
|
|
39
|
-
activate("spark")
|
|
40
|
-
|
|
41
|
-
from pyspark.sql import SparkSession
|
|
42
|
-
```
|
|
43
|
-
|
|
44
27
|
## Creating a Session
|
|
45
28
|
|
|
46
29
|
SQLFrame's SparkSession is created the same way you would normally create a SparkSession.
|
|
47
30
|
The configuration you apply to the builder will be applied the the SparkSession that SQLFrame will create.
|
|
48
31
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
# Now you can use SQLFrame
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
=== "Activate + Without Providing SparkSession"
|
|
60
|
-
|
|
61
|
-
```python
|
|
62
|
-
from sqlframe import activate
|
|
63
|
-
activate("spark")
|
|
64
|
-
|
|
65
|
-
from pyspark.sql import SparkSession
|
|
66
|
-
|
|
67
|
-
spark = SparkSession.builder.appName("MyApp").getOrCreate()
|
|
68
|
-
|
|
69
|
-
# Now you can use SQLFrame
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
=== "Activate + Providing SparkSession"
|
|
73
|
-
|
|
74
|
-
```python
|
|
75
|
-
from pyspark.sql import SparkSession
|
|
76
|
-
from sqlframe import activate
|
|
77
|
-
activate("spark", conn=SparkSession.builder.appName("MyApp").getOrCreate())
|
|
78
|
-
|
|
79
|
-
from pyspark.sql import SparkSession
|
|
80
|
-
|
|
81
|
-
spark = SparkSession.getOrCreate()
|
|
82
|
-
|
|
83
|
-
# Now you can use SQLFrame
|
|
84
|
-
```
|
|
32
|
+
```python
|
|
33
|
+
from sqlframe.spark import SparkSession
|
|
34
|
+
|
|
35
|
+
spark = SparkSession.builder.appName("MyApp").getOrCreate()
|
|
36
|
+
|
|
37
|
+
# Now you can use SQLFrame
|
|
38
|
+
```
|
|
85
39
|
|
|
86
40
|
## Example Usage
|
|
87
41
|
|
|
@@ -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,14 +36,14 @@ 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",
|
|
43
43
|
"pytest-postgresql>=6,<7",
|
|
44
44
|
"pytest-xdist>=3.6,<3.7",
|
|
45
45
|
"pre-commit>=3.7,<5",
|
|
46
|
-
"ruff>=0.4.4,<0.
|
|
46
|
+
"ruff>=0.4.4,<0.10",
|
|
47
47
|
"types-psycopg2>=2.9,<3",
|
|
48
48
|
],
|
|
49
49
|
"docs": [
|
|
@@ -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,
|
|
@@ -806,6 +807,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
806
807
|
)
|
|
807
808
|
else:
|
|
808
809
|
col = self._ensure_and_normalize_col(column)
|
|
810
|
+
if isinstance(col.expression, exp.Alias):
|
|
811
|
+
col.expression = col.expression.this
|
|
809
812
|
return self.copy(expression=self.expression.where(col.expression))
|
|
810
813
|
|
|
811
814
|
filter = where
|
|
@@ -1018,9 +1021,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1018
1021
|
elif not isinstance(ascending, list):
|
|
1019
1022
|
ascending = [ascending] * len(columns)
|
|
1020
1023
|
ascending = [bool(x) for i, x in enumerate(ascending)]
|
|
1021
|
-
assert len(columns) == len(
|
|
1022
|
-
ascending
|
|
1023
|
-
)
|
|
1024
|
+
assert len(columns) == len(ascending), (
|
|
1025
|
+
"The length of items in ascending must equal the number of columns provided"
|
|
1026
|
+
)
|
|
1024
1027
|
col_and_ascending = list(zip(columns, ascending))
|
|
1025
1028
|
order_by_columns = [
|
|
1026
1029
|
(
|
|
@@ -1142,6 +1145,18 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1142
1145
|
final_df = filtered_df.select(*all_columns)
|
|
1143
1146
|
return final_df
|
|
1144
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
|
+
|
|
1145
1160
|
def explain(
|
|
1146
1161
|
self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
|
|
1147
1162
|
) -> None:
|
|
@@ -1210,11 +1225,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1210
1225
|
...Statistics...
|
|
1211
1226
|
...
|
|
1212
1227
|
"""
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
raise ValueError("Cannot explain a DataFrame with multiple queries")
|
|
1216
|
-
sql_query = "EXPLAIN " + sql_queries[0]
|
|
1217
|
-
self.session._execute(sql_query)
|
|
1228
|
+
results = self._get_explain_plan_rows()
|
|
1229
|
+
print(results[0][0])
|
|
1218
1230
|
|
|
1219
1231
|
@operation(Operation.FROM)
|
|
1220
1232
|
def fillna(
|
|
@@ -1282,9 +1294,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1282
1294
|
new_values = list(to_replace.values())
|
|
1283
1295
|
elif not old_values and isinstance(to_replace, list):
|
|
1284
1296
|
assert isinstance(value, list), "value must be a list since the replacements are a list"
|
|
1285
|
-
assert len(to_replace) == len(
|
|
1286
|
-
|
|
1287
|
-
)
|
|
1297
|
+
assert len(to_replace) == len(value), (
|
|
1298
|
+
"the replacements and values must be the same length"
|
|
1299
|
+
)
|
|
1288
1300
|
old_values = to_replace
|
|
1289
1301
|
new_values = value
|
|
1290
1302
|
else:
|
|
@@ -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,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sqlframe
|
|
3
|
-
Version: 3.13.
|
|
3
|
+
Version: 3.13.2
|
|
4
4
|
Summary: Turning PySpark Into a Universal DataFrame API
|
|
5
5
|
Home-page: https://github.com/eakmanrq/sqlframe
|
|
6
6
|
Author: Ryan Eakman
|
|
7
7
|
Author-email: eakmanrq@gmail.com
|
|
8
8
|
License: MIT
|
|
9
|
-
Platform: UNKNOWN
|
|
10
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
10
|
Classifier: Intended Audience :: Developers
|
|
12
11
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -192,5 +191,3 @@ LIMIT 5
|
|
|
192
191
|
| 1975 | 868,985 | 10.92 |
|
|
193
192
|
+------+---------------------------+----------------+
|
|
194
193
|
```
|
|
195
|
-
|
|
196
|
-
|
|
@@ -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,13 +18,13 @@ 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
|
|
25
25
|
pytest-xdist<3.7,>=3.6
|
|
26
26
|
pytest<8.4,>=8.2.0
|
|
27
|
-
ruff<0.
|
|
27
|
+
ruff<0.10,>=0.4.4
|
|
28
28
|
types-psycopg2<3,>=2.9
|
|
29
29
|
|
|
30
30
|
[docs]
|
{sqlframe-3.13.0 → sqlframe-3.13.2}/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
|
+
)
|
{sqlframe-3.13.0 → sqlframe-3.13.2}/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.0 → sqlframe-3.13.2}/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
|
|
@@ -2278,3 +2278,17 @@ def test_self_join(
|
|
|
2278
2278
|
)
|
|
2279
2279
|
|
|
2280
2280
|
compare_frames(df_joined, dfs_joined, compare_schema=False)
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
# https://github.com/eakmanrq/sqlframe/issues/232
|
|
2284
|
+
def test_filter_alias(
|
|
2285
|
+
pyspark_employee: PySparkDataFrame,
|
|
2286
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
|
2287
|
+
compare_frames: t.Callable,
|
|
2288
|
+
):
|
|
2289
|
+
df_filtered = pyspark_employee.where((F.col("age") > 40).alias("age_gt_40"))
|
|
2290
|
+
|
|
2291
|
+
employee = get_df("employee")
|
|
2292
|
+
dfs_filtered = employee.where((SF.col("age") > 40).alias("age_gt_40"))
|
|
2293
|
+
|
|
2294
|
+
compare_frames(df_filtered, dfs_filtered, compare_schema=False)
|
|
@@ -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.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
|
File without changes
|
{sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
{sqlframe-3.13.0 → sqlframe-3.13.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
|