sqlframe 3.15.1__tar.gz → 3.16.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.15.1 → sqlframe-3.16.0}/PKG-INFO +1 -1
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/bigquery.md +1 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/duckdb.md +1 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/postgres.md +1 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/snowflake.md +1 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/_version.py +2 -2
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/dataframe.py +51 -45
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/decorators.py +1 -1
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/functions.py +5 -3
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/test_int_dataframe.py +24 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_functions.py +4 -4
- {sqlframe-3.15.1 → sqlframe-3.16.0}/.github/CODEOWNERS +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/.gitignore +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/.readthedocs.yaml +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/LICENSE +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/Makefile +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/README.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/cake.gif +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/configuration.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/databricks.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/docs/postgres.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/images/SF.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/images/favicon.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/index.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/redshift.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/requirements.txt +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/spark.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/standalone.md +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/mkdocs.yml +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/pytest.ini +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/renovate.json +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/setup.cfg +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/setup.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/LICENSE +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/util.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/base/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/common_fixtures.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/conftest.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/conftest.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.15.1 → sqlframe-3.16.0}/tests/unit/test_util.py +0 -0
|
@@ -334,6 +334,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
334
334
|
* [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
|
|
335
335
|
* [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
|
|
336
336
|
* [bround](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bround.html)
|
|
337
|
+
* [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
|
|
337
338
|
* [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
|
|
338
339
|
* [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
|
|
339
340
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
@@ -296,6 +296,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
296
296
|
* [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
|
|
297
297
|
* [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
|
|
298
298
|
* [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
|
|
299
|
+
* [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
|
|
299
300
|
* [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
|
|
300
301
|
* [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
|
|
301
302
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
@@ -306,6 +306,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
306
306
|
* [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
|
|
307
307
|
* [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
|
|
308
308
|
* [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
|
|
309
|
+
* [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
|
|
309
310
|
* [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
|
|
310
311
|
* [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
|
|
311
312
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
@@ -332,6 +332,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
332
332
|
* [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
|
|
333
333
|
* [bround](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bround.html)
|
|
334
334
|
* [Input must be a fixed-point nnumber](https://docs.snowflake.com/en/sql-reference/data-types-numeric.html#label-data-types-for-fixed-point-numbers)
|
|
335
|
+
* [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
|
|
335
336
|
* [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
|
|
336
337
|
* [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
|
|
337
338
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
@@ -391,7 +391,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
391
391
|
|
|
392
392
|
cols = self._ensure_list_of_columns(cols)
|
|
393
393
|
normalize(self.session, expression or self.expression, cols)
|
|
394
|
-
|
|
394
|
+
cols = list(flatten([self._expand_star(col) for col in cols]))
|
|
395
|
+
self._resolve_ambiguous_columns(cols)
|
|
396
|
+
return cols
|
|
395
397
|
|
|
396
398
|
def _ensure_and_normalize_col(self, col):
|
|
397
399
|
from sqlframe.base.column import Column
|
|
@@ -399,6 +401,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
399
401
|
|
|
400
402
|
col = Column.ensure_col(col)
|
|
401
403
|
normalize(self.session, self.expression, col)
|
|
404
|
+
self._resolve_ambiguous_columns(col)
|
|
402
405
|
return col
|
|
403
406
|
|
|
404
407
|
def _convert_leaf_to_cte(
|
|
@@ -745,10 +748,55 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
745
748
|
kwargs["join_on_uuid"] = str(uuid4())
|
|
746
749
|
return self.__class__(**object_to_dict(self, **kwargs))
|
|
747
750
|
|
|
751
|
+
def _resolve_ambiguous_columns(self, columns: t.Union[Column, t.List[Column]]) -> None:
|
|
752
|
+
if "joins" not in self.expression.args:
|
|
753
|
+
return
|
|
754
|
+
|
|
755
|
+
columns = ensure_list(columns)
|
|
756
|
+
ambiguous_cols: t.List[exp.Column] = list(
|
|
757
|
+
flatten(
|
|
758
|
+
[
|
|
759
|
+
sub_col
|
|
760
|
+
for col in columns
|
|
761
|
+
for sub_col in col.expression.find_all(exp.Column)
|
|
762
|
+
if not sub_col.table
|
|
763
|
+
]
|
|
764
|
+
)
|
|
765
|
+
)
|
|
766
|
+
if ambiguous_cols:
|
|
767
|
+
join_table_identifiers = [
|
|
768
|
+
x.this for x in get_tables_from_expression_with_join(self.expression)
|
|
769
|
+
]
|
|
770
|
+
cte_names_in_join = [x.this for x in join_table_identifiers]
|
|
771
|
+
# If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right
|
|
772
|
+
# (or right to left if a right join) and therefore we allow multiple columns with the same
|
|
773
|
+
# name in the result. This matches the behavior of Spark.
|
|
774
|
+
resolved_column_position: t.Dict[exp.Column, int] = {
|
|
775
|
+
col.copy(): -1 for col in ambiguous_cols
|
|
776
|
+
}
|
|
777
|
+
for ambiguous_col in ambiguous_cols:
|
|
778
|
+
ctes = (
|
|
779
|
+
list(reversed(self.expression.ctes))
|
|
780
|
+
if self.expression.args["joins"][0].args.get("side", "") == "right"
|
|
781
|
+
else self.expression.ctes
|
|
782
|
+
)
|
|
783
|
+
ctes_with_column = [
|
|
784
|
+
cte
|
|
785
|
+
for cte in ctes
|
|
786
|
+
if cte.alias_or_name in cte_names_in_join
|
|
787
|
+
and ambiguous_col.alias_or_name in cte.this.named_selects
|
|
788
|
+
]
|
|
789
|
+
# Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise,
|
|
790
|
+
# use the same CTE we used before
|
|
791
|
+
cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col] + 1)
|
|
792
|
+
if cte:
|
|
793
|
+
resolved_column_position[ambiguous_col] += 1
|
|
794
|
+
else:
|
|
795
|
+
cte = ctes_with_column[resolved_column_position[ambiguous_col]]
|
|
796
|
+
ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
|
|
797
|
+
|
|
748
798
|
@operation(Operation.SELECT)
|
|
749
799
|
def select(self, *cols, **kwargs) -> Self:
|
|
750
|
-
from sqlframe.base.column import Column
|
|
751
|
-
|
|
752
800
|
if not cols:
|
|
753
801
|
return self
|
|
754
802
|
|
|
@@ -756,48 +804,6 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
756
804
|
cols = cols[0] # type: ignore
|
|
757
805
|
columns = self._ensure_and_normalize_cols(cols)
|
|
758
806
|
kwargs["append"] = kwargs.get("append", False)
|
|
759
|
-
if self.expression.args.get("joins"):
|
|
760
|
-
ambiguous_cols: t.List[exp.Column] = list(
|
|
761
|
-
flatten(
|
|
762
|
-
[
|
|
763
|
-
sub_col
|
|
764
|
-
for col in columns
|
|
765
|
-
for sub_col in col.expression.find_all(exp.Column)
|
|
766
|
-
if not sub_col.table
|
|
767
|
-
]
|
|
768
|
-
)
|
|
769
|
-
)
|
|
770
|
-
if ambiguous_cols:
|
|
771
|
-
join_table_identifiers = [
|
|
772
|
-
x.this for x in get_tables_from_expression_with_join(self.expression)
|
|
773
|
-
]
|
|
774
|
-
cte_names_in_join = [x.this for x in join_table_identifiers]
|
|
775
|
-
# If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right
|
|
776
|
-
# (or right to left if a right join) and therefore we allow multiple columns with the same
|
|
777
|
-
# name in the result. This matches the behavior of Spark.
|
|
778
|
-
resolved_column_position: t.Dict[exp.Column, int] = {
|
|
779
|
-
col.copy(): -1 for col in ambiguous_cols
|
|
780
|
-
}
|
|
781
|
-
for ambiguous_col in ambiguous_cols:
|
|
782
|
-
ctes = (
|
|
783
|
-
list(reversed(self.expression.ctes))
|
|
784
|
-
if self.expression.args["joins"][0].args.get("side", "") == "right"
|
|
785
|
-
else self.expression.ctes
|
|
786
|
-
)
|
|
787
|
-
ctes_with_column = [
|
|
788
|
-
cte
|
|
789
|
-
for cte in ctes
|
|
790
|
-
if cte.alias_or_name in cte_names_in_join
|
|
791
|
-
and ambiguous_col.alias_or_name in cte.this.named_selects
|
|
792
|
-
]
|
|
793
|
-
# Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise,
|
|
794
|
-
# use the same CTE we used before
|
|
795
|
-
cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col] + 1)
|
|
796
|
-
if cte:
|
|
797
|
-
resolved_column_position[ambiguous_col] += 1
|
|
798
|
-
else:
|
|
799
|
-
cte = ctes_with_column[resolved_column_position[ambiguous_col]]
|
|
800
|
-
ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
|
|
801
807
|
# If an expression is `CAST(x AS DATETYPE)` then we want to alias so that `x` is the result column name
|
|
802
808
|
columns = [
|
|
803
809
|
col.alias(col.expression.alias_or_name)
|
|
@@ -43,7 +43,7 @@ def func_metadata(unsupported_engines: t.Optional[t.Union[str, t.List[str]]] = N
|
|
|
43
43
|
col_name = col_name.this
|
|
44
44
|
alias_name = f"{func.__name__}__{col_name or ''}__"
|
|
45
45
|
# BigQuery has restrictions on alias names so we constrain it to alphanumeric characters and underscores
|
|
46
|
-
return result.alias(re.sub("\W", "_", alias_name)) # type: ignore
|
|
46
|
+
return result.alias(re.sub(r"\W", "_", alias_name)) # type: ignore
|
|
47
47
|
return result
|
|
48
48
|
|
|
49
49
|
wrapper.unsupported_engines = ( # type: ignore
|
|
@@ -2851,12 +2851,14 @@ def bool_or(col: ColumnOrName) -> Column:
|
|
|
2851
2851
|
return Column.invoke_expression_over_column(col, expression.LogicalOr)
|
|
2852
2852
|
|
|
2853
2853
|
|
|
2854
|
-
@meta(
|
|
2854
|
+
@meta()
|
|
2855
2855
|
def btrim(str: ColumnOrName, trim: t.Optional[ColumnOrName] = None) -> Column:
|
|
2856
2856
|
if trim is not None:
|
|
2857
|
-
return Column.
|
|
2857
|
+
return Column.invoke_expression_over_column(
|
|
2858
|
+
str, expression.Trim, expression=Column.ensure_col(trim).column_expression
|
|
2859
|
+
)
|
|
2858
2860
|
else:
|
|
2859
|
-
return Column.
|
|
2861
|
+
return Column.invoke_expression_over_column(str, expression.Trim)
|
|
2860
2862
|
|
|
2861
2863
|
|
|
2862
2864
|
@meta(unsupported_engines="*")
|
|
@@ -2381,3 +2381,27 @@ def test_union_common_root_again(
|
|
|
2381
2381
|
dfs_final = dfs_1.union(dfs_2).union(employee)
|
|
2382
2382
|
|
|
2383
2383
|
compare_frames(df_final, dfs_final, compare_schema=False)
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
# https://github.com/eakmanrq/sqlframe/issues/277
|
|
2387
|
+
def test_filtering_join_key(
|
|
2388
|
+
pyspark_employee: PySparkDataFrame,
|
|
2389
|
+
pyspark_store: PySparkDataFrame,
|
|
2390
|
+
get_df: t.Callable[[str], BaseDataFrame],
|
|
2391
|
+
compare_frames: t.Callable,
|
|
2392
|
+
):
|
|
2393
|
+
df = pyspark_employee.join(
|
|
2394
|
+
pyspark_store,
|
|
2395
|
+
on="store_id",
|
|
2396
|
+
how="inner",
|
|
2397
|
+
).filter(F.col("store_id") > 1)
|
|
2398
|
+
|
|
2399
|
+
employee = get_df("employee")
|
|
2400
|
+
store = get_df("store")
|
|
2401
|
+
dfs = employee.join(
|
|
2402
|
+
store,
|
|
2403
|
+
on="store_id",
|
|
2404
|
+
how="inner",
|
|
2405
|
+
).filter(SF.col("store_id") > 1)
|
|
2406
|
+
|
|
2407
|
+
compare_frames(df, dfs, compare_schema=False, sort=True)
|
|
@@ -3228,10 +3228,10 @@ def test_bool_or(expression, expected):
|
|
|
3228
3228
|
@pytest.mark.parametrize(
|
|
3229
3229
|
"expression, expected",
|
|
3230
3230
|
[
|
|
3231
|
-
(SF.btrim("cola"), "
|
|
3232
|
-
(SF.btrim(SF.col("cola")), "
|
|
3233
|
-
(SF.btrim("cola", "chars"), "
|
|
3234
|
-
(SF.btrim("cola", SF.lit("chars")), "
|
|
3231
|
+
(SF.btrim("cola"), "TRIM(cola)"),
|
|
3232
|
+
(SF.btrim(SF.col("cola")), "TRIM(cola)"),
|
|
3233
|
+
(SF.btrim("cola", "chars"), "TRIM(chars FROM cola)"),
|
|
3234
|
+
(SF.btrim("cola", SF.lit("chars")), "TRIM('chars' FROM cola)"),
|
|
3235
3235
|
],
|
|
3236
3236
|
)
|
|
3237
3237
|
def test_btrim(expression, expected):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
|
File without changes
|
{sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.15.1 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
{sqlframe-3.15.1 → sqlframe-3.16.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|