sqlframe 3.28.1__tar.gz → 3.29.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlframe-3.28.1 → sqlframe-3.29.0}/PKG-INFO +7 -6
- {sqlframe-3.28.1 → sqlframe-3.29.0}/README.md +6 -5
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/databricks.md +1 -3
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/_version.py +2 -2
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/dataframe.py +14 -11
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/PKG-INFO +7 -6
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_dataframe.py +44 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_dataframe.py +1 -1
- {sqlframe-3.28.1 → sqlframe-3.29.0}/.github/CODEOWNERS +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/.gitignore +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/.readthedocs.yaml +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/LICENSE +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/Makefile +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/cake.gif +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/bigquery.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/configuration.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/postgres.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/duckdb.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/images/SF.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/images/favicon.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/index.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/postgres.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/redshift.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/requirements.txt +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/snowflake.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/spark.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/standalone.md +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/mkdocs.yml +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/pytest.ini +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/renovate.json +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/setup.cfg +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/setup.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/LICENSE +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/util.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/py.typed +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/common_fixtures.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/conftest.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/conftest.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sqlframe
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.29.0
|
4
4
|
Summary: Turning PySpark Into a Universal DataFrame API
|
5
5
|
Home-page: https://github.com/eakmanrq/sqlframe
|
6
6
|
Author: Ryan Eakman
|
@@ -34,18 +34,19 @@ License-File: LICENSE
|
|
34
34
|
|
35
35
|
SQLFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on database engines - no Spark clusters or dependencies required.
|
36
36
|
|
37
|
-
SQLFrame currently supports the following engines
|
37
|
+
SQLFrame currently supports the following engines:
|
38
38
|
|
39
39
|
* [BigQuery](https://sqlframe.readthedocs.io/en/stable/bigquery/)
|
40
|
+
* [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
|
40
41
|
* [DuckDB](https://sqlframe.readthedocs.io/en/stable/duckdb)
|
41
42
|
* [Postgres](https://sqlframe.readthedocs.io/en/stable/postgres)
|
42
43
|
* [Snowflake](https://sqlframe.readthedocs.io/en/stable/snowflake)
|
43
44
|
* [Spark](https://sqlframe.readthedocs.io/en/stable/spark)
|
44
45
|
|
45
|
-
There
|
46
|
+
There is also one engine in development. This engine lacks test coverage and robust documentation, but is available for testing:
|
46
47
|
|
47
48
|
* [Redshift](https://sqlframe.readthedocs.io/en/stable/redshift)
|
48
|
-
|
49
|
+
|
49
50
|
|
50
51
|
SQLFrame also has a "Standalone" session that be used to generate SQL without any connection to a database engine.
|
51
52
|
|
@@ -63,6 +64,8 @@ SQLFrame is great for:
|
|
63
64
|
```bash
|
64
65
|
# BigQuery
|
65
66
|
pip install "sqlframe[bigquery]"
|
67
|
+
# Databricks
|
68
|
+
pip install "sqlframe[databricks]"
|
66
69
|
# DuckDB
|
67
70
|
pip install "sqlframe[duckdb]"
|
68
71
|
# Postgres
|
@@ -73,8 +76,6 @@ pip install "sqlframe[snowflake]"
|
|
73
76
|
pip install "sqlframe[spark]"
|
74
77
|
# Redshift (in development)
|
75
78
|
pip install "sqlframe[redshift]"
|
76
|
-
# Databricks (in development)
|
77
|
-
pip install "sqlframe[databricks]"
|
78
79
|
# Standalone
|
79
80
|
pip install sqlframe
|
80
81
|
```
|
@@ -4,18 +4,19 @@
|
|
4
4
|
|
5
5
|
SQLFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on database engines - no Spark clusters or dependencies required.
|
6
6
|
|
7
|
-
SQLFrame currently supports the following engines
|
7
|
+
SQLFrame currently supports the following engines:
|
8
8
|
|
9
9
|
* [BigQuery](https://sqlframe.readthedocs.io/en/stable/bigquery/)
|
10
|
+
* [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
|
10
11
|
* [DuckDB](https://sqlframe.readthedocs.io/en/stable/duckdb)
|
11
12
|
* [Postgres](https://sqlframe.readthedocs.io/en/stable/postgres)
|
12
13
|
* [Snowflake](https://sqlframe.readthedocs.io/en/stable/snowflake)
|
13
14
|
* [Spark](https://sqlframe.readthedocs.io/en/stable/spark)
|
14
15
|
|
15
|
-
There
|
16
|
+
There is also one engine in development. This engine lacks test coverage and robust documentation, but is available for testing:
|
16
17
|
|
17
18
|
* [Redshift](https://sqlframe.readthedocs.io/en/stable/redshift)
|
18
|
-
|
19
|
+
|
19
20
|
|
20
21
|
SQLFrame also has a "Standalone" session that be used to generate SQL without any connection to a database engine.
|
21
22
|
|
@@ -33,6 +34,8 @@ SQLFrame is great for:
|
|
33
34
|
```bash
|
34
35
|
# BigQuery
|
35
36
|
pip install "sqlframe[bigquery]"
|
37
|
+
# Databricks
|
38
|
+
pip install "sqlframe[databricks]"
|
36
39
|
# DuckDB
|
37
40
|
pip install "sqlframe[duckdb]"
|
38
41
|
# Postgres
|
@@ -43,8 +46,6 @@ pip install "sqlframe[snowflake]"
|
|
43
46
|
pip install "sqlframe[spark]"
|
44
47
|
# Redshift (in development)
|
45
48
|
pip install "sqlframe[redshift]"
|
46
|
-
# Databricks (in development)
|
47
|
-
pip install "sqlframe[databricks]"
|
48
49
|
# Standalone
|
49
50
|
pip install sqlframe
|
50
51
|
```
|
@@ -80,8 +80,6 @@ JOIN_HINTS = {
|
|
80
80
|
}
|
81
81
|
|
82
82
|
JOIN_TYPE_MAPPING = {
|
83
|
-
"inner": "inner",
|
84
|
-
"cross": "cross",
|
85
83
|
"outer": "full_outer",
|
86
84
|
"full": "full_outer",
|
87
85
|
"fullouter": "full_outer",
|
@@ -91,10 +89,8 @@ JOIN_TYPE_MAPPING = {
|
|
91
89
|
"rightouter": "right_outer",
|
92
90
|
"semi": "left_semi",
|
93
91
|
"leftsemi": "left_semi",
|
94
|
-
"left_semi": "left_semi",
|
95
92
|
"anti": "left_anti",
|
96
93
|
"leftanti": "left_anti",
|
97
|
-
"left_anti": "left_anti",
|
98
94
|
}
|
99
95
|
|
100
96
|
DF = t.TypeVar("DF", bound="BaseDataFrame")
|
@@ -1028,7 +1024,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1028
1024
|
@operation(Operation.FROM)
|
1029
1025
|
def join(
|
1030
1026
|
self,
|
1031
|
-
|
1027
|
+
other: Self,
|
1032
1028
|
on: t.Optional[t.Union[str, t.List[str], Column, t.List[Column]]] = None,
|
1033
1029
|
how: str = "inner",
|
1034
1030
|
**kwargs,
|
@@ -1044,7 +1040,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1044
1040
|
logger.warning("Got cross join with an 'on' value. This will result in an inner join.")
|
1045
1041
|
how = "inner"
|
1046
1042
|
|
1047
|
-
other_df =
|
1043
|
+
other_df = other._convert_leaf_to_cte()
|
1048
1044
|
join_expression = self._add_ctes_to_expression(self.expression, other_df.expression.ctes)
|
1049
1045
|
# We will determine actual "join on" expression later so we don't provide it at first
|
1050
1046
|
join_type = JOIN_TYPE_MAPPING.get(how, how).replace("_", " ")
|
@@ -1599,6 +1595,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1599
1595
|
|
1600
1596
|
@operation(Operation.LIMIT)
|
1601
1597
|
def limit(self, num: int) -> Self:
|
1598
|
+
if limit_exp := self.expression.args.get("limit"):
|
1599
|
+
num = min(num, int(limit_exp.expression.this))
|
1602
1600
|
return self.copy(expression=self.expression.limit(num))
|
1603
1601
|
|
1604
1602
|
def toDF(self, *cols: str) -> Self:
|
@@ -1854,11 +1852,11 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1854
1852
|
def head(self, n: int) -> t.List[Row]: ...
|
1855
1853
|
|
1856
1854
|
def head(self, n: t.Optional[int] = None) -> t.Union[t.Optional[Row], t.List[Row]]:
|
1857
|
-
|
1858
|
-
|
1859
|
-
if n
|
1860
|
-
return
|
1861
|
-
return
|
1855
|
+
df = self.limit(n or 1)
|
1856
|
+
collected = df.collect()
|
1857
|
+
if n is None:
|
1858
|
+
return seq_get(collected, 0)
|
1859
|
+
return collected
|
1862
1860
|
|
1863
1861
|
def first(self) -> t.Optional[Row]:
|
1864
1862
|
return self.head()
|
@@ -1939,6 +1937,11 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1939
1937
|
def createGlobalTempView(self, name: str) -> None:
|
1940
1938
|
raise NotImplementedError("Global temp views are not yet supported")
|
1941
1939
|
|
1940
|
+
def isEmpty(self) -> bool:
|
1941
|
+
from sqlframe.base import functions as F
|
1942
|
+
|
1943
|
+
return not bool(self.select(F.lit(True)).head())
|
1944
|
+
|
1942
1945
|
"""
|
1943
1946
|
Stat Functions
|
1944
1947
|
"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sqlframe
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.29.0
|
4
4
|
Summary: Turning PySpark Into a Universal DataFrame API
|
5
5
|
Home-page: https://github.com/eakmanrq/sqlframe
|
6
6
|
Author: Ryan Eakman
|
@@ -34,18 +34,19 @@ License-File: LICENSE
|
|
34
34
|
|
35
35
|
SQLFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on database engines - no Spark clusters or dependencies required.
|
36
36
|
|
37
|
-
SQLFrame currently supports the following engines
|
37
|
+
SQLFrame currently supports the following engines:
|
38
38
|
|
39
39
|
* [BigQuery](https://sqlframe.readthedocs.io/en/stable/bigquery/)
|
40
|
+
* [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
|
40
41
|
* [DuckDB](https://sqlframe.readthedocs.io/en/stable/duckdb)
|
41
42
|
* [Postgres](https://sqlframe.readthedocs.io/en/stable/postgres)
|
42
43
|
* [Snowflake](https://sqlframe.readthedocs.io/en/stable/snowflake)
|
43
44
|
* [Spark](https://sqlframe.readthedocs.io/en/stable/spark)
|
44
45
|
|
45
|
-
There
|
46
|
+
There is also one engine in development. This engine lacks test coverage and robust documentation, but is available for testing:
|
46
47
|
|
47
48
|
* [Redshift](https://sqlframe.readthedocs.io/en/stable/redshift)
|
48
|
-
|
49
|
+
|
49
50
|
|
50
51
|
SQLFrame also has a "Standalone" session that be used to generate SQL without any connection to a database engine.
|
51
52
|
|
@@ -63,6 +64,8 @@ SQLFrame is great for:
|
|
63
64
|
```bash
|
64
65
|
# BigQuery
|
65
66
|
pip install "sqlframe[bigquery]"
|
67
|
+
# Databricks
|
68
|
+
pip install "sqlframe[databricks]"
|
66
69
|
# DuckDB
|
67
70
|
pip install "sqlframe[duckdb]"
|
68
71
|
# Postgres
|
@@ -73,8 +76,6 @@ pip install "sqlframe[snowflake]"
|
|
73
76
|
pip install "sqlframe[spark]"
|
74
77
|
# Redshift (in development)
|
75
78
|
pip install "sqlframe[redshift]"
|
76
|
-
# Databricks (in development)
|
77
|
-
pip install "sqlframe[databricks]"
|
78
79
|
# Standalone
|
79
80
|
pip install sqlframe
|
80
81
|
```
|
@@ -189,3 +189,47 @@ def test_show_from_create_with_space_with_schema(get_session: t.Callable[[], _Ba
|
|
189
189
|
df.printSchema()
|
190
190
|
captured = capsys.readouterr()
|
191
191
|
assert "|-- an tan:" in captured.out.strip()
|
192
|
+
|
193
|
+
|
194
|
+
def test_multiple_limit(get_session: t.Callable[[], _BaseSession], capsys, get_func) -> None:
|
195
|
+
session = get_session()
|
196
|
+
lit = get_func("lit", session)
|
197
|
+
df = session.range(20)
|
198
|
+
assert df.select("id").limit(10).limit(0).count() == 0
|
199
|
+
assert df.select("id").limit(0).limit(10).count() == 0
|
200
|
+
assert df.limit(0).limit(10).limit(5).count() == 0
|
201
|
+
assert df.limit(0).filter(lit(True)).limit(10).limit(5).count() == 0
|
202
|
+
|
203
|
+
|
204
|
+
def test_is_empty(get_session):
|
205
|
+
session = get_session()
|
206
|
+
df_non_empty = session.createDataFrame([(1, 4), (2, 5), (3, 6)], schema=["foo", "BAR"])
|
207
|
+
df_empty = session.createDataFrame([], schema=["foo", "BAR"])
|
208
|
+
|
209
|
+
assert not df_non_empty.isEmpty()
|
210
|
+
assert df_empty.isEmpty()
|
211
|
+
|
212
|
+
|
213
|
+
def test_head(get_session, get_func):
|
214
|
+
session = get_session()
|
215
|
+
lit = get_func("lit", session)
|
216
|
+
df_non_empty = session.createDataFrame(
|
217
|
+
data=[(2, "Alice"), (5, "Bob"), (8, "Charly")],
|
218
|
+
schema=["age", "name"],
|
219
|
+
)
|
220
|
+
df_empty = df_non_empty.filter(lit(False))
|
221
|
+
|
222
|
+
# head() on DataFrame containing data: single row
|
223
|
+
assert df_non_empty.head() == Row(**{"age": 2, "name": "Alice"})
|
224
|
+
|
225
|
+
# head() on empty DataFrame: None
|
226
|
+
assert df_empty.head() is None
|
227
|
+
|
228
|
+
# head(n) on DataFrame containing data: list of rows
|
229
|
+
assert df_non_empty.head(2) == [
|
230
|
+
Row(**{"age": 2, "name": "Alice"}),
|
231
|
+
Row(**{"age": 5, "name": "Bob"}),
|
232
|
+
]
|
233
|
+
|
234
|
+
# head(n) on empty DataFrame : empty list
|
235
|
+
assert df_empty.head(2) == []
|
@@ -431,7 +431,7 @@ def test_join_inner(
|
|
431
431
|
):
|
432
432
|
employee = get_df("employee")
|
433
433
|
store = get_df("store")
|
434
|
-
df_joined = pyspark_employee.join(pyspark_store, on=["store_id"], how="inner").select(
|
434
|
+
df_joined = pyspark_employee.join(other=pyspark_store, on=["store_id"], how="inner").select(
|
435
435
|
pyspark_employee.employee_id,
|
436
436
|
pyspark_employee["fname"],
|
437
437
|
F.col("lname"),
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|