sqlframe 3.15.0__tar.gz → 3.16.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.
Files changed (387) hide show
  1. {sqlframe-3.15.0 → sqlframe-3.16.0}/PKG-INFO +1 -1
  2. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/bigquery.md +1 -0
  3. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/duckdb.md +1 -0
  4. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/postgres.md +1 -0
  5. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/snowflake.md +1 -0
  6. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/_version.py +2 -2
  7. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/dataframe.py +51 -45
  8. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/decorators.py +1 -1
  9. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/functions.py +5 -3
  10. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/session.py +5 -0
  11. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe.egg-info/PKG-INFO +1 -1
  12. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/bigquery/test_bigquery_session.py +1 -0
  13. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/databricks/test_databricks_session.py +1 -0
  14. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_session.py +1 -0
  15. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_session.py +1 -0
  16. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/redshift/test_redshift_session.py +1 -0
  17. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/snowflake/test_snowflake_session.py +1 -0
  18. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/test_int_dataframe.py +24 -0
  19. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_functions.py +4 -4
  20. {sqlframe-3.15.0 → sqlframe-3.16.0}/.github/CODEOWNERS +0 -0
  21. {sqlframe-3.15.0 → sqlframe-3.16.0}/.github/workflows/main.workflow.yaml +0 -0
  22. {sqlframe-3.15.0 → sqlframe-3.16.0}/.github/workflows/publish.workflow.yaml +0 -0
  23. {sqlframe-3.15.0 → sqlframe-3.16.0}/.gitignore +0 -0
  24. {sqlframe-3.15.0 → sqlframe-3.16.0}/.pre-commit-config.yaml +0 -0
  25. {sqlframe-3.15.0 → sqlframe-3.16.0}/.readthedocs.yaml +0 -0
  26. {sqlframe-3.15.0 → sqlframe-3.16.0}/LICENSE +0 -0
  27. {sqlframe-3.15.0 → sqlframe-3.16.0}/Makefile +0 -0
  28. {sqlframe-3.15.0 → sqlframe-3.16.0}/README.md +0 -0
  29. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/add_chatgpt_support.md +0 -0
  30. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  31. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  32. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  33. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  34. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  35. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  36. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  37. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  38. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/but_wait_theres_more.gif +0 -0
  39. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/cake.gif +0 -0
  40. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/images/you_get_pyspark_api.gif +0 -0
  41. {sqlframe-3.15.0 → sqlframe-3.16.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  42. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/configuration.md +0 -0
  43. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/databricks.md +0 -0
  44. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/bigquery.md +0 -0
  45. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/duckdb.md +0 -0
  46. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/images/SF.png +0 -0
  47. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/images/favicon.png +0 -0
  48. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/images/favicon_old.png +0 -0
  49. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/images/sqlframe_diagram.png +0 -0
  50. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/images/sqlframe_logo.png +0 -0
  51. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/docs/postgres.md +0 -0
  52. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/images/SF.png +0 -0
  53. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/images/favicon.png +0 -0
  54. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/images/favicon_old.png +0 -0
  55. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/images/sqlframe_diagram.png +0 -0
  56. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/images/sqlframe_logo.png +0 -0
  57. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/index.md +0 -0
  58. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/redshift.md +0 -0
  59. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/requirements.txt +0 -0
  60. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/spark.md +0 -0
  61. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/standalone.md +0 -0
  62. {sqlframe-3.15.0 → sqlframe-3.16.0}/docs/stylesheets/extra.css +0 -0
  63. {sqlframe-3.15.0 → sqlframe-3.16.0}/mkdocs.yml +0 -0
  64. {sqlframe-3.15.0 → sqlframe-3.16.0}/pytest.ini +0 -0
  65. {sqlframe-3.15.0 → sqlframe-3.16.0}/renovate.json +0 -0
  66. {sqlframe-3.15.0 → sqlframe-3.16.0}/setup.cfg +0 -0
  67. {sqlframe-3.15.0 → sqlframe-3.16.0}/setup.py +0 -0
  68. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/LICENSE +0 -0
  69. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/__init__.py +0 -0
  70. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/__init__.py +0 -0
  71. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/_typing.py +0 -0
  72. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/catalog.py +0 -0
  73. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/column.py +0 -0
  74. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/exceptions.py +0 -0
  75. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/function_alternatives.py +0 -0
  76. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/group.py +0 -0
  77. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/mixins/__init__.py +0 -0
  78. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  79. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  80. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  81. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/mixins/table_mixins.py +0 -0
  82. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/normalize.py +0 -0
  83. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/operations.py +0 -0
  84. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/readerwriter.py +0 -0
  85. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/table.py +0 -0
  86. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/transforms.py +0 -0
  87. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/types.py +0 -0
  88. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/udf.py +0 -0
  89. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/util.py +0 -0
  90. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/base/window.py +0 -0
  91. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/__init__.py +0 -0
  92. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/catalog.py +0 -0
  93. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/column.py +0 -0
  94. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/dataframe.py +0 -0
  95. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/functions.py +0 -0
  96. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/functions.pyi +0 -0
  97. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/group.py +0 -0
  98. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/readwriter.py +0 -0
  99. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/session.py +0 -0
  100. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/table.py +0 -0
  101. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/types.py +0 -0
  102. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/udf.py +0 -0
  103. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/bigquery/window.py +0 -0
  104. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/__init__.py +0 -0
  105. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/catalog.py +0 -0
  106. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/column.py +0 -0
  107. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/dataframe.py +0 -0
  108. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/functions.py +0 -0
  109. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/functions.pyi +0 -0
  110. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/group.py +0 -0
  111. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/readwriter.py +0 -0
  112. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/session.py +0 -0
  113. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/table.py +0 -0
  114. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/types.py +0 -0
  115. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/udf.py +0 -0
  116. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/databricks/window.py +0 -0
  117. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/__init__.py +0 -0
  118. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/catalog.py +0 -0
  119. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/column.py +0 -0
  120. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/dataframe.py +0 -0
  121. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/functions.py +0 -0
  122. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/functions.pyi +0 -0
  123. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/group.py +0 -0
  124. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/readwriter.py +0 -0
  125. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/session.py +0 -0
  126. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/table.py +0 -0
  127. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/types.py +0 -0
  128. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/udf.py +0 -0
  129. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/duckdb/window.py +0 -0
  130. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/__init__.py +0 -0
  131. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/catalog.py +0 -0
  132. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/column.py +0 -0
  133. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/dataframe.py +0 -0
  134. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/functions.py +0 -0
  135. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/functions.pyi +0 -0
  136. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/group.py +0 -0
  137. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/readwriter.py +0 -0
  138. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/session.py +0 -0
  139. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/table.py +0 -0
  140. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/types.py +0 -0
  141. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/udf.py +0 -0
  142. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/postgres/window.py +0 -0
  143. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/__init__.py +0 -0
  144. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/catalog.py +0 -0
  145. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/column.py +0 -0
  146. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/dataframe.py +0 -0
  147. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/functions.py +0 -0
  148. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/group.py +0 -0
  149. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/readwriter.py +0 -0
  150. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/session.py +0 -0
  151. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/table.py +0 -0
  152. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/types.py +0 -0
  153. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/udf.py +0 -0
  154. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/redshift/window.py +0 -0
  155. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/__init__.py +0 -0
  156. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/catalog.py +0 -0
  157. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/column.py +0 -0
  158. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/dataframe.py +0 -0
  159. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/functions.py +0 -0
  160. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/functions.pyi +0 -0
  161. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/group.py +0 -0
  162. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/readwriter.py +0 -0
  163. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/session.py +0 -0
  164. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/table.py +0 -0
  165. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/types.py +0 -0
  166. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/udf.py +0 -0
  167. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/snowflake/window.py +0 -0
  168. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/__init__.py +0 -0
  169. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/catalog.py +0 -0
  170. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/column.py +0 -0
  171. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/dataframe.py +0 -0
  172. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/functions.py +0 -0
  173. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/functions.pyi +0 -0
  174. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/group.py +0 -0
  175. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/readwriter.py +0 -0
  176. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/session.py +0 -0
  177. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/table.py +0 -0
  178. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/types.py +0 -0
  179. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/udf.py +0 -0
  180. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/spark/window.py +0 -0
  181. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/__init__.py +0 -0
  182. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/catalog.py +0 -0
  183. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/column.py +0 -0
  184. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/dataframe.py +0 -0
  185. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/functions.py +0 -0
  186. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/group.py +0 -0
  187. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/readwriter.py +0 -0
  188. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/session.py +0 -0
  189. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/table.py +0 -0
  190. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/types.py +0 -0
  191. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/udf.py +0 -0
  192. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/standalone/window.py +0 -0
  193. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/testing/__init__.py +0 -0
  194. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe/testing/utils.py +0 -0
  195. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe.egg-info/SOURCES.txt +0 -0
  196. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe.egg-info/dependency_links.txt +0 -0
  197. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe.egg-info/requires.txt +0 -0
  198. {sqlframe-3.15.0 → sqlframe-3.16.0}/sqlframe.egg-info/top_level.txt +0 -0
  199. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/__init__.py +0 -0
  200. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/common_fixtures.py +0 -0
  201. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/conftest.py +0 -0
  202. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee.csv +0 -0
  203. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee.json +0 -0
  204. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee.parquet +0 -0
  205. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
  206. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
  207. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
  208. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
  209. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
  210. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
  211. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
  212. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
  213. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
  214. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
  215. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
  216. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
  217. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
  218. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
  219. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/employee_extra_line.csv +0 -0
  220. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/issue_219.csv +0 -0
  221. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
  222. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
  223. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
  224. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
  225. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
  226. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
  227. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
  228. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
  229. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
  230. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
  231. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
  232. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
  233. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
  234. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
  235. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
  236. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
  237. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
  238. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
  239. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
  240. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
  241. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
  242. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
  243. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
  244. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
  245. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
  246. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
  247. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
  248. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
  249. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
  250. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
  251. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
  252. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
  253. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
  254. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
  255. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
  256. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
  257. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
  258. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
  259. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
  260. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
  261. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
  262. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
  263. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
  264. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
  265. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
  266. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
  267. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
  268. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
  269. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
  270. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
  271. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
  272. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
  273. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
  274. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
  275. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
  276. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
  277. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
  278. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
  279. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
  280. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
  281. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
  282. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
  283. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
  284. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
  285. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
  286. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
  287. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
  288. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
  289. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
  290. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
  291. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
  292. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
  293. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
  294. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
  295. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
  296. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
  297. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
  298. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
  299. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
  300. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
  301. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
  302. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
  303. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
  304. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
  305. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
  306. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
  307. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
  308. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
  309. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
  310. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
  311. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
  312. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
  313. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
  314. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
  315. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
  316. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
  317. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
  318. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
  319. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
  320. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/__init__.py +0 -0
  321. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/__init__.py +0 -0
  322. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/bigquery/__init__.py +0 -0
  323. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  324. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
  325. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/databricks/__init__.py +0 -0
  326. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
  327. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
  328. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/__init__.py +0 -0
  329. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
  330. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  331. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  332. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  333. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
  334. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
  335. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/postgres/__init__.py +0 -0
  336. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
  337. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  338. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  339. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/redshift/__init__.py +0 -0
  340. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  341. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/snowflake/__init__.py +0 -0
  342. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  343. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
  344. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/spark/__init__.py +0 -0
  345. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  346. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
  347. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_engine_column.py +0 -0
  348. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
  349. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_engine_reader.py +0 -0
  350. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_engine_session.py +0 -0
  351. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_engine_table.py +0 -0
  352. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_engine_writer.py +0 -0
  353. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_int_functions.py +0 -0
  354. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/engines/test_int_testing.py +0 -0
  355. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/fixtures.py +0 -0
  356. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/test_int_dataframe_stats.py +0 -0
  357. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/test_int_grouped_data.py +0 -0
  358. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/integration/test_int_session.py +0 -0
  359. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/types.py +0 -0
  360. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/__init__.py +0 -0
  361. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/bigquery/__init__.py +0 -0
  362. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/bigquery/test_activate.py +0 -0
  363. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/conftest.py +0 -0
  364. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/databricks/__init__.py +0 -0
  365. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/databricks/test_activate.py +0 -0
  366. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/duck/__init__.py +0 -0
  367. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/duck/test_activate.py +0 -0
  368. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/postgres/__init__.py +0 -0
  369. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/postgres/test_activate.py +0 -0
  370. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/redshift/__init__.py +0 -0
  371. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/redshift/test_activate.py +0 -0
  372. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/snowflake/__init__.py +0 -0
  373. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/snowflake/test_activate.py +0 -0
  374. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/spark/__init__.py +0 -0
  375. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/spark/test_activate.py +0 -0
  376. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/__init__.py +0 -0
  377. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/fixtures.py +0 -0
  378. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_activate.py +0 -0
  379. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_column.py +0 -0
  380. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_dataframe.py +0 -0
  381. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  382. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_session.py +0 -0
  383. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  384. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_types.py +0 -0
  385. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/standalone/test_window.py +0 -0
  386. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/test_activate.py +0 -0
  387. {sqlframe-3.15.0 → sqlframe-3.16.0}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.15.0
3
+ Version: 3.16.0
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -334,6 +334,7 @@ See something that you would like to see supported? [Open an issue](https://gith
334
334
  * [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
335
335
  * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
336
336
  * [bround](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bround.html)
337
+ * [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
337
338
  * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
338
339
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
339
340
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
@@ -296,6 +296,7 @@ See something that you would like to see supported? [Open an issue](https://gith
296
296
  * [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
297
297
  * [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
298
298
  * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
299
+ * [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
299
300
  * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
300
301
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
301
302
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
@@ -306,6 +306,7 @@ See something that you would like to see supported? [Open an issue](https://gith
306
306
  * [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
307
307
  * [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
308
308
  * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
309
+ * [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
309
310
  * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
310
311
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
311
312
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
@@ -332,6 +332,7 @@ See something that you would like to see supported? [Open an issue](https://gith
332
332
  * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
333
333
  * [bround](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bround.html)
334
334
  * [Input must be a fixed-point nnumber](https://docs.snowflake.com/en/sql-reference/data-types-numeric.html#label-data-types-for-fixed-point-numbers)
335
+ * [btrim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.btrim.html)
335
336
  * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
336
337
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
337
338
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.15.0'
16
- __version_tuple__ = version_tuple = (3, 15, 0)
15
+ __version__ = version = '3.16.0'
16
+ __version_tuple__ = version_tuple = (3, 16, 0)
@@ -391,7 +391,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
391
391
 
392
392
  cols = self._ensure_list_of_columns(cols)
393
393
  normalize(self.session, expression or self.expression, cols)
394
- return list(flatten([self._expand_star(col) for col in cols]))
394
+ cols = list(flatten([self._expand_star(col) for col in cols]))
395
+ self._resolve_ambiguous_columns(cols)
396
+ return cols
395
397
 
396
398
  def _ensure_and_normalize_col(self, col):
397
399
  from sqlframe.base.column import Column
@@ -399,6 +401,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
399
401
 
400
402
  col = Column.ensure_col(col)
401
403
  normalize(self.session, self.expression, col)
404
+ self._resolve_ambiguous_columns(col)
402
405
  return col
403
406
 
404
407
  def _convert_leaf_to_cte(
@@ -745,10 +748,55 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
745
748
  kwargs["join_on_uuid"] = str(uuid4())
746
749
  return self.__class__(**object_to_dict(self, **kwargs))
747
750
 
751
+ def _resolve_ambiguous_columns(self, columns: t.Union[Column, t.List[Column]]) -> None:
752
+ if "joins" not in self.expression.args:
753
+ return
754
+
755
+ columns = ensure_list(columns)
756
+ ambiguous_cols: t.List[exp.Column] = list(
757
+ flatten(
758
+ [
759
+ sub_col
760
+ for col in columns
761
+ for sub_col in col.expression.find_all(exp.Column)
762
+ if not sub_col.table
763
+ ]
764
+ )
765
+ )
766
+ if ambiguous_cols:
767
+ join_table_identifiers = [
768
+ x.this for x in get_tables_from_expression_with_join(self.expression)
769
+ ]
770
+ cte_names_in_join = [x.this for x in join_table_identifiers]
771
+ # If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right
772
+ # (or right to left if a right join) and therefore we allow multiple columns with the same
773
+ # name in the result. This matches the behavior of Spark.
774
+ resolved_column_position: t.Dict[exp.Column, int] = {
775
+ col.copy(): -1 for col in ambiguous_cols
776
+ }
777
+ for ambiguous_col in ambiguous_cols:
778
+ ctes = (
779
+ list(reversed(self.expression.ctes))
780
+ if self.expression.args["joins"][0].args.get("side", "") == "right"
781
+ else self.expression.ctes
782
+ )
783
+ ctes_with_column = [
784
+ cte
785
+ for cte in ctes
786
+ if cte.alias_or_name in cte_names_in_join
787
+ and ambiguous_col.alias_or_name in cte.this.named_selects
788
+ ]
789
+ # Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise,
790
+ # use the same CTE we used before
791
+ cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col] + 1)
792
+ if cte:
793
+ resolved_column_position[ambiguous_col] += 1
794
+ else:
795
+ cte = ctes_with_column[resolved_column_position[ambiguous_col]]
796
+ ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
797
+
748
798
  @operation(Operation.SELECT)
749
799
  def select(self, *cols, **kwargs) -> Self:
750
- from sqlframe.base.column import Column
751
-
752
800
  if not cols:
753
801
  return self
754
802
 
@@ -756,48 +804,6 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
756
804
  cols = cols[0] # type: ignore
757
805
  columns = self._ensure_and_normalize_cols(cols)
758
806
  kwargs["append"] = kwargs.get("append", False)
759
- if self.expression.args.get("joins"):
760
- ambiguous_cols: t.List[exp.Column] = list(
761
- flatten(
762
- [
763
- sub_col
764
- for col in columns
765
- for sub_col in col.expression.find_all(exp.Column)
766
- if not sub_col.table
767
- ]
768
- )
769
- )
770
- if ambiguous_cols:
771
- join_table_identifiers = [
772
- x.this for x in get_tables_from_expression_with_join(self.expression)
773
- ]
774
- cte_names_in_join = [x.this for x in join_table_identifiers]
775
- # If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right
776
- # (or right to left if a right join) and therefore we allow multiple columns with the same
777
- # name in the result. This matches the behavior of Spark.
778
- resolved_column_position: t.Dict[exp.Column, int] = {
779
- col.copy(): -1 for col in ambiguous_cols
780
- }
781
- for ambiguous_col in ambiguous_cols:
782
- ctes = (
783
- list(reversed(self.expression.ctes))
784
- if self.expression.args["joins"][0].args.get("side", "") == "right"
785
- else self.expression.ctes
786
- )
787
- ctes_with_column = [
788
- cte
789
- for cte in ctes
790
- if cte.alias_or_name in cte_names_in_join
791
- and ambiguous_col.alias_or_name in cte.this.named_selects
792
- ]
793
- # Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise,
794
- # use the same CTE we used before
795
- cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col] + 1)
796
- if cte:
797
- resolved_column_position[ambiguous_col] += 1
798
- else:
799
- cte = ctes_with_column[resolved_column_position[ambiguous_col]]
800
- ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
801
807
  # If an expression is `CAST(x AS DATETYPE)` then we want to alias so that `x` is the result column name
802
808
  columns = [
803
809
  col.alias(col.expression.alias_or_name)
@@ -43,7 +43,7 @@ def func_metadata(unsupported_engines: t.Optional[t.Union[str, t.List[str]]] = N
43
43
  col_name = col_name.this
44
44
  alias_name = f"{func.__name__}__{col_name or ''}__"
45
45
  # BigQuery has restrictions on alias names so we constrain it to alphanumeric characters and underscores
46
- return result.alias(re.sub("\W", "_", alias_name)) # type: ignore
46
+ return result.alias(re.sub(r"\W", "_", alias_name)) # type: ignore
47
47
  return result
48
48
 
49
49
  wrapper.unsupported_engines = ( # type: ignore
@@ -2851,12 +2851,14 @@ def bool_or(col: ColumnOrName) -> Column:
2851
2851
  return Column.invoke_expression_over_column(col, expression.LogicalOr)
2852
2852
 
2853
2853
 
2854
- @meta(unsupported_engines="*")
2854
+ @meta()
2855
2855
  def btrim(str: ColumnOrName, trim: t.Optional[ColumnOrName] = None) -> Column:
2856
2856
  if trim is not None:
2857
- return Column.invoke_anonymous_function(str, "btrim", trim)
2857
+ return Column.invoke_expression_over_column(
2858
+ str, expression.Trim, expression=Column.ensure_col(trim).column_expression
2859
+ )
2858
2860
  else:
2859
- return Column.invoke_anonymous_function(str, "btrim")
2861
+ return Column.invoke_expression_over_column(str, expression.Trim)
2860
2862
 
2861
2863
 
2862
2864
  @meta(unsupported_engines="*")
@@ -108,6 +108,11 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
108
108
  if not getattr(self, "schema", None) or schema:
109
109
  self._schema = schema
110
110
 
111
+ # https://github.com/eakmanrq/sqlframe/issues/262
112
+ @property
113
+ def execution_dialect_name(self) -> str:
114
+ return self.execution_dialect.__class__.__name__.lower()
115
+
111
116
  @property
112
117
  def read(self) -> READER:
113
118
  return self._reader(self)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.15.0
3
+ Version: 3.16.0
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -18,3 +18,4 @@ def test_session_from_config():
18
18
  session = BigQuerySession.builder.config("default_dataset", "sqlframe.db1").getOrCreate()
19
19
  columns = session.catalog.get_columns("db1.test_table")
20
20
  assert columns == {"cola": exp.DataType.build("BIGINT"), "colb": exp.DataType.build("TEXT")}
21
+ assert session.execution_dialect_name == "bigquery"
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: DatabricksConnection):
45
45
  "cola": exp.DataType.build("INT", dialect=session.output_dialect),
46
46
  "colb": exp.DataType.build("STRING", dialect=session.output_dialect),
47
47
  }
48
+ assert session.execution_dialect_name == "databricks"
@@ -11,3 +11,4 @@ def test_session_from_config():
11
11
  session = DuckDBSession.builder.config("sqlframe.conn", conn).getOrCreate()
12
12
  columns = session.catalog.get_columns("test_table")
13
13
  assert columns == {"cola": exp.DataType.build("INT"), "colb": exp.DataType.build("TEXT")}
14
+ assert session.execution_dialect_name == "duckdb"
@@ -17,3 +17,4 @@ def test_session_from_config(function_scoped_postgres):
17
17
  "cola": exp.DataType.build("INT", dialect=session.output_dialect),
18
18
  "colb": exp.DataType.build("STRING", dialect=session.output_dialect),
19
19
  }
20
+ assert session.execution_dialect_name == "postgres"
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: RedshiftConnection):
45
45
  "cola": exp.DataType.build("INT", dialect=session.output_dialect),
46
46
  "colb": exp.DataType.build("STRING", dialect=session.output_dialect),
47
47
  }
48
+ assert session.execution_dialect_name == "redshift"
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: SnowflakeConnection):
45
45
  "cola": exp.DataType.build("DECIMAL(38, 0)", dialect=session.output_dialect),
46
46
  "colb": exp.DataType.build("TEXT", dialect=session.output_dialect),
47
47
  }
48
+ assert session.execution_dialect_name == "snowflake"
@@ -2381,3 +2381,27 @@ def test_union_common_root_again(
2381
2381
  dfs_final = dfs_1.union(dfs_2).union(employee)
2382
2382
 
2383
2383
  compare_frames(df_final, dfs_final, compare_schema=False)
2384
+
2385
+
2386
+ # https://github.com/eakmanrq/sqlframe/issues/277
2387
+ def test_filtering_join_key(
2388
+ pyspark_employee: PySparkDataFrame,
2389
+ pyspark_store: PySparkDataFrame,
2390
+ get_df: t.Callable[[str], BaseDataFrame],
2391
+ compare_frames: t.Callable,
2392
+ ):
2393
+ df = pyspark_employee.join(
2394
+ pyspark_store,
2395
+ on="store_id",
2396
+ how="inner",
2397
+ ).filter(F.col("store_id") > 1)
2398
+
2399
+ employee = get_df("employee")
2400
+ store = get_df("store")
2401
+ dfs = employee.join(
2402
+ store,
2403
+ on="store_id",
2404
+ how="inner",
2405
+ ).filter(SF.col("store_id") > 1)
2406
+
2407
+ compare_frames(df, dfs, compare_schema=False, sort=True)
@@ -3228,10 +3228,10 @@ def test_bool_or(expression, expected):
3228
3228
  @pytest.mark.parametrize(
3229
3229
  "expression, expected",
3230
3230
  [
3231
- (SF.btrim("cola"), "BTRIM(cola)"),
3232
- (SF.btrim(SF.col("cola")), "BTRIM(cola)"),
3233
- (SF.btrim("cola", "chars"), "BTRIM(cola, chars)"),
3234
- (SF.btrim("cola", SF.lit("chars")), "BTRIM(cola, 'chars')"),
3231
+ (SF.btrim("cola"), "TRIM(cola)"),
3232
+ (SF.btrim(SF.col("cola")), "TRIM(cola)"),
3233
+ (SF.btrim("cola", "chars"), "TRIM(chars FROM cola)"),
3234
+ (SF.btrim("cola", SF.lit("chars")), "TRIM('chars' FROM cola)"),
3235
3235
  ],
3236
3236
  )
3237
3237
  def test_btrim(expression, expected):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes