sqlframe 3.32.1__tar.gz → 3.33.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.32.1 → sqlframe-3.33.1}/PKG-INFO +1 -1
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/bigquery.md +5 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/duckdb.md +2 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/postgres.md +1 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/snowflake.md +2 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/setup.py +3 -3
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/_version.py +2 -2
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/column.py +4 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/function_alternatives.py +0 -11
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/functions.py +9 -38
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/session.py +4 -1
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe.egg-info/requires.txt +3 -3
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_duckdb_dataframe.py +4 -4
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/spark/test_spark_dataframe.py +4 -4
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_engine_column.py +20 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_int_functions.py +25 -10
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_column.py +4 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_functions.py +7 -4
- {sqlframe-3.32.1 → sqlframe-3.33.1}/.github/CODEOWNERS +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/.gitignore +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/.readthedocs.yaml +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/LICENSE +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/Makefile +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/README.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/cake.gif +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/configuration.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/databricks.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/docs/postgres.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/images/SF.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/images/favicon.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/index.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/redshift.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/requirements.txt +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/spark.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/standalone.md +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/mkdocs.yml +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/pytest.ini +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/renovate.json +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/setup.cfg +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/LICENSE +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/util.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/base/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/py.typed +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/common_fixtures.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/conftest.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/conftest.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/test_catalog.py +0 -0
- {sqlframe-3.32.1 → sqlframe-3.33.1}/tests/unit/test_util.py +0 -0
@@ -219,6 +219,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
219
219
|
* [asc_nulls_last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.asc_nulls_last.html)
|
220
220
|
* [between](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.between.html)
|
221
221
|
* [cast](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.cast.html)
|
222
|
+
* [contains](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.contains.html)
|
223
|
+
* The argument to `contains` must be a string
|
222
224
|
* [desc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc.html)
|
223
225
|
* [desc_nulls_first](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc_nulls_first.html)
|
224
226
|
* [desc_nulls_last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc_nulls_last.html)
|
@@ -351,6 +353,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
351
353
|
* [concat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.concat.html)
|
352
354
|
* Only works on strings (does not work on arrays)
|
353
355
|
* [concat_ws](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.concat_ws.html)
|
356
|
+
* [contains](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.contains.html)
|
357
|
+
* The argument to `contains` must be a string
|
354
358
|
* [corr](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.corr.html)
|
355
359
|
* [cos](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cos.html)
|
356
360
|
* [cosh](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cosh.html)
|
@@ -512,6 +516,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
512
516
|
* [trim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trim.html)
|
513
517
|
* [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
|
514
518
|
* Shorthand expressions not supported. Ex: Use `month` instead of `mon`
|
519
|
+
* [try_divide](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_divide.html)
|
515
520
|
* [try_to_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_to_timestamp.html)
|
516
521
|
* [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
|
517
522
|
* [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
|
@@ -183,6 +183,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
183
183
|
* [asc_nulls_last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.asc_nulls_last.html)
|
184
184
|
* [between](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.between.html)
|
185
185
|
* [cast](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.cast.html)
|
186
|
+
* [contains](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.contains.html)
|
186
187
|
* [desc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc.html)
|
187
188
|
* [desc_nulls_first](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc_nulls_first.html)
|
188
189
|
* [desc_nulls_last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc_nulls_last.html)
|
@@ -477,6 +478,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
477
478
|
* [translate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.translate.html)
|
478
479
|
* [trim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trim.html)
|
479
480
|
* [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
|
481
|
+
* [try_divide](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_divide.html)
|
480
482
|
* [try_element_at](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_element_at.html)
|
481
483
|
* [try_to_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_to_timestamp.html)
|
482
484
|
* [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
|
@@ -464,6 +464,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
464
464
|
* [translate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.translate.html)
|
465
465
|
* [trim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trim.html)
|
466
466
|
* [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
|
467
|
+
* [try_divide](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_divide.html)
|
467
468
|
* [try_element_at](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_element_at.html)
|
468
469
|
* Negative index returns null and cannot lookup elements in maps
|
469
470
|
* [try_to_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_to_timestamp.html)
|
@@ -215,6 +215,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
215
215
|
* [asc_nulls_last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.asc_nulls_last.html)
|
216
216
|
* [between](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.between.html)
|
217
217
|
* [cast](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.cast.html)
|
218
|
+
* [contains](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.contains.html)
|
218
219
|
* [desc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc.html)
|
219
220
|
* [desc_nulls_first](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc_nulls_first.html)
|
220
221
|
* [desc_nulls_last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.Column.desc_nulls_last.html)
|
@@ -515,6 +516,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
515
516
|
* [translate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.translate.html)
|
516
517
|
* [trim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trim.html)
|
517
518
|
* [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
|
519
|
+
* [try_divide](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_divide.html)
|
518
520
|
* [try_to_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_to_timestamp.html)
|
519
521
|
* [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
|
520
522
|
* [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
|
@@ -20,7 +20,7 @@ setup(
|
|
20
20
|
python_requires=">=3.9",
|
21
21
|
install_requires=[
|
22
22
|
"prettytable<4",
|
23
|
-
"sqlglot>=24.0.0,<26.
|
23
|
+
"sqlglot>=24.0.0,<26.20",
|
24
24
|
"typing_extensions",
|
25
25
|
],
|
26
26
|
extras_require={
|
@@ -29,7 +29,7 @@ setup(
|
|
29
29
|
"google-cloud-bigquery-storage>=2,<3",
|
30
30
|
],
|
31
31
|
"dev": [
|
32
|
-
"duckdb>=1.2,<1.
|
32
|
+
"duckdb>=1.2,<1.4",
|
33
33
|
"findspark>=2,<3",
|
34
34
|
"mypy>=1.10.0,<1.16",
|
35
35
|
"openai>=1.30,<2",
|
@@ -54,7 +54,7 @@ setup(
|
|
54
54
|
"pymdown-extensions",
|
55
55
|
],
|
56
56
|
"duckdb": [
|
57
|
-
"duckdb>=1.2,<1.
|
57
|
+
"duckdb>=1.2,<1.4",
|
58
58
|
"pandas>=2,<3",
|
59
59
|
],
|
60
60
|
"openai": [
|
@@ -517,3 +517,7 @@ class Column:
|
|
517
517
|
+---+
|
518
518
|
"""
|
519
519
|
return self.getItem(name)
|
520
|
+
|
521
|
+
def contains(self, value: t.Union[str, Column]) -> Column:
|
522
|
+
value = self._lit(value) if not isinstance(value, Column) else value
|
523
|
+
return self.invoke_expression_over_column(self, exp.Contains, expression=value.expression)
|
@@ -78,17 +78,6 @@ def to_timestamp_tz(col: ColumnOrName, format: t.Optional[str] = None) -> Column
|
|
78
78
|
return Column.ensure_col(col).cast("timestamptz", dialect="duckdb")
|
79
79
|
|
80
80
|
|
81
|
-
def to_timestamp_just_timestamp(col: ColumnOrName, format: t.Optional[str] = None) -> Column:
|
82
|
-
from sqlframe.base.session import _BaseSession
|
83
|
-
|
84
|
-
if format is not None:
|
85
|
-
return Column.invoke_expression_over_column(
|
86
|
-
col, expression.StrToTime, format=_BaseSession().format_time(format)
|
87
|
-
)
|
88
|
-
|
89
|
-
return Column.ensure_col(col).cast("datetime", dialect="bigquery")
|
90
|
-
|
91
|
-
|
92
81
|
def bitwise_not_from_bitnot(col: ColumnOrName) -> Column:
|
93
82
|
return Column.invoke_anonymous_function(col, "BITNOT")
|
94
83
|
|
@@ -1356,7 +1356,6 @@ def to_date(col: ColumnOrName, format: t.Optional[str] = None) -> Column:
|
|
1356
1356
|
@meta()
|
1357
1357
|
def to_timestamp(col: ColumnOrName, format: t.Optional[str] = None) -> Column:
|
1358
1358
|
from sqlframe.base.function_alternatives import (
|
1359
|
-
to_timestamp_just_timestamp,
|
1360
1359
|
to_timestamp_tz,
|
1361
1360
|
to_timestamp_with_time_zone,
|
1362
1361
|
)
|
@@ -1366,9 +1365,6 @@ def to_timestamp(col: ColumnOrName, format: t.Optional[str] = None) -> Column:
|
|
1366
1365
|
if session._is_duckdb:
|
1367
1366
|
return to_timestamp_tz(col, format)
|
1368
1367
|
|
1369
|
-
if session._is_bigquery:
|
1370
|
-
return to_timestamp_just_timestamp(col, format)
|
1371
|
-
|
1372
1368
|
if session._is_postgres:
|
1373
1369
|
return to_timestamp_with_time_zone(col, format)
|
1374
1370
|
|
@@ -2805,9 +2801,11 @@ def try_avg(col: ColumnOrName) -> Column:
|
|
2805
2801
|
return Column.invoke_anonymous_function(col, "TRY_AVG")
|
2806
2802
|
|
2807
2803
|
|
2808
|
-
@meta(
|
2804
|
+
@meta()
|
2809
2805
|
def try_divide(left: ColumnOrName, right: ColumnOrName) -> Column:
|
2810
|
-
return Column.
|
2806
|
+
return Column.invoke_expression_over_column(
|
2807
|
+
left, expression.SafeDivide, expression=Column.ensure_col(right).column_expression
|
2808
|
+
)
|
2811
2809
|
|
2812
2810
|
|
2813
2811
|
@meta(unsupported_engines="*")
|
@@ -3068,7 +3066,7 @@ def character_length(str: ColumnOrName) -> Column:
|
|
3068
3066
|
return Column.invoke_expression_over_column(str, expression.Length)
|
3069
3067
|
|
3070
3068
|
|
3071
|
-
@meta(unsupported_engines=["
|
3069
|
+
@meta(unsupported_engines=["postgres"])
|
3072
3070
|
def contains(left: ColumnOrName, right: ColumnOrName) -> Column:
|
3073
3071
|
return Column.invoke_expression_over_column(
|
3074
3072
|
left, expression.Contains, expression=Column.ensure_col(right).column_expression
|
@@ -6594,27 +6592,16 @@ def unix_micros(col: ColumnOrName) -> Column:
|
|
6594
6592
|
"""
|
6595
6593
|
from sqlframe.base.function_alternatives import unix_micros_multiply_epoch
|
6596
6594
|
|
6595
|
+
to_timestamp = get_func_from_session("to_timestamp")
|
6596
|
+
|
6597
6597
|
if _get_session()._is_duckdb:
|
6598
6598
|
return Column.invoke_anonymous_function(col, "epoch_us")
|
6599
6599
|
|
6600
|
-
if _get_session()._is_bigquery:
|
6601
|
-
return Column(
|
6602
|
-
expression.Anonymous(
|
6603
|
-
this="UNIX_MICROS",
|
6604
|
-
expressions=[
|
6605
|
-
expression.Anonymous(
|
6606
|
-
this="TIMESTAMP",
|
6607
|
-
expressions=[
|
6608
|
-
Column.ensure_col(col).column_expression,
|
6609
|
-
],
|
6610
|
-
)
|
6611
|
-
],
|
6612
|
-
)
|
6613
|
-
)
|
6614
|
-
|
6615
6600
|
if _get_session()._is_postgres or _get_session()._is_snowflake:
|
6616
6601
|
return unix_micros_multiply_epoch(col)
|
6617
6602
|
|
6603
|
+
col = to_timestamp(col)
|
6604
|
+
|
6618
6605
|
return Column.invoke_anonymous_function(col, "unix_micros")
|
6619
6606
|
|
6620
6607
|
|
@@ -6666,22 +6653,6 @@ def unix_seconds(col: ColumnOrName) -> Column:
|
|
6666
6653
|
if _get_session()._is_postgres:
|
6667
6654
|
return unix_seconds_extract_epoch(col)
|
6668
6655
|
|
6669
|
-
if _get_session()._is_bigquery:
|
6670
|
-
return Column(
|
6671
|
-
expression.Anonymous(
|
6672
|
-
this="UNIX_SECONDS",
|
6673
|
-
expressions=[
|
6674
|
-
expression.Anonymous(
|
6675
|
-
this="TIMESTAMP",
|
6676
|
-
expressions=[
|
6677
|
-
Column.ensure_col(col).column_expression,
|
6678
|
-
expression.Literal.string("UTC"),
|
6679
|
-
],
|
6680
|
-
)
|
6681
|
-
],
|
6682
|
-
)
|
6683
|
-
)
|
6684
|
-
|
6685
6656
|
return Column.invoke_expression_over_column(col, expression.UnixSeconds)
|
6686
6657
|
|
6687
6658
|
|
@@ -304,7 +304,10 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
304
304
|
elif isinstance(value, float):
|
305
305
|
return "double"
|
306
306
|
elif isinstance(value, datetime.datetime):
|
307
|
-
|
307
|
+
if value.tzinfo:
|
308
|
+
# Spark defaults `timestamp` to be a timestamp with timezone
|
309
|
+
return "timestamp"
|
310
|
+
return "timestampntz"
|
308
311
|
elif isinstance(value, datetime.date):
|
309
312
|
return "date"
|
310
313
|
elif isinstance(value, str):
|
@@ -1,5 +1,5 @@
|
|
1
1
|
prettytable<4
|
2
|
-
sqlglot<26.
|
2
|
+
sqlglot<26.20,>=24.0.0
|
3
3
|
typing_extensions
|
4
4
|
|
5
5
|
[bigquery]
|
@@ -10,7 +10,7 @@ google-cloud-bigquery[pandas]<4,>=3
|
|
10
10
|
databricks-sql-connector[pyarrow]<5,>=3.6
|
11
11
|
|
12
12
|
[dev]
|
13
|
-
duckdb<1.
|
13
|
+
duckdb<1.4,>=1.2
|
14
14
|
findspark<3,>=2
|
15
15
|
mypy<1.16,>=1.10.0
|
16
16
|
openai<2,>=1.30
|
@@ -35,7 +35,7 @@ mkdocs==1.4.2
|
|
35
35
|
pymdown-extensions
|
36
36
|
|
37
37
|
[duckdb]
|
38
|
-
duckdb<1.
|
38
|
+
duckdb<1.4,>=1.2
|
39
39
|
pandas<3,>=2
|
40
40
|
|
41
41
|
[openai]
|
@@ -35,7 +35,7 @@ def duckdb_datatypes(duckdb_session: DuckDBSession) -> DuckDBDataFrame:
|
|
35
35
|
"array<bigint>_col",
|
36
36
|
"struct<a:bigint>_col",
|
37
37
|
"date_col",
|
38
|
-
"
|
38
|
+
"timestampntz_col",
|
39
39
|
"timestamptz_col",
|
40
40
|
"boolean_col",
|
41
41
|
],
|
@@ -79,7 +79,7 @@ root
|
|
79
79
|
|-- struct<a:bigint>_col: struct<a: bigint> (nullable = true)
|
80
80
|
| |-- a: bigint (nullable = true)
|
81
81
|
|-- date_col: date (nullable = true)
|
82
|
-
|--
|
82
|
+
|-- timestampntz_col: timestamp_ntz (nullable = true)
|
83
83
|
|-- timestamptz_col: timestamp (nullable = true)
|
84
84
|
|-- boolean_col: boolean (nullable = true)""".strip()
|
85
85
|
)
|
@@ -157,8 +157,8 @@ def test_schema_nested(duckdb_datatypes: DuckDBDataFrame):
|
|
157
157
|
)
|
158
158
|
assert struct_fields[7].name == "date_col"
|
159
159
|
assert struct_fields[7].dataType == types.DateType()
|
160
|
-
assert struct_fields[8].name == "
|
161
|
-
assert struct_fields[8].dataType == types.
|
160
|
+
assert struct_fields[8].name == "timestampntz_col"
|
161
|
+
assert struct_fields[8].dataType == types.TimestampNTZType()
|
162
162
|
assert struct_fields[9].name == "timestamptz_col"
|
163
163
|
assert struct_fields[9].dataType == types.TimestampType()
|
164
164
|
assert struct_fields[10].name == "boolean_col"
|
@@ -35,7 +35,7 @@ def spark_datatypes(spark_session: SparkSession) -> SparkDataFrame:
|
|
35
35
|
"array<bigint>_col",
|
36
36
|
"struct<a:bigint>_col",
|
37
37
|
"date_col",
|
38
|
-
"
|
38
|
+
"timestampntz_col",
|
39
39
|
"timestamptz_col",
|
40
40
|
"boolean_col",
|
41
41
|
],
|
@@ -79,7 +79,7 @@ root
|
|
79
79
|
|-- struct<a:bigint>_col: struct<a: bigint> (nullable = false)
|
80
80
|
| |-- a: bigint (nullable = true)
|
81
81
|
|-- date_col: date (nullable = true)
|
82
|
-
|--
|
82
|
+
|-- timestampntz_col: timestamp_ntz (nullable = true)
|
83
83
|
|-- timestamptz_col: timestamp (nullable = true)
|
84
84
|
|-- boolean_col: boolean (nullable = false)""".strip()
|
85
85
|
)
|
@@ -157,8 +157,8 @@ def test_schema_nested(spark_datatypes: SparkDataFrame):
|
|
157
157
|
)
|
158
158
|
assert struct_fields[7].name == "date_col"
|
159
159
|
assert struct_fields[7].dataType == types.DateType()
|
160
|
-
assert struct_fields[8].name == "
|
161
|
-
assert struct_fields[8].dataType == types.
|
160
|
+
assert struct_fields[8].name == "timestampntz_col"
|
161
|
+
assert struct_fields[8].dataType == types.TimestampNTZType()
|
162
162
|
assert struct_fields[9].name == "timestamptz_col"
|
163
163
|
assert struct_fields[9].dataType == types.TimestampType()
|
164
164
|
assert struct_fields[10].name == "boolean_col"
|
@@ -68,3 +68,23 @@ def test_column_get_field_struct(get_session: t.Callable[[], _BaseSession]):
|
|
68
68
|
result3 = df.select(df.r.a.alias("a_dot")).collect()
|
69
69
|
assert result3[0][0] == 1
|
70
70
|
assert result3[1][0] == 2
|
71
|
+
|
72
|
+
|
73
|
+
def test_contains(get_session: t.Callable[[], _BaseSession], get_func):
|
74
|
+
session = get_session()
|
75
|
+
if session._is_postgres:
|
76
|
+
pytest.skip("Postgres does not support the contains function")
|
77
|
+
lit = get_func("lit", session)
|
78
|
+
df = session.createDataFrame([Row(a="foo"), Row(a="bar")])
|
79
|
+
df_foo = df.select(df.a.contains("foo")).collect()
|
80
|
+
assert df_foo[0][0] is True
|
81
|
+
assert df_foo[1][0] is False
|
82
|
+
df_foo_lit = df.select(df.a.contains(lit("foo"))).collect()
|
83
|
+
assert df_foo_lit[0][0] is True
|
84
|
+
assert df_foo_lit[1][0] is False
|
85
|
+
df_bar = df.select(df.a.contains("bar")).collect()
|
86
|
+
assert df_bar[0][0] is False
|
87
|
+
assert df_bar[1][0] is True
|
88
|
+
df_bar_lit = df.select(df.a.contains(lit("bar"))).collect()
|
89
|
+
assert df_bar_lit[0][0] is False
|
90
|
+
assert df_bar_lit[1][0] is True
|
@@ -172,7 +172,7 @@ def test_col(get_session_and_func, input, output):
|
|
172
172
|
([1, 2, 3], "array<bigint>"),
|
173
173
|
(Row(a=1), "struct<a:bigint>"),
|
174
174
|
(datetime.date(2022, 1, 1), "date"),
|
175
|
-
(datetime.datetime(2022, 1, 1, 0, 0, 0), "
|
175
|
+
(datetime.datetime(2022, 1, 1, 0, 0, 0), "timestampntz"),
|
176
176
|
(datetime.datetime(2022, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc), "timestamptz"),
|
177
177
|
(True, "boolean"),
|
178
178
|
(bytes("test", "utf-8"), "binary"),
|
@@ -188,9 +188,15 @@ def test_typeof(get_session_and_func, get_types, arg, expected):
|
|
188
188
|
if isinstance(session, PySparkSession)
|
189
189
|
else dialect_to_string(session.execution_dialect)
|
190
190
|
)
|
191
|
-
if isinstance(session, (SparkSession, PySparkSession, DatabricksSession)):
|
191
|
+
if isinstance(session, (SparkSession, PySparkSession, DatabricksSession, BigQuerySession)):
|
192
192
|
if expected == "timestamptz":
|
193
193
|
expected = "timestamp"
|
194
|
+
if isinstance(session, PostgresSession):
|
195
|
+
if expected == "timestampntz":
|
196
|
+
expected = "timestamp"
|
197
|
+
if isinstance(session, BigQuerySession):
|
198
|
+
if expected == "timestampntz":
|
199
|
+
expected = "datetime"
|
194
200
|
if isinstance(session, DuckDBSession):
|
195
201
|
if expected == "binary":
|
196
202
|
pytest.skip("DuckDB doesn't support binary")
|
@@ -218,6 +224,10 @@ def test_typeof(get_session_and_func, get_types, arg, expected):
|
|
218
224
|
expected = "object"
|
219
225
|
elif expected.startswith("array"):
|
220
226
|
pytest.skip("Snowflake doesn't handle arrays properly in values clause")
|
227
|
+
# https://github.com/eakmanrq/sqlframe/issues/383#issuecomment-2870750972
|
228
|
+
if isinstance(session, PySparkSession):
|
229
|
+
if expected == "timestampntz":
|
230
|
+
expected = "timestamp"
|
221
231
|
result = df.select(typeof("col").alias("test")).first()[0]
|
222
232
|
assert exp.DataType.build(result, dialect=dialect) == exp.DataType.build(
|
223
233
|
expected, dialect=dialect
|
@@ -1600,8 +1610,8 @@ def test_hash(get_session_and_func):
|
|
1600
1610
|
session, hash = get_session_and_func("hash")
|
1601
1611
|
df = session.createDataFrame([("ABC", "DEF")], ["c1", "c2"])
|
1602
1612
|
if isinstance(session, DuckDBSession):
|
1603
|
-
assert df.select(hash("c1").alias("hash")).first()[0] ==
|
1604
|
-
assert df.select(hash("c1", "c2").alias("hash")).first()[0] ==
|
1613
|
+
assert df.select(hash("c1").alias("hash")).first()[0] == 14760980515311954005
|
1614
|
+
assert df.select(hash("c1", "c2").alias("hash")).first()[0] == 3670181680252885023
|
1605
1615
|
# Bigquery only supports hashing a single column
|
1606
1616
|
elif isinstance(session, BigQuerySession):
|
1607
1617
|
assert df.select(hash("c1").alias("hash")).first()[0] == 228873345217803866
|
@@ -3102,10 +3112,11 @@ def test_try_divide(get_session_and_func, get_func):
|
|
3102
3112
|
session, try_divide = get_session_and_func("try_divide")
|
3103
3113
|
make_interval = get_func("make_interval", session)
|
3104
3114
|
lit = get_func("lit", session)
|
3105
|
-
df = session.createDataFrame([(6000, 15), (1990, 2)], ["a", "b"])
|
3115
|
+
df = session.createDataFrame([(6000, 15), (1990, 2), (100, 0)], ["a", "b"])
|
3106
3116
|
assert df.select(try_divide(df.a, df.b).alias("r")).collect() == [
|
3107
3117
|
Row(r=400.0),
|
3108
3118
|
Row(r=995.0),
|
3119
|
+
Row(r=None),
|
3109
3120
|
]
|
3110
3121
|
df = session.createDataFrame([(1, 2)], ["year", "month"])
|
3111
3122
|
assert (
|
@@ -3505,9 +3516,11 @@ def test_character_length(get_session_and_func, get_func):
|
|
3505
3516
|
|
3506
3517
|
def test_contains(get_session_and_func, get_func):
|
3507
3518
|
session, contains = get_session_and_func("contains")
|
3508
|
-
|
3519
|
+
if isinstance(session, BigQuerySession):
|
3520
|
+
pytest.skip("BigQuery just supports constaints for the contains function")
|
3509
3521
|
df = session.createDataFrame([("Spark SQL", "Spark")], ["a", "b"])
|
3510
3522
|
assert df.select(contains(df.a, df.b).alias("r")).collect() == [Row(r=True)]
|
3523
|
+
to_binary = get_func("to_binary", session)
|
3511
3524
|
df = session.createDataFrame(
|
3512
3525
|
[
|
3513
3526
|
(
|
@@ -4205,10 +4218,12 @@ def test_median(get_session_and_func, get_func):
|
|
4205
4218
|
],
|
4206
4219
|
schema=("course", "year", "earnings"),
|
4207
4220
|
)
|
4208
|
-
assert df.groupby("course").agg(median("earnings")).collect() ==
|
4209
|
-
|
4210
|
-
|
4211
|
-
|
4221
|
+
assert sorted(df.groupby("course").agg(median("earnings")).collect()) == sorted(
|
4222
|
+
[
|
4223
|
+
Row(value1="Java", value2=22000.0),
|
4224
|
+
Row(value1="dotNET", value2=10000.0),
|
4225
|
+
]
|
4226
|
+
)
|
4212
4227
|
|
4213
4228
|
|
4214
4229
|
def test_mode(get_session_and_func, get_func):
|
@@ -3012,8 +3012,11 @@ def test_try_avg(expression, expected):
|
|
3012
3012
|
@pytest.mark.parametrize(
|
3013
3013
|
"expression, expected",
|
3014
3014
|
[
|
3015
|
-
(SF.try_divide("cola", "colb"), "
|
3016
|
-
(
|
3015
|
+
(SF.try_divide("cola", "colb"), "IF(colb <> 0, cola / colb, NULL)"),
|
3016
|
+
(
|
3017
|
+
SF.try_divide(SF.col("cola"), SF.col("colb")),
|
3018
|
+
"IF(colb <> 0, cola / colb, NULL)",
|
3019
|
+
),
|
3017
3020
|
],
|
3018
3021
|
)
|
3019
3022
|
def test_try_divide(expression, expected):
|
@@ -4701,8 +4704,8 @@ def test_unix_date(expression, expected):
|
|
4701
4704
|
@pytest.mark.parametrize(
|
4702
4705
|
"expression, expected",
|
4703
4706
|
[
|
4704
|
-
(SF.unix_micros("cola"), "UNIX_MICROS(cola)"),
|
4705
|
-
(SF.unix_micros(SF.col("cola")), "UNIX_MICROS(cola)"),
|
4707
|
+
(SF.unix_micros("cola"), "UNIX_MICROS(CAST(cola AS TIMESTAMP_LTZ))"),
|
4708
|
+
(SF.unix_micros(SF.col("cola")), "UNIX_MICROS(CAST(cola AS TIMESTAMP_LTZ))"),
|
4706
4709
|
],
|
4707
4710
|
)
|
4708
4711
|
def test_unix_micros(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.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.32.1 → sqlframe-3.33.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.32.1 → sqlframe-3.33.1}/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
|