sqlframe 1.6.2__tar.gz → 1.6.3__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 (197) hide show
  1. {sqlframe-1.6.2 → sqlframe-1.6.3}/PKG-INFO +1 -1
  2. {sqlframe-1.6.2 → sqlframe-1.6.3}/setup.py +2 -2
  3. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/_version.py +2 -2
  4. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/dataframe.py +16 -11
  5. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe.egg-info/PKG-INFO +1 -1
  6. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe.egg-info/requires.txt +2 -2
  7. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/test_int_dataframe.py +2 -2
  8. {sqlframe-1.6.2 → sqlframe-1.6.3}/.github/CODEOWNERS +0 -0
  9. {sqlframe-1.6.2 → sqlframe-1.6.3}/.github/workflows/main.workflow.yaml +0 -0
  10. {sqlframe-1.6.2 → sqlframe-1.6.3}/.github/workflows/publish.workflow.yaml +0 -0
  11. {sqlframe-1.6.2 → sqlframe-1.6.3}/.gitignore +0 -0
  12. {sqlframe-1.6.2 → sqlframe-1.6.3}/.pre-commit-config.yaml +0 -0
  13. {sqlframe-1.6.2 → sqlframe-1.6.3}/.readthedocs.yaml +0 -0
  14. {sqlframe-1.6.2 → sqlframe-1.6.3}/LICENSE +0 -0
  15. {sqlframe-1.6.2 → sqlframe-1.6.3}/Makefile +0 -0
  16. {sqlframe-1.6.2 → sqlframe-1.6.3}/README.md +0 -0
  17. {sqlframe-1.6.2 → sqlframe-1.6.3}/blogs/images/but_wait_theres_more.gif +0 -0
  18. {sqlframe-1.6.2 → sqlframe-1.6.3}/blogs/images/cake.gif +0 -0
  19. {sqlframe-1.6.2 → sqlframe-1.6.3}/blogs/images/you_get_pyspark_api.gif +0 -0
  20. {sqlframe-1.6.2 → sqlframe-1.6.3}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  21. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/bigquery.md +0 -0
  22. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/configuration.md +0 -0
  23. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/bigquery.md +0 -0
  24. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/duckdb.md +0 -0
  25. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/images/SF.png +0 -0
  26. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/images/favicon.png +0 -0
  27. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/images/favicon_old.png +0 -0
  28. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/images/sqlframe_diagram.png +0 -0
  29. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/images/sqlframe_logo.png +0 -0
  30. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/docs/postgres.md +0 -0
  31. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/duckdb.md +0 -0
  32. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/images/SF.png +0 -0
  33. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/images/favicon.png +0 -0
  34. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/images/favicon_old.png +0 -0
  35. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/images/sqlframe_diagram.png +0 -0
  36. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/images/sqlframe_logo.png +0 -0
  37. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/index.md +0 -0
  38. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/postgres.md +0 -0
  39. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/requirements.txt +0 -0
  40. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/snowflake.md +0 -0
  41. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/standalone.md +0 -0
  42. {sqlframe-1.6.2 → sqlframe-1.6.3}/docs/stylesheets/extra.css +0 -0
  43. {sqlframe-1.6.2 → sqlframe-1.6.3}/mkdocs.yml +0 -0
  44. {sqlframe-1.6.2 → sqlframe-1.6.3}/pytest.ini +0 -0
  45. {sqlframe-1.6.2 → sqlframe-1.6.3}/renovate.json +0 -0
  46. {sqlframe-1.6.2 → sqlframe-1.6.3}/setup.cfg +0 -0
  47. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/LICENSE +0 -0
  48. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/__init__.py +0 -0
  49. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/__init__.py +0 -0
  50. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/_typing.py +0 -0
  51. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/catalog.py +0 -0
  52. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/column.py +0 -0
  53. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/decorators.py +0 -0
  54. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/exceptions.py +0 -0
  55. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/function_alternatives.py +0 -0
  56. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/functions.py +0 -0
  57. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/group.py +0 -0
  58. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/mixins/__init__.py +0 -0
  59. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  60. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  61. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  62. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/normalize.py +0 -0
  63. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/operations.py +0 -0
  64. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/readerwriter.py +0 -0
  65. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/session.py +0 -0
  66. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/transforms.py +0 -0
  67. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/types.py +0 -0
  68. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/util.py +0 -0
  69. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/base/window.py +0 -0
  70. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/__init__.py +0 -0
  71. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/catalog.py +0 -0
  72. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/column.py +0 -0
  73. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/dataframe.py +0 -0
  74. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/functions.py +0 -0
  75. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/functions.pyi +0 -0
  76. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/group.py +0 -0
  77. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/readwriter.py +0 -0
  78. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/session.py +0 -0
  79. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/types.py +0 -0
  80. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/bigquery/window.py +0 -0
  81. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/__init__.py +0 -0
  82. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/catalog.py +0 -0
  83. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/column.py +0 -0
  84. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/dataframe.py +0 -0
  85. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/functions.py +0 -0
  86. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/functions.pyi +0 -0
  87. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/group.py +0 -0
  88. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/readwriter.py +0 -0
  89. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/session.py +0 -0
  90. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/types.py +0 -0
  91. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/duckdb/window.py +0 -0
  92. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/__init__.py +0 -0
  93. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/catalog.py +0 -0
  94. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/column.py +0 -0
  95. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/dataframe.py +0 -0
  96. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/functions.py +0 -0
  97. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/functions.pyi +0 -0
  98. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/group.py +0 -0
  99. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/readwriter.py +0 -0
  100. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/session.py +0 -0
  101. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/types.py +0 -0
  102. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/postgres/window.py +0 -0
  103. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/__init__.py +0 -0
  104. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/catalog.py +0 -0
  105. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/column.py +0 -0
  106. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/dataframe.py +0 -0
  107. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/functions.py +0 -0
  108. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/group.py +0 -0
  109. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/readwriter.py +0 -0
  110. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/session.py +0 -0
  111. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/types.py +0 -0
  112. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/redshift/window.py +0 -0
  113. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/__init__.py +0 -0
  114. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/catalog.py +0 -0
  115. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/column.py +0 -0
  116. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/dataframe.py +0 -0
  117. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/functions.py +0 -0
  118. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/functions.pyi +0 -0
  119. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/group.py +0 -0
  120. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/readwriter.py +0 -0
  121. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/session.py +0 -0
  122. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/types.py +0 -0
  123. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/snowflake/window.py +0 -0
  124. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/__init__.py +0 -0
  125. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/catalog.py +0 -0
  126. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/column.py +0 -0
  127. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/dataframe.py +0 -0
  128. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/functions.py +0 -0
  129. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/group.py +0 -0
  130. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/readwriter.py +0 -0
  131. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/session.py +0 -0
  132. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/types.py +0 -0
  133. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/spark/window.py +0 -0
  134. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/__init__.py +0 -0
  135. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/catalog.py +0 -0
  136. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/column.py +0 -0
  137. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/dataframe.py +0 -0
  138. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/functions.py +0 -0
  139. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/group.py +0 -0
  140. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/readwriter.py +0 -0
  141. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/session.py +0 -0
  142. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/types.py +0 -0
  143. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe/standalone/window.py +0 -0
  144. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe.egg-info/SOURCES.txt +0 -0
  145. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe.egg-info/dependency_links.txt +0 -0
  146. {sqlframe-1.6.2 → sqlframe-1.6.3}/sqlframe.egg-info/top_level.txt +0 -0
  147. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/__init__.py +0 -0
  148. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/common_fixtures.py +0 -0
  149. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/conftest.py +0 -0
  150. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/fixtures/employee.csv +0 -0
  151. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/fixtures/employee.json +0 -0
  152. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/fixtures/employee.parquet +0 -0
  153. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/fixtures/employee_extra_line.csv +0 -0
  154. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/__init__.py +0 -0
  155. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/__init__.py +0 -0
  156. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/bigquery/__init__.py +0 -0
  157. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  158. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
  159. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/duck/__init__.py +0 -0
  160. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  161. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  162. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  163. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/duck/test_duckdb_session.py +0 -0
  164. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/postgres/__init__.py +0 -0
  165. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  166. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  167. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
  168. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/redshift/__init__.py +0 -0
  169. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  170. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
  171. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/snowflake/__init__.py +0 -0
  172. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  173. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
  174. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/spark/__init__.py +0 -0
  175. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  176. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/test_engine_dataframe.py +0 -0
  177. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/test_engine_reader.py +0 -0
  178. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/test_engine_session.py +0 -0
  179. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/test_engine_writer.py +0 -0
  180. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/engines/test_int_functions.py +0 -0
  181. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/fixtures.py +0 -0
  182. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/test_int_dataframe_stats.py +0 -0
  183. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/test_int_grouped_data.py +0 -0
  184. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/integration/test_int_session.py +0 -0
  185. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/types.py +0 -0
  186. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/__init__.py +0 -0
  187. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/__init__.py +0 -0
  188. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/fixtures.py +0 -0
  189. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_column.py +0 -0
  190. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_dataframe.py +0 -0
  191. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  192. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_functions.py +0 -0
  193. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_session.py +0 -0
  194. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  195. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_types.py +0 -0
  196. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/standalone/test_window.py +0 -0
  197. {sqlframe-1.6.2 → sqlframe-1.6.3}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 1.6.2
3
+ Version: 1.6.3
4
4
  Summary: Taking the Spark out of PySpark by converting to SQL
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -30,7 +30,7 @@ setup(
30
30
  "dev": [
31
31
  "duckdb>=0.9,<1.1",
32
32
  "mypy>=1.10.0,<1.11",
33
- "openai>=1.30,<1.32",
33
+ "openai>=1.30,<1.33",
34
34
  "pandas>=2,<3",
35
35
  "pandas-stubs>=2,<3",
36
36
  "psycopg>=3.1,<4",
@@ -57,7 +57,7 @@ setup(
57
57
  "pandas>=2,<3",
58
58
  ],
59
59
  "openai": [
60
- "openai>=1.30,<1.32",
60
+ "openai>=1.30,<1.33",
61
61
  ],
62
62
  "pandas": [
63
63
  "pandas>=2,<3",
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.6.2'
16
- __version_tuple__ = version_tuple = (1, 6, 2)
15
+ __version__ = version = '1.6.3'
16
+ __version_tuple__ = version_tuple = (1, 6, 3)
@@ -17,7 +17,7 @@ import sqlglot
17
17
  from prettytable import PrettyTable
18
18
  from sqlglot import Dialect
19
19
  from sqlglot import expressions as exp
20
- from sqlglot.helper import ensure_list, object_to_dict, seq_get
20
+ from sqlglot.helper import ensure_list, flatten, object_to_dict, seq_get
21
21
  from sqlglot.optimizer.pushdown_projections import pushdown_projections
22
22
  from sqlglot.optimizer.qualify import qualify
23
23
  from sqlglot.optimizer.qualify_columns import quote_identifiers
@@ -649,11 +649,16 @@ class _BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
649
649
  columns = self._ensure_and_normalize_cols(cols)
650
650
  kwargs["append"] = kwargs.get("append", False)
651
651
  if self.expression.args.get("joins"):
652
- ambiguous_cols = [
653
- col
654
- for col in columns
655
- if isinstance(col.column_expression, exp.Column) and not col.column_expression.table
656
- ]
652
+ ambiguous_cols: t.List[exp.Column] = list(
653
+ flatten(
654
+ [
655
+ sub_col
656
+ for col in columns
657
+ for sub_col in col.expression.find_all(exp.Column)
658
+ if not sub_col.table
659
+ ]
660
+ )
661
+ )
657
662
  if ambiguous_cols:
658
663
  join_table_identifiers = [
659
664
  x.this for x in get_tables_from_expression_with_join(self.expression)
@@ -662,13 +667,15 @@ class _BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
662
667
  # If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right
663
668
  # and therefore we allow multiple columns with the same name in the result. This matches the behavior
664
669
  # of Spark.
665
- resolved_column_position: t.Dict[Column, int] = {col: -1 for col in ambiguous_cols}
670
+ resolved_column_position: t.Dict[exp.Column, int] = {
671
+ col.copy(): -1 for col in ambiguous_cols
672
+ }
666
673
  for ambiguous_col in ambiguous_cols:
667
674
  ctes_with_column = [
668
675
  cte
669
676
  for cte in self.expression.ctes
670
677
  if cte.alias_or_name in cte_names_in_join
671
- and ambiguous_col.column_alias_or_name in cte.this.named_selects
678
+ and ambiguous_col.alias_or_name in cte.this.named_selects
672
679
  ]
673
680
  # Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise,
674
681
  # use the same CTE we used before
@@ -677,9 +684,7 @@ class _BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
677
684
  resolved_column_position[ambiguous_col] += 1
678
685
  else:
679
686
  cte = ctes_with_column[resolved_column_position[ambiguous_col]]
680
- ambiguous_col.column_expression.set(
681
- "table", exp.to_identifier(cte.alias_or_name)
682
- )
687
+ ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
683
688
  # If an expression is `CAST(x AS DATETYPE)` then we want to alias so that `x` is the result column name
684
689
  columns = [
685
690
  col.alias(col.expression.alias_or_name)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 1.6.2
3
+ Version: 1.6.3
4
4
  Summary: Taking the Spark out of PySpark by converting to SQL
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -8,7 +8,7 @@ google-cloud-bigquery[pandas]<4,>=3
8
8
  [dev]
9
9
  duckdb<1.1,>=0.9
10
10
  mypy<1.11,>=1.10.0
11
- openai<1.32,>=1.30
11
+ openai<1.33,>=1.30
12
12
  pandas-stubs<3,>=2
13
13
  pandas<3,>=2
14
14
  psycopg<4,>=3.1
@@ -39,7 +39,7 @@ duckdb<1.1,>=0.9
39
39
  pandas<3,>=2
40
40
 
41
41
  [openai]
42
- openai<1.32,>=1.30
42
+ openai<1.33,>=1.30
43
43
 
44
44
  [pandas]
45
45
  pandas<3,>=2
@@ -375,7 +375,7 @@ def test_join_inner(
375
375
  pyspark_employee["fname"],
376
376
  F.col("lname"),
377
377
  F.col("age"),
378
- F.col("store_id").alias("renamed_store_id"),
378
+ F.coalesce("store_id", "age").alias("store_id_size"),
379
379
  pyspark_store.store_name,
380
380
  pyspark_store["num_sales"],
381
381
  )
@@ -384,7 +384,7 @@ def test_join_inner(
384
384
  employee["fname"],
385
385
  SF.col("lname"),
386
386
  SF.col("age"),
387
- SF.col("store_id").alias("renamed_store_id"),
387
+ SF.coalesce("store_id", "age").alias("store_id_size"),
388
388
  store.store_name,
389
389
  store["num_sales"],
390
390
  )
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
File without changes
File without changes
File without changes