sqlframe 3.0.0__tar.gz → 3.1.1__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.0.0 → sqlframe-3.1.1}/PKG-INFO +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/configuration.md +10 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/setup.py +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/__init__.py +16 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/_version.py +2 -2
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe.egg-info/requires.txt +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/bigquery/test_activate.py +2 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/conftest.py +99 -5
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/duck/test_activate.py +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/snowflake/test_activate.py +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_activate.py +1 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_functions.py +2 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/test_activate.py +9 -1
- {sqlframe-3.0.0 → sqlframe-3.1.1}/.github/CODEOWNERS +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/.gitignore +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/.readthedocs.yaml +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/LICENSE +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/Makefile +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/README.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/cake.gif +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/bigquery.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/docs/postgres.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/duckdb.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/images/SF.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/images/favicon.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/index.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/postgres.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/requirements.txt +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/snowflake.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/spark.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/standalone.md +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/mkdocs.yml +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/pytest.ini +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/renovate.json +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/setup.cfg +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/LICENSE +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/util.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/base/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/common_fixtures.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/conftest.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.0.0 → sqlframe-3.1.1}/tests/unit/test_util.py +0 -0
|
@@ -71,6 +71,16 @@ spark = SparkSession.builder.getOrCreate()
|
|
|
71
71
|
# "spark" is a SQLFrame DuckDBSession and will run directly on DuckDB with input dialect set to DuckDB
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
### Deactivating
|
|
75
|
+
|
|
76
|
+
If you want to deactivate SQLFrame and revert back to PySpark, you can use the `deactivate` function.
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
from sqlframe import deactivate
|
|
80
|
+
|
|
81
|
+
deactivate()
|
|
82
|
+
```
|
|
83
|
+
|
|
74
84
|
## Generated SQL
|
|
75
85
|
|
|
76
86
|
### Pretty
|
|
@@ -81,3 +81,19 @@ def activate(
|
|
|
81
81
|
sys.modules[f"pyspark.sql.{file}"] = engine_file
|
|
82
82
|
resolved_files.add(engine_file)
|
|
83
83
|
setattr(engine_file, name_without_prefix, obj)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def deactivate() -> None:
|
|
87
|
+
pyspark_imports = [k for k in sys.modules if k.startswith("pyspark")]
|
|
88
|
+
|
|
89
|
+
for k, v in sys.modules.copy().items():
|
|
90
|
+
if k in pyspark_imports:
|
|
91
|
+
del sys.modules[k]
|
|
92
|
+
# Try importing the pyspark imports again and see if pyspark is installed and therefore available
|
|
93
|
+
# if not then nothing will change
|
|
94
|
+
for k in pyspark_imports:
|
|
95
|
+
try:
|
|
96
|
+
sys.modules[k] = importlib.import_module(k)
|
|
97
|
+
except ImportError:
|
|
98
|
+
pass
|
|
99
|
+
ACTIVATE_CONFIG.clear()
|
|
@@ -21,7 +21,7 @@ from sqlframe.bigquery import types as BigQueryTypes
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
@pytest.mark.forked
|
|
24
|
-
def test_activate_bigquery():
|
|
24
|
+
def test_activate_bigquery(check_pyspark_imports):
|
|
25
25
|
check_pyspark_imports(
|
|
26
26
|
"bigquery",
|
|
27
27
|
sqlf_session=BigQuerySession,
|
|
@@ -47,5 +47,6 @@ def test_activate_bigquery_default_dataset():
|
|
|
47
47
|
activate("bigquery", config={"default_dataset": "sqlframe.sqlframe_test"})
|
|
48
48
|
from pyspark.sql import SparkSession
|
|
49
49
|
|
|
50
|
+
assert SparkSession == BigQuerySession
|
|
50
51
|
spark = SparkSession.builder.appName("test").getOrCreate()
|
|
51
52
|
assert spark.default_dataset == "sqlframe.sqlframe_test"
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
|
|
3
1
|
import findspark
|
|
4
2
|
import pytest
|
|
5
3
|
|
|
6
|
-
from sqlframe import activate
|
|
4
|
+
from sqlframe import activate, deactivate
|
|
7
5
|
|
|
8
6
|
|
|
9
7
|
@pytest.fixture()
|
|
10
|
-
def check_pyspark_imports(
|
|
8
|
+
def check_pyspark_imports():
|
|
11
9
|
def _check_pyspark_imports(
|
|
12
10
|
engine_name,
|
|
13
11
|
sqlf_session,
|
|
@@ -28,7 +26,6 @@ def check_pyspark_imports(temporary_sys_modules):
|
|
|
28
26
|
):
|
|
29
27
|
activate(engine=engine_name)
|
|
30
28
|
findspark.init()
|
|
31
|
-
# TODO: functions, types, udf
|
|
32
29
|
from pyspark.sql import (
|
|
33
30
|
Catalog,
|
|
34
31
|
Column,
|
|
@@ -121,4 +118,101 @@ def check_pyspark_imports(temporary_sys_modules):
|
|
|
121
118
|
assert F == sqlf_functions
|
|
122
119
|
assert types == sqlf_types
|
|
123
120
|
|
|
121
|
+
deactivate()
|
|
122
|
+
findspark.init()
|
|
123
|
+
from pyspark.sql import (
|
|
124
|
+
Catalog,
|
|
125
|
+
Column,
|
|
126
|
+
DataFrame,
|
|
127
|
+
DataFrameNaFunctions,
|
|
128
|
+
DataFrameReader,
|
|
129
|
+
DataFrameStatFunctions,
|
|
130
|
+
DataFrameWriter,
|
|
131
|
+
GroupedData,
|
|
132
|
+
Row,
|
|
133
|
+
SparkSession,
|
|
134
|
+
UDFRegistration,
|
|
135
|
+
Window,
|
|
136
|
+
WindowSpec,
|
|
137
|
+
types,
|
|
138
|
+
)
|
|
139
|
+
from pyspark.sql import functions as F
|
|
140
|
+
|
|
141
|
+
assert SparkSession != sqlf_session
|
|
142
|
+
assert Catalog != sqlf_catalog
|
|
143
|
+
assert Column != sqlf_column
|
|
144
|
+
assert GroupedData != sqlf_grouped_data
|
|
145
|
+
assert DataFrame != sqlf_dataframe
|
|
146
|
+
assert Window != sqlf_window
|
|
147
|
+
assert WindowSpec != sqlf_window_spec
|
|
148
|
+
assert F != sqlf_functions
|
|
149
|
+
assert types != sqlf_types
|
|
150
|
+
assert UDFRegistration != sqlf_udf_registration
|
|
151
|
+
assert DataFrameNaFunctions != sqlf_dataframe_na_functions
|
|
152
|
+
assert DataFrameStatFunctions != sqlf_dataframe_stat_functions
|
|
153
|
+
assert DataFrameReader != sqlf_dataframe_reader
|
|
154
|
+
assert DataFrameWriter != sqlf_dataframe_writer
|
|
155
|
+
assert Row != sqlf_row
|
|
156
|
+
|
|
157
|
+
assert F.JVMView is not None
|
|
158
|
+
assert SparkSession.readStream is not None
|
|
159
|
+
|
|
160
|
+
from pyspark.sql.session import SparkSession as SparkSession2
|
|
161
|
+
|
|
162
|
+
assert SparkSession2 != sqlf_session
|
|
163
|
+
|
|
164
|
+
from pyspark.sql.catalog import Catalog as Catalog2
|
|
165
|
+
|
|
166
|
+
assert Catalog2 != sqlf_catalog
|
|
167
|
+
|
|
168
|
+
from pyspark.sql.column import Column as Column2
|
|
169
|
+
|
|
170
|
+
assert Column2 != sqlf_column
|
|
171
|
+
|
|
172
|
+
from pyspark.sql.dataframe import DataFrame as DataFrame2
|
|
173
|
+
from pyspark.sql.dataframe import DataFrameNaFunctions as DataFrameNaFunctions2
|
|
174
|
+
from pyspark.sql.dataframe import (
|
|
175
|
+
DataFrameStatFunctions as DataFrameStatFunctions2,
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
assert DataFrame2 != sqlf_dataframe
|
|
179
|
+
assert DataFrameNaFunctions2 != sqlf_dataframe_na_functions
|
|
180
|
+
assert DataFrameStatFunctions2 != sqlf_dataframe_stat_functions
|
|
181
|
+
|
|
182
|
+
from pyspark.sql.group import GroupedData as GroupedData2
|
|
183
|
+
|
|
184
|
+
assert GroupedData2 != sqlf_grouped_data
|
|
185
|
+
|
|
186
|
+
from pyspark.sql.window import WindowSpec as WindowSpec2
|
|
187
|
+
|
|
188
|
+
assert WindowSpec2 != sqlf_window_spec
|
|
189
|
+
|
|
190
|
+
from pyspark.sql.readwriter import DataFrameReader as DataFrameReader2
|
|
191
|
+
from pyspark.sql.readwriter import DataFrameWriter as DataFrameWriter2
|
|
192
|
+
|
|
193
|
+
assert DataFrameReader2 != sqlf_dataframe_reader
|
|
194
|
+
assert DataFrameWriter2 != sqlf_dataframe_writer
|
|
195
|
+
|
|
196
|
+
from pyspark.sql.window import Window, WindowSpec
|
|
197
|
+
|
|
198
|
+
assert Window != sqlf_window
|
|
199
|
+
assert WindowSpec != sqlf_window_spec
|
|
200
|
+
|
|
201
|
+
from pyspark.sql import functions as F
|
|
202
|
+
from pyspark.sql import types
|
|
203
|
+
|
|
204
|
+
assert F != sqlf_functions
|
|
205
|
+
assert types != sqlf_types
|
|
206
|
+
assert types.Row != sqlf_row
|
|
207
|
+
|
|
208
|
+
from pyspark.sql import UDFRegistration
|
|
209
|
+
|
|
210
|
+
assert UDFRegistration != sqlf_udf_registration
|
|
211
|
+
|
|
212
|
+
import pyspark.sql.functions as F
|
|
213
|
+
import pyspark.sql.types as types
|
|
214
|
+
|
|
215
|
+
assert F != sqlf_functions
|
|
216
|
+
assert types != sqlf_types
|
|
217
|
+
|
|
124
218
|
return _check_pyspark_imports
|
|
@@ -14,7 +14,8 @@ from sqlframe.standalone import functions as SF
|
|
|
14
14
|
def test_invoke_anonymous(name, func):
|
|
15
15
|
# array_size - converts to `size` but `array_size` and `size` behave differently
|
|
16
16
|
# to_char - convert to a cast that ignores the format provided
|
|
17
|
-
|
|
17
|
+
# ltrim/rtrim - don't seem to convert correctly on some engines
|
|
18
|
+
ignore_funcs = {"array_size", "to_char", "ltrim", "rtrim"}
|
|
18
19
|
if "invoke_anonymous_function" in inspect.getsource(func) and name not in ignore_funcs:
|
|
19
20
|
func = parse_one(f"{name}()", read="spark", error_level=ErrorLevel.IGNORE)
|
|
20
21
|
assert isinstance(func, exp.Anonymous)
|
|
@@ -4,7 +4,7 @@ from unittest.mock import MagicMock
|
|
|
4
4
|
import findspark
|
|
5
5
|
import pytest
|
|
6
6
|
|
|
7
|
-
from sqlframe import activate
|
|
7
|
+
from sqlframe import activate, deactivate
|
|
8
8
|
from sqlframe import testing as SQLFrameTesting
|
|
9
9
|
|
|
10
10
|
|
|
@@ -35,3 +35,11 @@ def test_activate_no_engine():
|
|
|
35
35
|
from pyspark import context
|
|
36
36
|
|
|
37
37
|
assert isinstance(context, MagicMock)
|
|
38
|
+
|
|
39
|
+
deactivate()
|
|
40
|
+
|
|
41
|
+
from pyspark import context
|
|
42
|
+
|
|
43
|
+
assert not isinstance(context, MagicMock)
|
|
44
|
+
assert context is not MagicMock
|
|
45
|
+
assert context is not None
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.0.0 → sqlframe-3.1.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|