sqlframe 3.13.0__tar.gz → 3.13.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 (376) hide show
  1. {sqlframe-3.13.0 → sqlframe-3.13.2}/PKG-INFO +1 -4
  2. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/spark.md +8 -54
  3. {sqlframe-3.13.0 → sqlframe-3.13.2}/setup.py +3 -3
  4. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/_version.py +2 -2
  5. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/dataframe.py +23 -11
  6. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/dataframe.py +5 -0
  7. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/dataframe.py +6 -0
  8. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/dataframe.py +1 -0
  9. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/PKG-INFO +1 -4
  10. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/requires.txt +3 -3
  11. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +5 -0
  12. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/test_databricks_dataframe.py +8 -0
  13. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_dataframe.py +14 -0
  14. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_dataframe.py +8 -0
  15. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +16 -0
  16. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/spark/test_spark_dataframe.py +7 -0
  17. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_dataframe.py +14 -0
  18. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_session_case_sensitivity.py +3 -3
  19. {sqlframe-3.13.0 → sqlframe-3.13.2}/.github/CODEOWNERS +0 -0
  20. {sqlframe-3.13.0 → sqlframe-3.13.2}/.github/workflows/main.workflow.yaml +0 -0
  21. {sqlframe-3.13.0 → sqlframe-3.13.2}/.github/workflows/publish.workflow.yaml +0 -0
  22. {sqlframe-3.13.0 → sqlframe-3.13.2}/.gitignore +0 -0
  23. {sqlframe-3.13.0 → sqlframe-3.13.2}/.pre-commit-config.yaml +0 -0
  24. {sqlframe-3.13.0 → sqlframe-3.13.2}/.readthedocs.yaml +0 -0
  25. {sqlframe-3.13.0 → sqlframe-3.13.2}/LICENSE +0 -0
  26. {sqlframe-3.13.0 → sqlframe-3.13.2}/Makefile +0 -0
  27. {sqlframe-3.13.0 → sqlframe-3.13.2}/README.md +0 -0
  28. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/add_chatgpt_support.md +0 -0
  29. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  30. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  31. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  32. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  33. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  34. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  35. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  36. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  37. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/but_wait_theres_more.gif +0 -0
  38. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/cake.gif +0 -0
  39. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/images/you_get_pyspark_api.gif +0 -0
  40. {sqlframe-3.13.0 → sqlframe-3.13.2}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  41. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/bigquery.md +0 -0
  42. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/configuration.md +0 -0
  43. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/databricks.md +0 -0
  44. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/bigquery.md +0 -0
  45. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/duckdb.md +0 -0
  46. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/SF.png +0 -0
  47. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/favicon.png +0 -0
  48. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/favicon_old.png +0 -0
  49. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/sqlframe_diagram.png +0 -0
  50. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/images/sqlframe_logo.png +0 -0
  51. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/docs/postgres.md +0 -0
  52. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/duckdb.md +0 -0
  53. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/SF.png +0 -0
  54. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/favicon.png +0 -0
  55. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/favicon_old.png +0 -0
  56. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/sqlframe_diagram.png +0 -0
  57. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/images/sqlframe_logo.png +0 -0
  58. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/index.md +0 -0
  59. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/postgres.md +0 -0
  60. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/redshift.md +0 -0
  61. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/requirements.txt +0 -0
  62. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/snowflake.md +0 -0
  63. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/standalone.md +0 -0
  64. {sqlframe-3.13.0 → sqlframe-3.13.2}/docs/stylesheets/extra.css +0 -0
  65. {sqlframe-3.13.0 → sqlframe-3.13.2}/mkdocs.yml +0 -0
  66. {sqlframe-3.13.0 → sqlframe-3.13.2}/pytest.ini +0 -0
  67. {sqlframe-3.13.0 → sqlframe-3.13.2}/renovate.json +0 -0
  68. {sqlframe-3.13.0 → sqlframe-3.13.2}/setup.cfg +0 -0
  69. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/LICENSE +0 -0
  70. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/__init__.py +0 -0
  71. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/__init__.py +0 -0
  72. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/_typing.py +0 -0
  73. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/catalog.py +0 -0
  74. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/column.py +0 -0
  75. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/decorators.py +0 -0
  76. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/exceptions.py +0 -0
  77. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/function_alternatives.py +0 -0
  78. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/functions.py +0 -0
  79. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/group.py +0 -0
  80. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/__init__.py +0 -0
  81. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  82. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  83. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  84. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/normalize.py +0 -0
  85. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/operations.py +0 -0
  86. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/readerwriter.py +0 -0
  87. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/session.py +0 -0
  88. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/transforms.py +0 -0
  89. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/types.py +0 -0
  90. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/udf.py +0 -0
  91. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/util.py +0 -0
  92. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/base/window.py +0 -0
  93. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/__init__.py +0 -0
  94. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/catalog.py +0 -0
  95. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/column.py +0 -0
  96. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/functions.py +0 -0
  97. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/functions.pyi +0 -0
  98. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/group.py +0 -0
  99. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/readwriter.py +0 -0
  100. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/session.py +0 -0
  101. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/types.py +0 -0
  102. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/udf.py +0 -0
  103. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/bigquery/window.py +0 -0
  104. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/__init__.py +0 -0
  105. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/catalog.py +0 -0
  106. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/column.py +0 -0
  107. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/dataframe.py +0 -0
  108. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/functions.py +0 -0
  109. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/functions.pyi +0 -0
  110. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/group.py +0 -0
  111. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/readwriter.py +0 -0
  112. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/session.py +0 -0
  113. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/types.py +0 -0
  114. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/udf.py +0 -0
  115. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/databricks/window.py +0 -0
  116. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/__init__.py +0 -0
  117. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/catalog.py +0 -0
  118. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/column.py +0 -0
  119. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/functions.py +0 -0
  120. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/functions.pyi +0 -0
  121. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/group.py +0 -0
  122. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/readwriter.py +0 -0
  123. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/session.py +0 -0
  124. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/types.py +0 -0
  125. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/udf.py +0 -0
  126. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/duckdb/window.py +0 -0
  127. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/__init__.py +0 -0
  128. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/catalog.py +0 -0
  129. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/column.py +0 -0
  130. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/dataframe.py +0 -0
  131. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/functions.py +0 -0
  132. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/functions.pyi +0 -0
  133. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/group.py +0 -0
  134. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/readwriter.py +0 -0
  135. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/session.py +0 -0
  136. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/types.py +0 -0
  137. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/udf.py +0 -0
  138. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/postgres/window.py +0 -0
  139. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/__init__.py +0 -0
  140. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/catalog.py +0 -0
  141. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/column.py +0 -0
  142. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/dataframe.py +0 -0
  143. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/functions.py +0 -0
  144. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/group.py +0 -0
  145. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/readwriter.py +0 -0
  146. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/session.py +0 -0
  147. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/types.py +0 -0
  148. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/udf.py +0 -0
  149. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/redshift/window.py +0 -0
  150. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/__init__.py +0 -0
  151. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/catalog.py +0 -0
  152. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/column.py +0 -0
  153. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/functions.py +0 -0
  154. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/functions.pyi +0 -0
  155. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/group.py +0 -0
  156. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/readwriter.py +0 -0
  157. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/session.py +0 -0
  158. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/types.py +0 -0
  159. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/udf.py +0 -0
  160. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/snowflake/window.py +0 -0
  161. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/__init__.py +0 -0
  162. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/catalog.py +0 -0
  163. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/column.py +0 -0
  164. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/dataframe.py +0 -0
  165. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/functions.py +0 -0
  166. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/functions.pyi +0 -0
  167. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/group.py +0 -0
  168. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/readwriter.py +0 -0
  169. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/session.py +0 -0
  170. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/types.py +0 -0
  171. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/udf.py +0 -0
  172. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/spark/window.py +0 -0
  173. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/__init__.py +0 -0
  174. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/catalog.py +0 -0
  175. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/column.py +0 -0
  176. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/dataframe.py +0 -0
  177. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/functions.py +0 -0
  178. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/group.py +0 -0
  179. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/readwriter.py +0 -0
  180. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/session.py +0 -0
  181. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/types.py +0 -0
  182. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/udf.py +0 -0
  183. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/standalone/window.py +0 -0
  184. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/testing/__init__.py +0 -0
  185. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe/testing/utils.py +0 -0
  186. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/SOURCES.txt +0 -0
  187. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/dependency_links.txt +0 -0
  188. {sqlframe-3.13.0 → sqlframe-3.13.2}/sqlframe.egg-info/top_level.txt +0 -0
  189. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/__init__.py +0 -0
  190. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/common_fixtures.py +0 -0
  191. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/conftest.py +0 -0
  192. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee.csv +0 -0
  193. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee.json +0 -0
  194. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee.parquet +0 -0
  195. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
  196. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
  197. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
  198. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
  199. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
  200. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
  201. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
  202. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
  203. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
  204. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
  205. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
  206. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
  207. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
  208. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
  209. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/employee_extra_line.csv +0 -0
  210. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/issue_219.csv +0 -0
  211. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds1.sql +0 -0
  212. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds10.sql +0 -0
  213. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds11.sql +0 -0
  214. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds12.sql +0 -0
  215. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds13.sql +0 -0
  216. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds14.sql +0 -0
  217. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds15.sql +0 -0
  218. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds16.sql +0 -0
  219. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds17.sql +0 -0
  220. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds18.sql +0 -0
  221. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds19.sql +0 -0
  222. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds2.sql +0 -0
  223. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds20.sql +0 -0
  224. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds21.sql +0 -0
  225. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds22.sql +0 -0
  226. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds23.sql +0 -0
  227. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds24.sql +0 -0
  228. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds25.sql +0 -0
  229. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds26.sql +0 -0
  230. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds27.sql +0 -0
  231. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds28.sql +0 -0
  232. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds29.sql +0 -0
  233. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds3.sql +0 -0
  234. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds30.sql +0 -0
  235. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds31.sql +0 -0
  236. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds32.sql +0 -0
  237. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds33.sql +0 -0
  238. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds34.sql +0 -0
  239. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds35.sql +0 -0
  240. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds36.sql +0 -0
  241. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds37.sql +0 -0
  242. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds38.sql +0 -0
  243. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds39.sql +0 -0
  244. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds4.sql +0 -0
  245. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds40.sql +0 -0
  246. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds41.sql +0 -0
  247. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds42.sql +0 -0
  248. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds43.sql +0 -0
  249. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds44.sql +0 -0
  250. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds45.sql +0 -0
  251. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds46.sql +0 -0
  252. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds47.sql +0 -0
  253. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds48.sql +0 -0
  254. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds49.sql +0 -0
  255. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds5.sql +0 -0
  256. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds50.sql +0 -0
  257. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds51.sql +0 -0
  258. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds52.sql +0 -0
  259. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds53.sql +0 -0
  260. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds54.sql +0 -0
  261. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds55.sql +0 -0
  262. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds56.sql +0 -0
  263. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds57.sql +0 -0
  264. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds58.sql +0 -0
  265. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds59.sql +0 -0
  266. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds6.sql +0 -0
  267. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds60.sql +0 -0
  268. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds61.sql +0 -0
  269. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds62.sql +0 -0
  270. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds63.sql +0 -0
  271. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds64.sql +0 -0
  272. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds65.sql +0 -0
  273. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds66.sql +0 -0
  274. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds67.sql +0 -0
  275. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds68.sql +0 -0
  276. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds69.sql +0 -0
  277. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds7.sql +0 -0
  278. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds70.sql +0 -0
  279. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds71.sql +0 -0
  280. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds72.sql +0 -0
  281. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds73.sql +0 -0
  282. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds74.sql +0 -0
  283. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds75.sql +0 -0
  284. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds76.sql +0 -0
  285. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds77.sql +0 -0
  286. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds78.sql +0 -0
  287. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds79.sql +0 -0
  288. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds8.sql +0 -0
  289. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds80.sql +0 -0
  290. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds81.sql +0 -0
  291. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds82.sql +0 -0
  292. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds83.sql +0 -0
  293. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds84.sql +0 -0
  294. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds85.sql +0 -0
  295. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds86.sql +0 -0
  296. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds87.sql +0 -0
  297. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds88.sql +0 -0
  298. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds89.sql +0 -0
  299. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds9.sql +0 -0
  300. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds90.sql +0 -0
  301. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds91.sql +0 -0
  302. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds92.sql +0 -0
  303. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds93.sql +0 -0
  304. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds94.sql +0 -0
  305. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds95.sql +0 -0
  306. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds96.sql +0 -0
  307. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds97.sql +0 -0
  308. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds98.sql +0 -0
  309. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/fixtures/tpcds/tpcds99.sql +0 -0
  310. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/__init__.py +0 -0
  311. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/__init__.py +0 -0
  312. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/__init__.py +0 -0
  313. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  314. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
  315. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/__init__.py +0 -0
  316. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
  317. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
  318. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/__init__.py +0 -0
  319. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
  320. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  321. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  322. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
  323. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
  324. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/duck/test_tpcds.py +0 -0
  325. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/__init__.py +0 -0
  326. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
  327. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  328. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
  329. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/redshift/__init__.py +0 -0
  330. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  331. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
  332. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/__init__.py +0 -0
  333. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  334. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
  335. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/spark/__init__.py +0 -0
  336. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  337. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_column.py +0 -0
  338. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_dataframe.py +0 -0
  339. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_reader.py +0 -0
  340. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_session.py +0 -0
  341. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_engine_writer.py +0 -0
  342. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_int_functions.py +0 -0
  343. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/engines/test_int_testing.py +0 -0
  344. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/fixtures.py +0 -0
  345. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_dataframe_stats.py +0 -0
  346. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_grouped_data.py +0 -0
  347. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/integration/test_int_session.py +0 -0
  348. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/types.py +0 -0
  349. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/__init__.py +0 -0
  350. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/bigquery/__init__.py +0 -0
  351. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/bigquery/test_activate.py +0 -0
  352. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/conftest.py +0 -0
  353. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/databricks/__init__.py +0 -0
  354. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/databricks/test_activate.py +0 -0
  355. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/duck/__init__.py +0 -0
  356. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/duck/test_activate.py +0 -0
  357. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/postgres/__init__.py +0 -0
  358. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/postgres/test_activate.py +0 -0
  359. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/redshift/__init__.py +0 -0
  360. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/redshift/test_activate.py +0 -0
  361. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/snowflake/__init__.py +0 -0
  362. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/snowflake/test_activate.py +0 -0
  363. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/spark/__init__.py +0 -0
  364. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/spark/test_activate.py +0 -0
  365. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/__init__.py +0 -0
  366. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/fixtures.py +0 -0
  367. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_activate.py +0 -0
  368. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_column.py +0 -0
  369. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_dataframe.py +0 -0
  370. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  371. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_functions.py +0 -0
  372. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_session.py +0 -0
  373. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_types.py +0 -0
  374. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/standalone/test_window.py +0 -0
  375. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/test_activate.py +0 -0
  376. {sqlframe-3.13.0 → sqlframe-3.13.2}/tests/unit/test_util.py +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.13.0
3
+ Version: 3.13.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
7
7
  Author-email: eakmanrq@gmail.com
8
8
  License: MIT
9
- Platform: UNKNOWN
10
9
  Classifier: Development Status :: 5 - Production/Stable
11
10
  Classifier: Intended Audience :: Developers
12
11
  Classifier: Intended Audience :: Science/Research
@@ -192,5 +191,3 @@ LIMIT 5
192
191
  | 1975 | 868,985 | 10.92 |
193
192
  +------+---------------------------+----------------+
194
193
  ```
195
-
196
-
@@ -8,13 +8,7 @@ pip install "sqlframe[spark]"
8
8
 
9
9
  ## Enabling SQLFrame
10
10
 
11
- SQLFrame can be used in two ways:
12
-
13
- * Directly importing the `sqlframe.spark` package
14
- * Using the [activate](./configuration.md#activating-sqlframe) function to allow for continuing to use `pyspark.sql` but have it use SQLFrame behind the scenes.
15
-
16
- ### Import
17
-
11
+ SQLFrame can be enabled by directly importing the `sqlframe.spark` package.
18
12
  If converting a PySpark pipeline, all `pyspark.sql` should be replaced with `sqlframe.spark`.
19
13
  In addition, many classes will have a `Spark` prefix.
20
14
  For example, `SparkDataFrame` instead of `DataFrame`.
@@ -30,58 +24,18 @@ from sqlframe.spark import functions as F
30
24
  from sqlframe.spark import SparkDataFrame
31
25
  ```
32
26
 
33
- ### Activate
34
-
35
- If you would like to continue using `pyspark.sql` but have it use SQLFrame behind the scenes, you can use the [activate](./configuration.md#activating-sqlframe) function.
36
-
37
- ```python
38
- from sqlframe import activate
39
- activate("spark")
40
-
41
- from pyspark.sql import SparkSession
42
- ```
43
-
44
27
  ## Creating a Session
45
28
 
46
29
  SQLFrame's SparkSession is created the same way you would normally create a SparkSession.
47
30
  The configuration you apply to the builder will be applied the the SparkSession that SQLFrame will create.
48
31
 
49
- === "Import"
50
-
51
- ```python
52
- from sqlframe.spark import SparkSession
53
-
54
- spark = SparkSession.builder.appName("MyApp").getOrCreate()
55
-
56
- # Now you can use SQLFrame
57
- ```
58
-
59
- === "Activate + Without Providing SparkSession"
60
-
61
- ```python
62
- from sqlframe import activate
63
- activate("spark")
64
-
65
- from pyspark.sql import SparkSession
66
-
67
- spark = SparkSession.builder.appName("MyApp").getOrCreate()
68
-
69
- # Now you can use SQLFrame
70
- ```
71
-
72
- === "Activate + Providing SparkSession"
73
-
74
- ```python
75
- from pyspark.sql import SparkSession
76
- from sqlframe import activate
77
- activate("spark", conn=SparkSession.builder.appName("MyApp").getOrCreate())
78
-
79
- from pyspark.sql import SparkSession
80
-
81
- spark = SparkSession.getOrCreate()
82
-
83
- # Now you can use SQLFrame
84
- ```
32
+ ```python
33
+ from sqlframe.spark import SparkSession
34
+
35
+ spark = SparkSession.builder.appName("MyApp").getOrCreate()
36
+
37
+ # Now you can use SQLFrame
38
+ ```
85
39
 
86
40
  ## Example Usage
87
41
 
@@ -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.1",
23
+ "sqlglot>=24.0.0,<26.3",
24
24
  "typing_extensions",
25
25
  ],
26
26
  extras_require={
@@ -36,14 +36,14 @@ setup(
36
36
  "pandas>=2,<3",
37
37
  "pandas-stubs>=2,<3",
38
38
  "psycopg>=3.1,<4",
39
- "pyarrow>=10,<19",
39
+ "pyarrow>=10,<20",
40
40
  "pyspark>=2,<3.6",
41
41
  "pytest>=8.2.0,<8.4",
42
42
  "pytest-forked",
43
43
  "pytest-postgresql>=6,<7",
44
44
  "pytest-xdist>=3.6,<3.7",
45
45
  "pre-commit>=3.7,<5",
46
- "ruff>=0.4.4,<0.9",
46
+ "ruff>=0.4.4,<0.10",
47
47
  "types-psycopg2>=2.9,<3",
48
48
  ],
49
49
  "docs": [
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.13.0'
16
- __version_tuple__ = version_tuple = (3, 13, 0)
15
+ __version__ = version = '3.13.2'
16
+ __version_tuple__ = version_tuple = (3, 13, 2)
@@ -202,6 +202,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
202
202
  _na: t.Type[NA]
203
203
  _stat: t.Type[STAT]
204
204
  _group_data: t.Type[GROUP_DATA]
205
+ _EXPLAIN_PREFIX = "EXPLAIN"
205
206
 
206
207
  def __init__(
207
208
  self,
@@ -806,6 +807,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
806
807
  )
807
808
  else:
808
809
  col = self._ensure_and_normalize_col(column)
810
+ if isinstance(col.expression, exp.Alias):
811
+ col.expression = col.expression.this
809
812
  return self.copy(expression=self.expression.where(col.expression))
810
813
 
811
814
  filter = where
@@ -1018,9 +1021,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1018
1021
  elif not isinstance(ascending, list):
1019
1022
  ascending = [ascending] * len(columns)
1020
1023
  ascending = [bool(x) for i, x in enumerate(ascending)]
1021
- assert len(columns) == len(
1022
- ascending
1023
- ), "The length of items in ascending must equal the number of columns provided"
1024
+ assert len(columns) == len(ascending), (
1025
+ "The length of items in ascending must equal the number of columns provided"
1026
+ )
1024
1027
  col_and_ascending = list(zip(columns, ascending))
1025
1028
  order_by_columns = [
1026
1029
  (
@@ -1142,6 +1145,18 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1142
1145
  final_df = filtered_df.select(*all_columns)
1143
1146
  return final_df
1144
1147
 
1148
+ def _get_explain_plan_rows(self) -> t.List[Row]:
1149
+ sql_queries = self.sql(
1150
+ pretty=False, optimize=False, as_list=True, dialect=self.session.execution_dialect
1151
+ )
1152
+ if len(sql_queries) > 1:
1153
+ raise ValueError("Cannot explain a DataFrame with multiple queries")
1154
+ sql_query = " ".join([self._EXPLAIN_PREFIX, sql_queries[0]])
1155
+ results = self.session._collect(sql_query)
1156
+ if len(results) != 1:
1157
+ raise ValueError("Got more than one result from explain query")
1158
+ return results
1159
+
1145
1160
  def explain(
1146
1161
  self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
1147
1162
  ) -> None:
@@ -1210,11 +1225,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1210
1225
  ...Statistics...
1211
1226
  ...
1212
1227
  """
1213
- sql_queries = self.sql(pretty=False, optimize=False, as_list=True)
1214
- if len(sql_queries) > 1:
1215
- raise ValueError("Cannot explain a DataFrame with multiple queries")
1216
- sql_query = "EXPLAIN " + sql_queries[0]
1217
- self.session._execute(sql_query)
1228
+ results = self._get_explain_plan_rows()
1229
+ print(results[0][0])
1218
1230
 
1219
1231
  @operation(Operation.FROM)
1220
1232
  def fillna(
@@ -1282,9 +1294,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1282
1294
  new_values = list(to_replace.values())
1283
1295
  elif not old_values and isinstance(to_replace, list):
1284
1296
  assert isinstance(value, list), "value must be a list since the replacements are a list"
1285
- assert len(to_replace) == len(
1286
- value
1287
- ), "the replacements and values must be the same length"
1297
+ assert len(to_replace) == len(value), (
1298
+ "the replacements and values must be the same length"
1299
+ )
1288
1300
  old_values = to_replace
1289
1301
  new_values = value
1290
1302
  else:
@@ -72,3 +72,8 @@ class BigQueryDataFrame(
72
72
  sql = self.session._to_sql(self.expression)
73
73
  query_job = self.session._client.query(sql, job_config=job_config)
74
74
  return [field_to_column(field) for field in query_job.schema]
75
+
76
+ def explain(
77
+ self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
78
+ ) -> None:
79
+ raise NotImplementedError("BigQuery does not support EXPLAIN")
@@ -46,6 +46,12 @@ class DuckDBDataFrame(
46
46
  _stat = DuckDBDataFrameStatFunctions
47
47
  _group_data = DuckDBGroupedData
48
48
 
49
+ def explain(
50
+ self, extended: t.Optional[t.Union[bool, str]] = None, mode: t.Optional[str] = None
51
+ ) -> None:
52
+ results = self._get_explain_plan_rows()
53
+ print(results[0][1])
54
+
49
55
  @t.overload
50
56
  def toArrow(self) -> ArrowTable: ...
51
57
 
@@ -43,6 +43,7 @@ class SnowflakeDataFrame(
43
43
  _na = SnowflakeDataFrameNaFunctions
44
44
  _stat = SnowflakeDataFrameStatFunctions
45
45
  _group_data = SnowflakeGroupedData
46
+ _EXPLAIN_PREFIX = "EXPLAIN USING TEXT"
46
47
 
47
48
  @property
48
49
  def _typed_columns(self) -> t.List[CatalogColumn]:
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.13.0
3
+ Version: 3.13.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
7
7
  Author-email: eakmanrq@gmail.com
8
8
  License: MIT
9
- Platform: UNKNOWN
10
9
  Classifier: Development Status :: 5 - Production/Stable
11
10
  Classifier: Intended Audience :: Developers
12
11
  Classifier: Intended Audience :: Science/Research
@@ -192,5 +191,3 @@ LIMIT 5
192
191
  | 1975 | 868,985 | 10.92 |
193
192
  +------+---------------------------+----------------+
194
193
  ```
195
-
196
-
@@ -1,5 +1,5 @@
1
1
  prettytable<4
2
- sqlglot<26.1,>=24.0.0
2
+ sqlglot<26.3,>=24.0.0
3
3
  typing_extensions
4
4
 
5
5
  [bigquery]
@@ -18,13 +18,13 @@ pandas-stubs<3,>=2
18
18
  pandas<3,>=2
19
19
  pre-commit<5,>=3.7
20
20
  psycopg<4,>=3.1
21
- pyarrow<19,>=10
21
+ pyarrow<20,>=10
22
22
  pyspark<3.6,>=2
23
23
  pytest-forked
24
24
  pytest-postgresql<7,>=6
25
25
  pytest-xdist<3.7,>=3.6
26
26
  pytest<8.4,>=8.2.0
27
- ruff<0.9,>=0.4.4
27
+ ruff<0.10,>=0.4.4
28
28
  types-psycopg2<3,>=2.9
29
29
 
30
30
  [docs]
@@ -157,3 +157,8 @@ def test_schema_nested(bigquery_datatypes: BigQueryDataFrame):
157
157
  assert struct_fields[8].dataType == types.TimestampType()
158
158
  assert struct_fields[9].name == "boolean_col"
159
159
  assert struct_fields[9].dataType == types.BooleanType()
160
+
161
+
162
+ def test_explain(bigquery_employee: BigQueryDataFrame):
163
+ with pytest.raises(NotImplementedError):
164
+ bigquery_employee.explain()
@@ -167,3 +167,11 @@ def test_schema_nested(databricks_datatypes: DatabricksDataFrame):
167
167
  assert struct_fields[9].dataType == types.TimestampType()
168
168
  assert struct_fields[10].name == "boolean_col"
169
169
  assert struct_fields[10].dataType == types.BooleanType()
170
+
171
+
172
+ def test_explain(databricks_employee: DatabricksDataFrame, capsys):
173
+ databricks_employee.explain()
174
+ output = capsys.readouterr().out.strip()
175
+ assert "== Physical Plan ==" in output
176
+ assert "LocalTableScan" in output
177
+ assert "== Photon Explanation ==" in output
@@ -252,3 +252,17 @@ def test_to_arrow_batch(duckdb_employee: DuckDBDataFrame):
252
252
  assert fifth_batch.column(4).to_pylist() == [100]
253
253
  with pytest.raises(StopIteration):
254
254
  record_batch_reader.read_next_batch()
255
+
256
+
257
+ def test_explain(duckdb_employee: DuckDBDataFrame, capsys):
258
+ duckdb_employee.explain()
259
+ assert (
260
+ capsys.readouterr().out.strip()
261
+ == """
262
+ ┌───────────────────────────┐
263
+ │ COLUMN_DATA_SCAN │
264
+ │ ──────────────────── │
265
+ │ ~5 Rows │
266
+ └───────────────────────────┘
267
+ """.strip()
268
+ )
@@ -120,3 +120,11 @@ def test_schema_nested(postgres_datatypes: PostgresDataFrame):
120
120
  assert struct_fields[6].dataType == types.TimestampType()
121
121
  assert struct_fields[7].name == "boolean_col"
122
122
  assert struct_fields[7].dataType == types.BooleanType()
123
+
124
+
125
+ def test_explain(postgres_employee: PostgresDataFrame, capsys):
126
+ postgres_employee.explain()
127
+ assert (
128
+ capsys.readouterr().out.strip()
129
+ == """Values Scan on "*VALUES*" (cost=0.00..0.06 rows=5 width=76)""".strip()
130
+ )
@@ -156,3 +156,19 @@ def test_schema_nested(snowflake_datatypes: SnowflakeDataFrame):
156
156
  assert struct_fields[9].dataType == types.TimestampType()
157
157
  assert struct_fields[10].name == "boolean_col"
158
158
  assert struct_fields[10].dataType == types.BooleanType()
159
+
160
+
161
+ def test_explain(snowflake_employee: SnowflakeDataFrame, capsys):
162
+ snowflake_employee.explain()
163
+ assert (
164
+ capsys.readouterr().out.strip()
165
+ == """
166
+ GlobalStats:
167
+ partitionsTotal=0
168
+ partitionsAssigned=0
169
+ bytesAssigned=0
170
+ Operations:
171
+ 1:0 ->Result A1.EMPLOYEE_ID, A1.FNAME, A1.LNAME, A1.AGE, A1.STORE_ID
172
+ 1:1 ->ValuesClause (1, 'Jack', 'Shephard', 37, 1), (2, 'John', 'Locke', 65, 1), (3, 'Kate', 'Austen', 37, 2), (4, 'Claire', 'Littleton', 27, 2), (5, 'Hugo', 'Reyes', 29, 100)
173
+ """.strip()
174
+ )
@@ -163,3 +163,10 @@ def test_schema_nested(spark_datatypes: SparkDataFrame):
163
163
  assert struct_fields[9].dataType == types.TimestampType()
164
164
  assert struct_fields[10].name == "boolean_col"
165
165
  assert struct_fields[10].dataType == types.BooleanType()
166
+
167
+
168
+ def test_explain(spark_employee: SparkDataFrame, capsys):
169
+ spark_employee.explain()
170
+ output = capsys.readouterr().out.strip()
171
+ assert "== Physical Plan ==" in output
172
+ assert "LocalTableScan" in output
@@ -2278,3 +2278,17 @@ def test_self_join(
2278
2278
  )
2279
2279
 
2280
2280
  compare_frames(df_joined, dfs_joined, compare_schema=False)
2281
+
2282
+
2283
+ # https://github.com/eakmanrq/sqlframe/issues/232
2284
+ def test_filter_alias(
2285
+ pyspark_employee: PySparkDataFrame,
2286
+ get_df: t.Callable[[str], BaseDataFrame],
2287
+ compare_frames: t.Callable,
2288
+ ):
2289
+ df_filtered = pyspark_employee.where((F.col("age") > 40).alias("age_gt_40"))
2290
+
2291
+ employee = get_df("employee")
2292
+ dfs_filtered = employee.where((SF.col("age") > 40).alias("age_gt_40"))
2293
+
2294
+ compare_frames(df_filtered, dfs_filtered, compare_schema=False)
@@ -25,7 +25,7 @@ tests = [
25
25
  '"Test"',
26
26
  {"name": "VARCHAR"},
27
27
  "name",
28
- '''SELECT "Test"."NAME" AS "NAME" FROM "Test" AS "Test"''',
28
+ '''SELECT "TEST"."NAME" AS "NAME" FROM "Test" AS "TEST"''',
29
29
  ),
30
30
  (
31
31
  "Column has CS while table does not",
@@ -41,7 +41,7 @@ tests = [
41
41
  '"Test"',
42
42
  {'"Name"': "VARCHAR"},
43
43
  '"Name"',
44
- '''SELECT "Test"."Name" AS "Name" FROM "Test" AS "Test"''',
44
+ '''SELECT "TEST"."Name" AS "Name" FROM "Test" AS "TEST"''',
45
45
  ),
46
46
  (
47
47
  "Lowercase CS table and column",
@@ -49,7 +49,7 @@ tests = [
49
49
  '"test"',
50
50
  {'"name"': "VARCHAR"},
51
51
  '"name"',
52
- '''SELECT "test"."name" AS "name" FROM "test" AS "test"''',
52
+ '''SELECT "TEST"."name" AS "name" FROM "test" AS "TEST"''',
53
53
  ),
54
54
  (
55
55
  "CS table and column and query table but no CS in query column",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes