sqlframe 3.39.3__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.3 → sqlframe-3.39.4}/PKG-INFO +1 -1
- {sqlframe-3.39.3 → sqlframe-3.39.4}/setup.py +1 -1
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/_version.py +3 -3
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/dataframe.py +16 -28
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/functions.py +5 -12
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/operations.py +3 -4
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe.egg-info/requires.txt +1 -1
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/test_int_dataframe.py +4 -95
- {sqlframe-3.39.3 → sqlframe-3.39.4}/.github/CODEOWNERS +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/.gitignore +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/.readthedocs.yaml +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/LICENSE +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/Makefile +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/README.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/cake.gif +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/bigquery.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/configuration.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/databricks.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/docs/postgres.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/duckdb.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/images/SF.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/images/favicon.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/index.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/postgres.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/redshift.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/requirements.txt +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/snowflake.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/spark.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/standalone.md +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/mkdocs.yml +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/pytest.ini +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/renovate.json +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/setup.cfg +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/LICENSE +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/util.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/base/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/py.typed +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/common_fixtures.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/conftest.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_int_functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/conftest.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/duck/test_reader_options.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/spark/test_reader_options.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/test_base_reader_options.py +0 -0
- {sqlframe-3.39.3 → sqlframe-3.39.4}/tests/unit/test_catalog.py +0 -0
- {sqlframe-3.39.3 → 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'
|
@@ -16,7 +16,6 @@ from dataclasses import dataclass
|
|
16
16
|
from uuid import uuid4
|
17
17
|
|
18
18
|
import sqlglot
|
19
|
-
from more_itertools import partition
|
20
19
|
from prettytable import PrettyTable
|
21
20
|
from sqlglot import Dialect, maybe_parse
|
22
21
|
from sqlglot import expressions as exp
|
@@ -542,23 +541,16 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
542
541
|
expression.set("with", exp.With(expressions=existing_ctes))
|
543
542
|
return expression
|
544
543
|
|
545
|
-
@classmethod
|
546
|
-
def _get_outer_select_expressions(
|
547
|
-
cls, item: exp.Expression
|
548
|
-
) -> t.List[t.Union[exp.Column, exp.Alias]]:
|
549
|
-
outer_select = item.find(exp.Select)
|
550
|
-
if outer_select:
|
551
|
-
return outer_select.expressions
|
552
|
-
return []
|
553
|
-
|
554
544
|
@classmethod
|
555
545
|
def _get_outer_select_columns(cls, item: exp.Expression) -> t.List[Column]:
|
556
546
|
from sqlframe.base.session import _BaseSession
|
557
547
|
|
558
548
|
col = get_func_from_session("col", _BaseSession())
|
559
549
|
|
560
|
-
|
561
|
-
|
550
|
+
outer_select = item.find(exp.Select)
|
551
|
+
if outer_select:
|
552
|
+
return [col(quote_preserving_alias_or_name(x)) for x in outer_select.expressions]
|
553
|
+
return []
|
562
554
|
|
563
555
|
def _create_hash_from_expression(self, expression: exp.Expression) -> str:
|
564
556
|
from sqlframe.base.session import _BaseSession
|
@@ -1512,23 +1504,20 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1512
1504
|
"""
|
1513
1505
|
return func(self, *args, **kwargs) # type: ignore
|
1514
1506
|
|
1515
|
-
@operation(Operation.
|
1507
|
+
@operation(Operation.SELECT)
|
1516
1508
|
def withColumn(self, colName: str, col: Column) -> Self:
|
1517
1509
|
return self.withColumns.__wrapped__(self, {colName: col}) # type: ignore
|
1518
1510
|
|
1519
|
-
@operation(Operation.
|
1511
|
+
@operation(Operation.SELECT)
|
1520
1512
|
def withColumnRenamed(self, existing: str, new: str) -> Self:
|
1521
|
-
col_func = get_func_from_session("col", self.session)
|
1522
1513
|
expression = self.expression.copy()
|
1523
1514
|
existing = self.session._normalize_string(existing)
|
1524
|
-
|
1515
|
+
columns = self._get_outer_select_columns(expression)
|
1525
1516
|
results = []
|
1526
1517
|
found_match = False
|
1527
|
-
for
|
1528
|
-
column
|
1529
|
-
|
1530
|
-
if isinstance(column.expression, exp.Alias):
|
1531
|
-
column.expression.set("alias", exp.to_identifier(new))
|
1518
|
+
for column in columns:
|
1519
|
+
if column.alias_or_name == existing:
|
1520
|
+
column = column.alias(new)
|
1532
1521
|
self._update_display_name_mapping([column], [new])
|
1533
1522
|
found_match = True
|
1534
1523
|
results.append(column)
|
@@ -1536,7 +1525,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1536
1525
|
raise ValueError("Tried to rename a column that doesn't exist")
|
1537
1526
|
return self.select.__wrapped__(self, *results, skip_update_display_name_mapping=True) # type: ignore
|
1538
1527
|
|
1539
|
-
@operation(Operation.
|
1528
|
+
@operation(Operation.SELECT)
|
1540
1529
|
def withColumnsRenamed(self, colsMap: t.Dict[str, str]) -> Self:
|
1541
1530
|
"""
|
1542
1531
|
Returns a new :class:`DataFrame` by renaming multiple columns. If a non-existing column is
|
@@ -1582,7 +1571,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1582
1571
|
|
1583
1572
|
return self.select.__wrapped__(self, *results, skip_update_display_name_mapping=True) # type: ignore
|
1584
1573
|
|
1585
|
-
@operation(Operation.
|
1574
|
+
@operation(Operation.SELECT)
|
1586
1575
|
def withColumns(self, *colsMap: t.Dict[str, Column]) -> Self:
|
1587
1576
|
"""
|
1588
1577
|
Returns a new :class:`DataFrame` by adding multiple columns or replacing the
|
@@ -1620,14 +1609,13 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1620
1609
|
"""
|
1621
1610
|
if len(colsMap) != 1:
|
1622
1611
|
raise ValueError("Only a single map is supported")
|
1623
|
-
col_func = get_func_from_session("col")
|
1624
1612
|
col_map = {
|
1625
1613
|
self._ensure_and_normalize_col(k): (self._ensure_and_normalize_col(v), k)
|
1626
1614
|
for k, v in colsMap[0].items()
|
1627
1615
|
}
|
1628
|
-
|
1629
|
-
existing_col_names = [x.alias_or_name for x in
|
1630
|
-
select_columns =
|
1616
|
+
existing_cols = self._get_outer_select_columns(self.expression)
|
1617
|
+
existing_col_names = [x.alias_or_name for x in existing_cols]
|
1618
|
+
select_columns = existing_cols
|
1631
1619
|
for col, (col_value, display_name) in col_map.items():
|
1632
1620
|
column_name = col.alias_or_name
|
1633
1621
|
existing_col_index = (
|
@@ -1644,7 +1632,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
1644
1632
|
)
|
1645
1633
|
return self.select.__wrapped__(self, *select_columns, skip_update_display_name_mapping=True) # type: ignore
|
1646
1634
|
|
1647
|
-
@operation(Operation.
|
1635
|
+
@operation(Operation.SELECT)
|
1648
1636
|
def drop(self, *cols: t.Union[str, Column]) -> Self:
|
1649
1637
|
# Separate string column names from Column objects for different handling
|
1650
1638
|
column_objs, column_names = partition_to(lambda x: isinstance(x, str), cols, list, set)
|
@@ -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
|
|
@@ -3378,10 +3372,9 @@ def get(col: ColumnOrName, index: t.Union[ColumnOrName, int]) -> Column:
|
|
3378
3372
|
def get_active_spark_context() -> SparkContext:
|
3379
3373
|
"""Raise RuntimeError if SparkContext is not initialized,
|
3380
3374
|
otherwise, returns the active SparkContext."""
|
3381
|
-
from sqlframe.base.session import _BaseSession
|
3382
3375
|
from sqlframe.spark.session import SparkSession
|
3383
3376
|
|
3384
|
-
session
|
3377
|
+
session = _get_session()
|
3385
3378
|
if not isinstance(session, SparkSession):
|
3386
3379
|
raise RuntimeError("This function is only available in SparkSession.")
|
3387
3380
|
return session.spark_session.sparkContext
|
@@ -6344,7 +6337,7 @@ def to_unix_timestamp(
|
|
6344
6337
|
session = _get_session()
|
6345
6338
|
|
6346
6339
|
if session._is_duckdb:
|
6347
|
-
format = format or
|
6340
|
+
format = format or session.default_time_format
|
6348
6341
|
timestamp = Column.ensure_col(timestamp).cast("string")
|
6349
6342
|
|
6350
6343
|
if format is not None:
|
@@ -27,10 +27,9 @@ class Operation(IntEnum):
|
|
27
27
|
WHERE = 2
|
28
28
|
GROUP_BY = 3
|
29
29
|
HAVING = 4
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
LIMIT = 8
|
30
|
+
SELECT = 5
|
31
|
+
ORDER_BY = 6
|
32
|
+
LIMIT = 7
|
34
33
|
|
35
34
|
|
36
35
|
# We want to decorate a function (self: DF, *args, **kwargs) -> T
|
@@ -1892,97 +1892,6 @@ def test_drop_column_reference_join(
|
|
1892
1892
|
compare_frames(df, dfs, sort=True)
|
1893
1893
|
|
1894
1894
|
|
1895
|
-
# TODO: This test exposes a bug in Spark where the column order is not preserved after a join
|
1896
|
-
# for some reason spark flips foo/bar to bar/foo
|
1897
|
-
# def test_left_join_column_order(
|
1898
|
-
# pyspark_employee: PySparkDataFrame,
|
1899
|
-
# get_df: t.Callable[[str], BaseDataFrame],
|
1900
|
-
# compare_frames: t.Callable,
|
1901
|
-
# ):
|
1902
|
-
# df1 = pyspark_employee.sparkSession.createDataFrame([{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]).alias("df1")
|
1903
|
-
# df2 = pyspark_employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("df2")
|
1904
|
-
# df_joined = df1.join(df2, on=F.col("df1.foo") == F.col("df2.foo"), how="left")
|
1905
|
-
#
|
1906
|
-
# employee = get_df("employee")
|
1907
|
-
# dfs1 = employee.sparkSession.createDataFrame([{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]).alias("dfs1")
|
1908
|
-
# dfs2 = employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("dfs2")
|
1909
|
-
# dfs_joined = dfs1.join(dfs2, on=SF.col("dfs1.foo") == SF.col("dfs2.foo"), how="left")
|
1910
|
-
#
|
1911
|
-
# compare_frames(df_joined, dfs_joined, sort=True)
|
1912
|
-
|
1913
|
-
|
1914
|
-
# def test_drop_column_join_column(
|
1915
|
-
# pyspark_employee: PySparkDataFrame,
|
1916
|
-
# get_df: t.Callable[[str], BaseDataFrame],
|
1917
|
-
# compare_frames: t.Callable,
|
1918
|
-
# ):
|
1919
|
-
# df1 = pyspark_employee.sparkSession.createDataFrame([{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]).alias("df1")
|
1920
|
-
# df2 = pyspark_employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("df2")
|
1921
|
-
# df_joined = df1.join(df2, on=F.col("df1.foo") == F.col("df2.foo"), how="left").drop(F.col("df1.foo"))
|
1922
|
-
#
|
1923
|
-
# employee = get_df("employee")
|
1924
|
-
# dfs1 = employee.sparkSession.createDataFrame([{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]).alias("dfs1")
|
1925
|
-
# dfs2 = employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("dfs2")
|
1926
|
-
# dfs_joined = dfs1.join(dfs2, on=SF.col("dfs1.foo") == SF.col("dfs2.foo"), how="left").drop(SF.col("dfs1.foo"))
|
1927
|
-
#
|
1928
|
-
# compare_frames(df_joined, dfs_joined, sort=True)
|
1929
|
-
|
1930
|
-
|
1931
|
-
def test_drop_column_join_column_df_reference(
|
1932
|
-
pyspark_employee: PySparkDataFrame,
|
1933
|
-
get_df: t.Callable[[str], BaseDataFrame],
|
1934
|
-
compare_frames: t.Callable,
|
1935
|
-
):
|
1936
|
-
df1 = pyspark_employee.sparkSession.createDataFrame( # type: ignore
|
1937
|
-
[{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]
|
1938
|
-
).alias("df1")
|
1939
|
-
df2 = pyspark_employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("df2") # type: ignore
|
1940
|
-
df_joined = (
|
1941
|
-
df1.join(df2, on=F.col("df1.foo") == F.col("df2.foo"), how="left")
|
1942
|
-
.drop(df1.foo)
|
1943
|
-
.select(df1.bar, df2.baz, df2.foo)
|
1944
|
-
)
|
1945
|
-
|
1946
|
-
employee = get_df("employee")
|
1947
|
-
dfs1 = employee.sparkSession.createDataFrame(
|
1948
|
-
[{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]
|
1949
|
-
).alias("dfs1")
|
1950
|
-
dfs2 = employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("dfs2")
|
1951
|
-
dfs_joined = (
|
1952
|
-
dfs1.join(dfs2, on=SF.col("dfs1.foo") == SF.col("dfs2.foo"), how="left")
|
1953
|
-
.drop(dfs1.foo)
|
1954
|
-
.select(dfs1.bar, dfs2.baz, dfs2.foo)
|
1955
|
-
)
|
1956
|
-
|
1957
|
-
compare_frames(df_joined, dfs_joined, sort=True, compare_schema=False)
|
1958
|
-
|
1959
|
-
|
1960
|
-
def test_drop_join_column_unqualified(
|
1961
|
-
pyspark_employee: PySparkDataFrame,
|
1962
|
-
get_df: t.Callable[[str], BaseDataFrame],
|
1963
|
-
compare_frames: t.Callable,
|
1964
|
-
):
|
1965
|
-
df1 = pyspark_employee.sparkSession.createDataFrame( # type: ignore
|
1966
|
-
[{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]
|
1967
|
-
).alias("df1")
|
1968
|
-
df2 = pyspark_employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("df2") # type: ignore
|
1969
|
-
df_joined = (
|
1970
|
-
df1.join(df2, on=F.col("df1.foo") == F.col("df2.foo"), how="left").drop("foo")
|
1971
|
-
# select the columns to work around column order bug
|
1972
|
-
)
|
1973
|
-
|
1974
|
-
employee = get_df("employee")
|
1975
|
-
dfs1 = employee.sparkSession.createDataFrame(
|
1976
|
-
[{"foo": 0, "bar": "a"}, {"foo": 1, "bar": "b"}]
|
1977
|
-
).alias("dfs1")
|
1978
|
-
dfs2 = employee.sparkSession.createDataFrame([{"foo": 0, "baz": 1.5}]).alias("dfs2")
|
1979
|
-
dfs_joined = dfs1.join(dfs2, on=SF.col("dfs1.foo") == SF.col("dfs2.foo"), how="left").drop(
|
1980
|
-
"foo"
|
1981
|
-
)
|
1982
|
-
|
1983
|
-
compare_frames(df_joined, dfs_joined, sort=True, compare_schema=False)
|
1984
|
-
|
1985
|
-
|
1986
1895
|
def test_limit(
|
1987
1896
|
pyspark_employee: PySparkDataFrame,
|
1988
1897
|
get_df: t.Callable[[str], BaseDataFrame],
|
@@ -2258,10 +2167,10 @@ def test_transform(
|
|
2258
2167
|
get_df: t.Callable[[str], BaseDataFrame],
|
2259
2168
|
compare_frames: t.Callable,
|
2260
2169
|
):
|
2261
|
-
def
|
2170
|
+
def cast_all_to_int_pyspark(input_df):
|
2262
2171
|
return input_df.select([F.col(col_name).cast("string") for col_name in input_df.columns])
|
2263
2172
|
|
2264
|
-
def
|
2173
|
+
def cast_all_to_int_sqlframe(input_df):
|
2265
2174
|
return input_df.select([SF.col(col_name).cast("string") for col_name in input_df.columns])
|
2266
2175
|
|
2267
2176
|
def sort_columns_asc(input_df):
|
@@ -2269,8 +2178,8 @@ def test_transform(
|
|
2269
2178
|
|
2270
2179
|
employee = get_df("employee")
|
2271
2180
|
|
2272
|
-
df = pyspark_employee.transform(
|
2273
|
-
dfs = employee.transform(
|
2181
|
+
df = pyspark_employee.transform(cast_all_to_int_pyspark).transform(sort_columns_asc)
|
2182
|
+
dfs = employee.transform(cast_all_to_int_sqlframe).transform(sort_columns_asc)
|
2274
2183
|
compare_frames(df, dfs)
|
2275
2184
|
|
2276
2185
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
File without changes
|
File without changes
|
{sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
File without changes
|
{sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
File without changes
|
{sqlframe-3.39.3 → sqlframe-3.39.4}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
File without changes
|
{sqlframe-3.39.3 → 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
|