sqlframe 3.14.2__tar.gz → 3.15.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. {sqlframe-3.14.2 → sqlframe-3.15.1}/PKG-INFO +1 -1
  2. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/bigquery.md +7 -0
  3. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/duckdb.md +8 -0
  4. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/postgres.md +7 -0
  5. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/snowflake.md +5 -0
  6. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/_version.py +2 -2
  7. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/function_alternatives.py +45 -2
  8. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/functions.py +73 -13
  9. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/session.py +5 -0
  10. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/PKG-INFO +1 -1
  11. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_session.py +1 -0
  12. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_session.py +1 -0
  13. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_session.py +1 -0
  14. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_session.py +1 -0
  15. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/test_redshift_session.py +1 -0
  16. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_session.py +1 -0
  17. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_int_functions.py +13 -1
  18. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_functions.py +6 -4
  19. {sqlframe-3.14.2 → sqlframe-3.15.1}/.github/CODEOWNERS +0 -0
  20. {sqlframe-3.14.2 → sqlframe-3.15.1}/.github/workflows/main.workflow.yaml +0 -0
  21. {sqlframe-3.14.2 → sqlframe-3.15.1}/.github/workflows/publish.workflow.yaml +0 -0
  22. {sqlframe-3.14.2 → sqlframe-3.15.1}/.gitignore +0 -0
  23. {sqlframe-3.14.2 → sqlframe-3.15.1}/.pre-commit-config.yaml +0 -0
  24. {sqlframe-3.14.2 → sqlframe-3.15.1}/.readthedocs.yaml +0 -0
  25. {sqlframe-3.14.2 → sqlframe-3.15.1}/LICENSE +0 -0
  26. {sqlframe-3.14.2 → sqlframe-3.15.1}/Makefile +0 -0
  27. {sqlframe-3.14.2 → sqlframe-3.15.1}/README.md +0 -0
  28. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/add_chatgpt_support.md +0 -0
  29. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  30. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  31. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  32. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  33. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  34. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  35. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  36. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  37. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/but_wait_theres_more.gif +0 -0
  38. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/cake.gif +0 -0
  39. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/you_get_pyspark_api.gif +0 -0
  40. {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  41. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/configuration.md +0 -0
  42. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/databricks.md +0 -0
  43. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/bigquery.md +0 -0
  44. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/duckdb.md +0 -0
  45. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/SF.png +0 -0
  46. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/favicon.png +0 -0
  47. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/favicon_old.png +0 -0
  48. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/sqlframe_diagram.png +0 -0
  49. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/sqlframe_logo.png +0 -0
  50. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/postgres.md +0 -0
  51. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/SF.png +0 -0
  52. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/favicon.png +0 -0
  53. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/favicon_old.png +0 -0
  54. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/sqlframe_diagram.png +0 -0
  55. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/sqlframe_logo.png +0 -0
  56. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/index.md +0 -0
  57. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/redshift.md +0 -0
  58. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/requirements.txt +0 -0
  59. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/spark.md +0 -0
  60. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/standalone.md +0 -0
  61. {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/stylesheets/extra.css +0 -0
  62. {sqlframe-3.14.2 → sqlframe-3.15.1}/mkdocs.yml +0 -0
  63. {sqlframe-3.14.2 → sqlframe-3.15.1}/pytest.ini +0 -0
  64. {sqlframe-3.14.2 → sqlframe-3.15.1}/renovate.json +0 -0
  65. {sqlframe-3.14.2 → sqlframe-3.15.1}/setup.cfg +0 -0
  66. {sqlframe-3.14.2 → sqlframe-3.15.1}/setup.py +0 -0
  67. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/LICENSE +0 -0
  68. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/__init__.py +0 -0
  69. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/__init__.py +0 -0
  70. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/_typing.py +0 -0
  71. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/catalog.py +0 -0
  72. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/column.py +0 -0
  73. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/dataframe.py +0 -0
  74. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/decorators.py +0 -0
  75. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/exceptions.py +0 -0
  76. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/group.py +0 -0
  77. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/__init__.py +0 -0
  78. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  79. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  80. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  81. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/table_mixins.py +0 -0
  82. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/normalize.py +0 -0
  83. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/operations.py +0 -0
  84. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/readerwriter.py +0 -0
  85. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/table.py +0 -0
  86. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/transforms.py +0 -0
  87. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/types.py +0 -0
  88. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/udf.py +0 -0
  89. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/util.py +0 -0
  90. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/window.py +0 -0
  91. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/__init__.py +0 -0
  92. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/catalog.py +0 -0
  93. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/column.py +0 -0
  94. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/dataframe.py +0 -0
  95. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/functions.py +0 -0
  96. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/functions.pyi +0 -0
  97. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/group.py +0 -0
  98. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/readwriter.py +0 -0
  99. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/session.py +0 -0
  100. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/table.py +0 -0
  101. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/types.py +0 -0
  102. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/udf.py +0 -0
  103. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/window.py +0 -0
  104. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/__init__.py +0 -0
  105. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/catalog.py +0 -0
  106. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/column.py +0 -0
  107. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/dataframe.py +0 -0
  108. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/functions.py +0 -0
  109. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/functions.pyi +0 -0
  110. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/group.py +0 -0
  111. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/readwriter.py +0 -0
  112. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/session.py +0 -0
  113. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/table.py +0 -0
  114. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/types.py +0 -0
  115. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/udf.py +0 -0
  116. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/window.py +0 -0
  117. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/__init__.py +0 -0
  118. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/catalog.py +0 -0
  119. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/column.py +0 -0
  120. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/dataframe.py +0 -0
  121. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/functions.py +0 -0
  122. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/functions.pyi +0 -0
  123. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/group.py +0 -0
  124. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/readwriter.py +0 -0
  125. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/session.py +0 -0
  126. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/table.py +0 -0
  127. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/types.py +0 -0
  128. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/udf.py +0 -0
  129. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/window.py +0 -0
  130. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/__init__.py +0 -0
  131. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/catalog.py +0 -0
  132. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/column.py +0 -0
  133. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/dataframe.py +0 -0
  134. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/functions.py +0 -0
  135. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/functions.pyi +0 -0
  136. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/group.py +0 -0
  137. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/readwriter.py +0 -0
  138. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/session.py +0 -0
  139. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/table.py +0 -0
  140. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/types.py +0 -0
  141. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/udf.py +0 -0
  142. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/window.py +0 -0
  143. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/__init__.py +0 -0
  144. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/catalog.py +0 -0
  145. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/column.py +0 -0
  146. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/dataframe.py +0 -0
  147. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/functions.py +0 -0
  148. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/group.py +0 -0
  149. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/readwriter.py +0 -0
  150. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/session.py +0 -0
  151. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/table.py +0 -0
  152. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/types.py +0 -0
  153. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/udf.py +0 -0
  154. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/window.py +0 -0
  155. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/__init__.py +0 -0
  156. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/catalog.py +0 -0
  157. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/column.py +0 -0
  158. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/dataframe.py +0 -0
  159. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/functions.py +0 -0
  160. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/functions.pyi +0 -0
  161. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/group.py +0 -0
  162. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/readwriter.py +0 -0
  163. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/session.py +0 -0
  164. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/table.py +0 -0
  165. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/types.py +0 -0
  166. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/udf.py +0 -0
  167. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/window.py +0 -0
  168. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/__init__.py +0 -0
  169. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/catalog.py +0 -0
  170. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/column.py +0 -0
  171. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/dataframe.py +0 -0
  172. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/functions.py +0 -0
  173. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/functions.pyi +0 -0
  174. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/group.py +0 -0
  175. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/readwriter.py +0 -0
  176. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/session.py +0 -0
  177. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/table.py +0 -0
  178. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/types.py +0 -0
  179. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/udf.py +0 -0
  180. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/window.py +0 -0
  181. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/__init__.py +0 -0
  182. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/catalog.py +0 -0
  183. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/column.py +0 -0
  184. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/dataframe.py +0 -0
  185. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/functions.py +0 -0
  186. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/group.py +0 -0
  187. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/readwriter.py +0 -0
  188. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/session.py +0 -0
  189. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/table.py +0 -0
  190. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/types.py +0 -0
  191. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/udf.py +0 -0
  192. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/window.py +0 -0
  193. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/testing/__init__.py +0 -0
  194. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/testing/utils.py +0 -0
  195. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/SOURCES.txt +0 -0
  196. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/dependency_links.txt +0 -0
  197. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/requires.txt +0 -0
  198. {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/top_level.txt +0 -0
  199. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/__init__.py +0 -0
  200. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/common_fixtures.py +0 -0
  201. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/conftest.py +0 -0
  202. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee.csv +0 -0
  203. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee.json +0 -0
  204. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee.parquet +0 -0
  205. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
  206. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
  207. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
  208. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
  209. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
  210. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
  211. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
  212. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
  213. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
  214. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
  215. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
  216. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
  217. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
  218. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
  219. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_extra_line.csv +0 -0
  220. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/issue_219.csv +0 -0
  221. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds1.sql +0 -0
  222. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds10.sql +0 -0
  223. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds11.sql +0 -0
  224. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds12.sql +0 -0
  225. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds13.sql +0 -0
  226. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds14.sql +0 -0
  227. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds15.sql +0 -0
  228. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds16.sql +0 -0
  229. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds17.sql +0 -0
  230. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds18.sql +0 -0
  231. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds19.sql +0 -0
  232. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds2.sql +0 -0
  233. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds20.sql +0 -0
  234. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds21.sql +0 -0
  235. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds22.sql +0 -0
  236. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds23.sql +0 -0
  237. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds24.sql +0 -0
  238. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds25.sql +0 -0
  239. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds26.sql +0 -0
  240. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds27.sql +0 -0
  241. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds28.sql +0 -0
  242. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds29.sql +0 -0
  243. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds3.sql +0 -0
  244. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds30.sql +0 -0
  245. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds31.sql +0 -0
  246. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds32.sql +0 -0
  247. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds33.sql +0 -0
  248. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds34.sql +0 -0
  249. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds35.sql +0 -0
  250. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds36.sql +0 -0
  251. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds37.sql +0 -0
  252. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds38.sql +0 -0
  253. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds39.sql +0 -0
  254. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds4.sql +0 -0
  255. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds40.sql +0 -0
  256. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds41.sql +0 -0
  257. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds42.sql +0 -0
  258. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds43.sql +0 -0
  259. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds44.sql +0 -0
  260. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds45.sql +0 -0
  261. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds46.sql +0 -0
  262. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds47.sql +0 -0
  263. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds48.sql +0 -0
  264. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds49.sql +0 -0
  265. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds5.sql +0 -0
  266. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds50.sql +0 -0
  267. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds51.sql +0 -0
  268. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds52.sql +0 -0
  269. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds53.sql +0 -0
  270. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds54.sql +0 -0
  271. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds55.sql +0 -0
  272. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds56.sql +0 -0
  273. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds57.sql +0 -0
  274. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds58.sql +0 -0
  275. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds59.sql +0 -0
  276. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds6.sql +0 -0
  277. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds60.sql +0 -0
  278. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds61.sql +0 -0
  279. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds62.sql +0 -0
  280. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds63.sql +0 -0
  281. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds64.sql +0 -0
  282. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds65.sql +0 -0
  283. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds66.sql +0 -0
  284. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds67.sql +0 -0
  285. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds68.sql +0 -0
  286. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds69.sql +0 -0
  287. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds7.sql +0 -0
  288. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds70.sql +0 -0
  289. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds71.sql +0 -0
  290. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds72.sql +0 -0
  291. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds73.sql +0 -0
  292. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds74.sql +0 -0
  293. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds75.sql +0 -0
  294. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds76.sql +0 -0
  295. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds77.sql +0 -0
  296. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds78.sql +0 -0
  297. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds79.sql +0 -0
  298. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds8.sql +0 -0
  299. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds80.sql +0 -0
  300. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds81.sql +0 -0
  301. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds82.sql +0 -0
  302. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds83.sql +0 -0
  303. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds84.sql +0 -0
  304. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds85.sql +0 -0
  305. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds86.sql +0 -0
  306. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds87.sql +0 -0
  307. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds88.sql +0 -0
  308. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds89.sql +0 -0
  309. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds9.sql +0 -0
  310. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds90.sql +0 -0
  311. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds91.sql +0 -0
  312. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds92.sql +0 -0
  313. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds93.sql +0 -0
  314. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds94.sql +0 -0
  315. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds95.sql +0 -0
  316. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds96.sql +0 -0
  317. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds97.sql +0 -0
  318. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds98.sql +0 -0
  319. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds99.sql +0 -0
  320. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/__init__.py +0 -0
  321. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/__init__.py +0 -0
  322. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/__init__.py +0 -0
  323. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  324. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
  325. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/__init__.py +0 -0
  326. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
  327. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
  328. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/__init__.py +0 -0
  329. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
  330. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  331. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  332. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  333. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
  334. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_tpcds.py +0 -0
  335. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/__init__.py +0 -0
  336. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
  337. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  338. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  339. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/__init__.py +0 -0
  340. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  341. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/__init__.py +0 -0
  342. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  343. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
  344. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/spark/__init__.py +0 -0
  345. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  346. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
  347. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_column.py +0 -0
  348. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_dataframe.py +0 -0
  349. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_reader.py +0 -0
  350. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_session.py +0 -0
  351. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_table.py +0 -0
  352. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_writer.py +0 -0
  353. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_int_testing.py +0 -0
  354. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/fixtures.py +0 -0
  355. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_dataframe.py +0 -0
  356. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_dataframe_stats.py +0 -0
  357. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_grouped_data.py +0 -0
  358. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_session.py +0 -0
  359. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/types.py +0 -0
  360. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/__init__.py +0 -0
  361. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/bigquery/__init__.py +0 -0
  362. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/bigquery/test_activate.py +0 -0
  363. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/conftest.py +0 -0
  364. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/databricks/__init__.py +0 -0
  365. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/databricks/test_activate.py +0 -0
  366. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/duck/__init__.py +0 -0
  367. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/duck/test_activate.py +0 -0
  368. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/postgres/__init__.py +0 -0
  369. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/postgres/test_activate.py +0 -0
  370. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/redshift/__init__.py +0 -0
  371. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/redshift/test_activate.py +0 -0
  372. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/snowflake/__init__.py +0 -0
  373. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/snowflake/test_activate.py +0 -0
  374. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/spark/__init__.py +0 -0
  375. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/spark/test_activate.py +0 -0
  376. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/__init__.py +0 -0
  377. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/fixtures.py +0 -0
  378. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_activate.py +0 -0
  379. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_column.py +0 -0
  380. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_dataframe.py +0 -0
  381. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  382. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_session.py +0 -0
  383. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  384. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_types.py +0 -0
  385. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_window.py +0 -0
  386. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/test_activate.py +0 -0
  387. {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.14.2
3
+ Version: 3.15.1
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -339,6 +339,8 @@ See something that you would like to see supported? [Open an issue](https://gith
339
339
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
340
340
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
341
341
  * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
342
+ * [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
343
+ * [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
342
344
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
343
345
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
344
346
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -449,11 +451,13 @@ See something that you would like to see supported? [Open an issue](https://gith
449
451
  * [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
450
452
  * [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
451
453
  * [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
454
+ * [regexp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp.html)
452
455
  * [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
453
456
  * Single capture group is supported
454
457
  * [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
455
458
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
456
459
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
460
+ * [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
457
461
  * [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
458
462
  * Only works on strings (does not work on arrays)
459
463
  * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
@@ -509,6 +513,9 @@ See something that you would like to see supported? [Open an issue](https://gith
509
513
  * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
510
514
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
511
515
  * [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
516
+ * [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
517
+ * [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
518
+ * [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
512
519
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
513
520
  * [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
514
521
  * [var_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.var_pop.html)
@@ -301,6 +301,8 @@ See something that you would like to see supported? [Open an issue](https://gith
301
301
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
302
302
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
303
303
  * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
304
+ * [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
305
+ * [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
304
306
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
305
307
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
306
308
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -417,10 +419,12 @@ See something that you would like to see supported? [Open an issue](https://gith
417
419
  * [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
418
420
  * [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
419
421
  * [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
422
+ * [regexp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp.html)
420
423
  * [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
421
424
  * [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
422
425
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
423
426
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
427
+ * [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
424
428
  * [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
425
429
  * Only works on strings (does not work on arrays)
426
430
  * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
@@ -473,6 +477,10 @@ See something that you would like to see supported? [Open an issue](https://gith
473
477
  * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
474
478
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
475
479
  * [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
480
+ * [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
481
+ * [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
482
+ * [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
483
+ * [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
476
484
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
477
485
  * [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
478
486
  * [var_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.var_pop.html)
@@ -311,6 +311,8 @@ See something that you would like to see supported? [Open an issue](https://gith
311
311
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
312
312
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
313
313
  * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
314
+ * [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
315
+ * [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
314
316
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
315
317
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
316
318
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -412,9 +414,11 @@ See something that you would like to see supported? [Open an issue](https://gith
412
414
  * [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
413
415
  * [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
414
416
  * [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
417
+ * [regexp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp.html)
415
418
  * [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
416
419
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
417
420
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
421
+ * [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
418
422
  * [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
419
423
  * Only works on strings (does not work on arrays)
420
424
  * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
@@ -462,6 +466,9 @@ See something that you would like to see supported? [Open an issue](https://gith
462
466
  * [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
463
467
  * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
464
468
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
469
+ * [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
470
+ * [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
471
+ * [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
465
472
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
466
473
  * [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
467
474
  * [var_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.var_pop.html)
@@ -337,6 +337,8 @@ See something that you would like to see supported? [Open an issue](https://gith
337
337
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
338
338
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
339
339
  * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
340
+ * [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
341
+ * [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
340
342
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
341
343
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
342
344
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -460,6 +462,7 @@ See something that you would like to see supported? [Open an issue](https://gith
460
462
  * [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
461
463
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
462
464
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
465
+ * [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
463
466
  * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
464
467
  * [rint](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rint.html)
465
468
  * [round](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.round.html)
@@ -513,6 +516,8 @@ See something that you would like to see supported? [Open an issue](https://gith
513
516
  * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
514
517
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
515
518
  * [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
519
+ * [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
520
+ * [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
516
521
  * [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
517
522
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
518
523
  * [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.14.2'
16
- __version_tuple__ = version_tuple = (3, 14, 2)
15
+ __version__ = version = '3.15.1'
16
+ __version_tuple__ = version_tuple = (3, 15, 1)
@@ -6,9 +6,7 @@ import re
6
6
  import typing as t
7
7
 
8
8
  from sqlglot import exp as expression
9
- from sqlglot.dialects.dialect import build_formatted_time
10
9
  from sqlglot.helper import ensure_list
11
- from sqlglot.helper import flatten as _flatten
12
10
 
13
11
  from sqlframe.base.column import Column
14
12
  from sqlframe.base.util import (
@@ -1410,6 +1408,14 @@ def regexp_replace_global_option(
1410
1408
  )
1411
1409
 
1412
1410
 
1411
+ def regexp_with_matches(str: ColumnOrName, regexp: ColumnOrName) -> Column:
1412
+ return Column.invoke_anonymous_function(str, "REGEXP_MATCHES", regexp)
1413
+
1414
+
1415
+ def regexp_with_contains(str: ColumnOrName, regexp: ColumnOrName) -> Column:
1416
+ return Column.invoke_anonymous_function(str, "REGEXP_CONTAINS", regexp)
1417
+
1418
+
1413
1419
  def degrees_bgutil(col: ColumnOrName) -> Column:
1414
1420
  return Column(
1415
1421
  expression.Anonymous(
@@ -1519,6 +1525,43 @@ def unix_timestamp_bgutil(
1519
1525
  )
1520
1526
 
1521
1527
 
1528
+ def unix_seconds_extract_epoch(col: ColumnOrName) -> Column:
1529
+ return Column(
1530
+ expression.Extract(
1531
+ this=expression.Var(this="EPOCH"),
1532
+ expression=Column.ensure_col(col).column_expression,
1533
+ )
1534
+ )
1535
+
1536
+
1537
+ def unix_millis_multiply_epoch(col: ColumnOrName) -> Column:
1538
+ unix_seconds = get_func_from_session("unix_seconds")
1539
+
1540
+ return Column(
1541
+ expression.Cast(
1542
+ this=expression.Mul(
1543
+ this=unix_seconds(col).column_expression,
1544
+ expression=expression.Literal.number(1000),
1545
+ ),
1546
+ to=expression.DataType.build("bigint"),
1547
+ )
1548
+ )
1549
+
1550
+
1551
+ def unix_micros_multiply_epoch(col: ColumnOrName) -> Column:
1552
+ unix_seconds = get_func_from_session("unix_seconds")
1553
+
1554
+ return Column(
1555
+ expression.Cast(
1556
+ this=expression.Mul(
1557
+ this=unix_seconds(col).column_expression,
1558
+ expression=expression.Literal.number(1000000),
1559
+ ),
1560
+ to=expression.DataType.build("bigint"),
1561
+ )
1562
+ )
1563
+
1564
+
1522
1565
  def format_number_bgutil(col: ColumnOrName, d: int) -> Column:
1523
1566
  round = get_func_from_session("round")
1524
1567
  lit = get_func_from_session("lit")
@@ -51,6 +51,8 @@ def col(column_name: t.Union[ColumnOrName, t.Any]) -> Column:
51
51
  def lit(value: t.Optional[t.Any] = None) -> Column:
52
52
  if isinstance(value, str):
53
53
  return Column(expression.Literal.string(value))
54
+ if isinstance(value, float) and value in {float("inf"), float("-inf")}:
55
+ return Column(expression.Literal.string(str(value)))
54
56
  return Column(value)
55
57
 
56
58
 
@@ -961,12 +963,15 @@ def dayofweek(col: ColumnOrName) -> Column:
961
963
  return dayofweek_from_extract(col)
962
964
 
963
965
  if session._is_postgres:
964
- return dayofweek_from_extract_with_isodow(col)
966
+ return dayofweek_from_extract_with_isodow(col) + 1
965
967
 
966
- return Column.invoke_expression_over_column(
968
+ result = Column.invoke_expression_over_column(
967
969
  Column(expression.TsOrDsToDate(this=Column.ensure_col(col).column_expression)),
968
970
  expression.DayOfWeek,
969
971
  )
972
+ if session._is_duckdb or session._is_snowflake:
973
+ return result + 1
974
+ return result
970
975
 
971
976
 
972
977
  @meta()
@@ -2962,14 +2967,14 @@ def char(col: ColumnOrName) -> Column:
2962
2967
  return Column(expression.Chr(expressions=Column.ensure_col(col).column_expression))
2963
2968
 
2964
2969
 
2965
- @meta(unsupported_engines="*")
2970
+ @meta()
2966
2971
  def char_length(str: ColumnOrName) -> Column:
2967
- return Column.invoke_anonymous_function(str, "char_length")
2972
+ return Column.invoke_expression_over_column(str, expression.Length)
2968
2973
 
2969
2974
 
2970
- @meta(unsupported_engines="*")
2975
+ @meta()
2971
2976
  def character_length(str: ColumnOrName) -> Column:
2972
- return Column.invoke_anonymous_function(str, "character_length")
2977
+ return Column.invoke_expression_over_column(str, expression.Length)
2973
2978
 
2974
2979
 
2975
2980
  @meta(unsupported_engines=["bigquery", "postgres"])
@@ -4946,7 +4951,7 @@ def reflect(*cols: ColumnOrName) -> Column:
4946
4951
  return Column.invoke_anonymous_function(cols[0], "reflect")
4947
4952
 
4948
4953
 
4949
- @meta(unsupported_engines="*")
4954
+ @meta(unsupported_engines="snowflake")
4950
4955
  def regexp(str: ColumnOrName, regexp: ColumnOrName) -> Column:
4951
4956
  r"""Returns true if `str` matches the Java regex `regexp`, or false otherwise.
4952
4957
 
@@ -4996,12 +5001,21 @@ def regexp(str: ColumnOrName, regexp: ColumnOrName) -> Column:
4996
5001
  | true|
4997
5002
  +-------------------+
4998
5003
  """
4999
- from sqlframe.base.function_alternatives import regexp_extract_only_one_group
5004
+ from sqlframe.base.function_alternatives import (
5005
+ regexp_with_contains,
5006
+ regexp_with_matches,
5007
+ )
5000
5008
 
5001
5009
  session = _get_session()
5002
5010
 
5011
+ if session._is_duckdb:
5012
+ return regexp_with_matches(str, regexp)
5013
+
5014
+ if session._is_postgres:
5015
+ return Column.invoke_expression_over_column(str, expression.RegexpILike, expression=regexp)
5016
+
5003
5017
  if session._is_bigquery:
5004
- return regexp_extract_only_one_group(str, regexp) # type: ignore
5018
+ return regexp_with_contains(str, regexp)
5005
5019
 
5006
5020
  return Column.invoke_anonymous_function(str, "regexp", regexp)
5007
5021
 
@@ -5485,7 +5499,7 @@ def regr_syy(y: ColumnOrName, x: ColumnOrName) -> Column:
5485
5499
  return Column.invoke_anonymous_function(y, "regr_syy", x)
5486
5500
 
5487
5501
 
5488
- @meta(unsupported_engines="*")
5502
+ @meta()
5489
5503
  def replace(
5490
5504
  src: ColumnOrName, search: ColumnOrName, replace: t.Optional[ColumnOrName] = None
5491
5505
  ) -> Column:
@@ -5513,6 +5527,11 @@ def replace(
5513
5527
  >>> df.select(replace(df.a, df.b).alias('r')).collect()
5514
5528
  [Row(r='ABC')]
5515
5529
  """
5530
+ if replace is None and (
5531
+ _get_session()._is_duckdb or _get_session()._is_postgres or _get_session()._is_bigquery
5532
+ ):
5533
+ replace = expression.Literal.string("") # type: ignore
5534
+
5516
5535
  if replace is not None:
5517
5536
  return Column.invoke_anonymous_function(src, "replace", search, replace)
5518
5537
  else:
@@ -6397,7 +6416,7 @@ def unix_date(col: ColumnOrName) -> Column:
6397
6416
  return Column.invoke_expression_over_column(col, expression.UnixDate)
6398
6417
 
6399
6418
 
6400
- @meta(unsupported_engines="*")
6419
+ @meta()
6401
6420
  def unix_micros(col: ColumnOrName) -> Column:
6402
6421
  """Returns the number of microseconds since 1970-01-01 00:00:00 UTC.
6403
6422
 
@@ -6411,10 +6430,20 @@ def unix_micros(col: ColumnOrName) -> Column:
6411
6430
  [Row(n=1437584400000000)]
6412
6431
  >>> spark.conf.unset("spark.sql.session.timeZone")
6413
6432
  """
6433
+ from sqlframe.base.function_alternatives import unix_micros_multiply_epoch
6434
+
6435
+ if (
6436
+ _get_session()._is_bigquery
6437
+ or _get_session()._is_duckdb
6438
+ or _get_session()._is_postgres
6439
+ or _get_session()._is_snowflake
6440
+ ):
6441
+ return unix_micros_multiply_epoch(col)
6442
+
6414
6443
  return Column.invoke_anonymous_function(col, "unix_micros")
6415
6444
 
6416
6445
 
6417
- @meta(unsupported_engines="*")
6446
+ @meta()
6418
6447
  def unix_millis(col: ColumnOrName) -> Column:
6419
6448
  """Returns the number of milliseconds since 1970-01-01 00:00:00 UTC.
6420
6449
  Truncates higher levels of precision.
@@ -6429,10 +6458,20 @@ def unix_millis(col: ColumnOrName) -> Column:
6429
6458
  [Row(n=1437584400000)]
6430
6459
  >>> spark.conf.unset("spark.sql.session.timeZone")
6431
6460
  """
6461
+ from sqlframe.base.function_alternatives import unix_millis_multiply_epoch
6462
+
6463
+ if (
6464
+ _get_session()._is_bigquery
6465
+ or _get_session()._is_duckdb
6466
+ or _get_session()._is_postgres
6467
+ or _get_session()._is_snowflake
6468
+ ):
6469
+ return unix_millis_multiply_epoch(col)
6470
+
6432
6471
  return Column.invoke_anonymous_function(col, "unix_millis")
6433
6472
 
6434
6473
 
6435
- @meta(unsupported_engines=["bigquery", "duckdb", "postgres"])
6474
+ @meta()
6436
6475
  def unix_seconds(col: ColumnOrName) -> Column:
6437
6476
  """Returns the number of seconds since 1970-01-01 00:00:00 UTC.
6438
6477
  Truncates higher levels of precision.
@@ -6447,6 +6486,27 @@ def unix_seconds(col: ColumnOrName) -> Column:
6447
6486
  [Row(n=1437584400)]
6448
6487
  >>> spark.conf.unset("spark.sql.session.timeZone")
6449
6488
  """
6489
+ from sqlframe.base.function_alternatives import unix_seconds_extract_epoch
6490
+
6491
+ if _get_session()._is_postgres:
6492
+ return unix_seconds_extract_epoch(col)
6493
+
6494
+ if _get_session()._is_bigquery:
6495
+ return Column(
6496
+ expression.Anonymous(
6497
+ this="UNIX_SECONDS",
6498
+ expressions=[
6499
+ expression.Anonymous(
6500
+ this="TIMESTAMP",
6501
+ expressions=[
6502
+ Column.ensure_col(col).column_expression,
6503
+ expression.Literal.string("UTC"),
6504
+ ],
6505
+ )
6506
+ ],
6507
+ )
6508
+ )
6509
+
6450
6510
  return Column.invoke_expression_over_column(col, expression.UnixSeconds)
6451
6511
 
6452
6512
 
@@ -108,6 +108,11 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
108
108
  if not getattr(self, "schema", None) or schema:
109
109
  self._schema = schema
110
110
 
111
+ # https://github.com/eakmanrq/sqlframe/issues/262
112
+ @property
113
+ def execution_dialect_name(self) -> str:
114
+ return self.execution_dialect.__class__.__name__.lower()
115
+
111
116
  @property
112
117
  def read(self) -> READER:
113
118
  return self._reader(self)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.14.2
3
+ Version: 3.15.1
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -18,3 +18,4 @@ def test_session_from_config():
18
18
  session = BigQuerySession.builder.config("default_dataset", "sqlframe.db1").getOrCreate()
19
19
  columns = session.catalog.get_columns("db1.test_table")
20
20
  assert columns == {"cola": exp.DataType.build("BIGINT"), "colb": exp.DataType.build("TEXT")}
21
+ assert session.execution_dialect_name == "bigquery"
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: DatabricksConnection):
45
45
  "cola": exp.DataType.build("INT", dialect=session.output_dialect),
46
46
  "colb": exp.DataType.build("STRING", dialect=session.output_dialect),
47
47
  }
48
+ assert session.execution_dialect_name == "databricks"
@@ -11,3 +11,4 @@ def test_session_from_config():
11
11
  session = DuckDBSession.builder.config("sqlframe.conn", conn).getOrCreate()
12
12
  columns = session.catalog.get_columns("test_table")
13
13
  assert columns == {"cola": exp.DataType.build("INT"), "colb": exp.DataType.build("TEXT")}
14
+ assert session.execution_dialect_name == "duckdb"
@@ -17,3 +17,4 @@ def test_session_from_config(function_scoped_postgres):
17
17
  "cola": exp.DataType.build("INT", dialect=session.output_dialect),
18
18
  "colb": exp.DataType.build("STRING", dialect=session.output_dialect),
19
19
  }
20
+ assert session.execution_dialect_name == "postgres"
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: RedshiftConnection):
45
45
  "cola": exp.DataType.build("INT", dialect=session.output_dialect),
46
46
  "colb": exp.DataType.build("STRING", dialect=session.output_dialect),
47
47
  }
48
+ assert session.execution_dialect_name == "redshift"
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: SnowflakeConnection):
45
45
  "cola": exp.DataType.build("DECIMAL(38, 0)", dialect=session.output_dialect),
46
46
  "colb": exp.DataType.build("TEXT", dialect=session.output_dialect),
47
47
  }
48
+ assert session.execution_dialect_name == "snowflake"
@@ -1279,7 +1279,7 @@ def test_month(get_session_and_func):
1279
1279
  def test_dayofweek(get_session_and_func):
1280
1280
  session, dayofweek = get_session_and_func("dayofweek")
1281
1281
  df = session.createDataFrame([("2015-04-08",)], ["dt"])
1282
- assert df.select(dayofweek("dt").alias("day")).first()[0] in (3, 4)
1282
+ assert df.select(dayofweek("dt").alias("day")).first()[0] == 4
1283
1283
 
1284
1284
 
1285
1285
  def test_dayofmonth(get_session_and_func):
@@ -5114,3 +5114,15 @@ def test_is_array(get_session_and_func, get_func):
5114
5114
  .collect()
5115
5115
  )
5116
5116
  assert result == [Row(v1=True, v2=True, v3=False)]
5117
+
5118
+
5119
+ # https://github.com/eakmanrq/sqlframe/issues/265
5120
+ def test_infinite(get_session_and_func):
5121
+ session, lit = get_session_and_func("lit")
5122
+ df = session.createDataFrame(
5123
+ [
5124
+ {"a": float("inf")},
5125
+ {"a": float("-inf")},
5126
+ ]
5127
+ )
5128
+ assert df.collect() == [Row(a=float("inf")), Row(a=float("-inf"))]
@@ -42,6 +42,8 @@ def test_invoke_anonymous(name, func):
42
42
  ),
43
43
  (SF.lit({"cola": 1, "colb": "test"}), "MAP('cola', 1, 'colb', 'test')"),
44
44
  (SF.lit(Row(cola=1, colb="test")), "STRUCT(1 AS cola, 'test' AS colb)"),
45
+ (SF.lit(float("inf")), "'inf'"),
46
+ (SF.lit(float("-inf")), "'-inf'"),
45
47
  ],
46
48
  )
47
49
  def test_lit(expression, expected):
@@ -3285,8 +3287,8 @@ def test_char(expression, expected):
3285
3287
  @pytest.mark.parametrize(
3286
3288
  "expression, expected",
3287
3289
  [
3288
- (SF.char_length("cola"), "CHAR_LENGTH(cola)"),
3289
- (SF.char_length(SF.col("cola")), "CHAR_LENGTH(cola)"),
3290
+ (SF.char_length("cola"), "LENGTH(cola)"),
3291
+ (SF.char_length(SF.col("cola")), "LENGTH(cola)"),
3290
3292
  ],
3291
3293
  )
3292
3294
  def test_char_length(expression, expected):
@@ -3296,8 +3298,8 @@ def test_char_length(expression, expected):
3296
3298
  @pytest.mark.parametrize(
3297
3299
  "expression, expected",
3298
3300
  [
3299
- (SF.character_length("cola"), "CHARACTER_LENGTH(cola)"),
3300
- (SF.character_length(SF.col("cola")), "CHARACTER_LENGTH(cola)"),
3301
+ (SF.character_length("cola"), "LENGTH(cola)"),
3302
+ (SF.character_length(SF.col("cola")), "LENGTH(cola)"),
3301
3303
  ],
3302
3304
  )
3303
3305
  def test_character_length(expression, expected):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes