sqlframe 3.14.0__tar.gz → 3.14.2__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.14.0 → sqlframe-3.14.2}/PKG-INFO +1 -1
  2. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/bigquery.md +1 -1
  3. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/duckdb.md +1 -1
  4. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/postgres.md +1 -1
  5. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/redshift.md +1 -1
  6. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/snowflake.md +1 -1
  7. {sqlframe-3.14.0 → sqlframe-3.14.2}/setup.py +3 -3
  8. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/_version.py +2 -2
  9. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/dataframe.py +41 -18
  10. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe.egg-info/PKG-INFO +1 -1
  11. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe.egg-info/requires.txt +3 -3
  12. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/test_int_dataframe.py +63 -0
  13. {sqlframe-3.14.0 → sqlframe-3.14.2}/.github/CODEOWNERS +0 -0
  14. {sqlframe-3.14.0 → sqlframe-3.14.2}/.github/workflows/main.workflow.yaml +0 -0
  15. {sqlframe-3.14.0 → sqlframe-3.14.2}/.github/workflows/publish.workflow.yaml +0 -0
  16. {sqlframe-3.14.0 → sqlframe-3.14.2}/.gitignore +0 -0
  17. {sqlframe-3.14.0 → sqlframe-3.14.2}/.pre-commit-config.yaml +0 -0
  18. {sqlframe-3.14.0 → sqlframe-3.14.2}/.readthedocs.yaml +0 -0
  19. {sqlframe-3.14.0 → sqlframe-3.14.2}/LICENSE +0 -0
  20. {sqlframe-3.14.0 → sqlframe-3.14.2}/Makefile +0 -0
  21. {sqlframe-3.14.0 → sqlframe-3.14.2}/README.md +0 -0
  22. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/add_chatgpt_support.md +0 -0
  23. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  24. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  25. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  26. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  27. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  28. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  29. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  30. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  31. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/but_wait_theres_more.gif +0 -0
  32. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/cake.gif +0 -0
  33. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/images/you_get_pyspark_api.gif +0 -0
  34. {sqlframe-3.14.0 → sqlframe-3.14.2}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  35. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/configuration.md +0 -0
  36. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/databricks.md +0 -0
  37. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/bigquery.md +0 -0
  38. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/duckdb.md +0 -0
  39. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/images/SF.png +0 -0
  40. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/images/favicon.png +0 -0
  41. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/images/favicon_old.png +0 -0
  42. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/images/sqlframe_diagram.png +0 -0
  43. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/images/sqlframe_logo.png +0 -0
  44. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/docs/postgres.md +0 -0
  45. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/images/SF.png +0 -0
  46. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/images/favicon.png +0 -0
  47. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/images/favicon_old.png +0 -0
  48. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/images/sqlframe_diagram.png +0 -0
  49. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/images/sqlframe_logo.png +0 -0
  50. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/index.md +0 -0
  51. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/requirements.txt +0 -0
  52. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/spark.md +0 -0
  53. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/standalone.md +0 -0
  54. {sqlframe-3.14.0 → sqlframe-3.14.2}/docs/stylesheets/extra.css +0 -0
  55. {sqlframe-3.14.0 → sqlframe-3.14.2}/mkdocs.yml +0 -0
  56. {sqlframe-3.14.0 → sqlframe-3.14.2}/pytest.ini +0 -0
  57. {sqlframe-3.14.0 → sqlframe-3.14.2}/renovate.json +0 -0
  58. {sqlframe-3.14.0 → sqlframe-3.14.2}/setup.cfg +0 -0
  59. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/LICENSE +0 -0
  60. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/__init__.py +0 -0
  61. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/__init__.py +0 -0
  62. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/_typing.py +0 -0
  63. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/catalog.py +0 -0
  64. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/column.py +0 -0
  65. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/decorators.py +0 -0
  66. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/exceptions.py +0 -0
  67. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/function_alternatives.py +0 -0
  68. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/functions.py +0 -0
  69. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/group.py +0 -0
  70. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/mixins/__init__.py +0 -0
  71. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  72. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  73. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  74. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/mixins/table_mixins.py +0 -0
  75. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/normalize.py +0 -0
  76. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/operations.py +0 -0
  77. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/readerwriter.py +0 -0
  78. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/session.py +0 -0
  79. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/table.py +0 -0
  80. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/transforms.py +0 -0
  81. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/types.py +0 -0
  82. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/udf.py +0 -0
  83. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/util.py +0 -0
  84. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/base/window.py +0 -0
  85. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/__init__.py +0 -0
  86. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/catalog.py +0 -0
  87. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/column.py +0 -0
  88. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/dataframe.py +0 -0
  89. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/functions.py +0 -0
  90. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/functions.pyi +0 -0
  91. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/group.py +0 -0
  92. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/readwriter.py +0 -0
  93. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/session.py +0 -0
  94. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/table.py +0 -0
  95. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/types.py +0 -0
  96. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/udf.py +0 -0
  97. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/bigquery/window.py +0 -0
  98. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/__init__.py +0 -0
  99. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/catalog.py +0 -0
  100. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/column.py +0 -0
  101. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/dataframe.py +0 -0
  102. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/functions.py +0 -0
  103. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/functions.pyi +0 -0
  104. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/group.py +0 -0
  105. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/readwriter.py +0 -0
  106. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/session.py +0 -0
  107. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/table.py +0 -0
  108. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/types.py +0 -0
  109. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/udf.py +0 -0
  110. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/databricks/window.py +0 -0
  111. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/__init__.py +0 -0
  112. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/catalog.py +0 -0
  113. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/column.py +0 -0
  114. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/dataframe.py +0 -0
  115. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/functions.py +0 -0
  116. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/functions.pyi +0 -0
  117. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/group.py +0 -0
  118. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/readwriter.py +0 -0
  119. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/session.py +0 -0
  120. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/table.py +0 -0
  121. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/types.py +0 -0
  122. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/udf.py +0 -0
  123. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/duckdb/window.py +0 -0
  124. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/__init__.py +0 -0
  125. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/catalog.py +0 -0
  126. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/column.py +0 -0
  127. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/dataframe.py +0 -0
  128. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/functions.py +0 -0
  129. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/functions.pyi +0 -0
  130. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/group.py +0 -0
  131. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/readwriter.py +0 -0
  132. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/session.py +0 -0
  133. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/table.py +0 -0
  134. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/types.py +0 -0
  135. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/udf.py +0 -0
  136. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/postgres/window.py +0 -0
  137. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/__init__.py +0 -0
  138. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/catalog.py +0 -0
  139. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/column.py +0 -0
  140. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/dataframe.py +0 -0
  141. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/functions.py +0 -0
  142. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/group.py +0 -0
  143. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/readwriter.py +0 -0
  144. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/session.py +0 -0
  145. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/table.py +0 -0
  146. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/types.py +0 -0
  147. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/udf.py +0 -0
  148. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/redshift/window.py +0 -0
  149. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/__init__.py +0 -0
  150. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/catalog.py +0 -0
  151. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/column.py +0 -0
  152. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/dataframe.py +0 -0
  153. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/functions.py +0 -0
  154. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/functions.pyi +0 -0
  155. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/group.py +0 -0
  156. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/readwriter.py +0 -0
  157. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/session.py +0 -0
  158. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/table.py +0 -0
  159. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/types.py +0 -0
  160. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/udf.py +0 -0
  161. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/snowflake/window.py +0 -0
  162. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/__init__.py +0 -0
  163. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/catalog.py +0 -0
  164. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/column.py +0 -0
  165. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/dataframe.py +0 -0
  166. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/functions.py +0 -0
  167. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/functions.pyi +0 -0
  168. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/group.py +0 -0
  169. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/readwriter.py +0 -0
  170. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/session.py +0 -0
  171. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/table.py +0 -0
  172. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/types.py +0 -0
  173. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/udf.py +0 -0
  174. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/spark/window.py +0 -0
  175. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/__init__.py +0 -0
  176. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/catalog.py +0 -0
  177. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/column.py +0 -0
  178. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/dataframe.py +0 -0
  179. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/functions.py +0 -0
  180. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/group.py +0 -0
  181. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/readwriter.py +0 -0
  182. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/session.py +0 -0
  183. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/table.py +0 -0
  184. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/types.py +0 -0
  185. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/udf.py +0 -0
  186. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/standalone/window.py +0 -0
  187. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/testing/__init__.py +0 -0
  188. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe/testing/utils.py +0 -0
  189. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe.egg-info/SOURCES.txt +0 -0
  190. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe.egg-info/dependency_links.txt +0 -0
  191. {sqlframe-3.14.0 → sqlframe-3.14.2}/sqlframe.egg-info/top_level.txt +0 -0
  192. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/__init__.py +0 -0
  193. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/common_fixtures.py +0 -0
  194. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/conftest.py +0 -0
  195. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee.csv +0 -0
  196. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee.json +0 -0
  197. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee.parquet +0 -0
  198. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
  199. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
  200. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
  201. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
  202. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
  203. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
  204. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
  205. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
  206. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
  207. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
  208. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
  209. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
  210. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
  211. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
  212. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/employee_extra_line.csv +0 -0
  213. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/issue_219.csv +0 -0
  214. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds1.sql +0 -0
  215. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds10.sql +0 -0
  216. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds11.sql +0 -0
  217. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds12.sql +0 -0
  218. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds13.sql +0 -0
  219. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds14.sql +0 -0
  220. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds15.sql +0 -0
  221. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds16.sql +0 -0
  222. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds17.sql +0 -0
  223. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds18.sql +0 -0
  224. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds19.sql +0 -0
  225. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds2.sql +0 -0
  226. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds20.sql +0 -0
  227. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds21.sql +0 -0
  228. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds22.sql +0 -0
  229. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds23.sql +0 -0
  230. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds24.sql +0 -0
  231. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds25.sql +0 -0
  232. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds26.sql +0 -0
  233. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds27.sql +0 -0
  234. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds28.sql +0 -0
  235. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds29.sql +0 -0
  236. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds3.sql +0 -0
  237. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds30.sql +0 -0
  238. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds31.sql +0 -0
  239. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds32.sql +0 -0
  240. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds33.sql +0 -0
  241. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds34.sql +0 -0
  242. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds35.sql +0 -0
  243. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds36.sql +0 -0
  244. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds37.sql +0 -0
  245. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds38.sql +0 -0
  246. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds39.sql +0 -0
  247. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds4.sql +0 -0
  248. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds40.sql +0 -0
  249. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds41.sql +0 -0
  250. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds42.sql +0 -0
  251. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds43.sql +0 -0
  252. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds44.sql +0 -0
  253. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds45.sql +0 -0
  254. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds46.sql +0 -0
  255. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds47.sql +0 -0
  256. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds48.sql +0 -0
  257. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds49.sql +0 -0
  258. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds5.sql +0 -0
  259. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds50.sql +0 -0
  260. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds51.sql +0 -0
  261. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds52.sql +0 -0
  262. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds53.sql +0 -0
  263. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds54.sql +0 -0
  264. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds55.sql +0 -0
  265. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds56.sql +0 -0
  266. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds57.sql +0 -0
  267. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds58.sql +0 -0
  268. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds59.sql +0 -0
  269. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds6.sql +0 -0
  270. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds60.sql +0 -0
  271. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds61.sql +0 -0
  272. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds62.sql +0 -0
  273. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds63.sql +0 -0
  274. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds64.sql +0 -0
  275. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds65.sql +0 -0
  276. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds66.sql +0 -0
  277. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds67.sql +0 -0
  278. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds68.sql +0 -0
  279. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds69.sql +0 -0
  280. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds7.sql +0 -0
  281. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds70.sql +0 -0
  282. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds71.sql +0 -0
  283. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds72.sql +0 -0
  284. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds73.sql +0 -0
  285. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds74.sql +0 -0
  286. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds75.sql +0 -0
  287. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds76.sql +0 -0
  288. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds77.sql +0 -0
  289. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds78.sql +0 -0
  290. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds79.sql +0 -0
  291. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds8.sql +0 -0
  292. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds80.sql +0 -0
  293. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds81.sql +0 -0
  294. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds82.sql +0 -0
  295. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds83.sql +0 -0
  296. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds84.sql +0 -0
  297. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds85.sql +0 -0
  298. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds86.sql +0 -0
  299. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds87.sql +0 -0
  300. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds88.sql +0 -0
  301. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds89.sql +0 -0
  302. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds9.sql +0 -0
  303. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds90.sql +0 -0
  304. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds91.sql +0 -0
  305. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds92.sql +0 -0
  306. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds93.sql +0 -0
  307. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds94.sql +0 -0
  308. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds95.sql +0 -0
  309. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds96.sql +0 -0
  310. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds97.sql +0 -0
  311. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds98.sql +0 -0
  312. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/fixtures/tpcds/tpcds99.sql +0 -0
  313. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/__init__.py +0 -0
  314. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/__init__.py +0 -0
  315. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/bigquery/__init__.py +0 -0
  316. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  317. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
  318. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
  319. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/databricks/__init__.py +0 -0
  320. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
  321. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
  322. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
  323. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/__init__.py +0 -0
  324. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
  325. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  326. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  327. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  328. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
  329. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
  330. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/duck/test_tpcds.py +0 -0
  331. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/postgres/__init__.py +0 -0
  332. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
  333. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  334. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  335. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
  336. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/redshift/__init__.py +0 -0
  337. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  338. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
  339. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/snowflake/__init__.py +0 -0
  340. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  341. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
  342. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
  343. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/spark/__init__.py +0 -0
  344. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  345. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
  346. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_engine_column.py +0 -0
  347. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_engine_dataframe.py +0 -0
  348. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_engine_reader.py +0 -0
  349. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_engine_session.py +0 -0
  350. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_engine_table.py +0 -0
  351. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_engine_writer.py +0 -0
  352. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_int_functions.py +0 -0
  353. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/engines/test_int_testing.py +0 -0
  354. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/fixtures.py +0 -0
  355. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/test_int_dataframe_stats.py +0 -0
  356. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/test_int_grouped_data.py +0 -0
  357. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/integration/test_int_session.py +0 -0
  358. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/types.py +0 -0
  359. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/__init__.py +0 -0
  360. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/bigquery/__init__.py +0 -0
  361. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/bigquery/test_activate.py +0 -0
  362. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/conftest.py +0 -0
  363. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/databricks/__init__.py +0 -0
  364. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/databricks/test_activate.py +0 -0
  365. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/duck/__init__.py +0 -0
  366. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/duck/test_activate.py +0 -0
  367. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/postgres/__init__.py +0 -0
  368. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/postgres/test_activate.py +0 -0
  369. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/redshift/__init__.py +0 -0
  370. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/redshift/test_activate.py +0 -0
  371. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/snowflake/__init__.py +0 -0
  372. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/snowflake/test_activate.py +0 -0
  373. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/spark/__init__.py +0 -0
  374. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/spark/test_activate.py +0 -0
  375. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/__init__.py +0 -0
  376. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/fixtures.py +0 -0
  377. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_activate.py +0 -0
  378. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_column.py +0 -0
  379. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_dataframe.py +0 -0
  380. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  381. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_functions.py +0 -0
  382. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_session.py +0 -0
  383. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  384. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_types.py +0 -0
  385. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/standalone/test_window.py +0 -0
  386. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/test_activate.py +0 -0
  387. {sqlframe-3.14.0 → sqlframe-3.14.2}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.14.0
3
+ Version: 3.14.2
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -641,7 +641,7 @@ df_employee = session.createDataFrame(
641
641
 
642
642
  df_employee.write.mode("overwrite").saveAsTable("employee")
643
643
 
644
- table_employee = session.table("employee") # This object is of Type DatabricksTable
644
+ table_employee = session.table("employee") # This object is of Type BigqueryTable
645
645
  ```
646
646
 
647
647
  #### Update Statement
@@ -592,7 +592,7 @@ df_employee = session.createDataFrame(
592
592
 
593
593
  df_employee.write.mode("overwrite").saveAsTable("employee")
594
594
 
595
- table_employee = session.table("employee") # This object is of Type DatabricksTable
595
+ table_employee = session.table("employee") # This object is of Type DuckDBTable
596
596
  ```
597
597
 
598
598
  #### Update Statement
@@ -587,7 +587,7 @@ df_employee = session.createDataFrame(
587
587
 
588
588
  df_employee.write.mode("overwrite").saveAsTable("employee")
589
589
 
590
- table_employee = session.table("employee") # This object is of Type DatabricksTable
590
+ table_employee = session.table("employee") # This object is of Type PostgresTable
591
591
  ```
592
592
 
593
593
  #### Update Statement
@@ -196,7 +196,7 @@ df_employee = session.createDataFrame(
196
196
 
197
197
  df_employee.write.mode("overwrite").saveAsTable("employee")
198
198
 
199
- table_employee = session.table("employee") # This object is of Type DatabricksTable
199
+ table_employee = session.table("employee") # This object is of Type RedshiftTable
200
200
  ```
201
201
 
202
202
  #### Update Statement
@@ -642,7 +642,7 @@ df_employee = session.createDataFrame(
642
642
 
643
643
  df_employee.write.mode("overwrite").saveAsTable("employee")
644
644
 
645
- table_employee = session.table("employee") # This object is of Type DatabricksTable
645
+ table_employee = session.table("employee") # This object is of Type SnowflakeTable
646
646
  ```
647
647
 
648
648
  #### Update Statement
@@ -20,7 +20,7 @@ setup(
20
20
  python_requires=">=3.9",
21
21
  install_requires=[
22
22
  "prettytable<4",
23
- "sqlglot>=24.0.0,<26.3",
23
+ "sqlglot>=24.0.0,<26.4",
24
24
  "typing_extensions",
25
25
  ],
26
26
  extras_require={
@@ -70,13 +70,13 @@ setup(
70
70
  "redshift_connector>=2.1.1,<2.2.0",
71
71
  ],
72
72
  "snowflake": [
73
- "snowflake-connector-python[secure-local-storage]>=3.10.0,<3.13",
73
+ "snowflake-connector-python[secure-local-storage]>=3.10.0,<3.14",
74
74
  ],
75
75
  "spark": [
76
76
  "pyspark>=2,<3.6",
77
77
  ],
78
78
  "databricks": [
79
- "databricks-sql-connector>=3.6,<4",
79
+ "databricks-sql-connector>=3.6,<5",
80
80
  ],
81
81
  },
82
82
  classifiers=[
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.14.0'
16
- __version_tuple__ = version_tuple = (3, 14, 0)
15
+ __version__ = version = '3.14.2'
16
+ __version_tuple__ = version_tuple = (3, 14, 2)
@@ -9,6 +9,7 @@ import json
9
9
  import logging
10
10
  import sys
11
11
  import typing as t
12
+ import uuid
12
13
  import zlib
13
14
  from copy import copy
14
15
  from dataclasses import dataclass
@@ -79,6 +80,23 @@ JOIN_HINTS = {
79
80
  "SHUFFLE_REPLICATE_NL",
80
81
  }
81
82
 
83
+ JOIN_TYPE_MAPPING = {
84
+ "inner": "inner",
85
+ "cross": "cross",
86
+ "outer": "full_outer",
87
+ "full": "full_outer",
88
+ "fullouter": "full_outer",
89
+ "left": "left_outer",
90
+ "leftouter": "left_outer",
91
+ "right": "right_outer",
92
+ "rightouter": "right_outer",
93
+ "semi": "left_semi",
94
+ "leftsemi": "left_semi",
95
+ "left_semi": "left_semi",
96
+ "anti": "left_anti",
97
+ "leftanti": "left_anti",
98
+ "left_anti": "left_anti",
99
+ }
82
100
 
83
101
  DF = t.TypeVar("DF", bound="BaseDataFrame")
84
102
 
@@ -474,22 +492,20 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
474
492
  with_expression = expression.args.get("with")
475
493
  if with_expression:
476
494
  existing_ctes = with_expression.expressions
477
- existing_cte_counts = {x.alias_or_name: 0 for x in existing_ctes}
495
+ existing_cte_names = {x.alias_or_name for x in existing_ctes}
478
496
  replaced_cte_names = {} # type: ignore
479
497
  for cte in ctes:
480
498
  if replaced_cte_names:
481
499
  cte = cte.transform(replace_id_value, replaced_cte_names) # type: ignore
482
- if cte.alias_or_name in existing_cte_counts:
483
- existing_cte_counts[cte.alias_or_name] += 10
500
+ if cte.alias_or_name in existing_cte_names:
501
+ random_filter = exp.Literal.string(uuid.uuid4().hex)
484
502
  # Add unique where filter to ensure that the hash of the CTE is unique
485
503
  cte.set(
486
504
  "this",
487
505
  cte.this.where(
488
506
  exp.EQ(
489
- this=exp.Literal.number(existing_cte_counts[cte.alias_or_name]),
490
- expression=exp.Literal.number(
491
- existing_cte_counts[cte.alias_or_name]
492
- ),
507
+ this=random_filter,
508
+ expression=random_filter,
493
509
  )
494
510
  ),
495
511
  )
@@ -503,7 +519,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
503
519
  new_cte_alias, dialect=self.session.input_dialect, into=exp.TableAlias
504
520
  ),
505
521
  )
506
- existing_cte_counts[new_cte_alias] = 0
522
+ existing_cte_names.add(new_cte_alias)
507
523
  existing_ctes.append(cte)
508
524
  else:
509
525
  existing_ctes = ctes
@@ -944,16 +960,20 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
944
960
  ) -> Self:
945
961
  from sqlframe.base.functions import coalesce
946
962
 
947
- if on is None:
963
+ if (on is None) and ("cross" not in how):
948
964
  logger.warning("Got no value for on. This appears to change the join to a cross join.")
949
965
  how = "cross"
966
+ if (on is not None) and ("cross" in how):
967
+ # Not a lot of doc, but Spark handles cross with predicate as an inner join
968
+ # https://learn.microsoft.com/en-us/dotnet/api/microsoft.spark.sql.dataframe.join
969
+ logger.warning("Got cross join with an 'on' value. This will result in an inner join.")
970
+ how = "inner"
950
971
 
951
972
  other_df = other_df._convert_leaf_to_cte()
952
973
  join_expression = self._add_ctes_to_expression(self.expression, other_df.expression.ctes)
953
974
  # We will determine actual "join on" expression later so we don't provide it at first
954
- join_expression = join_expression.join(
955
- join_expression.ctes[-1].alias, join_type=how.replace("_", " ")
956
- )
975
+ join_type = JOIN_TYPE_MAPPING.get(how, how).replace("_", " ")
976
+ join_expression = join_expression.join(join_expression.ctes[-1].alias, join_type=join_type)
957
977
  self_columns = self._get_outer_select_columns(join_expression)
958
978
  other_columns = self._get_outer_select_columns(other_df.expression)
959
979
  join_columns = self._ensure_and_normalize_cols(on)
@@ -961,7 +981,12 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
961
981
 
962
982
  # Determines the join clause and select columns to be used passed on what type of columns were provided for
963
983
  # the join. The columns returned changes based on how the on expression is provided.
964
- if how != "cross":
984
+ select_columns = (
985
+ self_columns
986
+ if join_type in ["left anti", "left semi"]
987
+ else self_columns + other_columns
988
+ )
989
+ if join_type != "cross":
965
990
  if isinstance(join_columns[0].expression, exp.Column):
966
991
  """
967
992
  Unique characteristics of join on column names only:
@@ -992,7 +1017,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
992
1017
  if not isinstance(column.expression.this, exp.Star)
993
1018
  else column.sql()
994
1019
  )
995
- for column in self_columns + other_columns
1020
+ for column in select_columns
996
1021
  ]
997
1022
  select_column_names = [
998
1023
  column_name
@@ -1010,13 +1035,11 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1010
1035
  * The left join dataframe columns go first and right come after. No sort preference is given to join columns
1011
1036
  """
1012
1037
  join_clause = self._normalize_join_clause(join_columns, join_expression)
1013
- select_column_names = [
1014
- column.alias_or_name for column in self_columns + other_columns
1015
- ]
1038
+ select_column_names = [column.alias_or_name for column in select_columns]
1016
1039
 
1017
1040
  # Update the on expression with the actual join clause to replace the dummy one from before
1018
1041
  else:
1019
- select_column_names = [column.alias_or_name for column in self_columns + other_columns]
1042
+ select_column_names = [column.alias_or_name for column in select_columns]
1020
1043
  join_clause = None
1021
1044
  join_expression.args["joins"][-1].set("on", join_clause.expression if join_clause else None)
1022
1045
  new_df = self.copy(expression=join_expression)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.14.0
3
+ Version: 3.14.2
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -1,5 +1,5 @@
1
1
  prettytable<4
2
- sqlglot<26.3,>=24.0.0
2
+ sqlglot<26.4,>=24.0.0
3
3
  typing_extensions
4
4
 
5
5
  [bigquery]
@@ -7,7 +7,7 @@ google-cloud-bigquery-storage<3,>=2
7
7
  google-cloud-bigquery[pandas]<4,>=3
8
8
 
9
9
  [databricks]
10
- databricks-sql-connector<4,>=3.6
10
+ databricks-sql-connector<5,>=3.6
11
11
 
12
12
  [dev]
13
13
  duckdb<1.2,>=0.9
@@ -51,7 +51,7 @@ psycopg2<3,>=2.8
51
51
  redshift_connector<2.2.0,>=2.1.1
52
52
 
53
53
  [snowflake]
54
- snowflake-connector-python[secure-local-storage]<3.13,>=3.10.0
54
+ snowflake-connector-python[secure-local-storage]<3.14,>=3.10.0
55
55
 
56
56
  [spark]
57
57
  pyspark<3.6,>=2
@@ -435,6 +435,43 @@ def test_join_inner(
435
435
  compare_frames(df_joined, dfs_joined, sort=True)
436
436
 
437
437
 
438
+ @pytest.mark.parametrize(
439
+ "how",
440
+ [
441
+ "inner",
442
+ "cross",
443
+ "outer",
444
+ "full",
445
+ "fullouter",
446
+ "full_outer",
447
+ "left",
448
+ "leftouter",
449
+ "left_outer",
450
+ "right",
451
+ "rightouter",
452
+ "right_outer",
453
+ "semi",
454
+ "leftsemi",
455
+ "left_semi",
456
+ "anti",
457
+ "leftanti",
458
+ "left_anti",
459
+ ],
460
+ )
461
+ def test_join_various_how(
462
+ pyspark_employee: PySparkDataFrame,
463
+ pyspark_store: PySparkDataFrame,
464
+ get_df: t.Callable[[str], BaseDataFrame],
465
+ compare_frames: t.Callable,
466
+ how: str,
467
+ ):
468
+ employee = get_df("employee")
469
+ store = get_df("store")
470
+ df_joined = pyspark_employee.join(pyspark_store, on=["store_id"], how=how)
471
+ dfs_joined = employee.join(store, on=["store_id"], how=how)
472
+ compare_frames(df_joined, dfs_joined, sort=True)
473
+
474
+
438
475
  def test_join_inner_no_select(
439
476
  pyspark_employee: PySparkDataFrame,
440
477
  pyspark_store: PySparkDataFrame,
@@ -2318,3 +2355,29 @@ def test_union_common_root(
2318
2355
  dfs_final = dfs_1.union(dfs_2)
2319
2356
 
2320
2357
  compare_frames(df_final, dfs_final, compare_schema=False)
2358
+
2359
+
2360
+ # https://github.com/eakmanrq/sqlframe/issues/253
2361
+ def test_union_common_root_again(
2362
+ pyspark_employee: PySparkDataFrame,
2363
+ get_df: t.Callable[[str], BaseDataFrame],
2364
+ compare_frames: t.Callable,
2365
+ ):
2366
+ df_1 = pyspark_employee.filter(F.col("age") > 40)
2367
+ df_2 = df_1.join(
2368
+ pyspark_employee.select("employee_id").distinct(),
2369
+ on="employee_id",
2370
+ how="right",
2371
+ )
2372
+ df_final = df_1.union(df_2).union(pyspark_employee)
2373
+
2374
+ employee = get_df("employee")
2375
+ dfs_1 = employee.filter(SF.col("age") > 40)
2376
+ dfs_2 = dfs_1.join(
2377
+ employee.select("employee_id").distinct(),
2378
+ on="employee_id",
2379
+ how="right",
2380
+ )
2381
+ dfs_final = dfs_1.union(dfs_2).union(employee)
2382
+
2383
+ compare_frames(df_final, dfs_final, compare_schema=False)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes