sqlframe 3.28.1__tar.gz → 3.29.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. {sqlframe-3.28.1 → sqlframe-3.29.0}/PKG-INFO +7 -6
  2. {sqlframe-3.28.1 → sqlframe-3.29.0}/README.md +6 -5
  3. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/databricks.md +1 -3
  4. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/_version.py +2 -2
  5. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/dataframe.py +14 -11
  6. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/PKG-INFO +7 -6
  7. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_dataframe.py +44 -0
  8. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_dataframe.py +1 -1
  9. {sqlframe-3.28.1 → sqlframe-3.29.0}/.github/CODEOWNERS +0 -0
  10. {sqlframe-3.28.1 → sqlframe-3.29.0}/.github/workflows/main.workflow.yaml +0 -0
  11. {sqlframe-3.28.1 → sqlframe-3.29.0}/.github/workflows/publish.workflow.yaml +0 -0
  12. {sqlframe-3.28.1 → sqlframe-3.29.0}/.gitignore +0 -0
  13. {sqlframe-3.28.1 → sqlframe-3.29.0}/.pre-commit-config.yaml +0 -0
  14. {sqlframe-3.28.1 → sqlframe-3.29.0}/.readthedocs.yaml +0 -0
  15. {sqlframe-3.28.1 → sqlframe-3.29.0}/LICENSE +0 -0
  16. {sqlframe-3.28.1 → sqlframe-3.29.0}/Makefile +0 -0
  17. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/add_chatgpt_support.md +0 -0
  18. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  19. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  20. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  21. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  22. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  23. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  24. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  25. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  26. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/but_wait_theres_more.gif +0 -0
  27. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/cake.gif +0 -0
  28. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/images/you_get_pyspark_api.gif +0 -0
  29. {sqlframe-3.28.1 → sqlframe-3.29.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  30. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/bigquery.md +0 -0
  31. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/configuration.md +0 -0
  32. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/bigquery.md +0 -0
  33. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/duckdb.md +0 -0
  34. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/images/SF.png +0 -0
  35. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/images/favicon.png +0 -0
  36. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/images/sqlframe_logo.png +0 -0
  37. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/docs/postgres.md +0 -0
  38. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/duckdb.md +0 -0
  39. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/images/SF.png +0 -0
  40. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/images/favicon.png +0 -0
  41. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/images/sqlframe_logo.png +0 -0
  42. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/index.md +0 -0
  43. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/postgres.md +0 -0
  44. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/redshift.md +0 -0
  45. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/requirements.txt +0 -0
  46. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/snowflake.md +0 -0
  47. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/spark.md +0 -0
  48. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/standalone.md +0 -0
  49. {sqlframe-3.28.1 → sqlframe-3.29.0}/docs/stylesheets/extra.css +0 -0
  50. {sqlframe-3.28.1 → sqlframe-3.29.0}/mkdocs.yml +0 -0
  51. {sqlframe-3.28.1 → sqlframe-3.29.0}/pytest.ini +0 -0
  52. {sqlframe-3.28.1 → sqlframe-3.29.0}/renovate.json +0 -0
  53. {sqlframe-3.28.1 → sqlframe-3.29.0}/setup.cfg +0 -0
  54. {sqlframe-3.28.1 → sqlframe-3.29.0}/setup.py +0 -0
  55. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/LICENSE +0 -0
  56. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/__init__.py +0 -0
  57. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/__init__.py +0 -0
  58. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/_typing.py +0 -0
  59. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/catalog.py +0 -0
  60. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/column.py +0 -0
  61. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/decorators.py +0 -0
  62. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/exceptions.py +0 -0
  63. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/function_alternatives.py +0 -0
  64. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/functions.py +0 -0
  65. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/group.py +0 -0
  66. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/__init__.py +0 -0
  67. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  68. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  69. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  70. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/mixins/table_mixins.py +0 -0
  71. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/normalize.py +0 -0
  72. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/operations.py +0 -0
  73. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/readerwriter.py +0 -0
  74. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/session.py +0 -0
  75. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/table.py +0 -0
  76. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/transforms.py +0 -0
  77. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/types.py +0 -0
  78. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/udf.py +0 -0
  79. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/util.py +0 -0
  80. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/base/window.py +0 -0
  81. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/__init__.py +0 -0
  82. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/catalog.py +0 -0
  83. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/column.py +0 -0
  84. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/dataframe.py +0 -0
  85. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/functions.py +0 -0
  86. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/functions.pyi +0 -0
  87. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/group.py +0 -0
  88. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/readwriter.py +0 -0
  89. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/session.py +0 -0
  90. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/table.py +0 -0
  91. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/types.py +0 -0
  92. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/udf.py +0 -0
  93. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/bigquery/window.py +0 -0
  94. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/__init__.py +0 -0
  95. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/catalog.py +0 -0
  96. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/column.py +0 -0
  97. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/dataframe.py +0 -0
  98. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/functions.py +0 -0
  99. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/functions.pyi +0 -0
  100. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/group.py +0 -0
  101. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/readwriter.py +0 -0
  102. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/session.py +0 -0
  103. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/table.py +0 -0
  104. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/types.py +0 -0
  105. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/udf.py +0 -0
  106. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/databricks/window.py +0 -0
  107. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/__init__.py +0 -0
  108. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/catalog.py +0 -0
  109. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/column.py +0 -0
  110. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/dataframe.py +0 -0
  111. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/functions.py +0 -0
  112. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/functions.pyi +0 -0
  113. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/group.py +0 -0
  114. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/readwriter.py +0 -0
  115. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/session.py +0 -0
  116. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/table.py +0 -0
  117. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/types.py +0 -0
  118. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/udf.py +0 -0
  119. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/duckdb/window.py +0 -0
  120. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/__init__.py +0 -0
  121. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/catalog.py +0 -0
  122. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/column.py +0 -0
  123. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/dataframe.py +0 -0
  124. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/functions.py +0 -0
  125. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/functions.pyi +0 -0
  126. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/group.py +0 -0
  127. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/readwriter.py +0 -0
  128. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/session.py +0 -0
  129. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/table.py +0 -0
  130. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/types.py +0 -0
  131. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/udf.py +0 -0
  132. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/postgres/window.py +0 -0
  133. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/py.typed +0 -0
  134. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/__init__.py +0 -0
  135. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/catalog.py +0 -0
  136. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/column.py +0 -0
  137. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/dataframe.py +0 -0
  138. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/functions.py +0 -0
  139. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/group.py +0 -0
  140. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/readwriter.py +0 -0
  141. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/session.py +0 -0
  142. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/table.py +0 -0
  143. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/types.py +0 -0
  144. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/udf.py +0 -0
  145. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/redshift/window.py +0 -0
  146. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/__init__.py +0 -0
  147. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/catalog.py +0 -0
  148. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/column.py +0 -0
  149. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/dataframe.py +0 -0
  150. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/functions.py +0 -0
  151. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/functions.pyi +0 -0
  152. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/group.py +0 -0
  153. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/readwriter.py +0 -0
  154. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/session.py +0 -0
  155. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/table.py +0 -0
  156. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/types.py +0 -0
  157. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/udf.py +0 -0
  158. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/snowflake/window.py +0 -0
  159. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/__init__.py +0 -0
  160. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/catalog.py +0 -0
  161. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/column.py +0 -0
  162. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/dataframe.py +0 -0
  163. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/functions.py +0 -0
  164. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/functions.pyi +0 -0
  165. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/group.py +0 -0
  166. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/readwriter.py +0 -0
  167. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/session.py +0 -0
  168. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/table.py +0 -0
  169. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/types.py +0 -0
  170. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/udf.py +0 -0
  171. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/spark/window.py +0 -0
  172. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/__init__.py +0 -0
  173. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/catalog.py +0 -0
  174. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/column.py +0 -0
  175. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/dataframe.py +0 -0
  176. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/functions.py +0 -0
  177. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/group.py +0 -0
  178. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/readwriter.py +0 -0
  179. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/session.py +0 -0
  180. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/table.py +0 -0
  181. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/types.py +0 -0
  182. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/udf.py +0 -0
  183. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/standalone/window.py +0 -0
  184. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/testing/__init__.py +0 -0
  185. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe/testing/utils.py +0 -0
  186. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/SOURCES.txt +0 -0
  187. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/dependency_links.txt +0 -0
  188. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/requires.txt +0 -0
  189. {sqlframe-3.28.1 → sqlframe-3.29.0}/sqlframe.egg-info/top_level.txt +0 -0
  190. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/__init__.py +0 -0
  191. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/common_fixtures.py +0 -0
  192. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/conftest.py +0 -0
  193. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee.csv +0 -0
  194. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee.json +0 -0
  195. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee.parquet +0 -0
  196. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
  197. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
  198. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
  199. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
  200. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
  201. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
  202. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
  203. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
  204. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
  205. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
  206. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
  207. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
  208. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
  209. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
  210. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/employee_extra_line.csv +0 -0
  211. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/issue_219.csv +0 -0
  212. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds1.sql +0 -0
  213. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds10.sql +0 -0
  214. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds11.sql +0 -0
  215. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds12.sql +0 -0
  216. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds13.sql +0 -0
  217. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds14.sql +0 -0
  218. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds15.sql +0 -0
  219. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds16.sql +0 -0
  220. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds17.sql +0 -0
  221. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds18.sql +0 -0
  222. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds19.sql +0 -0
  223. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds2.sql +0 -0
  224. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds20.sql +0 -0
  225. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds21.sql +0 -0
  226. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds22.sql +0 -0
  227. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds23.sql +0 -0
  228. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds24.sql +0 -0
  229. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds25.sql +0 -0
  230. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds26.sql +0 -0
  231. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds27.sql +0 -0
  232. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds28.sql +0 -0
  233. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds29.sql +0 -0
  234. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds3.sql +0 -0
  235. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds30.sql +0 -0
  236. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds31.sql +0 -0
  237. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds32.sql +0 -0
  238. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds33.sql +0 -0
  239. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds34.sql +0 -0
  240. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds35.sql +0 -0
  241. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds36.sql +0 -0
  242. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds37.sql +0 -0
  243. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds38.sql +0 -0
  244. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds39.sql +0 -0
  245. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds4.sql +0 -0
  246. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds40.sql +0 -0
  247. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds41.sql +0 -0
  248. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds42.sql +0 -0
  249. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds43.sql +0 -0
  250. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds44.sql +0 -0
  251. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds45.sql +0 -0
  252. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds46.sql +0 -0
  253. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds47.sql +0 -0
  254. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds48.sql +0 -0
  255. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds49.sql +0 -0
  256. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds5.sql +0 -0
  257. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds50.sql +0 -0
  258. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds51.sql +0 -0
  259. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds52.sql +0 -0
  260. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds53.sql +0 -0
  261. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds54.sql +0 -0
  262. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds55.sql +0 -0
  263. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds56.sql +0 -0
  264. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds57.sql +0 -0
  265. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds58.sql +0 -0
  266. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds59.sql +0 -0
  267. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds6.sql +0 -0
  268. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds60.sql +0 -0
  269. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds61.sql +0 -0
  270. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds62.sql +0 -0
  271. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds63.sql +0 -0
  272. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds64.sql +0 -0
  273. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds65.sql +0 -0
  274. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds66.sql +0 -0
  275. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds67.sql +0 -0
  276. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds68.sql +0 -0
  277. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds69.sql +0 -0
  278. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds7.sql +0 -0
  279. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds70.sql +0 -0
  280. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds71.sql +0 -0
  281. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds72.sql +0 -0
  282. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds73.sql +0 -0
  283. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds74.sql +0 -0
  284. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds75.sql +0 -0
  285. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds76.sql +0 -0
  286. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds77.sql +0 -0
  287. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds78.sql +0 -0
  288. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds79.sql +0 -0
  289. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds8.sql +0 -0
  290. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds80.sql +0 -0
  291. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds81.sql +0 -0
  292. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds82.sql +0 -0
  293. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds83.sql +0 -0
  294. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds84.sql +0 -0
  295. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds85.sql +0 -0
  296. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds86.sql +0 -0
  297. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds87.sql +0 -0
  298. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds88.sql +0 -0
  299. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds89.sql +0 -0
  300. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds9.sql +0 -0
  301. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds90.sql +0 -0
  302. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds91.sql +0 -0
  303. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds92.sql +0 -0
  304. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds93.sql +0 -0
  305. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds94.sql +0 -0
  306. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds95.sql +0 -0
  307. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds96.sql +0 -0
  308. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds97.sql +0 -0
  309. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds98.sql +0 -0
  310. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/fixtures/tpcds/tpcds99.sql +0 -0
  311. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/__init__.py +0 -0
  312. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/__init__.py +0 -0
  313. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/__init__.py +0 -0
  314. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  315. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
  316. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
  317. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/__init__.py +0 -0
  318. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
  319. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
  320. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/databricks/test_databricks_session.py +0 -0
  321. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/__init__.py +0 -0
  322. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
  323. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  324. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  325. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  326. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
  327. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
  328. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/duck/test_tpcds.py +0 -0
  329. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/__init__.py +0 -0
  330. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
  331. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  332. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  333. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
  334. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/redshift/__init__.py +0 -0
  335. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  336. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
  337. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/__init__.py +0 -0
  338. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  339. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
  340. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
  341. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/spark/__init__.py +0 -0
  342. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  343. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
  344. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_column.py +0 -0
  345. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_reader.py +0 -0
  346. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_session.py +0 -0
  347. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_table.py +0 -0
  348. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_engine_writer.py +0 -0
  349. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_int_functions.py +0 -0
  350. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/engines/test_int_testing.py +0 -0
  351. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/fixtures.py +0 -0
  352. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_dataframe_stats.py +0 -0
  353. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_grouped_data.py +0 -0
  354. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/integration/test_int_session.py +0 -0
  355. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/types.py +0 -0
  356. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/__init__.py +0 -0
  357. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/bigquery/__init__.py +0 -0
  358. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/bigquery/test_activate.py +0 -0
  359. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/conftest.py +0 -0
  360. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/databricks/__init__.py +0 -0
  361. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/databricks/test_activate.py +0 -0
  362. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/duck/__init__.py +0 -0
  363. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/duck/test_activate.py +0 -0
  364. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/duck/test_reader_options.py +0 -0
  365. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/postgres/__init__.py +0 -0
  366. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/postgres/test_activate.py +0 -0
  367. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/redshift/__init__.py +0 -0
  368. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/redshift/test_activate.py +0 -0
  369. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/snowflake/__init__.py +0 -0
  370. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/snowflake/test_activate.py +0 -0
  371. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/spark/__init__.py +0 -0
  372. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/spark/test_activate.py +0 -0
  373. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/spark/test_reader_options.py +0 -0
  374. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/__init__.py +0 -0
  375. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/fixtures.py +0 -0
  376. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_activate.py +0 -0
  377. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_column.py +0 -0
  378. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_dataframe.py +0 -0
  379. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  380. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_functions.py +0 -0
  381. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_session.py +0 -0
  382. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  383. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_types.py +0 -0
  384. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/standalone/test_window.py +0 -0
  385. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/test_activate.py +0 -0
  386. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/test_base_reader_options.py +0 -0
  387. {sqlframe-3.28.1 → sqlframe-3.29.0}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.28.1
3
+ Version: 3.29.0
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -34,18 +34,19 @@ License-File: LICENSE
34
34
 
35
35
  SQLFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on database engines - no Spark clusters or dependencies required.
36
36
 
37
- SQLFrame currently supports the following engines (many more in development):
37
+ SQLFrame currently supports the following engines:
38
38
 
39
39
  * [BigQuery](https://sqlframe.readthedocs.io/en/stable/bigquery/)
40
+ * [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
40
41
  * [DuckDB](https://sqlframe.readthedocs.io/en/stable/duckdb)
41
42
  * [Postgres](https://sqlframe.readthedocs.io/en/stable/postgres)
42
43
  * [Snowflake](https://sqlframe.readthedocs.io/en/stable/snowflake)
43
44
  * [Spark](https://sqlframe.readthedocs.io/en/stable/spark)
44
45
 
45
- There are also two engines in development. These engines lack test coverage and robust documentation, but are available for early testing:
46
+ There is also one engine in development. This engine lacks test coverage and robust documentation, but is available for testing:
46
47
 
47
48
  * [Redshift](https://sqlframe.readthedocs.io/en/stable/redshift)
48
- * [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
49
+
49
50
 
50
51
  SQLFrame also has a "Standalone" session that be used to generate SQL without any connection to a database engine.
51
52
 
@@ -63,6 +64,8 @@ SQLFrame is great for:
63
64
  ```bash
64
65
  # BigQuery
65
66
  pip install "sqlframe[bigquery]"
67
+ # Databricks
68
+ pip install "sqlframe[databricks]"
66
69
  # DuckDB
67
70
  pip install "sqlframe[duckdb]"
68
71
  # Postgres
@@ -73,8 +76,6 @@ pip install "sqlframe[snowflake]"
73
76
  pip install "sqlframe[spark]"
74
77
  # Redshift (in development)
75
78
  pip install "sqlframe[redshift]"
76
- # Databricks (in development)
77
- pip install "sqlframe[databricks]"
78
79
  # Standalone
79
80
  pip install sqlframe
80
81
  ```
@@ -4,18 +4,19 @@
4
4
 
5
5
  SQLFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on database engines - no Spark clusters or dependencies required.
6
6
 
7
- SQLFrame currently supports the following engines (many more in development):
7
+ SQLFrame currently supports the following engines:
8
8
 
9
9
  * [BigQuery](https://sqlframe.readthedocs.io/en/stable/bigquery/)
10
+ * [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
10
11
  * [DuckDB](https://sqlframe.readthedocs.io/en/stable/duckdb)
11
12
  * [Postgres](https://sqlframe.readthedocs.io/en/stable/postgres)
12
13
  * [Snowflake](https://sqlframe.readthedocs.io/en/stable/snowflake)
13
14
  * [Spark](https://sqlframe.readthedocs.io/en/stable/spark)
14
15
 
15
- There are also two engines in development. These engines lack test coverage and robust documentation, but are available for early testing:
16
+ There is also one engine in development. This engine lacks test coverage and robust documentation, but is available for testing:
16
17
 
17
18
  * [Redshift](https://sqlframe.readthedocs.io/en/stable/redshift)
18
- * [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
19
+
19
20
 
20
21
  SQLFrame also has a "Standalone" session that be used to generate SQL without any connection to a database engine.
21
22
 
@@ -33,6 +34,8 @@ SQLFrame is great for:
33
34
  ```bash
34
35
  # BigQuery
35
36
  pip install "sqlframe[bigquery]"
37
+ # Databricks
38
+ pip install "sqlframe[databricks]"
36
39
  # DuckDB
37
40
  pip install "sqlframe[duckdb]"
38
41
  # Postgres
@@ -43,8 +46,6 @@ pip install "sqlframe[snowflake]"
43
46
  pip install "sqlframe[spark]"
44
47
  # Redshift (in development)
45
48
  pip install "sqlframe[redshift]"
46
- # Databricks (in development)
47
- pip install "sqlframe[databricks]"
48
49
  # Standalone
49
50
  pip install sqlframe
50
51
  ```
@@ -1,6 +1,4 @@
1
- from sqlframe.base.table import WhenNotMatchedBySourcefrom sqlframe.base.table import WhenMatched
2
-
3
- # Databricks (In Development)
1
+ # Databricks
4
2
 
5
3
  ## Installation
6
4
 
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '3.28.1'
21
- __version_tuple__ = version_tuple = (3, 28, 1)
20
+ __version__ = version = '3.29.0'
21
+ __version_tuple__ = version_tuple = (3, 29, 0)
@@ -80,8 +80,6 @@ JOIN_HINTS = {
80
80
  }
81
81
 
82
82
  JOIN_TYPE_MAPPING = {
83
- "inner": "inner",
84
- "cross": "cross",
85
83
  "outer": "full_outer",
86
84
  "full": "full_outer",
87
85
  "fullouter": "full_outer",
@@ -91,10 +89,8 @@ JOIN_TYPE_MAPPING = {
91
89
  "rightouter": "right_outer",
92
90
  "semi": "left_semi",
93
91
  "leftsemi": "left_semi",
94
- "left_semi": "left_semi",
95
92
  "anti": "left_anti",
96
93
  "leftanti": "left_anti",
97
- "left_anti": "left_anti",
98
94
  }
99
95
 
100
96
  DF = t.TypeVar("DF", bound="BaseDataFrame")
@@ -1028,7 +1024,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1028
1024
  @operation(Operation.FROM)
1029
1025
  def join(
1030
1026
  self,
1031
- other_df: Self,
1027
+ other: Self,
1032
1028
  on: t.Optional[t.Union[str, t.List[str], Column, t.List[Column]]] = None,
1033
1029
  how: str = "inner",
1034
1030
  **kwargs,
@@ -1044,7 +1040,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1044
1040
  logger.warning("Got cross join with an 'on' value. This will result in an inner join.")
1045
1041
  how = "inner"
1046
1042
 
1047
- other_df = other_df._convert_leaf_to_cte()
1043
+ other_df = other._convert_leaf_to_cte()
1048
1044
  join_expression = self._add_ctes_to_expression(self.expression, other_df.expression.ctes)
1049
1045
  # We will determine actual "join on" expression later so we don't provide it at first
1050
1046
  join_type = JOIN_TYPE_MAPPING.get(how, how).replace("_", " ")
@@ -1599,6 +1595,8 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1599
1595
 
1600
1596
  @operation(Operation.LIMIT)
1601
1597
  def limit(self, num: int) -> Self:
1598
+ if limit_exp := self.expression.args.get("limit"):
1599
+ num = min(num, int(limit_exp.expression.this))
1602
1600
  return self.copy(expression=self.expression.limit(num))
1603
1601
 
1604
1602
  def toDF(self, *cols: str) -> Self:
@@ -1854,11 +1852,11 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1854
1852
  def head(self, n: int) -> t.List[Row]: ...
1855
1853
 
1856
1854
  def head(self, n: t.Optional[int] = None) -> t.Union[t.Optional[Row], t.List[Row]]:
1857
- n = n or 1
1858
- df = self.limit(n)
1859
- if n == 1:
1860
- return df.collect()[0]
1861
- return df.collect()
1855
+ df = self.limit(n or 1)
1856
+ collected = df.collect()
1857
+ if n is None:
1858
+ return seq_get(collected, 0)
1859
+ return collected
1862
1860
 
1863
1861
  def first(self) -> t.Optional[Row]:
1864
1862
  return self.head()
@@ -1939,6 +1937,11 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
1939
1937
  def createGlobalTempView(self, name: str) -> None:
1940
1938
  raise NotImplementedError("Global temp views are not yet supported")
1941
1939
 
1940
+ def isEmpty(self) -> bool:
1941
+ from sqlframe.base import functions as F
1942
+
1943
+ return not bool(self.select(F.lit(True)).head())
1944
+
1942
1945
  """
1943
1946
  Stat Functions
1944
1947
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.28.1
3
+ Version: 3.29.0
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -34,18 +34,19 @@ License-File: LICENSE
34
34
 
35
35
  SQLFrame implements the PySpark DataFrame API in order to enable running transformation pipelines directly on database engines - no Spark clusters or dependencies required.
36
36
 
37
- SQLFrame currently supports the following engines (many more in development):
37
+ SQLFrame currently supports the following engines:
38
38
 
39
39
  * [BigQuery](https://sqlframe.readthedocs.io/en/stable/bigquery/)
40
+ * [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
40
41
  * [DuckDB](https://sqlframe.readthedocs.io/en/stable/duckdb)
41
42
  * [Postgres](https://sqlframe.readthedocs.io/en/stable/postgres)
42
43
  * [Snowflake](https://sqlframe.readthedocs.io/en/stable/snowflake)
43
44
  * [Spark](https://sqlframe.readthedocs.io/en/stable/spark)
44
45
 
45
- There are also two engines in development. These engines lack test coverage and robust documentation, but are available for early testing:
46
+ There is also one engine in development. This engine lacks test coverage and robust documentation, but is available for testing:
46
47
 
47
48
  * [Redshift](https://sqlframe.readthedocs.io/en/stable/redshift)
48
- * [Databricks](https://sqlframe.readthedocs.io/en/stable/databricks)
49
+
49
50
 
50
51
  SQLFrame also has a "Standalone" session that be used to generate SQL without any connection to a database engine.
51
52
 
@@ -63,6 +64,8 @@ SQLFrame is great for:
63
64
  ```bash
64
65
  # BigQuery
65
66
  pip install "sqlframe[bigquery]"
67
+ # Databricks
68
+ pip install "sqlframe[databricks]"
66
69
  # DuckDB
67
70
  pip install "sqlframe[duckdb]"
68
71
  # Postgres
@@ -73,8 +76,6 @@ pip install "sqlframe[snowflake]"
73
76
  pip install "sqlframe[spark]"
74
77
  # Redshift (in development)
75
78
  pip install "sqlframe[redshift]"
76
- # Databricks (in development)
77
- pip install "sqlframe[databricks]"
78
79
  # Standalone
79
80
  pip install sqlframe
80
81
  ```
@@ -189,3 +189,47 @@ def test_show_from_create_with_space_with_schema(get_session: t.Callable[[], _Ba
189
189
  df.printSchema()
190
190
  captured = capsys.readouterr()
191
191
  assert "|-- an tan:" in captured.out.strip()
192
+
193
+
194
+ def test_multiple_limit(get_session: t.Callable[[], _BaseSession], capsys, get_func) -> None:
195
+ session = get_session()
196
+ lit = get_func("lit", session)
197
+ df = session.range(20)
198
+ assert df.select("id").limit(10).limit(0).count() == 0
199
+ assert df.select("id").limit(0).limit(10).count() == 0
200
+ assert df.limit(0).limit(10).limit(5).count() == 0
201
+ assert df.limit(0).filter(lit(True)).limit(10).limit(5).count() == 0
202
+
203
+
204
+ def test_is_empty(get_session):
205
+ session = get_session()
206
+ df_non_empty = session.createDataFrame([(1, 4), (2, 5), (3, 6)], schema=["foo", "BAR"])
207
+ df_empty = session.createDataFrame([], schema=["foo", "BAR"])
208
+
209
+ assert not df_non_empty.isEmpty()
210
+ assert df_empty.isEmpty()
211
+
212
+
213
+ def test_head(get_session, get_func):
214
+ session = get_session()
215
+ lit = get_func("lit", session)
216
+ df_non_empty = session.createDataFrame(
217
+ data=[(2, "Alice"), (5, "Bob"), (8, "Charly")],
218
+ schema=["age", "name"],
219
+ )
220
+ df_empty = df_non_empty.filter(lit(False))
221
+
222
+ # head() on DataFrame containing data: single row
223
+ assert df_non_empty.head() == Row(**{"age": 2, "name": "Alice"})
224
+
225
+ # head() on empty DataFrame: None
226
+ assert df_empty.head() is None
227
+
228
+ # head(n) on DataFrame containing data: list of rows
229
+ assert df_non_empty.head(2) == [
230
+ Row(**{"age": 2, "name": "Alice"}),
231
+ Row(**{"age": 5, "name": "Bob"}),
232
+ ]
233
+
234
+ # head(n) on empty DataFrame : empty list
235
+ assert df_empty.head(2) == []
@@ -431,7 +431,7 @@ def test_join_inner(
431
431
  ):
432
432
  employee = get_df("employee")
433
433
  store = get_df("store")
434
- df_joined = pyspark_employee.join(pyspark_store, on=["store_id"], how="inner").select(
434
+ df_joined = pyspark_employee.join(other=pyspark_store, on=["store_id"], how="inner").select(
435
435
  pyspark_employee.employee_id,
436
436
  pyspark_employee["fname"],
437
437
  F.col("lname"),
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes