sqlframe 3.0.0__tar.gz → 3.1.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 (241) hide show
  1. {sqlframe-3.0.0 → sqlframe-3.1.0}/PKG-INFO +1 -1
  2. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/configuration.md +10 -0
  3. {sqlframe-3.0.0 → sqlframe-3.1.0}/setup.py +1 -1
  4. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/__init__.py +16 -0
  5. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/_version.py +2 -2
  6. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe.egg-info/PKG-INFO +1 -1
  7. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe.egg-info/requires.txt +1 -1
  8. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/bigquery/test_activate.py +2 -1
  9. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/conftest.py +99 -5
  10. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/duck/test_activate.py +1 -1
  11. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/snowflake/test_activate.py +1 -1
  12. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_activate.py +1 -1
  13. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_functions.py +2 -1
  14. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/test_activate.py +9 -1
  15. {sqlframe-3.0.0 → sqlframe-3.1.0}/.github/CODEOWNERS +0 -0
  16. {sqlframe-3.0.0 → sqlframe-3.1.0}/.github/workflows/main.workflow.yaml +0 -0
  17. {sqlframe-3.0.0 → sqlframe-3.1.0}/.github/workflows/publish.workflow.yaml +0 -0
  18. {sqlframe-3.0.0 → sqlframe-3.1.0}/.gitignore +0 -0
  19. {sqlframe-3.0.0 → sqlframe-3.1.0}/.pre-commit-config.yaml +0 -0
  20. {sqlframe-3.0.0 → sqlframe-3.1.0}/.readthedocs.yaml +0 -0
  21. {sqlframe-3.0.0 → sqlframe-3.1.0}/LICENSE +0 -0
  22. {sqlframe-3.0.0 → sqlframe-3.1.0}/Makefile +0 -0
  23. {sqlframe-3.0.0 → sqlframe-3.1.0}/README.md +0 -0
  24. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/add_chatgpt_support.md +0 -0
  25. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  26. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  27. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  28. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  29. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  30. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  31. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  32. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  33. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/but_wait_theres_more.gif +0 -0
  34. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/cake.gif +0 -0
  35. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/images/you_get_pyspark_api.gif +0 -0
  36. {sqlframe-3.0.0 → sqlframe-3.1.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  37. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/bigquery.md +0 -0
  38. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/bigquery.md +0 -0
  39. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/duckdb.md +0 -0
  40. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/images/SF.png +0 -0
  41. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/images/favicon.png +0 -0
  42. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/images/favicon_old.png +0 -0
  43. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/images/sqlframe_diagram.png +0 -0
  44. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/images/sqlframe_logo.png +0 -0
  45. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/docs/postgres.md +0 -0
  46. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/duckdb.md +0 -0
  47. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/images/SF.png +0 -0
  48. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/images/favicon.png +0 -0
  49. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/images/favicon_old.png +0 -0
  50. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/images/sqlframe_diagram.png +0 -0
  51. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/images/sqlframe_logo.png +0 -0
  52. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/index.md +0 -0
  53. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/postgres.md +0 -0
  54. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/requirements.txt +0 -0
  55. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/snowflake.md +0 -0
  56. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/spark.md +0 -0
  57. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/standalone.md +0 -0
  58. {sqlframe-3.0.0 → sqlframe-3.1.0}/docs/stylesheets/extra.css +0 -0
  59. {sqlframe-3.0.0 → sqlframe-3.1.0}/mkdocs.yml +0 -0
  60. {sqlframe-3.0.0 → sqlframe-3.1.0}/pytest.ini +0 -0
  61. {sqlframe-3.0.0 → sqlframe-3.1.0}/renovate.json +0 -0
  62. {sqlframe-3.0.0 → sqlframe-3.1.0}/setup.cfg +0 -0
  63. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/LICENSE +0 -0
  64. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/__init__.py +0 -0
  65. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/_typing.py +0 -0
  66. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/catalog.py +0 -0
  67. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/column.py +0 -0
  68. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/dataframe.py +0 -0
  69. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/decorators.py +0 -0
  70. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/exceptions.py +0 -0
  71. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/function_alternatives.py +0 -0
  72. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/functions.py +0 -0
  73. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/group.py +0 -0
  74. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/mixins/__init__.py +0 -0
  75. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  76. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  77. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  78. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/normalize.py +0 -0
  79. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/operations.py +0 -0
  80. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/readerwriter.py +0 -0
  81. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/session.py +0 -0
  82. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/transforms.py +0 -0
  83. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/types.py +0 -0
  84. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/udf.py +0 -0
  85. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/util.py +0 -0
  86. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/base/window.py +0 -0
  87. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/__init__.py +0 -0
  88. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/catalog.py +0 -0
  89. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/column.py +0 -0
  90. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/dataframe.py +0 -0
  91. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/functions.py +0 -0
  92. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/functions.pyi +0 -0
  93. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/group.py +0 -0
  94. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/readwriter.py +0 -0
  95. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/session.py +0 -0
  96. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/types.py +0 -0
  97. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/udf.py +0 -0
  98. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/bigquery/window.py +0 -0
  99. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/__init__.py +0 -0
  100. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/catalog.py +0 -0
  101. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/column.py +0 -0
  102. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/dataframe.py +0 -0
  103. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/functions.py +0 -0
  104. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/functions.pyi +0 -0
  105. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/group.py +0 -0
  106. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/readwriter.py +0 -0
  107. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/session.py +0 -0
  108. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/types.py +0 -0
  109. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/udf.py +0 -0
  110. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/duckdb/window.py +0 -0
  111. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/__init__.py +0 -0
  112. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/catalog.py +0 -0
  113. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/column.py +0 -0
  114. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/dataframe.py +0 -0
  115. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/functions.py +0 -0
  116. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/functions.pyi +0 -0
  117. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/group.py +0 -0
  118. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/readwriter.py +0 -0
  119. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/session.py +0 -0
  120. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/types.py +0 -0
  121. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/udf.py +0 -0
  122. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/postgres/window.py +0 -0
  123. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/__init__.py +0 -0
  124. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/catalog.py +0 -0
  125. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/column.py +0 -0
  126. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/dataframe.py +0 -0
  127. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/functions.py +0 -0
  128. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/group.py +0 -0
  129. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/readwriter.py +0 -0
  130. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/session.py +0 -0
  131. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/types.py +0 -0
  132. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/udf.py +0 -0
  133. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/redshift/window.py +0 -0
  134. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/__init__.py +0 -0
  135. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/catalog.py +0 -0
  136. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/column.py +0 -0
  137. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/dataframe.py +0 -0
  138. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/functions.py +0 -0
  139. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/functions.pyi +0 -0
  140. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/group.py +0 -0
  141. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/readwriter.py +0 -0
  142. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/session.py +0 -0
  143. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/types.py +0 -0
  144. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/udf.py +0 -0
  145. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/snowflake/window.py +0 -0
  146. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/__init__.py +0 -0
  147. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/catalog.py +0 -0
  148. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/column.py +0 -0
  149. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/dataframe.py +0 -0
  150. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/functions.py +0 -0
  151. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/functions.pyi +0 -0
  152. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/group.py +0 -0
  153. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/readwriter.py +0 -0
  154. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/session.py +0 -0
  155. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/types.py +0 -0
  156. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/udf.py +0 -0
  157. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/spark/window.py +0 -0
  158. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/__init__.py +0 -0
  159. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/catalog.py +0 -0
  160. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/column.py +0 -0
  161. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/dataframe.py +0 -0
  162. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/functions.py +0 -0
  163. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/group.py +0 -0
  164. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/readwriter.py +0 -0
  165. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/session.py +0 -0
  166. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/types.py +0 -0
  167. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/udf.py +0 -0
  168. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/standalone/window.py +0 -0
  169. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/testing/__init__.py +0 -0
  170. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe/testing/utils.py +0 -0
  171. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe.egg-info/SOURCES.txt +0 -0
  172. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe.egg-info/dependency_links.txt +0 -0
  173. {sqlframe-3.0.0 → sqlframe-3.1.0}/sqlframe.egg-info/top_level.txt +0 -0
  174. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/__init__.py +0 -0
  175. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/common_fixtures.py +0 -0
  176. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/conftest.py +0 -0
  177. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/fixtures/employee.csv +0 -0
  178. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/fixtures/employee.json +0 -0
  179. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/fixtures/employee.parquet +0 -0
  180. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/fixtures/employee_extra_line.csv +0 -0
  181. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/__init__.py +0 -0
  182. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/__init__.py +0 -0
  183. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/bigquery/__init__.py +0 -0
  184. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  185. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
  186. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
  187. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/__init__.py +0 -0
  188. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
  189. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  190. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  191. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  192. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
  193. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
  194. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/postgres/__init__.py +0 -0
  195. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
  196. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  197. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  198. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
  199. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/redshift/__init__.py +0 -0
  200. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  201. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
  202. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/snowflake/__init__.py +0 -0
  203. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  204. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
  205. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
  206. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/spark/__init__.py +0 -0
  207. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  208. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
  209. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_engine_column.py +0 -0
  210. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
  211. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_engine_reader.py +0 -0
  212. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_engine_session.py +0 -0
  213. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_engine_writer.py +0 -0
  214. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_int_functions.py +0 -0
  215. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/engines/test_int_testing.py +0 -0
  216. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/fixtures.py +0 -0
  217. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/test_int_dataframe.py +0 -0
  218. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/test_int_dataframe_stats.py +0 -0
  219. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/test_int_grouped_data.py +0 -0
  220. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/integration/test_int_session.py +0 -0
  221. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/types.py +0 -0
  222. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/__init__.py +0 -0
  223. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/bigquery/__init__.py +0 -0
  224. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/duck/__init__.py +0 -0
  225. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/postgres/__init__.py +0 -0
  226. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/postgres/test_activate.py +0 -0
  227. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/redshift/__init__.py +0 -0
  228. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/redshift/test_activate.py +0 -0
  229. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/snowflake/__init__.py +0 -0
  230. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/spark/__init__.py +0 -0
  231. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/spark/test_activate.py +0 -0
  232. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/__init__.py +0 -0
  233. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/fixtures.py +0 -0
  234. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_column.py +0 -0
  235. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_dataframe.py +0 -0
  236. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  237. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_session.py +0 -0
  238. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  239. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_types.py +0 -0
  240. {sqlframe-3.0.0 → sqlframe-3.1.0}/tests/unit/standalone/test_window.py +0 -0
  241. {sqlframe-3.0.0 → sqlframe-3.1.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.0.0
3
+ Version: 3.1.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
@@ -71,6 +71,16 @@ spark = SparkSession.builder.getOrCreate()
71
71
  # "spark" is a SQLFrame DuckDBSession and will run directly on DuckDB with input dialect set to DuckDB
72
72
  ```
73
73
 
74
+ #### Deactivating
75
+
76
+ If you want to deactivate SQLFrame and revert back to PySpark, you can use the `deactivate` function.
77
+
78
+ ```python
79
+ from sqlframe import deactivate
80
+
81
+ deactivate()
82
+ ```
83
+
74
84
  ## Generated SQL
75
85
 
76
86
  ### Pretty
@@ -20,7 +20,7 @@ setup(
20
20
  python_requires=">=3.8",
21
21
  install_requires=[
22
22
  "prettytable<3.11.1",
23
- "sqlglot>=24.0.0,<25.17",
23
+ "sqlglot>=24.0.0,<25.18",
24
24
  "typing_extensions>=4.8,<5",
25
25
  ],
26
26
  extras_require={
@@ -81,3 +81,19 @@ def activate(
81
81
  sys.modules[f"pyspark.sql.{file}"] = engine_file
82
82
  resolved_files.add(engine_file)
83
83
  setattr(engine_file, name_without_prefix, obj)
84
+
85
+
86
+ def deactivate() -> None:
87
+ pyspark_imports = [k for k in sys.modules if k.startswith("pyspark")]
88
+
89
+ for k, v in sys.modules.copy().items():
90
+ if k in pyspark_imports:
91
+ del sys.modules[k]
92
+ # Try importing the pyspark imports again and see if pyspark is installed and therefore available
93
+ # if not then nothing will change
94
+ for k in pyspark_imports:
95
+ try:
96
+ sys.modules[k] = importlib.import_module(k)
97
+ except ImportError:
98
+ pass
99
+ ACTIVATE_CONFIG.clear()
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.0.0'
16
- __version_tuple__ = version_tuple = (3, 0, 0)
15
+ __version__ = version = '3.1.0'
16
+ __version_tuple__ = version_tuple = (3, 1, 0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.0.0
3
+ Version: 3.1.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
@@ -1,5 +1,5 @@
1
1
  prettytable<3.11.1
2
- sqlglot<25.17,>=24.0.0
2
+ sqlglot<25.18,>=24.0.0
3
3
  typing_extensions<5,>=4.8
4
4
 
5
5
  [bigquery]
@@ -21,7 +21,7 @@ from sqlframe.bigquery import types as BigQueryTypes
21
21
 
22
22
 
23
23
  @pytest.mark.forked
24
- def test_activate_bigquery():
24
+ def test_activate_bigquery(check_pyspark_imports):
25
25
  check_pyspark_imports(
26
26
  "bigquery",
27
27
  sqlf_session=BigQuerySession,
@@ -47,5 +47,6 @@ def test_activate_bigquery_default_dataset():
47
47
  activate("bigquery", config={"default_dataset": "sqlframe.sqlframe_test"})
48
48
  from pyspark.sql import SparkSession
49
49
 
50
+ assert SparkSession == BigQuerySession
50
51
  spark = SparkSession.builder.appName("test").getOrCreate()
51
52
  assert spark.default_dataset == "sqlframe.sqlframe_test"
@@ -1,13 +1,11 @@
1
- import sys
2
-
3
1
  import findspark
4
2
  import pytest
5
3
 
6
- from sqlframe import activate
4
+ from sqlframe import activate, deactivate
7
5
 
8
6
 
9
7
  @pytest.fixture()
10
- def check_pyspark_imports(temporary_sys_modules):
8
+ def check_pyspark_imports():
11
9
  def _check_pyspark_imports(
12
10
  engine_name,
13
11
  sqlf_session,
@@ -28,7 +26,6 @@ def check_pyspark_imports(temporary_sys_modules):
28
26
  ):
29
27
  activate(engine=engine_name)
30
28
  findspark.init()
31
- # TODO: functions, types, udf
32
29
  from pyspark.sql import (
33
30
  Catalog,
34
31
  Column,
@@ -121,4 +118,101 @@ def check_pyspark_imports(temporary_sys_modules):
121
118
  assert F == sqlf_functions
122
119
  assert types == sqlf_types
123
120
 
121
+ deactivate()
122
+ findspark.init()
123
+ from pyspark.sql import (
124
+ Catalog,
125
+ Column,
126
+ DataFrame,
127
+ DataFrameNaFunctions,
128
+ DataFrameReader,
129
+ DataFrameStatFunctions,
130
+ DataFrameWriter,
131
+ GroupedData,
132
+ Row,
133
+ SparkSession,
134
+ UDFRegistration,
135
+ Window,
136
+ WindowSpec,
137
+ types,
138
+ )
139
+ from pyspark.sql import functions as F
140
+
141
+ assert SparkSession != sqlf_session
142
+ assert Catalog != sqlf_catalog
143
+ assert Column != sqlf_column
144
+ assert GroupedData != sqlf_grouped_data
145
+ assert DataFrame != sqlf_dataframe
146
+ assert Window != sqlf_window
147
+ assert WindowSpec != sqlf_window_spec
148
+ assert F != sqlf_functions
149
+ assert types != sqlf_types
150
+ assert UDFRegistration != sqlf_udf_registration
151
+ assert DataFrameNaFunctions != sqlf_dataframe_na_functions
152
+ assert DataFrameStatFunctions != sqlf_dataframe_stat_functions
153
+ assert DataFrameReader != sqlf_dataframe_reader
154
+ assert DataFrameWriter != sqlf_dataframe_writer
155
+ assert Row != sqlf_row
156
+
157
+ assert F.JVMView is not None
158
+ assert SparkSession.readStream is not None
159
+
160
+ from pyspark.sql.session import SparkSession as SparkSession2
161
+
162
+ assert SparkSession2 != sqlf_session
163
+
164
+ from pyspark.sql.catalog import Catalog as Catalog2
165
+
166
+ assert Catalog2 != sqlf_catalog
167
+
168
+ from pyspark.sql.column import Column as Column2
169
+
170
+ assert Column2 != sqlf_column
171
+
172
+ from pyspark.sql.dataframe import DataFrame as DataFrame2
173
+ from pyspark.sql.dataframe import DataFrameNaFunctions as DataFrameNaFunctions2
174
+ from pyspark.sql.dataframe import (
175
+ DataFrameStatFunctions as DataFrameStatFunctions2,
176
+ )
177
+
178
+ assert DataFrame2 != sqlf_dataframe
179
+ assert DataFrameNaFunctions2 != sqlf_dataframe_na_functions
180
+ assert DataFrameStatFunctions2 != sqlf_dataframe_stat_functions
181
+
182
+ from pyspark.sql.group import GroupedData as GroupedData2
183
+
184
+ assert GroupedData2 != sqlf_grouped_data
185
+
186
+ from pyspark.sql.window import WindowSpec as WindowSpec2
187
+
188
+ assert WindowSpec2 != sqlf_window_spec
189
+
190
+ from pyspark.sql.readwriter import DataFrameReader as DataFrameReader2
191
+ from pyspark.sql.readwriter import DataFrameWriter as DataFrameWriter2
192
+
193
+ assert DataFrameReader2 != sqlf_dataframe_reader
194
+ assert DataFrameWriter2 != sqlf_dataframe_writer
195
+
196
+ from pyspark.sql.window import Window, WindowSpec
197
+
198
+ assert Window != sqlf_window
199
+ assert WindowSpec != sqlf_window_spec
200
+
201
+ from pyspark.sql import functions as F
202
+ from pyspark.sql import types
203
+
204
+ assert F != sqlf_functions
205
+ assert types != sqlf_types
206
+ assert types.Row != sqlf_row
207
+
208
+ from pyspark.sql import UDFRegistration
209
+
210
+ assert UDFRegistration != sqlf_udf_registration
211
+
212
+ import pyspark.sql.functions as F
213
+ import pyspark.sql.types as types
214
+
215
+ assert F != sqlf_functions
216
+ assert types != sqlf_types
217
+
124
218
  return _check_pyspark_imports
@@ -20,7 +20,7 @@ from sqlframe.duckdb import types as DuckDBTypes
20
20
 
21
21
 
22
22
  @pytest.mark.forked
23
- def test_activate_duckdb():
23
+ def test_activate_duckdb(check_pyspark_imports):
24
24
  check_pyspark_imports(
25
25
  "duckdb",
26
26
  sqlf_session=DuckDBSession,
@@ -20,7 +20,7 @@ from sqlframe.snowflake import types as SnowflakeTypes
20
20
 
21
21
 
22
22
  @pytest.mark.forked
23
- def test_activate_snowflake():
23
+ def test_activate_snowflake(check_pyspark_imports):
24
24
  check_pyspark_imports(
25
25
  "snowflake",
26
26
  sqlf_session=SnowflakeSession,
@@ -20,7 +20,7 @@ from sqlframe.standalone import types as StandaloneTypes
20
20
 
21
21
 
22
22
  @pytest.mark.forked
23
- def test_activate_standalone():
23
+ def test_activate_standalone(check_pyspark_imports):
24
24
  check_pyspark_imports(
25
25
  "standalone",
26
26
  sqlf_session=StandaloneSession,
@@ -14,7 +14,8 @@ from sqlframe.standalone import functions as SF
14
14
  def test_invoke_anonymous(name, func):
15
15
  # array_size - converts to `size` but `array_size` and `size` behave differently
16
16
  # to_char - convert to a cast that ignores the format provided
17
- ignore_funcs = {"array_size", "to_char"}
17
+ # ltrim/rtrim - don't seem to convert correctly on some engines
18
+ ignore_funcs = {"array_size", "to_char", "ltrim", "rtrim"}
18
19
  if "invoke_anonymous_function" in inspect.getsource(func) and name not in ignore_funcs:
19
20
  func = parse_one(f"{name}()", read="spark", error_level=ErrorLevel.IGNORE)
20
21
  assert isinstance(func, exp.Anonymous)
@@ -4,7 +4,7 @@ from unittest.mock import MagicMock
4
4
  import findspark
5
5
  import pytest
6
6
 
7
- from sqlframe import activate
7
+ from sqlframe import activate, deactivate
8
8
  from sqlframe import testing as SQLFrameTesting
9
9
 
10
10
 
@@ -35,3 +35,11 @@ def test_activate_no_engine():
35
35
  from pyspark import context
36
36
 
37
37
  assert isinstance(context, MagicMock)
38
+
39
+ deactivate()
40
+
41
+ from pyspark import context
42
+
43
+ assert not isinstance(context, MagicMock)
44
+ assert context is not MagicMock
45
+ assert context is not None
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes