sqlframe 3.17.0__py3-none-any.whl → 3.17.1__py3-none-any.whl

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.
sqlframe/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.17.0'
16
- __version_tuple__ = version_tuple = (3, 17, 0)
15
+ __version__ = version = '3.17.1'
16
+ __version_tuple__ = version_tuple = (3, 17, 1)
@@ -822,8 +822,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
822
822
  if cte:
823
823
  resolved_column_position[ambiguous_col] += 1
824
824
  else:
825
- cte = ctes_with_column[resolved_column_position[ambiguous_col]]
826
- ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
825
+ cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col])
826
+ if cte:
827
+ ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
827
828
 
828
829
  @operation(Operation.SELECT)
829
830
  def select(self, *cols, **kwargs) -> Self:
sqlframe/base/session.py CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import contextlib
5
6
  import datetime
6
7
  import logging
7
8
  import sys
@@ -213,13 +214,16 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
213
214
 
214
215
  def createDataFrame(
215
216
  self,
216
- data: t.Sequence[
217
- t.Union[
218
- t.Dict[str, ColumnLiterals],
219
- t.List[ColumnLiterals],
220
- t.Tuple[ColumnLiterals, ...],
221
- ColumnLiterals,
222
- ]
217
+ data: t.Union[
218
+ t.Sequence[
219
+ t.Union[
220
+ t.Dict[str, ColumnLiterals],
221
+ t.List[ColumnLiterals],
222
+ t.Tuple[ColumnLiterals, ...],
223
+ ColumnLiterals,
224
+ ],
225
+ ],
226
+ pd.DataFrame,
223
227
  ],
224
228
  schema: t.Optional[SchemaInput] = None,
225
229
  samplingRatio: t.Optional[float] = None,
@@ -240,11 +244,18 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
240
244
  ):
241
245
  raise NotImplementedError("Only schema of either list or string of list supported")
242
246
 
247
+ with contextlib.suppress(ImportError):
248
+ from pandas import DataFrame as pd_DataFrame
249
+
250
+ if isinstance(data, pd_DataFrame):
251
+ data = data.to_dict("records") # type: ignore
252
+
243
253
  column_mapping: t.Mapping[str, t.Optional[exp.DataType]]
244
254
  if schema is not None:
245
255
  column_mapping = get_column_mapping_from_schema_input(
246
256
  schema, dialect=self.input_dialect
247
257
  )
258
+
248
259
  elif data:
249
260
  if isinstance(data[0], Row):
250
261
  column_mapping = {col_name.strip(): None for col_name in data[0].__fields__}
@@ -386,7 +397,8 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
386
397
  dialect = Dialect.get_or_raise(dialect or self.input_dialect)
387
398
  expression = (
388
399
  sqlglot.parse_one(
389
- normalize_string(sqlQuery, from_dialect=dialect, is_query=True), read=dialect
400
+ normalize_string(sqlQuery, from_dialect=dialect, is_query=True),
401
+ read=dialect,
390
402
  )
391
403
  if isinstance(sqlQuery, str)
392
404
  else sqlQuery
@@ -27,7 +27,7 @@ class BigQuerySession(
27
27
  BigQueryDataFrameWriter,
28
28
  BigQueryDataFrame,
29
29
  BigQueryTable,
30
- BigQueryConnection,
30
+ BigQueryConnection, # type: ignore
31
31
  BigQueryUDFRegistration,
32
32
  ],
33
33
  ):
@@ -26,7 +26,7 @@ class DatabricksSession(
26
26
  DatabricksDataFrameWriter,
27
27
  DatabricksDataFrame,
28
28
  DatabricksTable,
29
- DatabricksConnection,
29
+ DatabricksConnection, # type: ignore
30
30
  DatabricksUDFRegistration,
31
31
  ],
32
32
  ):
@@ -28,7 +28,7 @@ class DuckDBSession(
28
28
  DuckDBDataFrameWriter,
29
29
  DuckDBDataFrame,
30
30
  DuckDBTable,
31
- DuckDBPyConnection,
31
+ DuckDBPyConnection, # type: ignore
32
32
  DuckDBUDFRegistration,
33
33
  ]
34
34
  ):
@@ -29,7 +29,7 @@ class PostgresSession(
29
29
  PostgresDataFrameWriter,
30
30
  PostgresDataFrame,
31
31
  PostgresTable,
32
- psycopg2_connection,
32
+ psycopg2_connection, # type: ignore
33
33
  PostgresUDFRegistration,
34
34
  ],
35
35
  ):
@@ -53,7 +53,7 @@ class SnowflakeSession(
53
53
  SnowflakeDataFrameWriter,
54
54
  SnowflakeDataFrame,
55
55
  SnowflakeTable,
56
- SnowflakeConnection,
56
+ SnowflakeConnection, # type: ignore
57
57
  SnowflakeUDFRegistration,
58
58
  ],
59
59
  ):
sqlframe/spark/session.py CHANGED
@@ -34,7 +34,7 @@ class SparkSession(
34
34
  SparkDataFrameWriter,
35
35
  SparkDataFrame,
36
36
  SparkTable,
37
- PySparkSession,
37
+ PySparkSession, # type: ignore
38
38
  SparkUDFRegistration,
39
39
  ],
40
40
  ):
@@ -20,7 +20,7 @@ class StandaloneSession(
20
20
  StandaloneDataFrameWriter,
21
21
  StandaloneDataFrame,
22
22
  StandaloneTable,
23
- object,
23
+ object, # type: ignore
24
24
  StandaloneUDFRegistration,
25
25
  ]
26
26
  ): # type: ignore
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.17.0
3
+ Version: 3.17.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
@@ -17,7 +17,7 @@ Requires-Python: >=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
19
  Requires-Dist: prettytable <4
20
- Requires-Dist: sqlglot <26.4,>=24.0.0
20
+ Requires-Dist: sqlglot <26.5,>=24.0.0
21
21
  Requires-Dist: typing-extensions
22
22
  Provides-Extra: bigquery
23
23
  Requires-Dist: google-cloud-bigquery-storage <3,>=2 ; extra == 'bigquery'
@@ -27,7 +27,7 @@ Requires-Dist: databricks-sql-connector <5,>=3.6 ; extra == 'databricks'
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: duckdb <1.2,>=0.9 ; extra == 'dev'
29
29
  Requires-Dist: findspark <3,>=2 ; extra == 'dev'
30
- Requires-Dist: mypy <1.15,>=1.10.0 ; extra == 'dev'
30
+ Requires-Dist: mypy <1.16,>=1.10.0 ; extra == 'dev'
31
31
  Requires-Dist: openai <2,>=1.30 ; extra == 'dev'
32
32
  Requires-Dist: pandas-stubs <3,>=2 ; extra == 'dev'
33
33
  Requires-Dist: pandas <3,>=2 ; extra == 'dev'
@@ -1,10 +1,10 @@
1
1
  sqlframe/__init__.py,sha256=wfqm98eLoLid9oV_FzzpG5loKC6LxOhj2lXpfN7SARo,3138
2
- sqlframe/_version.py,sha256=KdbrTz1mygb-tPODYZu2E4Sk2KYmeTUCHVpQLRpXAXo,413
2
+ sqlframe/_version.py,sha256=c661E5W7jBk0KLcY4zPGbS19JVM6PufmNidbT4Hw5Ok,413
3
3
  sqlframe/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  sqlframe/base/_typing.py,sha256=b2clI5HI1zEZKB_3Msx3FeAJQyft44ubUifJwQRVXyQ,1298
5
5
  sqlframe/base/catalog.py,sha256=SzFQalTWdhWzxUY-4ut1f9TfOECp_JmJEgNPfrRKCe0,38457
6
6
  sqlframe/base/column.py,sha256=oHVwkSWABO3ZlAbgBShsxSSlgbI06BOup5XJrRhgqJI,18097
7
- sqlframe/base/dataframe.py,sha256=SQtwoQKpq-12WXuplOPN21fXQPvjF_D9WLcPPFA12Zs,78973
7
+ sqlframe/base/dataframe.py,sha256=KcB9HhnXuPojHOpksvYwmgIwcXUD6g9--EEvEBytDuY,79010
8
8
  sqlframe/base/decorators.py,sha256=ms-CvDOIW3T8IVB9VqDmLwAiaEsqXLYRXEqVQaxktiM,1890
9
9
  sqlframe/base/exceptions.py,sha256=9Uwvqn2eAkDpqm4BrRgbL61qM-GMCbJEMAW8otxO46s,370
10
10
  sqlframe/base/function_alternatives.py,sha256=NV31IaEhVYmfUSWetAEFISAvLzs2DxQ7bp-iMNgj0hQ,53786
