sqlframe 3.16.0__tar.gz → 3.17.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlframe-3.16.0 → sqlframe-3.17.0}/Makefile +2 -11
- {sqlframe-3.16.0 → sqlframe-3.17.0}/PKG-INFO +1 -1
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/_version.py +2 -2
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/column.py +1 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/dataframe.py +68 -22
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/functions.py +12 -4
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/session.py +7 -2
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/session.py +12 -11
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_engine_dataframe.py +36 -14
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_int_functions.py +1 -1
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/test_int_dataframe.py +10 -1
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_dataframe.py +2 -2
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_dataframe_writer.py +1 -1
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_session_case_sensitivity.py +2 -2
- {sqlframe-3.16.0 → sqlframe-3.17.0}/.github/CODEOWNERS +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/.gitignore +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/.readthedocs.yaml +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/LICENSE +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/README.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/cake.gif +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/bigquery.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/configuration.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/databricks.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/docs/postgres.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/duckdb.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/images/SF.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/images/favicon.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/index.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/postgres.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/redshift.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/requirements.txt +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/snowflake.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/spark.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/standalone.md +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/mkdocs.yml +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/pytest.ini +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/renovate.json +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/setup.cfg +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/setup.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/LICENSE +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/function_alternatives.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/util.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/base/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/common_fixtures.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/conftest.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/conftest.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_functions.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.16.0 → sqlframe-3.17.0}/tests/unit/test_util.py +0 -0
|
@@ -13,17 +13,8 @@ fast-test:
|
|
|
13
13
|
local-test:
|
|
14
14
|
pytest -n auto -m "fast or local"
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
pytest -n auto -m "
|
|
18
|
-
|
|
19
|
-
duckdb-test:
|
|
20
|
-
pytest -n auto -m "duckdb"
|
|
21
|
-
|
|
22
|
-
snowflake-test:
|
|
23
|
-
pytest -n auto -m "snowflake"
|
|
24
|
-
|
|
25
|
-
databricks-test:
|
|
26
|
-
pytest -n auto -m "databricks"
|
|
16
|
+
%-test:
|
|
17
|
+
pytest -n auto -m "${*}"
|
|
27
18
|
|
|
28
19
|
style:
|
|
29
20
|
pre-commit run --all-files
|
|
@@ -291,6 +291,7 @@ class Column:
|
|
|
291
291
|
this=self.column_expression,
|
|
292
292
|
alias=alias.this if isinstance(alias, exp.Column) else alias,
|
|
293
293
|
)
|
|
294
|
+
new_expression._meta = {"display_name": name, **(new_expression._meta or {})}
|
|
294
295
|
return Column(new_expression)
|
|
295
296
|
|
|
296
297
|
def asc(self) -> Column:
|
|
@@ -233,6 +233,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
233
233
|
last_op: Operation = Operation.INIT,
|
|
234
234
|
pending_hints: t.Optional[t.List[exp.Expression]] = None,
|
|
235
235
|
output_expression_container: t.Optional[OutputExpressionContainer] = None,
|
|
236
|
+
display_name_mapping: t.Optional[t.Dict[str, str]] = None,
|
|
236
237
|
**kwargs,
|
|
237
238
|
):
|
|
238
239
|
self.session = session
|
|
@@ -246,6 +247,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
246
247
|
self.pending_hints = pending_hints or []
|
|
247
248
|
self.output_expression_container = output_expression_container or exp.Select()
|
|
248
249
|
self.temp_views: t.List[exp.Select] = []
|
|
250
|
+
self.display_name_mapping = display_name_mapping or {}
|
|
249
251
|
|
|
250
252
|
def __getattr__(self, column_name: str) -> Column:
|
|
251
253
|
return self[column_name]
|
|
@@ -385,13 +387,14 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
385
387
|
return Column.ensure_cols(ensure_list(cols)) # type: ignore
|
|
386
388
|
|
|
387
389
|
def _ensure_and_normalize_cols(
|
|
388
|
-
self, cols, expression: t.Optional[exp.Select] = None
|
|
390
|
+
self, cols, expression: t.Optional[exp.Select] = None, skip_star_expansion: bool = False
|
|
389
391
|
) -> t.List[Column]:
|
|
390
392
|
from sqlframe.base.normalize import normalize
|
|
391
393
|
|
|
392
394
|
cols = self._ensure_list_of_columns(cols)
|
|
393
395
|
normalize(self.session, expression or self.expression, cols)
|
|
394
|
-
|
|
396
|
+
if not skip_star_expansion:
|
|
397
|
+
cols = list(flatten([self._expand_star(col) for col in cols]))
|
|
395
398
|
self._resolve_ambiguous_columns(cols)
|
|
396
399
|
return cols
|
|
397
400
|
|
|
@@ -592,6 +595,23 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
592
595
|
)
|
|
593
596
|
return [col]
|
|
594
597
|
|
|
598
|
+
def _update_display_name_mapping(
|
|
599
|
+
self, normalized_columns: t.List[Column], user_input: t.Iterable[ColumnOrName]
|
|
600
|
+
) -> None:
|
|
601
|
+
from sqlframe.base.column import Column
|
|
602
|
+
|
|
603
|
+
normalized_aliases = [x.alias_or_name for x in normalized_columns]
|
|
604
|
+
user_display_names = [
|
|
605
|
+
x.expression.meta.get("display_name") if isinstance(x, Column) else x
|
|
606
|
+
for x in user_input
|
|
607
|
+
]
|
|
608
|
+
zipped = {
|
|
609
|
+
k: v
|
|
610
|
+
for k, v in dict(zip(normalized_aliases, user_display_names)).items()
|
|
611
|
+
if v is not None
|
|
612
|
+
}
|
|
613
|
+
self.display_name_mapping.update(zipped)
|
|
614
|
+
|
|
595
615
|
def _get_expressions(
|
|
596
616
|
self,
|
|
597
617
|
optimize: bool = True,
|
|
@@ -611,6 +631,16 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
611
631
|
select_expression = select_expression.transform(
|
|
612
632
|
replace_id_value, replacement_mapping
|
|
613
633
|
).assert_is(exp.Select)
|
|
634
|
+
for index, column in enumerate(select_expression.expressions):
|
|
635
|
+
column_name = quote_preserving_alias_or_name(column)
|
|
636
|
+
if column_name in self.display_name_mapping:
|
|
637
|
+
display_name_identifier = exp.to_identifier(
|
|
638
|
+
self.display_name_mapping[column_name], quoted=True
|
|
639
|
+
)
|
|
640
|
+
display_name_identifier._meta = {"case_sensitive": True, **(column._meta or {})}
|
|
641
|
+
select_expression.expressions[index] = exp.alias_(
|
|
642
|
+
column.unalias(), display_name_identifier, quoted=True
|
|
643
|
+
)
|
|
614
644
|
if optimize:
|
|
615
645
|
select_expression = t.cast(
|
|
616
646
|
exp.Select,
|
|
@@ -803,6 +833,17 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
803
833
|
if isinstance(cols[0], list):
|
|
804
834
|
cols = cols[0] # type: ignore
|
|
805
835
|
columns = self._ensure_and_normalize_cols(cols)
|
|
836
|
+
if "skip_update_display_name_mapping" not in kwargs:
|
|
837
|
+
unexpanded_columns = self._ensure_and_normalize_cols(cols, skip_star_expansion=True)
|
|
838
|
+
user_cols = list(cols)
|
|
839
|
+
star_columns = []
|
|
840
|
+
for index, user_col in enumerate(cols):
|
|
841
|
+
if "*" in (user_col if isinstance(user_col, str) else user_col.alias_or_name):
|
|
842
|
+
star_columns.append(index)
|
|
843
|
+
for index in star_columns:
|
|
844
|
+
unexpanded_columns.pop(index)
|
|
845
|
+
user_cols.pop(index)
|
|
846
|
+
self._update_display_name_mapping(unexpanded_columns, user_cols)
|
|
806
847
|
kwargs["append"] = kwargs.get("append", False)
|
|
807
848
|
# If an expression is `CAST(x AS DATETYPE)` then we want to alias so that `x` is the result column name
|
|
808
849
|
columns = [
|
|
@@ -852,6 +893,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
852
893
|
@operation(Operation.SELECT)
|
|
853
894
|
def agg(self, *exprs, **kwargs) -> Self:
|
|
854
895
|
cols = self._ensure_and_normalize_cols(exprs)
|
|
896
|
+
self._update_display_name_mapping(cols, exprs)
|
|
855
897
|
return self.groupBy().agg(*cols)
|
|
856
898
|
|
|
857
899
|
@operation(Operation.FROM)
|
|
@@ -1051,7 +1093,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1051
1093
|
new_df = self.copy(expression=join_expression)
|
|
1052
1094
|
new_df.pending_join_hints.extend(self.pending_join_hints)
|
|
1053
1095
|
new_df.pending_hints.extend(other_df.pending_hints)
|
|
1054
|
-
new_df = new_df.select.__wrapped__(
|
|
1096
|
+
new_df = new_df.select.__wrapped__( # type: ignore
|
|
1097
|
+
new_df, *select_column_names, skip_update_display_name_mapping=True
|
|
1098
|
+
)
|
|
1055
1099
|
return new_df
|
|
1056
1100
|
|
|
1057
1101
|
@operation(Operation.ORDER_BY)
|
|
@@ -1441,20 +1485,18 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1441
1485
|
def withColumnRenamed(self, existing: str, new: str) -> Self:
|
|
1442
1486
|
expression = self.expression.copy()
|
|
1443
1487
|
existing = self.session._normalize_string(existing)
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
if
|
|
1449
|
-
|
|
1450
|
-
|
|
1488
|
+
columns = self._get_outer_select_columns(expression)
|
|
1489
|
+
results = []
|
|
1490
|
+
found_match = False
|
|
1491
|
+
for column in columns:
|
|
1492
|
+
if column.alias_or_name == existing:
|
|
1493
|
+
column = column.alias(new)
|
|
1494
|
+
self._update_display_name_mapping([column], [new])
|
|
1495
|
+
found_match = True
|
|
1496
|
+
results.append(column)
|
|
1497
|
+
if not found_match:
|
|
1451
1498
|
raise ValueError("Tried to rename a column that doesn't exist")
|
|
1452
|
-
|
|
1453
|
-
if isinstance(existing_column, exp.Column):
|
|
1454
|
-
existing_column.replace(exp.alias_(existing_column, new))
|
|
1455
|
-
else:
|
|
1456
|
-
existing_column.set("alias", exp.to_identifier(new))
|
|
1457
|
-
return self.copy(expression=expression)
|
|
1499
|
+
return self.select.__wrapped__(self, *results, skip_update_display_name_mapping=True) # type: ignore
|
|
1458
1500
|
|
|
1459
1501
|
@operation(Operation.SELECT)
|
|
1460
1502
|
def withColumns(self, *colsMap: t.Dict[str, Column]) -> Self:
|
|
@@ -1495,23 +1537,27 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
|
|
|
1495
1537
|
if len(colsMap) != 1:
|
|
1496
1538
|
raise ValueError("Only a single map is supported")
|
|
1497
1539
|
col_map = {
|
|
1498
|
-
self._ensure_and_normalize_col(k)
|
|
1540
|
+
self._ensure_and_normalize_col(k): (self._ensure_and_normalize_col(v), k)
|
|
1499
1541
|
for k, v in colsMap[0].items()
|
|
1500
1542
|
}
|
|
1501
1543
|
existing_cols = self._get_outer_select_columns(self.expression)
|
|
1502
1544
|
existing_col_names = [x.alias_or_name for x in existing_cols]
|
|
1503
1545
|
select_columns = existing_cols
|
|
1504
|
-
for
|
|
1546
|
+
for col, (col_value, display_name) in col_map.items():
|
|
1547
|
+
column_name = col.alias_or_name
|
|
1505
1548
|
existing_col_index = (
|
|
1506
1549
|
existing_col_names.index(column_name) if column_name in existing_col_names else None
|
|
1507
1550
|
)
|
|
1508
1551
|
if existing_col_index is not None:
|
|
1509
1552
|
select_columns[existing_col_index] = col_value.alias( # type: ignore
|
|
1510
|
-
|
|
1511
|
-
)
|
|
1553
|
+
display_name
|
|
1554
|
+
)
|
|
1512
1555
|
else:
|
|
1513
|
-
select_columns.append(col_value.alias(
|
|
1514
|
-
|
|
1556
|
+
select_columns.append(col_value.alias(display_name))
|
|
1557
|
+
self._update_display_name_mapping(
|
|
1558
|
+
[col for col in col_map], [name for _, name in col_map.values()]
|
|
1559
|
+
)
|
|
1560
|
+
return self.select.__wrapped__(self, *select_columns, skip_update_display_name_mapping=True) # type: ignore
|
|
1515
1561
|
|
|
1516
1562
|
@operation(Operation.SELECT)
|
|
1517
1563
|
def drop(self, *cols: t.Union[str, Column]) -> Self:
|
|
@@ -39,11 +39,19 @@ def col(column_name: t.Union[ColumnOrName, t.Any]) -> Column:
|
|
|
39
39
|
|
|
40
40
|
dialect = _BaseSession().input_dialect
|
|
41
41
|
if isinstance(column_name, str):
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
dialect.normalize_identifier
|
|
45
|
-
)
|
|
42
|
+
col_expression = expression.to_column(column_name, dialect=dialect).transform(
|
|
43
|
+
dialect.normalize_identifier
|
|
46
44
|
)
|
|
45
|
+
case_sensitive_expression = expression.to_column(column_name, dialect=dialect)
|
|
46
|
+
if not isinstance(
|
|
47
|
+
case_sensitive_expression, (expression.Star, expression.Literal, expression.Null)
|
|
48
|
+
):
|
|
49
|
+
col_expression._meta = {
|
|
50
|
+
"display_name": case_sensitive_expression.this.this,
|
|
51
|
+
**(col_expression._meta or {}),
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return Column(col_expression)
|
|
47
55
|
return Column(column_name)
|
|
48
56
|
|
|
49
57
|
|
|
@@ -507,9 +507,14 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
507
507
|
result = self._cur.fetchall()
|
|
508
508
|
if not self._cur.description:
|
|
509
509
|
return []
|
|
510
|
+
case_sensitive_cols = []
|
|
511
|
+
for col in self._cur.description:
|
|
512
|
+
col_id = exp.parse_identifier(col[0], dialect=self.execution_dialect)
|
|
513
|
+
col_id._meta = {"case_sensitive": True, **(col_id._meta or {})}
|
|
514
|
+
case_sensitive_cols.append(col_id)
|
|
510
515
|
columns = [
|
|
511
|
-
normalize_string(x
|
|
512
|
-
for x in
|
|
516
|
+
normalize_string(x, from_dialect="execution", to_dialect="output")
|
|
517
|
+
for x in case_sensitive_cols
|
|
513
518
|
]
|
|
514
519
|
return [self._to_row(columns, row) for row in result]
|
|
515
520
|
|
|
@@ -79,17 +79,18 @@ class SparkSession(
|
|
|
79
79
|
if skip_rows:
|
|
80
80
|
return []
|
|
81
81
|
assert self._last_df is not None
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
results = []
|
|
83
|
+
for row in self._last_df.collect():
|
|
84
|
+
rows_normalized = {}
|
|
85
|
+
for k, v in row.asDict().items():
|
|
86
|
+
col_id = exp.parse_identifier(k, dialect=self.execution_dialect)
|
|
87
|
+
col_id._meta = {"case_sensitive": True, **(col_id._meta or {})}
|
|
88
|
+
col_name = normalize_string(
|
|
89
|
+
col_id, from_dialect="execution", to_dialect="output", is_column=True
|
|
90
|
+
)
|
|
91
|
+
rows_normalized[col_name] = v
|
|
92
|
+
results.append(Row(**rows_normalized))
|
|
93
|
+
return results
|
|
93
94
|
|
|
94
95
|
def _execute(self, sql: str) -> None:
|
|
95
96
|
self._last_df = self.spark_session.sql(sql)
|
|
@@ -3,6 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
import typing as t
|
|
4
4
|
|
|
5
5
|
from sqlframe.base.types import Row
|
|
6
|
+
from sqlframe.snowflake import SnowflakeSession
|
|
7
|
+
from sqlframe.spark import SparkSession
|
|
6
8
|
|
|
7
9
|
if t.TYPE_CHECKING:
|
|
8
10
|
from sqlframe.base.dataframe import BaseDataFrame
|
|
@@ -31,20 +33,30 @@ def test_show(
|
|
|
31
33
|
):
|
|
32
34
|
employee = get_engine_df("employee")
|
|
33
35
|
lit = get_func("lit", employee.session)
|
|
34
|
-
|
|
36
|
+
col = get_func("col", employee.session)
|
|
37
|
+
employee = (
|
|
38
|
+
employee.select("EmPloyee_Id", "fname", "lnamE", "AGE", "stoRe_iD", lit(1).alias("One"))
|
|
39
|
+
.withColumnRenamed("sToRe_id", "SToRE_Id")
|
|
40
|
+
.withColumns(
|
|
41
|
+
{
|
|
42
|
+
"lNamE": col("lname"),
|
|
43
|
+
"tWo": lit(2),
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
)
|
|
35
47
|
employee.show()
|
|
36
48
|
captured = capsys.readouterr()
|
|
37
49
|
assert (
|
|
38
50
|
captured.out
|
|
39
|
-
== """
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
| 1 | Jack | Shephard | 37 | 1 | 1 |
|
|
43
|
-
| 2 | John | Locke | 65 | 1 | 1 |
|
|
44
|
-
| 3 | Kate | Austen | 37 | 2 | 1 |
|
|
45
|
-
| 4 | Claire | Littleton | 27 | 2 | 1 |
|
|
46
|
-
| 5 | Hugo | Reyes | 29 | 100 | 1 |
|
|
47
|
-
|
|
51
|
+
== """+-------------+--------+-----------+-----+----------+-----+-----+
|
|
52
|
+
| EmPloyee_Id | fname | lNamE | AGE | SToRE_Id | One | tWo |
|
|
53
|
+
+-------------+--------+-----------+-----+----------+-----+-----+
|
|
54
|
+
| 1 | Jack | Shephard | 37 | 1 | 1 | 2 |
|
|
55
|
+
| 2 | John | Locke | 65 | 1 | 1 | 2 |
|
|
56
|
+
| 3 | Kate | Austen | 37 | 2 | 1 | 2 |
|
|
57
|
+
| 4 | Claire | Littleton | 27 | 2 | 1 | 2 |
|
|
58
|
+
| 5 | Hugo | Reyes | 29 | 100 | 1 | 2 |
|
|
59
|
+
+-------------+--------+-----------+-----+----------+-----+-----+\n"""
|
|
48
60
|
)
|
|
49
61
|
assert "Truncate is ignored so full results will be displayed" not in caplog.text
|
|
50
62
|
employee.show(truncate=True)
|
|
@@ -58,11 +70,21 @@ def test_show_limit(
|
|
|
58
70
|
employee = get_engine_df("employee")
|
|
59
71
|
employee.show(1)
|
|
60
72
|
captured = capsys.readouterr()
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
if isinstance(employee.session, SnowflakeSession):
|
|
74
|
+
assert (
|
|
75
|
+
captured.out
|
|
76
|
+
== """+-------------+-------+----------+-----+----------+
|
|
77
|
+
| EMPLOYEE_ID | FNAME | LNAME | AGE | STORE_ID |
|
|
78
|
+
+-------------+-------+----------+-----+----------+
|
|
79
|
+
| 1 | Jack | Shephard | 37 | 1 |
|
|
80
|
+
+-------------+-------+----------+-----+----------+\n"""
|
|
81
|
+
)
|
|
82
|
+
else:
|
|
83
|
+
assert (
|
|
84
|
+
captured.out
|
|
85
|
+
== """+-------------+-------+----------+-----+----------+
|
|
64
86
|
| employee_id | fname | lname | age | store_id |
|
|
65
87
|
+-------------+-------+----------+-----+----------+
|
|
66
88
|
| 1 | Jack | Shephard | 37 | 1 |
|
|
67
89
|
+-------------+-------+----------+-----+----------+\n"""
|
|
68
|
-
|
|
90
|
+
)
|
|
@@ -9,7 +9,7 @@ from pyspark.sql import functions as F
|
|
|
9
9
|
|
|
10
10
|
from sqlframe.standalone import functions as SF
|
|
11
11
|
from sqlframe.standalone.dataframe import StandaloneDataFrame
|
|
12
|
-
from tests.integration.fixtures import StandaloneSession
|
|
12
|
+
from tests.integration.fixtures import StandaloneSession, is_snowflake
|
|
13
13
|
|
|
14
14
|
if t.TYPE_CHECKING:
|
|
15
15
|
from sqlframe.base.dataframe import BaseDataFrame
|
|
@@ -1780,6 +1780,7 @@ def test_with_columns_reference_another(
|
|
|
1780
1780
|
compare_frames: t.Callable,
|
|
1781
1781
|
is_bigquery: t.Callable,
|
|
1782
1782
|
is_postgres: t.Callable,
|
|
1783
|
+
is_snowflake: t.Callable,
|
|
1783
1784
|
):
|
|
1784
1785
|
# Could consider two options:
|
|
1785
1786
|
# 1. Use SQLGlot optimizer to properly change the references to be expanded to avoid the issue (a rule already does this)
|
|
@@ -1792,6 +1793,14 @@ def test_with_columns_reference_another(
|
|
|
1792
1793
|
pytest.skip(
|
|
1793
1794
|
"Postgres doesn't support having selects with columns that reference each other."
|
|
1794
1795
|
)
|
|
1796
|
+
if is_snowflake():
|
|
1797
|
+
# Snowflake does allow columns that reference each other but the issue is that if you do this in the final
|
|
1798
|
+
# select the columns are replaced with their alias version to show their display name (the case-sensitive
|
|
1799
|
+
# name provided by the user) and then, since the column is now aliased and case-sensitive, SF thinks
|
|
1800
|
+
# the column doesn't exist since the column of the same case does not exist since it was aliased.
|
|
1801
|
+
pytest.skip(
|
|
1802
|
+
"Bugged behavior introduced display names means that snowflake can no longer reference itself."
|
|
1803
|
+
)
|
|
1795
1804
|
employee = get_df("employee")
|
|
1796
1805
|
df = pyspark_employee.withColumns(
|
|
1797
1806
|
{
|
|
@@ -55,7 +55,7 @@ def test_with_column_duplicate_alias(standalone_employee: StandaloneDataFrame):
|
|
|
55
55
|
# Make sure that the new columns is added with an alias to `fname`
|
|
56
56
|
assert (
|
|
57
57
|
df.sql(pretty=False)
|
|
58
|
-
== "SELECT `a1`.`employee_id` AS `employee_id`, CAST(`a1`.`age` AS STRING) AS `
|
|
58
|
+
== "SELECT `a1`.`employee_id` AS `employee_id`, CAST(`a1`.`age` AS STRING) AS `fName`, CAST(`a1`.`lname` AS STRING) AS `lname`, `a1`.`age` AS `age`, `a1`.`store_id` AS `store_id` FROM VALUES (1, 'Jack', 'Shephard', 37, 1), (2, 'John', 'Locke', 65, 1), (3, 'Kate', 'Austen', 37, 2), (4, 'Claire', 'Littleton', 27, 2), (5, 'Hugo', 'Reyes', 29, 100) AS `a1`(`employee_id`, `fname`, `lname`, `age`, `store_id`)"
|
|
59
59
|
)
|
|
60
60
|
|
|
61
61
|
|
|
@@ -86,7 +86,7 @@ def test_transform(standalone_employee: StandaloneDataFrame):
|
|
|
86
86
|
df = standalone_employee.transform(cast_all_to_int).transform(sort_columns_asc)
|
|
87
87
|
assert df.columns == ["age", "employee_id", "fname", "lname", "store_id"]
|
|
88
88
|
assert df.sql(pretty=False, optimize=False).endswith( # type: ignore
|
|
89
|
-
"SELECT CAST(`employee_id` AS INT) AS `employee_id`, CAST(`fname` AS INT) AS `fname`, CAST(`lname` AS INT) AS `lname`, CAST(`age` AS INT) AS `age`, CAST(`store_id` AS INT) AS `store_id` FROM `t51718876`) SELECT `age`, `employee_id`, `fname`, `lname`, `store_id` FROM `t16881256`"
|
|
89
|
+
"SELECT CAST(`employee_id` AS INT) AS `employee_id`, CAST(`fname` AS INT) AS `fname`, CAST(`lname` AS INT) AS `lname`, CAST(`age` AS INT) AS `age`, CAST(`store_id` AS INT) AS `store_id` FROM `t51718876`) SELECT `age` AS `age`, `employee_id` AS `employee_id`, `fname` AS `fname`, `lname` AS `lname`, `store_id` AS `store_id` FROM `t16881256`"
|
|
90
90
|
)
|
|
91
91
|
|
|
92
92
|
|
|
@@ -104,4 +104,4 @@ def test_saveAsTable_cache(standalone_employee: StandaloneDataFrame, compare_sql
|
|
|
104
104
|
def test_quotes(standalone_session: StandaloneSession, compare_sql: t.Callable):
|
|
105
105
|
standalone_session.catalog.add_table("`Test`", {"`ID`": "STRING"})
|
|
106
106
|
df = standalone_session.table("`Test`")
|
|
107
|
-
compare_sql(df.select(df["`ID`"]), ["SELECT `test`.`id` AS `
|
|
107
|
+
compare_sql(df.select(df["`ID`"]), ["SELECT `test`.`id` AS `ID` FROM `test` AS `test`"])
|
|
@@ -17,7 +17,7 @@ tests = [
|
|
|
17
17
|
"test",
|
|
18
18
|
{"name": "VARCHAR"},
|
|
19
19
|
"name",
|
|
20
|
-
'''SELECT "TEST"."NAME" AS "
|
|
20
|
+
'''SELECT "TEST"."NAME" AS "name" FROM "TEST" AS "TEST"''',
|
|
21
21
|
),
|
|
22
22
|
(
|
|
23
23
|
"Table has CS while column does not",
|
|
@@ -25,7 +25,7 @@ tests = [
|
|
|
25
25
|
'"Test"',
|
|
26
26
|
{"name": "VARCHAR"},
|
|
27
27
|
"name",
|
|
28
|
-
'''SELECT "TEST"."NAME" AS "
|
|
28
|
+
'''SELECT "TEST"."NAME" AS "name" FROM "Test" AS "TEST"''',
|
|
29
29
|
),
|
|
30
30
|
(
|
|
31
31
|
"Column has CS while table does not",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
|
File without changes
|
{sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
{sqlframe-3.16.0 → sqlframe-3.17.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|