sqlframe 3.39.2__tar.gz → 3.39.4__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.39.2 → sqlframe-3.39.4}/PKG-INFO +1 -1
- {sqlframe-3.39.2 → sqlframe-3.39.4}/setup.py +2 -1
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/_version.py +3 -3
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/dataframe.py +25 -8
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/functions.py +9 -12
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/session.py +6 -1
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/util.py +15 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe.egg-info/requires.txt +2 -1
- sqlframe-3.39.4/tests/integration/engines/duck/test_duckdb_session.py +38 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_int_functions.py +11 -1
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_session.py +0 -21
- sqlframe-3.39.2/tests/integration/engines/duck/test_duckdb_session.py +0 -14
- {sqlframe-3.39.2 → sqlframe-3.39.4}/.github/CODEOWNERS +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/.gitignore +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/.readthedocs.yaml +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/LICENSE +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/Makefile +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/README.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/cake.gif +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/bigquery.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/configuration.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/databricks.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/docs/postgres.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/duckdb.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/images/SF.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/images/favicon.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/index.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/postgres.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/redshift.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/requirements.txt +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/snowflake.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/spark.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/standalone.md +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/mkdocs.yml +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/pytest.ini +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/renovate.json +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/setup.cfg +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/LICENSE +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/base/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/py.typed +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/common_fixtures.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/conftest.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/conftest.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/test_catalog.py +0 -0
- {sqlframe-3.39.2 → sqlframe-3.39.4}/tests/unit/test_util.py +0 -0
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
28
28
|
commit_id: COMMIT_ID
|
29
29
|
__commit_id__: COMMIT_ID
|
30
30
|
|
31
|
-
__version__ = version = '3.39.
|
32
|
-
__version_tuple__ = version_tuple = (3, 39,
|
31
|
+
__version__ = version = '3.39.4'
|
32
|
+
__version_tuple__ = version_tuple = (3, 39, 4)
|
33
33
|
|
34
|
-
__commit_id__ = commit_id = '
|
34
|
+
__commit_id__ = commit_id = 'g7103a1e73'
|
@@ -31,6 +31,7 @@ from sqlframe.base.util import (
|
|
31
31
|
get_func_from_session,
|
32
32
|
get_tables_from_expression_with_join,
|
33
33
|
normalize_string,
|
34
|
+
partition_to,
|
34
35
|
quote_preserving_alias_or_name,
|
35
36
|
sqlglot_to_spark,
|
36
37
|
verify_openai_installed,
|
@@ -1633,14 +1634,30 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1633
1634
|
|
1634
1635
|
@operation(Operation.SELECT)
|
1635
1636
|
def drop(self, *cols: t.Union[str, Column]) -> Self:
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1637
|
+
# Separate string column names from Column objects for different handling
|
1638
|
+
column_objs, column_names = partition_to(lambda x: isinstance(x, str), cols, list, set)
|
1639
|
+
|
1640
|
+
# Normalize only the Column objects (strings will be handled as unqualified)
|
1641
|
+
drop_cols = self._ensure_and_normalize_cols(column_objs) if column_objs else []
|
1642
|
+
|
1643
|
+
# Work directly with the expression's select columns to preserve table qualifiers
|
1644
|
+
current_expressions = self.expression.expressions
|
1645
|
+
drop_sql = {drop_col.expression.sql() for drop_col in drop_cols}
|
1646
|
+
|
1647
|
+
# Create a more sophisticated matching function that considers table qualifiers
|
1648
|
+
def should_drop_expression(expr: exp.Expression) -> bool:
|
1649
|
+
# Check against fully qualified Column objects and
|
1650
|
+
# Check against unqualified string column names (drop ALL columns with this name)
|
1651
|
+
if expr.sql() in drop_sql or (
|
1652
|
+
isinstance(expr, exp.Column) and expr.alias_or_name in column_names
|
1653
|
+
):
|
1654
|
+
return True
|
1655
|
+
return False
|
1656
|
+
|
1657
|
+
new_expressions = [expr for expr in current_expressions if not should_drop_expression(expr)]
|
1658
|
+
return self.select.__wrapped__( # type: ignore
|
1659
|
+
self, *new_expressions, skip_update_display_name_mapping=True
|
1660
|
+
)
|
1644
1661
|
|
1645
1662
|
@operation(Operation.LIMIT)
|
1646
1663
|
def limit(self, num: int) -> Self:
|
@@ -37,9 +37,7 @@ def _get_session() -> _BaseSession:
|
|
37
37
|
|
38
38
|
@meta()
|
39
39
|
def col(column_name: t.Union[ColumnOrName, t.Any]) -> Column:
|
40
|
-
|
41
|
-
|
42
|
-
dialect = _BaseSession().input_dialect
|
40
|
+
dialect = _get_session().input_dialect
|
43
41
|
if isinstance(column_name, str):
|
44
42
|
col_expression = expression.to_column(column_name, dialect=dialect).transform(
|
45
43
|
dialect.normalize_identifier
|
@@ -662,9 +660,7 @@ def grouping_id(*cols: ColumnOrName) -> Column:
|
|
662
660
|
|
663
661
|
@meta()
|
664
662
|
def input_file_name() -> Column:
|
665
|
-
|
666
|
-
|
667
|
-
return Column(expression.Literal.string(_BaseSession()._last_loaded_file or ""))
|
663
|
+
return Column(expression.Literal.string(_get_session()._last_loaded_file or ""))
|
668
664
|
|
669
665
|
|
670
666
|
@meta()
|
@@ -959,12 +955,10 @@ def current_timestamp() -> Column:
|
|
959
955
|
|
960
956
|
@meta()
|
961
957
|
def date_format(col: ColumnOrName, format: str) -> Column:
|
962
|
-
from sqlframe.base.session import _BaseSession
|
963
|
-
|
964
958
|
return Column.invoke_expression_over_column(
|
965
959
|
Column(expression.TimeStrToTime(this=Column.ensure_col(col).column_expression)),
|
966
960
|
expression.TimeToStr,
|
967
|
-
format=
|
961
|
+
format=_get_session().format_time(format),
|
968
962
|
)
|
969
963
|
|
970
964
|
|
@@ -1450,6 +1444,9 @@ def unix_timestamp(
|
|
1450
1444
|
|
1451
1445
|
session = _get_session()
|
1452
1446
|
|
1447
|
+
if session._is_duckdb or session._is_postgres or session._is_snowflake or session._is_bigquery:
|
1448
|
+
timestamp = Column.ensure_col(timestamp).cast("string")
|
1449
|
+
|
1453
1450
|
if session._is_bigquery:
|
1454
1451
|
return unix_timestamp_bgutil(timestamp, format)
|
1455
1452
|
|
@@ -3375,10 +3372,9 @@ def get(col: ColumnOrName, index: t.Union[ColumnOrName, int]) -> Column:
|
|
3375
3372
|
def get_active_spark_context() -> SparkContext:
|
3376
3373
|
"""Raise RuntimeError if SparkContext is not initialized,
|
3377
3374
|
otherwise, returns the active SparkContext."""
|
3378
|
-
from sqlframe.base.session import _BaseSession
|
3379
3375
|
from sqlframe.spark.session import SparkSession
|
3380
3376
|
|
3381
|
-
session
|
3377
|
+
session = _get_session()
|
3382
3378
|
if not isinstance(session, SparkSession):
|
3383
3379
|
raise RuntimeError("This function is only available in SparkSession.")
|
3384
3380
|
return session.spark_session.sparkContext
|
@@ -6341,7 +6337,8 @@ def to_unix_timestamp(
|
|
6341
6337
|
session = _get_session()
|
6342
6338
|
|
6343
6339
|
if session._is_duckdb:
|
6344
|
-
format = format or
|
6340
|
+
format = format or session.default_time_format
|
6341
|
+
timestamp = Column.ensure_col(timestamp).cast("string")
|
6345
6342
|
|
6346
6343
|
if format is not None:
|
6347
6344
|
return Column.invoke_expression_over_column(
|
@@ -179,7 +179,7 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
179
179
|
return self._table(self, *args, **kwargs)
|
180
180
|
|
181
181
|
def __new__(cls, *args, **kwargs):
|
182
|
-
if _BaseSession._instance is None:
|
182
|
+
if _BaseSession._instance is None or not isinstance(_BaseSession._instance, cls):
|
183
183
|
_BaseSession._instance = super().__new__(cls)
|
184
184
|
return _BaseSession._instance
|
185
185
|
|
@@ -194,6 +194,11 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
194
194
|
def getActiveSession(self) -> Self:
|
195
195
|
return self
|
196
196
|
|
197
|
+
def stop(self) -> None:
|
198
|
+
if connection := getattr(self, "_connection", None):
|
199
|
+
connection.close()
|
200
|
+
_BaseSession._instance = None
|
201
|
+
|
197
202
|
def range(
|
198
203
|
self,
|
199
204
|
start: int,
|
@@ -6,6 +6,7 @@ import string
|
|
6
6
|
import typing as t
|
7
7
|
import unicodedata
|
8
8
|
|
9
|
+
from more_itertools import partition
|
9
10
|
from sqlglot import expressions as exp
|
10
11
|
from sqlglot import parse_one, to_table
|
11
12
|
from sqlglot.dialects import DuckDB
|
@@ -537,3 +538,17 @@ def is_relativedelta_like(value: t.Any) -> bool:
|
|
537
538
|
and hasattr(value, "weeks")
|
538
539
|
and hasattr(value, "leapdays")
|
539
540
|
)
|
541
|
+
|
542
|
+
|
543
|
+
T = t.TypeVar("T")
|
544
|
+
R1 = t.TypeVar("R1")
|
545
|
+
R2 = t.TypeVar("R2")
|
546
|
+
|
547
|
+
|
548
|
+
def partition_to(
|
549
|
+
pred: t.Callable[[T], bool],
|
550
|
+
iterable: t.Iterable[T],
|
551
|
+
result1: t.Type[R1],
|
552
|
+
result2: t.Type[R2],
|
553
|
+
) -> tuple[R1, R2]:
|
554
|
+
return (lambda x, y: (result1(x), result2(y)))(*partition(pred, iterable)) # type: ignore
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import pytest
|
2
|
+
from duckdb.duckdb import ConnectionException
|
3
|
+
from sqlglot import exp
|
4
|
+
|
5
|
+
from sqlframe.base.types import Row
|
6
|
+
from sqlframe.duckdb.session import DuckDBSession
|
7
|
+
|
8
|
+
pytest_plugins = ["tests.common_fixtures"]
|
9
|
+
|
10
|
+
|
11
|
+
def test_session_from_config():
|
12
|
+
import duckdb
|
13
|
+
|
14
|
+
conn = duckdb.connect()
|
15
|
+
conn.execute("CREATE TABLE test_table (cola INT, colb STRING)")
|
16
|
+
session = DuckDBSession.builder.config("sqlframe.conn", conn).getOrCreate()
|
17
|
+
columns = session.catalog.get_columns("test_table")
|
18
|
+
assert columns == {"cola": exp.DataType.build("INT"), "colb": exp.DataType.build("TEXT")}
|
19
|
+
assert session.execution_dialect_name == "duckdb"
|
20
|
+
|
21
|
+
|
22
|
+
@pytest.mark.forked
|
23
|
+
def test_session_stop(duckdb_session: DuckDBSession):
|
24
|
+
assert duckdb_session.range(1, 2).collect() == [Row(id=1)]
|
25
|
+
duckdb_session.stop()
|
26
|
+
with pytest.raises(ConnectionException):
|
27
|
+
duckdb_session.range(1, 10).collect()
|
28
|
+
|
29
|
+
|
30
|
+
@pytest.mark.forked
|
31
|
+
def test_session_new_session(duckdb_session: DuckDBSession):
|
32
|
+
# Remove old session
|
33
|
+
assert duckdb_session.range(1, 2).collect() == [Row(id=1)]
|
34
|
+
duckdb_session.stop()
|
35
|
+
new_session = DuckDBSession.builder.getOrCreate()
|
36
|
+
assert new_session is not duckdb_session
|
37
|
+
assert isinstance(new_session, DuckDBSession)
|
38
|
+
assert new_session.range(1, 2).collect() == [Row(id=1)]
|
@@ -1502,11 +1502,15 @@ def test_from_unixtime(get_session_and_func):
|
|
1502
1502
|
assert df.select(from_unixtime("unix_time").alias("ts")).first()[0] == expected
|
1503
1503
|
|
1504
1504
|
|
1505
|
-
def test_unix_timestamp(get_session_and_func):
|
1505
|
+
def test_unix_timestamp(get_session_and_func, get_func):
|
1506
1506
|
session, unix_timestamp = get_session_and_func("unix_timestamp")
|
1507
1507
|
df = session.createDataFrame([("2015-04-08",)], ["dt"])
|
1508
1508
|
result = df.select(unix_timestamp("dt", "yyyy-MM-dd").alias("unix_time")).first()[0]
|
1509
1509
|
assert result == 1428451200
|
1510
|
+
ts_type = "TIMESTAMP" if isinstance(session, PySparkSession) else "TIMESTAMPNTZ"
|
1511
|
+
df = session.createDataFrame([(datetime.datetime(2015, 4, 8),)], schema=f"ts {ts_type}")
|
1512
|
+
result = df.select(unix_timestamp("ts").alias("unix_time")).first()[0]
|
1513
|
+
assert result == 1428451200
|
1510
1514
|
|
1511
1515
|
|
1512
1516
|
def test_from_utc_timestamp(get_session_and_func):
|
@@ -5003,6 +5007,12 @@ def test_to_unix_timestamp(get_session_and_func, get_func):
|
|
5003
5007
|
else:
|
5004
5008
|
df = session.createDataFrame([("2016-04-08",)], ["e"])
|
5005
5009
|
assert df.select(to_unix_timestamp(df.e).alias("r")).collect() == [Row(r=None)]
|
5010
|
+
ts_type = "TIMESTAMP" if isinstance(session, PySparkSession) else "TIMESTAMPNTZ"
|
5011
|
+
df = session.createDataFrame([(datetime.datetime(2015, 4, 8),)], schema=f"ts {ts_type}")
|
5012
|
+
result = df.select(
|
5013
|
+
to_unix_timestamp("ts", lit("yyyy-MM-dd HH:mm:ss")).alias("unix_time")
|
5014
|
+
).first()[0]
|
5015
|
+
assert result == 1428451200
|
5006
5016
|
|
5007
5017
|
|
5008
5018
|
def test_to_varchar(get_session_and_func, get_func):
|
@@ -136,24 +136,3 @@ def test_sql_insert(standalone_session: StandaloneSession, compare_sql: t.Callab
|
|
136
136
|
|
137
137
|
def test_session_create_builder_patterns():
|
138
138
|
assert StandaloneSession.builder.appName("abc").getOrCreate() == StandaloneSession()
|
139
|
-
|
140
|
-
|
141
|
-
# @pytest.mark.parametrize(
|
142
|
-
# "input, expected",
|
143
|
-
# [
|
144
|
-
# (
|
145
|
-
# StandaloneSession._to_row(["a"], [1]),
|
146
|
-
# types.Row(a=1),
|
147
|
-
# ),
|
148
|
-
# (
|
149
|
-
# StandaloneSession._to_row(["a", "b"], [1, 2]),
|
150
|
-
# types.Row(a=1, b=2),
|
151
|
-
# ),
|
152
|
-
# (
|
153
|
-
# StandaloneSession._to_row(["a", "a"], [1, 2]),
|
154
|
-
# types.Row(a=1, a=2),
|
155
|
-
# ),
|
156
|
-
# ],
|
157
|
-
# )
|
158
|
-
# def test_to_row(input, expected):
|
159
|
-
# assert input == expected
|
@@ -1,14 +0,0 @@
|
|
1
|
-
from sqlglot import exp
|
2
|
-
|
3
|
-
from sqlframe.duckdb.session import DuckDBSession
|
4
|
-
|
5
|
-
|
6
|
-
def test_session_from_config():
|
7
|
-
import duckdb
|
8
|
-
|
9
|
-
conn = duckdb.connect()
|
10
|
-
conn.execute("CREATE TABLE test_table (cola INT, colb STRING)")
|
11
|
-
session = DuckDBSession.builder.config("sqlframe.conn", conn).getOrCreate()
|
12
|
-
columns = session.catalog.get_columns("test_table")
|
13
|
-
assert columns == {"cola": exp.DataType.build("INT"), "colb": exp.DataType.build("TEXT")}
|
14
|
-
assert session.execution_dialect_name == "duckdb"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.39.2 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.39.2 → sqlframe-3.39.4}/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
|