sqlframe 3.17.0__py3-none-any.whl → 3.18.0__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.18.0'
16
+ __version_tuple__ = version_tuple = (3, 18, 0)
@@ -23,7 +23,6 @@ from sqlglot import lineage as sqlglot_lineage
23
23
  from sqlglot.helper import ensure_list, flatten, object_to_dict, seq_get
24
24
  from sqlglot.optimizer.pushdown_projections import pushdown_projections
25
25
  from sqlglot.optimizer.qualify import qualify
26
- from sqlglot.optimizer.qualify_columns import quote_identifiers
27
26
 
28
27
  from sqlframe.base.catalog import Column as CatalogColumn
29
28
  from sqlframe.base.operations import Operation, operation
@@ -616,6 +615,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
616
615
  self,
617
616
  optimize: bool = True,
618
617
  openai_config: t.Optional[t.Union[t.Dict[str, t.Any], OpenAIConfig]] = None,
618
+ quote_identifiers: bool = True,
619
619
  ) -> t.List[exp.Expression]:
620
620
  df = self._resolve_pending_hints()
621
621
  select_expressions = df._get_select_expressions()
@@ -644,7 +644,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
644
644
  if optimize:
645
645
  select_expression = t.cast(
646
646
  exp.Select,
647
- self.session._optimize(select_expression),
647
+ self.session._optimize(select_expression, quote_identifiers=quote_identifiers),
648
648
  )
649
649
  elif openai_config:
650
650
  qualify(
@@ -713,8 +713,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
713
713
  dialect: DialectType = ...,
714
714
  optimize: bool = ...,
715
715
  pretty: bool = ...,
716
+ quote_identifiers: bool = ...,
716
717
  *,
717
- as_list: t.Literal[False],
718
+ as_list: t.Literal[False] = False,
718
719
  **kwargs: t.Any,
719
720
  ) -> str: ...
720
721
 
@@ -724,6 +725,7 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
724
725
  dialect: DialectType = ...,
725
726
  optimize: bool = ...,
726
727
  pretty: bool = ...,
728
+ quote_identifiers: bool = ...,
727
729
  *,
728
730
  as_list: t.Literal[True],
729
731
  **kwargs: t.Any,
@@ -734,14 +736,23 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
734
736
  dialect: DialectType = None,
735
737
  optimize: bool = True,
736
738
  pretty: bool = True,
739
+ quote_identifiers: bool = True,
737
740
  openai_config: t.Optional[t.Union[t.Dict[str, t.Any], OpenAIConfig]] = None,
738
741
  as_list: bool = False,
739
742
  **kwargs,
740
743
  ) -> t.Union[str, t.List[str]]:
741
744
  dialect = Dialect.get_or_raise(dialect) if dialect else self.session.output_dialect
742
745
  results = []
743
- for expression in self._get_expressions(optimize=optimize, openai_config=openai_config):
744
- sql = self.session._to_sql(expression, dialect=dialect, pretty=pretty, **kwargs)
746
+ for expression in self._get_expressions(
747
+ optimize=optimize, openai_config=openai_config, quote_identifiers=quote_identifiers
748
+ ):
749
+ sql = self.session._to_sql(
750
+ expression,
751
+ dialect=dialect,
752
+ pretty=pretty,
753
+ quote_identifiers=quote_identifiers,
754
+ **kwargs,
755
+ )
745
756
  if openai_config:
746
757
  assert isinstance(openai_config, OpenAIConfig)
747
758
  verify_openai_installed()
@@ -822,8 +833,9 @@ class BaseDataFrame(t.Generic[SESSION, WRITER, NA, STAT, GROUP_DATA]):
822
833
  if cte:
823
834
  resolved_column_position[ambiguous_col] += 1
824
835
  else:
825
- cte = ctes_with_column[resolved_column_position[ambiguous_col]]
826
- ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
836
+ cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col])
837
+ if cte:
838
+ ambiguous_col.set("table", exp.to_identifier(cte.alias_or_name))
827
839
 
828
840
  @operation(Operation.SELECT)
829
841
  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
@@ -15,6 +16,7 @@ from sqlglot import Dialect, exp
15
16
  from sqlglot.dialects.dialect import DialectType, NormalizationStrategy
16
17
  from sqlglot.expressions import parse_identifier
17
18
  from sqlglot.helper import ensure_list, seq_get
19
+ from sqlglot.optimizer import RULES as OPTIMIZER_RULES
18
20
  from sqlglot.optimizer import optimize
19
21
  from sqlglot.optimizer.normalize_identifiers import normalize_identifiers
20
22
  from sqlglot.optimizer.qualify import qualify as qualify_func
@@ -213,13 +215,16 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
213
215
 
214
216
  def createDataFrame(
215
217
  self,
216
- data: t.Sequence[
217
- t.Union[
218
- t.Dict[str, ColumnLiterals],
219
- t.List[ColumnLiterals],
220
- t.Tuple[ColumnLiterals, ...],
221
- ColumnLiterals,
222
- ]
218
+ data: t.Union[
219
+ t.Sequence[
220
+ t.Union[
221
+ t.Dict[str, ColumnLiterals],
222
+ t.List[ColumnLiterals],
223
+ t.Tuple[ColumnLiterals, ...],
224
+ ColumnLiterals,
225
+ ],
226
+ ],
227
+ pd.DataFrame,
223
228
  ],
224
229
  schema: t.Optional[SchemaInput] = None,
225
230
  samplingRatio: t.Optional[float] = None,
@@ -240,11 +245,18 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
240
245
  ):
241
246
  raise NotImplementedError("Only schema of either list or string of list supported")
242
247
 
248
+ with contextlib.suppress(ImportError):
249
+ from pandas import DataFrame as pd_DataFrame
250
+
251
+ if isinstance(data, pd_DataFrame):
252
+ data = data.to_dict("records") # type: ignore
253
+
243
254
  column_mapping: t.Mapping[str, t.Optional[exp.DataType]]
244
255
  if schema is not None:
245
256
  column_mapping = get_column_mapping_from_schema_input(
246
257
  schema, dialect=self.input_dialect
247
258
  )
259
+
248
260
  elif data:
249
261
  if isinstance(data[0], Row):
250
262
  column_mapping = {col_name.strip(): None for col_name in data[0].__fields__}
@@ -386,7 +398,8 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
386
398
  dialect = Dialect.get_or_raise(dialect or self.input_dialect)
387
399
  expression = (
388
400
  sqlglot.parse_one(
389
- normalize_string(sqlQuery, from_dialect=dialect, is_query=True), read=dialect
401
+ normalize_string(sqlQuery, from_dialect=dialect, is_query=True),
402
+ read=dialect,
390
403
  )
391
404
  if isinstance(sqlQuery, str)
392
405
  else sqlQuery
@@ -544,6 +557,7 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
544
557
  dialect: DialectType = None,
545
558
  quote_identifiers: bool = True,
546
559
  pretty: bool = False,
560
+ **kwargs,
547
561
  ) -> str:
548
562
  return normalize_string(
549
563
  sql,
@@ -562,9 +576,19 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
562
576
  ) -> exp.Expression:
563
577
  dialect = dialect or self.input_dialect
564
578
  normalize_identifiers(expression, dialect=dialect)
579
+ rules = list(OPTIMIZER_RULES)
565
580
  if quote_identifiers:
566
581
  quote_identifiers_func(expression, dialect=dialect)
567
- return optimize(expression, dialect=dialect, schema=self.catalog._schema, infer_schema=True)
582
+ else:
583
+ rules.remove(quote_identifiers_func)
584
+ return optimize(
585
+ expression,
586
+ dialect=dialect,
587
+ schema=self.catalog._schema,
588
+ infer_schema=True,
589
+ quote_identifiers=quote_identifiers,
590
+ rules=rules, # type: ignore
591
+ )
568
592
 
569
593
  def _execute(self, sql: str) -> None:
570
594
  self._cur.execute(sql)
@@ -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.18.0
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -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=sbqQ7wMrRCbK9h4-ahk9DoaetF-oPVAV49BG-2oJfiQ,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=5gF_zvafC60rZ1OdnB4klKALw35mmxllYTVgIIiZPY0,79340
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=aSp83JXEW_zEMfe1JxPFcjqq2yUThwYboCnk0LqhUko,27290
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.18.0.dist-info/LICENSE,sha256=VZu79YgW780qxaFJMr0t5ZgbOYEh04xWoxaWOaqIGWk,1068
133
+ sqlframe-3.18.0.dist-info/METADATA,sha256=5riMB4lxhi4MDtVWW-kgUK6_PQwdjLDaC5NXSYNNrQ8,8970
134
+ sqlframe-3.18.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
135
+ sqlframe-3.18.0.dist-info/top_level.txt,sha256=T0_RpoygaZSF6heeWwIDQgaP0varUdSK1pzjeJZRjM8,9
136
+ sqlframe-3.18.0.dist-info/RECORD,,