@@ -13,7 +13,7 @@ sqlframe/base/group.py,sha256=fsyG5990_Pd7gFPjTFrH9IEoAquL_wEkVpIlBAIkZJU,4091
13
13
  sqlframe/base/normalize.py,sha256=nXAJ5CwxVf4DV0GsH-q1w0p8gmjSMlv96k_ez1eVul8,3880
14
14
  sqlframe/base/operations.py,sha256=xSPw74e59wYvNd6U1AlwziNCTG6Aftrbl4SybN9u9VE,3450
15
15
  sqlframe/base/readerwriter.py,sha256=w8926cqIrXF7NGHiINw5UHzP_3xpjsqbijTBTzycBRM,26605
16
- sqlframe/base/session.py,sha256=0eBE_HYEb3npyyOGM7zS_VR8WgzvfgVI-PFLCK9Hy0M,26628
16
+ sqlframe/base/session.py,sha256=gvg_yZaivR0N6Kyo3tiUitoTc9NSYekGp0-x-fPhAqA,26967
17
17
  sqlframe/base/table.py,sha256=rCeh1W5SWbtEVfkLAUiexzrZwNgmZeptLEmLcM1ABkE,6961
18
18
  sqlframe/base/transforms.py,sha256=y0j3SGDz3XCmNGrvassk1S-owllUWfkHyMgZlY6SFO4,467
19
19
  sqlframe/base/types.py,sha256=iBNk9bpFtb2NBIogYS8i7OlQZMRvpR6XxqzBebsjQDU,12280
@@ -33,7 +33,7 @@ sqlframe/bigquery/functions.py,sha256=MYLs6-sXXqe5o6ghJHHtEpFJlYMeyKzx9-rT3wwXlc
33
33
  sqlframe/bigquery/functions.pyi,sha256=KXgV46eZFNIXwXIhPuSJ08BG18iLQzDCQjyI3REBEXg,11925
34
34
  sqlframe/bigquery/group.py,sha256=UVBNBRTo8OqS-_cS5YwvTeJYgYxeG-d6R3kfyHmlFqw,391
35
35
  sqlframe/bigquery/readwriter.py,sha256=2uQhGe0THiLPb-_NF5jDdbizwjYJk854MuhEcnLghaE,949
36
- sqlframe/bigquery/session.py,sha256=647nSjJtrlZ9lpRZQbPjjqKbFZF2PmXwi-RgeQAo_vI,2915
36
+ sqlframe/bigquery/session.py,sha256=5-SNh1sHd4Q6zPEmlinL9LLwsqlzBTqT-ZNRAFpU1_s,2931
37
37
  sqlframe/bigquery/table.py,sha256=pSSRFeKcStyFuE1B4uiheP22tHHq5SdQ-uuaNQpbsfI,661
38
38
  sqlframe/bigquery/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
39
39
  sqlframe/bigquery/udf.py,sha256=ZZ1-P1zWZhQqmhBqwAxfNeKl31nDkkZgkuz7Dn28P_0,264
@@ -46,7 +46,7 @@ sqlframe/databricks/functions.py,sha256=La8rjAwO0hD4FBO0QxW5CtZtFAPvOrVc6lG4OtPG
46
46
  sqlframe/databricks/functions.pyi,sha256=FzVBpzXCJzxIp73sIAo_R8Wx8uOJrix-W12HsgyeTcQ,23799
47
47
  sqlframe/databricks/group.py,sha256=dU3g0DVLRlfOSCamKchQFXRd1WTFbdxoXkpEX8tPD6Y,399
48
48
  sqlframe/databricks/readwriter.py,sha256=qhdw1zozrBixdUWsaQT2jy4JtZo0nuTjnRyg2GiFy9g,3370
49
- sqlframe/databricks/session.py,sha256=GsalVyMTJicEPo7Pt_9HpjUKmAZG7hw11Ge8yYgUTFk,2327
49
+ sqlframe/databricks/session.py,sha256=iw4uczkJHkpVO8vusEEmfCrhxHWyAHpCFmOZ-0qlkms,2343
50
50
  sqlframe/databricks/table.py,sha256=Q0Vnrl5aUqnqFTQpTwfWMRyQ9AQnagtpnSnXmP6IKRs,678
51
51
  sqlframe/databricks/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
52
52
  sqlframe/databricks/udf.py,sha256=3rmxv_6zSLfIxH8P8P050ZO-ki0aqBb9wWuUQBtl4m8,272
