sqlframe 2.3.0__tar.gz → 2.4.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-2.3.0 → sqlframe-2.4.0}/PKG-INFO +1 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/duckdb.md +0 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/setup.py +1 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/_version.py +2 -2
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/column.py +3 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/function_alternatives.py +24 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/functions.py +1 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/functions.pyi +1 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/functions.py +1 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/functions.pyi +1 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe.egg-info/requires.txt +1 -1
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_int_functions.py +5 -17
- {sqlframe-2.3.0 → sqlframe-2.4.0}/.github/CODEOWNERS +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/.gitignore +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/.pre-commit-config.yaml +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/.readthedocs.yaml +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/LICENSE +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/Makefile +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/README.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/cake.gif +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/bigquery.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/configuration.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/bigquery.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/duckdb.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/images/SF.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/images/favicon.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/docs/postgres.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/images/SF.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/images/favicon.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/images/favicon_old.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/index.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/postgres.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/requirements.txt +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/snowflake.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/spark.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/standalone.md +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/docs/stylesheets/extra.css +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/mkdocs.yml +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/pytest.ini +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/renovate.json +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/setup.cfg +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/LICENSE +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/_typing.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/decorators.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/normalize.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/operations.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/transforms.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/util.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/base/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/postgres/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/redshift/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/spark/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/group.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/standalone/window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe/testing/utils.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/common_fixtures.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/conftest.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/fixtures/employee.csv +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/fixtures/employee.json +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/fixtures.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/test_int_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-2.3.0 → sqlframe-2.4.0}/tests/unit/test_util.py +0 -0
|
@@ -369,7 +369,6 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
369
369
|
* [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
|
|
370
370
|
* [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
|
|
371
371
|
* [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
|
|
372
|
-
* Replaces first match only
|
|
373
372
|
* [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
|
|
374
373
|
* [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
|
|
375
374
|
* Only works on strings (does not work on arrays)
|
|
@@ -339,7 +339,9 @@ class Column:
|
|
|
339
339
|
return Column(new_expression)
|
|
340
340
|
|
|
341
341
|
def cast(
|
|
342
|
-
self,
|
|
342
|
+
self,
|
|
343
|
+
dataType: t.Union[str, DataType, exp.DataType, exp.DataType.Type],
|
|
344
|
+
dialect: t.Optional[t.Union[str, Dialect]] = None,
|
|
343
345
|
) -> Column:
|
|
344
346
|
from sqlframe.base.session import _BaseSession
|
|
345
347
|
|
|
@@ -1593,7 +1593,7 @@ def try_to_timestamp_pgtemp(col: ColumnOrName, format: t.Optional[ColumnOrName]
|
|
|
1593
1593
|
def typeof_pg_typeof(col: ColumnOrName) -> Column:
|
|
1594
1594
|
return (
|
|
1595
1595
|
Column.invoke_anonymous_function(col, "pg_typeof")
|
|
1596
|
-
.cast("regtype", dialect="postgres")
|
|
1596
|
+
.cast(expression.DataType.build("regtype", dialect="postgres"))
|
|
1597
1597
|
.cast("text")
|
|
1598
1598
|
)
|
|
1599
1599
|
|
|
@@ -1603,6 +1603,29 @@ def typeof_from_variant(col: ColumnOrName) -> Column:
|
|
|
1603
1603
|
return Column.invoke_anonymous_function(col, "TYPEOF")
|
|
1604
1604
|
|
|
1605
1605
|
|
|
1606
|
+
def regexp_replace_global_option(
|
|
1607
|
+
str: ColumnOrName, pattern: str, replacement: str, position: t.Optional[int] = None
|
|
1608
|
+
) -> Column:
|
|
1609
|
+
lit = get_func_from_session("lit")
|
|
1610
|
+
|
|
1611
|
+
if position is not None:
|
|
1612
|
+
return Column.invoke_expression_over_column(
|
|
1613
|
+
str,
|
|
1614
|
+
expression.RegexpReplace,
|
|
1615
|
+
expression=lit(pattern),
|
|
1616
|
+
replacement=lit(replacement),
|
|
1617
|
+
position=lit(position),
|
|
1618
|
+
modifiers=lit("g"),
|
|
1619
|
+
)
|
|
1620
|
+
return Column.invoke_expression_over_column(
|
|
1621
|
+
str,
|
|
1622
|
+
expression.RegexpReplace,
|
|
1623
|
+
expression=lit(pattern),
|
|
1624
|
+
replacement=lit(replacement),
|
|
1625
|
+
modifiers=lit("g"),
|
|
1626
|
+
)
|
|
1627
|
+
|
|
1628
|
+
|
|
1606
1629
|
def _is_string_using_typeof_varchar(col: ColumnOrName) -> Column:
|
|
1607
1630
|
typeof = get_func_from_session("typeof")
|
|
1608
1631
|
lit = get_func_from_session("lit")
|
|
@@ -28,6 +28,7 @@ from sqlframe.base.function_alternatives import ( # noqa
|
|
|
28
28
|
sequence_from_generate_series as sequence,
|
|
29
29
|
try_element_at_zero_based as try_element_at,
|
|
30
30
|
to_unix_timestamp_include_default_format as to_unix_timestamp,
|
|
31
|
+
regexp_replace_global_option as regexp_replace,
|
|
31
32
|
)
|
|
32
33
|
from sqlframe.base.functions import (
|
|
33
34
|
abs as abs,
|
|
@@ -156,7 +157,6 @@ from sqlframe.base.functions import (
|
|
|
156
157
|
rank as rank,
|
|
157
158
|
regexp_extract as regexp_extract,
|
|
158
159
|
regexp_like as regexp_like,
|
|
159
|
-
regexp_replace as regexp_replace,
|
|
160
160
|
repeat as repeat,
|
|
161
161
|
reverse as reverse,
|
|
162
162
|
right as right,
|
|
@@ -47,6 +47,7 @@ from sqlframe.base.function_alternatives import ( # noqa
|
|
|
47
47
|
right_cast_len as right,
|
|
48
48
|
position_cast_start as position,
|
|
49
49
|
try_element_at_zero_based as try_element_at,
|
|
50
|
+
regexp_replace_global_option as regexp_replace,
|
|
50
51
|
)
|
|
51
52
|
from sqlframe.base.functions import (
|
|
52
53
|
abs as abs,
|
|
@@ -148,7 +149,6 @@ from sqlframe.base.functions import (
|
|
|
148
149
|
radians as radians,
|
|
149
150
|
rank as rank,
|
|
150
151
|
regexp_like as regexp_like,
|
|
151
|
-
regexp_replace as regexp_replace,
|
|
152
152
|
repeat as repeat,
|
|
153
153
|
reverse as reverse,
|
|
154
154
|
rlike as rlike,
|
|
@@ -1944,23 +1944,11 @@ def test_regexp_replace(get_session_and_func, get_func):
|
|
|
1944
1944
|
session, regexp_replace = get_session_and_func("regexp_replace")
|
|
1945
1945
|
col = get_func("col", session)
|
|
1946
1946
|
df = session.createDataFrame([("100-200", r"(\d+)", "--")], ["str", "pattern", "replacement"])
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
0
|
|
1953
|
-
]
|
|
1954
|
-
== "-----"
|
|
1955
|
-
)
|
|
1956
|
-
else:
|
|
1957
|
-
assert df.select(regexp_replace("str", r"(\d+)", "--").alias("d")).first()[0] == "---200"
|
|
1958
|
-
assert (
|
|
1959
|
-
df.select(regexp_replace("str", col("pattern"), col("replacement")).alias("d")).first()[
|
|
1960
|
-
0
|
|
1961
|
-
]
|
|
1962
|
-
== "---200"
|
|
1963
|
-
)
|
|
1947
|
+
assert df.select(regexp_replace("str", r"(\d+)", "--").alias("d")).first()[0] == "-----"
|
|
1948
|
+
assert (
|
|
1949
|
+
df.select(regexp_replace("str", col("pattern"), col("replacement")).alias("d")).first()[0]
|
|
1950
|
+
== "-----"
|
|
1951
|
+
)
|
|
1964
1952
|
|
|
1965
1953
|
|
|
1966
1954
|
def test_initcap(get_session_and_func):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/bigquery/test_bigquery_session.py
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
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/test_postgres_catalog.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/test_postgres_dataframe.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/postgres/test_postgres_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/redshift/test_redshift_catalog.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/redshift/test_redshift_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py
RENAMED
|
File without changes
|
{sqlframe-2.3.0 → sqlframe-2.4.0}/tests/integration/engines/snowflake/test_snowflake_session.py
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
|