@@ -59,7 +59,7 @@ sqlframe/duckdb/functions.py,sha256=ix2efGGD4HLaY1rtCtEd3IrsicGEVGiBAeKOo5OD8rA,
59
59
  sqlframe/duckdb/functions.pyi,sha256=P0ky6k-J7LdCDrQ0OjfRC3ARIYNHPmAmmaB_jBEO5L0,12383
60
60
  sqlframe/duckdb/group.py,sha256=IkhbW42Ng1U5YT3FkIdiB4zBqRkW4QyTb-1detY1e_4,383
61
61
  sqlframe/duckdb/readwriter.py,sha256=5EP8DEoX3N_xYavWpetsZdzvtYF-oCrAz3n-siNE8yY,4938
62
- sqlframe/duckdb/session.py,sha256=8EViTw259TrnhweqwlGRhl9nO-8x2fmlnXevkUInJDE,2882
62
+ sqlframe/duckdb/session.py,sha256=Uf7im6eBbBYRvIhVGV0VCTCF76FQ00A5FbKPCdNllzw,2898
63
63
  sqlframe/duckdb/table.py,sha256=AmEKoH2TZo98loS5NbNaTuqv0eg76SY_OckVBMmQ6Co,410
64
64
  sqlframe/duckdb/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
65
65
  sqlframe/duckdb/udf.py,sha256=Du9LnOtT1lJvB90D4HSR2tB7MXy179jZngDR-EjVjQk,656
@@ -72,7 +72,7 @@ sqlframe/postgres/functions.py,sha256=yOuDlt4GHXHg4MWhrAjlpVkEf1-zefxLQ1JfWy4JqI
72
72
  sqlframe/postgres/functions.pyi,sha256=PozoVOSao-KG9LKqN7XuTETO_nd9ujGhQUMxwtMP6_c,11001
73
73
  sqlframe/postgres/group.py,sha256=KUXeSFKWTSH9yCRJAhW85OvjZaG6Zr4In9LR_ie3yGU,391
74
74
  sqlframe/postgres/readwriter.py,sha256=o3cJWBlmQX5gpII8dLmQQUxg0ZRDO06XyFS6rBdHGQs,949
75
- sqlframe/postgres/session.py,sha256=avamcGDy09PGc5xkDiY8VrHZ5UfdPiXWLrVcSjjStK8,2648
75
+ sqlframe/postgres/session.py,sha256=iKmxA46tmcy-86s46eXjYWawGWlZm4QRqix40aqV2pw,2664
76
76
  sqlframe/postgres/table.py,sha256=LZeomgZQnibZ3zO36McKfxAbT670AcNqI4ftptY3B5A,661
77
77
  sqlframe/postgres/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
78
78
  sqlframe/postgres/udf.py,sha256=TylVxrmPzycAqnpTiueGvvetiMCfCX31QatgQMIgpME,264
@@ -97,7 +97,7 @@ sqlframe/snowflake/functions.py,sha256=g3ELesLGvN7tyRyiEAnPneVyL0rQhSSOxYFvBFuOi
97
97
  sqlframe/snowflake/functions.pyi,sha256=sEqNdyqQBtgqoKtRViUb70QT5yrvpVoP3ZN7VxHNxbw,12612
98
98
  sqlframe/snowflake/group.py,sha256=pPP1l2RRo_LgkXrji8a87n2PKo-63ZRPT-WUtvVcBME,395
99
99
  sqlframe/snowflake/readwriter.py,sha256=TxvufwdA83xjMoMjgyHerz0Qri3sPFB1nEPHmQyGNtg,966
100
- sqlframe/snowflake/session.py,sha256=mTTZIn2a_4KcWCpTFVD6nSwAKg4nYkLA5Rvvui-NnLo,3496
100
+ sqlframe/snowflake/session.py,sha256=nHQ8DfKJNUCUjAZqnF68_1JiRX7mucJHLtvZVm3_0Ig,3512
101
101
  sqlframe/snowflake/table.py,sha256=A5SpA-0mnYBkVXIxaa10LY-QJ8OuNjOEXfJK8k-iDkQ,618
102
102
  sqlframe/snowflake/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
103
103
  sqlframe/snowflake/udf.py,sha256=yzMmky-n5BXFbdldgfzLP8hCrVm0DgruSUCUUy1_3sk,268
@@ -110,7 +110,7 @@ sqlframe/spark/functions.py,sha256=MYCgHsjRQWylT-rezWRBuLV6BivcaVarbaQtP4T0toQ,3
110
110
  sqlframe/spark/functions.pyi,sha256=GyOdUzv2Z7Qt99JAKEPKgV2t2Rn274OuqwAfcoAXlN0,24259
111
111
  sqlframe/spark/group.py,sha256=MrvV_v-YkBc6T1zz882WrEqtWjlooWIyHBCmTQg3fCA,379
112
112
  sqlframe/spark/readwriter.py,sha256=zXZcCPWpQMMN90wdIx8AD4Y5tWBcpRSL4-yKX2aZyik,874
113
- sqlframe/spark/session.py,sha256=9qG-J5L8gmiy384GZFSBT2tHF8akqqJNij23Y3pheMs,5651
113
+ sqlframe/spark/session.py,sha256=fYu8aVSDRAJ7ZnA7zgba7acXjP8ROJshfX5UYmEq5mI,5667
114
114
  sqlframe/spark/table.py,sha256=puWV8h_CqA64zwpzq0ydY9LoygMAvprkODyxyzZeF9M,186
115
115
  sqlframe/spark/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
116
116
  sqlframe/spark/udf.py,sha256=owB8NDaGVkUQ0WGm7SZt2t9zfvLFCfi0W48QiPfgjck,1153
@@ -122,15 +122,15 @@ sqlframe/standalone/dataframe.py,sha256=K5zx14KzUTe2_KBo7XsLhe9jLiTHwYkf6VQzcnS9
122
122
  sqlframe/standalone/functions.py,sha256=cA5Lbk6UUH4vTmq1aNtPsBb3uskOxsrT6V1STHYdtNI,46
123
123
  sqlframe/standalone/group.py,sha256=oGEbAQMSm6AlkwnBxNI8r9enZWRwsRxc8zpzoz3rArk,399
124
124
  sqlframe/standalone/readwriter.py,sha256=KP2qNJZD0uhthRblLVTloE4Fv5rh_rwA95q7pjAXEww,716
125
- sqlframe/standalone/session.py,sha256=d9HujLcJFlBJWnGgolw32hSbBvQH7LiCaCNVj5QIVXw,1501
125
+ sqlframe/standalone/session.py,sha256=INTyERn5Rnqx9aVOcYr5OWzOp3hZkIp4kQosxdCMdjM,1517
126
126
  sqlframe/standalone/table.py,sha256=FN-qYKisHyFjdzpklb1vsbzGFXaKvgbNyiEXxyu-95o,216
127
127
  sqlframe/standalone/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
128
128
  sqlframe/standalone/udf.py,sha256=azmgtUjHNIPs0WMVNId05SHwiYn41MKVBhKXsQJ5dmY,272
129
129
  sqlframe/standalone/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
130
130
  sqlframe/testing/__init__.py,sha256=VVCosQhitU74A3NnE52O4mNtGZONapuEXcc20QmSlnQ,132
131
131
  sqlframe/testing/utils.py,sha256=PFsGZpwNUE_4-g_f43_vstTqsK0AQ2lBneb5Eb6NkFo,13008
132
- sqlframe-3.17.0.dist-info/LICENSE,sha256=VZu79YgW780qxaFJMr0t5ZgbOYEh04xWoxaWOaqIGWk,1068
133
- sqlframe-3.17.0.dist-info/METADATA,sha256=K8kfOT5t6cEBs4YsIK76QCFBPW2NEcDcsPMkEhWCLUI,8970
134
- sqlframe-3.17.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
135
- sqlframe-3.17.0.dist-info/top_level.txt,sha256=T0_RpoygaZSF6heeWwIDQgaP0varUdSK1pzjeJZRjM8,9
136
- sqlframe-3.17.0.dist-info/RECORD,,
132
+ sqlframe-3.17.1.dist-info/LICENSE,sha256=VZu79YgW780qxaFJMr0t5ZgbOYEh04xWoxaWOaqIGWk,1068
133
+ sqlframe-3.17.1.dist-info/METADATA,sha256=7YgdpN6-xqFqBAQlqR5V8IaeByzgFlcW9aQl1fG8Ey0,8970
134
+ sqlframe-3.17.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
135
+ sqlframe-3.17.1.dist-info/top_level.txt,sha256=T0_RpoygaZSF6heeWwIDQgaP0varUdSK1pzjeJZRjM8,9
136
+ sqlframe-3.17.1.dist-info/RECORD,,