sqlframe 3.22.1__py3-none-any.whl → 3.24.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.
@@ -9,6 +9,7 @@ from sqlglot import exp, parse_one
9
9
 
10
10
  from sqlframe.base.catalog import Function, _BaseCatalog
11
11
  from sqlframe.base.mixins.catalog_mixins import (
12
+ CreateTableFromFunctionMixin,
12
13
  GetCurrentCatalogFromFunctionMixin,
13
14
  GetCurrentDatabaseFromFunctionMixin,
14
15
  ListCatalogsFromInfoSchemaMixin,
@@ -22,17 +23,19 @@ from sqlframe.base.util import normalize_string, schema_, to_schema
22
23
  if t.TYPE_CHECKING:
23
24
  from sqlframe.redshift.dataframe import RedshiftDataFrame
24
25
  from sqlframe.redshift.session import RedshiftSession
26
+ from sqlframe.redshift.table import RedshiftTable
25
27
 
26
28
 
27
29
  class RedshiftCatalog(
28
- GetCurrentCatalogFromFunctionMixin["RedshiftSession", "RedshiftDataFrame"],
29
- GetCurrentDatabaseFromFunctionMixin["RedshiftSession", "RedshiftDataFrame"],
30
- ListDatabasesFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame"],
31
- ListCatalogsFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame"],
32
- SetCurrentDatabaseFromSearchPathMixin["RedshiftSession", "RedshiftDataFrame"],
33
- ListTablesFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame"],
34
- ListColumnsFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame"],
35
- _BaseCatalog["RedshiftSession", "RedshiftDataFrame"],
30
+ GetCurrentCatalogFromFunctionMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
31
+ GetCurrentDatabaseFromFunctionMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
32
+ CreateTableFromFunctionMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
33
+ ListDatabasesFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
34
+ ListCatalogsFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
35
+ SetCurrentDatabaseFromSearchPathMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
36
+ ListTablesFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
37
+ ListColumnsFromInfoSchemaMixin["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
38
+ _BaseCatalog["RedshiftSession", "RedshiftDataFrame", "RedshiftTable"],
36
39
  ):
37
40
  CURRENT_CATALOG_EXPRESSION: exp.Expression = exp.func("current_database")
38
41
 
@@ -10,6 +10,7 @@ from sqlglot import exp, parse_one
10
10
 
11
11
  from sqlframe.base.catalog import Function, _BaseCatalog
12
12
  from sqlframe.base.mixins.catalog_mixins import (
13
+ CreateTableFromFunctionMixin,
13
14
  GetCurrentCatalogFromFunctionMixin,
14
15
  GetCurrentDatabaseFromFunctionMixin,
15
16
  ListCatalogsFromInfoSchemaMixin,
@@ -24,18 +25,20 @@ from sqlframe.base.util import normalize_string, schema_, to_schema
24
25
  if t.TYPE_CHECKING:
25
26
  from sqlframe.snowflake.session import SnowflakeSession # noqa
26
27
  from sqlframe.snowflake.dataframe import SnowflakeDataFrame # noqa
28
+ from sqlframe.snowflake.table import SnowflakeTable # noqa
27
29
 
28
30
 
29
31
  class SnowflakeCatalog(
30
- SetCurrentCatalogFromUseMixin["SnowflakeSession", "SnowflakeDataFrame"],
31
- GetCurrentCatalogFromFunctionMixin["SnowflakeSession", "SnowflakeDataFrame"],
32
- GetCurrentDatabaseFromFunctionMixin["SnowflakeSession", "SnowflakeDataFrame"],
33
- ListDatabasesFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame"],
34
- ListCatalogsFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame"],
35
- SetCurrentDatabaseFromUseMixin["SnowflakeSession", "SnowflakeDataFrame"],
36
- ListTablesFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame"],
37
- ListColumnsFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame"],
38
- _BaseCatalog["SnowflakeSession", "SnowflakeDataFrame"],
32
+ SetCurrentCatalogFromUseMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
33
+ GetCurrentCatalogFromFunctionMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
34
+ GetCurrentDatabaseFromFunctionMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
35
+ CreateTableFromFunctionMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
36
+ ListDatabasesFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
37
+ ListCatalogsFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
38
+ SetCurrentDatabaseFromUseMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
39
+ ListTablesFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
40
+ ListColumnsFromInfoSchemaMixin["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
41
+ _BaseCatalog["SnowflakeSession", "SnowflakeDataFrame", "SnowflakeTable"],
39
42
  ):
40
43
  CURRENT_CATALOG_EXPRESSION: exp.Expression = exp.func("current_database")
41
44
  UPPERCASE_INFO_SCHEMA = True
sqlframe/spark/catalog.py CHANGED
@@ -20,10 +20,11 @@ if t.TYPE_CHECKING:
20
20
  from sqlframe.base._typing import StorageLevel, UserDefinedFunctionLike
21
21
  from sqlframe.spark.dataframe import SparkDataFrame
22
22
  from sqlframe.spark.session import SparkSession # noqa
23
+ from sqlframe.spark.table import SparkTable # noqa
23
24
 
24
25
 
25
26
  class SparkCatalog(
26
- _BaseCatalog["SparkSession", "SparkDataFrame"],
27
+ _BaseCatalog["SparkSession", "SparkDataFrame", "SparkTable"],
27
28
  ):
28
29
  @property
29
30
  def _spark_catalog(self):
@@ -727,7 +728,7 @@ class SparkCatalog(
727
728
  source: t.Optional[str] = None,
728
729
  schema: t.Optional[StructType] = None,
729
730
  **options: str,
730
- ) -> SparkDataFrame:
731
+ ) -> SparkTable:
731
732
  """Creates a table based on the dataset in a data source.
732
733
 
733
734
  It returns the DataFrame associated with the external table.
@@ -745,7 +746,14 @@ class SparkCatalog(
745
746
  -------
746
747
  :class:`DataFrame`
747
748
  """
748
- raise NotImplementedError()
749
+ tableName = normalize_string(tableName, from_dialect="input", to_dialect="execution")
750
+ return self._spark_catalog.createExternalTable(
751
+ tableName,
752
+ path,
753
+ source,
754
+ schema,
755
+ **options,
756
+ )
749
757
 
750
758
  def createTable(
751
759
  self,
@@ -755,7 +763,7 @@ class SparkCatalog(
755
763
  schema: t.Optional[StructType] = None,
756
764
  description: t.Optional[str] = None,
757
765
  **options: str,
758
- ) -> SparkDataFrame:
766
+ ) -> SparkTable:
759
767
  """Creates a table based on the dataset in a data source.
760
768
 
761
769
  .. versionadded:: 2.2.0
@@ -807,7 +815,15 @@ class SparkCatalog(
807
815
  ... "tbl2", schema=spark.range(1).schema, path=d, source='parquet')
808
816
  >>> _ = spark.sql("DROP TABLE tbl2")
809
817
  """
810
- raise NotImplementedError()
818
+ tableName = normalize_string(tableName, from_dialect="input", to_dialect="execution")
819
+ return self._spark_catalog.createTable(
820
+ tableName,
821
+ path,
822
+ source,
823
+ schema,
824
+ description,
825
+ **options,
826
+ )
811
827
 
812
828
  def dropTempView(self, viewName: str) -> bool:
813
829
  """Drops the local temporary view with the given view name in the catalog.
@@ -5,9 +5,12 @@ from sqlframe.base.catalog import _BaseCatalog
5
5
  if t.TYPE_CHECKING:
6
6
  from sqlframe.standalone.dataframe import StandaloneDataFrame
7
7
  from sqlframe.standalone.session import StandaloneSession
8
+ from sqlframe.standalone.table import StandaloneTable
8
9
 
9
10
 
10
- class StandaloneCatalog(_BaseCatalog["StandaloneSession", "StandaloneDataFrame"]):
11
+ class StandaloneCatalog(
12
+ _BaseCatalog["StandaloneSession", "StandaloneDataFrame", "StandaloneTable"]
13
+ ):
11
14
  """User-facing catalog API, accessible through `SparkSession.catalog`."""
12
15
 
13
16
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 3.22.1
3
+ Version: 3.24.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.7,>=24.0.0
20
+ Requires-Dist: sqlglot <26.10,>=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'
@@ -25,7 +25,7 @@ Requires-Dist: google-cloud-bigquery[pandas] <4,>=3 ; extra == 'bigquery'
25
25
  Provides-Extra: databricks
26
26
  Requires-Dist: databricks-sql-connector <5,>=3.6 ; extra == 'databricks'
27
27
  Provides-Extra: dev
28
- Requires-Dist: duckdb <1.2,>=0.9 ; extra == 'dev'
28
+ Requires-Dist: duckdb <1.3,>=1.2 ; extra == 'dev'
29
29
  Requires-Dist: findspark <3,>=2 ; extra == 'dev'
30
30
  Requires-Dist: mypy <1.16,>=1.10.0 ; extra == 'dev'
31
31
  Requires-Dist: openai <2,>=1.30 ; extra == 'dev'
@@ -48,7 +48,7 @@ Requires-Dist: mkdocs-material ==9.0.5 ; extra == 'docs'
48
48
  Requires-Dist: mkdocs ==1.4.2 ; extra == 'docs'
49
49
  Requires-Dist: pymdown-extensions ; extra == 'docs'
50
50
  Provides-Extra: duckdb
51
- Requires-Dist: duckdb <1.2,>=0.9 ; extra == 'duckdb'
51
+ Requires-Dist: duckdb <1.3,>=1.2 ; extra == 'duckdb'
52
52
  Requires-Dist: pandas <3,>=2 ; extra == 'duckdb'
53
53
  Provides-Extra: openai
54
54
  Requires-Dist: openai <2,>=1.30 ; extra == 'openai'
@@ -59,7 +59,7 @@ Requires-Dist: psycopg2 <3,>=2.8 ; extra == 'postgres'
59
59
  Provides-Extra: redshift
60
60
  Requires-Dist: redshift-connector <2.2.0,>=2.1.1 ; extra == 'redshift'
61
61
  Provides-Extra: snowflake
62
- Requires-Dist: snowflake-connector-python[secure-local-storage] <3.14,>=3.10.0 ; extra == 'snowflake'
62
+ Requires-Dist: snowflake-connector-python[secure-local-storage] <3.15,>=3.10.0 ; extra == 'snowflake'
63
63
  Provides-Extra: spark
64
64
  Requires-Dist: pyspark <3.6,>=2 ; extra == 'spark'
65
65
 
@@ -1,32 +1,33 @@
1
- sqlframe/__init__.py,sha256=wfqm98eLoLid9oV_FzzpG5loKC6LxOhj2lXpfN7SARo,3138
2
- sqlframe/_version.py,sha256=8eLhLry2PxnXZDWV0RoPCF5YsBcUB10-ky6GKcZbQZU,513
1
+ sqlframe/__init__.py,sha256=SB80yLTITBXHI2GCDS6n6bN5ObHqgPjfpRPAUwxaots,3403
2
+ sqlframe/_version.py,sha256=oBaBfkGwPg8m5xrcN1koyrYjFksI66xSV9GrRFL_fYM,513
3
+ sqlframe/py.typed,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
3
4
  sqlframe/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
5
  sqlframe/base/_typing.py,sha256=b2clI5HI1zEZKB_3Msx3FeAJQyft44ubUifJwQRVXyQ,1298
5
- sqlframe/base/catalog.py,sha256=D39Mn4AIkUyaVyLJiI5gcX0Bv_pChl89GAyYHrtOw5g,38513
6
- sqlframe/base/column.py,sha256=oHVwkSWABO3ZlAbgBShsxSSlgbI06BOup5XJrRhgqJI,18097
7
- sqlframe/base/dataframe.py,sha256=9wcN5I5bSiGKs6m-mSCwlDUSRfrZ_ymfRUtJa8hggd4,83990
6
+ sqlframe/base/catalog.py,sha256=ZuU_qmt4yjSoTYgecSGnOhitOdh3rJbGCUjnUBp5mlc,38564
7
+ sqlframe/base/column.py,sha256=AG9Z_6RNhVxLhLU29kRCgzMgDNSm-_GFg96xLqk1-bs,19838
8
+ sqlframe/base/dataframe.py,sha256=IztCvK1MBajMrc70Ee6bgWyQ14y5iQPxGtN5WeemZe0,83946
8
9
  sqlframe/base/decorators.py,sha256=ms-CvDOIW3T8IVB9VqDmLwAiaEsqXLYRXEqVQaxktiM,1890
9
10
  sqlframe/base/exceptions.py,sha256=9Uwvqn2eAkDpqm4BrRgbL61qM-GMCbJEMAW8otxO46s,370
10
11
  sqlframe/base/function_alternatives.py,sha256=KFkEm0aIHzajvQmiPZnzTLh-Ud9wjeg4lJ4Rk0vk-YU,53674
11
- sqlframe/base/functions.py,sha256=0lLefa959J1z7Ea6QBnQrru06lKCLurEX1xFYxGJbTc,223082
12
- sqlframe/base/group.py,sha256=fsyG5990_Pd7gFPjTFrH9IEoAquL_wEkVpIlBAIkZJU,4091
12
+ sqlframe/base/functions.py,sha256=gWUxngV4cgbPvKqK7_N-2rYGycRyoKJnZqPfFyqIgbE,223305
13
+ sqlframe/base/group.py,sha256=4R9sOZm4ZRlTfShq2j3_HQOiL_Tj1bYkouenYsgnlII,4115
13
14
  sqlframe/base/normalize.py,sha256=nXAJ5CwxVf4DV0GsH-q1w0p8gmjSMlv96k_ez1eVul8,3880
14
- sqlframe/base/operations.py,sha256=xSPw74e59wYvNd6U1AlwziNCTG6Aftrbl4SybN9u9VE,3450
15
- sqlframe/base/readerwriter.py,sha256=g6h9ldC4ImYdoUwZJxwfd5Iu2p9aqZ39bEFhwrHVlvI,27868
15
+ sqlframe/base/operations.py,sha256=g-YNcbvNKTOBbYm23GKfB3fmydlR7ZZDAuZUtXIHtzw,4438
16
+ sqlframe/base/readerwriter.py,sha256=xjNRmHndfUAtqeVbNdcmTcjOc14LUpgxs23q7RUw1Ls,27893
16
17
  sqlframe/base/session.py,sha256=G5_bI_z1iJtAGm2SgEdjkKiyJmS0yOUopx9P5TEGdR4,27273
17
18
  sqlframe/base/table.py,sha256=rCeh1W5SWbtEVfkLAUiexzrZwNgmZeptLEmLcM1ABkE,6961
18
19
  sqlframe/base/transforms.py,sha256=y0j3SGDz3XCmNGrvassk1S-owllUWfkHyMgZlY6SFO4,467
19
20
  sqlframe/base/types.py,sha256=iBNk9bpFtb2NBIogYS8i7OlQZMRvpR6XxqzBebsjQDU,12280
20
21
  sqlframe/base/udf.py,sha256=O6hMhBUy9NVv-mhJRtfFhXTIa_-Z8Y_FkmmuOHu0l90,1117
21
22
  sqlframe/base/util.py,sha256=QktpGRlkYsapQRs_uhuc3T736qRry2PNE7kcPxjYefo,15519
22
- sqlframe/base/window.py,sha256=vmQEUa3FnaDmdce2f3xzskOJe7XsZ7JhMyOIR4RdJuY,4806
23
+ sqlframe/base/window.py,sha256=7NaKDTlhun-95LEghukBCjFBwq0RHrPaajWQNCsLxok,4818
23
24
  sqlframe/base/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- sqlframe/base/mixins/catalog_mixins.py,sha256=9tn0mK8oPoqIIjNItystD5tdBMdK9YpkxTG7G9KQl8k,18619
25
- sqlframe/base/mixins/dataframe_mixins.py,sha256=9U556vWjhmAwnbqkQ4mDkKHxQRs-FkncwEEY9RWmm6U,1408
25
+ sqlframe/base/mixins/catalog_mixins.py,sha256=9fZGWToz9xMJSzUl1vsVtj6TH3TysP3fBCKJLnGUQzE,23353
26
+ sqlframe/base/mixins/dataframe_mixins.py,sha256=8D2AFtfc0tj9Q5qzlNAXdXOYw9RuD8kpe8wixo8pY5o,1534
26
27
  sqlframe/base/mixins/readwriter_mixins.py,sha256=ItQ_0jZ5RljgmLjGDIzLMRP_NQdy3wAyKwJ6K5NjaqA,4954
27
28
  sqlframe/base/mixins/table_mixins.py,sha256=2TnGFpbDSGw_NswpZwLACqvdD4zCA7hXekQ9IEkoTOk,13784
28
29
  sqlframe/bigquery/__init__.py,sha256=kbaomhYAANPdxeDQhajv8IHfMg_ENKivtYK-rPwaV08,939
29
- sqlframe/bigquery/catalog.py,sha256=w6cxAV6OWa2icVt5vwgNXy08EP9WJh3DkQJzQkn2kIo,11661
30
+ sqlframe/bigquery/catalog.py,sha256=Dcpp1JKftc3ukdYpn6M1ujqixA-6_1k8aY21Y5Johyc,11899
30
31
  sqlframe/bigquery/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
31
32
  sqlframe/bigquery/dataframe.py,sha256=2qlnwTOpfpHQxr9MCxeZWxKiQoL6txEgGNE8JQsalUQ,2599
32
33
  sqlframe/bigquery/functions.py,sha256=MYLs6-sXXqe5o6ghJHHtEpFJlYMeyKzx9-rT3wwXlc4,426
@@ -39,20 +40,20 @@ sqlframe/bigquery/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
39
40
  sqlframe/bigquery/udf.py,sha256=ZZ1-P1zWZhQqmhBqwAxfNeKl31nDkkZgkuz7Dn28P_0,264
40
41
  sqlframe/bigquery/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
41
42
  sqlframe/databricks/__init__.py,sha256=BkB_eO1UYwcf8j6x7bi4BWmDCMkfn0CUMwossWgwaG4,993
42
- sqlframe/databricks/catalog.py,sha256=_0KWKp6GoplS2F-oMa2bLJEJNrKcrSeO77DoKQFl1Pc,11614
43
+ sqlframe/databricks/catalog.py,sha256=T_4NlQ7TD57_UTYFeRezYUu0t9NEx7cgJS60O4DKcBQ,18609
43
44
  sqlframe/databricks/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
44
45
  sqlframe/databricks/dataframe.py,sha256=uBJ8GxjfiODto2PvhgmsslIwKArW7tcLBA70tvtun3M,2177
45
46
  sqlframe/databricks/functions.py,sha256=La8rjAwO0hD4FBO0QxW5CtZtFAPvOrVc6lG4OtPGgbc,336
46
47
  sqlframe/databricks/functions.pyi,sha256=FzVBpzXCJzxIp73sIAo_R8Wx8uOJrix-W12HsgyeTcQ,23799
47
48
  sqlframe/databricks/group.py,sha256=dU3g0DVLRlfOSCamKchQFXRd1WTFbdxoXkpEX8tPD6Y,399
48
- sqlframe/databricks/readwriter.py,sha256=qhdw1zozrBixdUWsaQT2jy4JtZo0nuTjnRyg2GiFy9g,3370
49
+ sqlframe/databricks/readwriter.py,sha256=zLnRztTnS0onRFoC4ElSypxnVW1Q_vs75bd8FRB2GKg,14602
49
50
  sqlframe/databricks/session.py,sha256=iw4uczkJHkpVO8vusEEmfCrhxHWyAHpCFmOZ-0qlkms,2343
50
51
  sqlframe/databricks/table.py,sha256=Q0Vnrl5aUqnqFTQpTwfWMRyQ9AQnagtpnSnXmP6IKRs,678
51
52
  sqlframe/databricks/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
52
53
  sqlframe/databricks/udf.py,sha256=3rmxv_6zSLfIxH8P8P050ZO-ki0aqBb9wWuUQBtl4m8,272
53
54
  sqlframe/databricks/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
54
55
  sqlframe/duckdb/__init__.py,sha256=KAw_uZEhFMwi3D9Wj6AgHAKqLNk-EAx2uDIYu56oL44,872
55
- sqlframe/duckdb/catalog.py,sha256=YYYVmetLUaJOdObKw4AJ7L0P-msshkta4xHlcZQ9zEA,4795
56
+ sqlframe/duckdb/catalog.py,sha256=89FCSJglMbOxonk3IXmlkMcdXCfMdePpGfqlbkkB_d0,5107
56
57
  sqlframe/duckdb/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
57
58
  sqlframe/duckdb/dataframe.py,sha256=Z8_K69UQGZVeBfVGXVwIJP8OMuIvNBB3DPKTP3Lfu4w,1908
58
59
  sqlframe/duckdb/functions.py,sha256=ix2efGGD4HLaY1rtCtEd3IrsicGEVGiBAeKOo5OD8rA,424
@@ -65,7 +66,7 @@ sqlframe/duckdb/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
65
66
  sqlframe/duckdb/udf.py,sha256=Du9LnOtT1lJvB90D4HSR2tB7MXy179jZngDR-EjVjQk,656
66
67
  sqlframe/duckdb/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
67
68
  sqlframe/postgres/__init__.py,sha256=NN9WI0-GehvpPdJmTB2VSDVpA5PAtxa3ZkF4BRcTEy4,939
68
- sqlframe/postgres/catalog.py,sha256=9XVXXDW04mY_KmeB52NsCny8n0evqdDCBxhGH1Xce6s,8956
69
+ sqlframe/postgres/catalog.py,sha256=_K6wLycWMoXGwTJuHS0xfYXilFRcaGQcxQh8f5YPH-U,9262
69
70
  sqlframe/postgres/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
70
71
  sqlframe/postgres/dataframe.py,sha256=SzXvAmUvU3Fx7_jd2F0KNHxWGHsAUJ1Dpseq2Ty0phA,1287
71
72
  sqlframe/postgres/functions.py,sha256=yOuDlt4GHXHg4MWhrAjlpVkEf1-zefxLQ1JfWy4JqIU,390
@@ -78,7 +79,7 @@ sqlframe/postgres/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
78
79
  sqlframe/postgres/udf.py,sha256=TylVxrmPzycAqnpTiueGvvetiMCfCX31QatgQMIgpME,264
79
80
  sqlframe/postgres/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
80
81
  sqlframe/redshift/__init__.py,sha256=F43uqhCJYQk5wK8Ydvmn5KGrvt__IYaDVS0DJ_-izhc,939
81
- sqlframe/redshift/catalog.py,sha256=x-sfVwoOS_0MeLICCqu7YUiFRgBam7vV1sHfaAKZGjE,5410
82
+ sqlframe/redshift/catalog.py,sha256=zDLDEbB1GyvLqlIp99NeOnqMdVovUHj78aORNEuE0oU,5725
82
83
  sqlframe/redshift/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
83
84
  sqlframe/redshift/dataframe.py,sha256=qwMI4dcb0lZRzA0RroiqS5UR5fdDFP8j84B5E2nRLkk,1102
84
85
  sqlframe/redshift/functions.py,sha256=_oT3UUj8Ch_mV1e6KNcu6_5ftCFK8SfKn3lD5gqeh9I,390
@@ -90,7 +91,7 @@ sqlframe/redshift/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
90
91
  sqlframe/redshift/udf.py,sha256=xOi7vtO56MyYprC3ys3FCSVJ5EVjEq2l_KqEVgKJrkw,264
91
92
  sqlframe/redshift/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
92
93
  sqlframe/snowflake/__init__.py,sha256=msYAxOnPyjuBSTbpb5s9P5o0pr2N82UUGPxUtv0TNNw,966
93
- sqlframe/snowflake/catalog.py,sha256=Tp_B9oMTInnqLTiZNsT0UNc-a-aKXu3zFThlCwLeKCA,6507
94
+ sqlframe/snowflake/catalog.py,sha256=mgMdIRMpTUJlymKV3Uf9oqv8UDfzPELkJJwyTkjvI_s,6861
94
95
  sqlframe/snowflake/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
95
96
  sqlframe/snowflake/dataframe.py,sha256=TosBO9tnnqAQ9Y-abX954vQM8VBLYRmN_P50iusMFgQ,2185
96
97
  sqlframe/snowflake/functions.py,sha256=g3ELesLGvN7tyRyiEAnPneVyL0rQhSSOxYFvBFuOiaM,391
@@ -103,7 +104,7 @@ sqlframe/snowflake/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,3
103
104
  sqlframe/snowflake/udf.py,sha256=yzMmky-n5BXFbdldgfzLP8hCrVm0DgruSUCUUy1_3sk,268
104
105
  sqlframe/snowflake/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
105
106
  sqlframe/spark/__init__.py,sha256=QV0eNmY5fL4ulLvAJVVVx2OYFfQXN2KYV3R5cij7HTg,858
106
- sqlframe/spark/catalog.py,sha256=8ghHiKz9rBJ2ohm768XIftyi9Htbw-1cSkJUlXemwrI,39796
107
+ sqlframe/spark/catalog.py,sha256=s2PxNw_yqCtbVjLqAv5p_Su4h4bPjySeM5v0EyyR_xs,40331
107
108
  sqlframe/spark/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
108
109
  sqlframe/spark/dataframe.py,sha256=WyXHWsH8Ldu2cWTNmsLy5hEFrjJvQh_Aqv3JJcbDy6k,1777
109
110
  sqlframe/spark/functions.py,sha256=MYCgHsjRQWylT-rezWRBuLV6BivcaVarbaQtP4T0toQ,331
@@ -116,7 +117,7 @@ sqlframe/spark/types.py,sha256=KwNyuXIo-2xVVd4bZED3YrQOobKCtemlxGrJL7DrTC8,34
116
117
  sqlframe/spark/udf.py,sha256=owB8NDaGVkUQ0WGm7SZt2t9zfvLFCfi0W48QiPfgjck,1153
117
118
  sqlframe/spark/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
118
119
  sqlframe/standalone/__init__.py,sha256=u-BbP0mkWWRgMz46pylFlnD3EsEBvjtMnQ6kVCAejww,993
119
- sqlframe/standalone/catalog.py,sha256=oJAPxrXtra_YP_JBZCJY2qsr0TRhWG7FFSq0RHDszcU,389
120
+ sqlframe/standalone/catalog.py,sha256=NdUOJIRCMZMsAexr1oHV8xkygYHc3WvV0Uu5TwSgN9w,472
120
121
  sqlframe/standalone/column.py,sha256=E1tUa62Y5HajkhgFuebU9zohrGyieudcHzTT8gfalio,40
121
122
  sqlframe/standalone/dataframe.py,sha256=K5zx14KzUTe2_KBo7XsLhe9jLiTHwYkf6VQzcnS9208,965
122
123
  sqlframe/standalone/functions.py,sha256=cA5Lbk6UUH4vTmq1aNtPsBb3uskOxsrT6V1STHYdtNI,46
@@ -129,8 +130,8 @@ sqlframe/standalone/udf.py,sha256=azmgtUjHNIPs0WMVNId05SHwiYn41MKVBhKXsQJ5dmY,27
129
130
  sqlframe/standalone/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
130
131
  sqlframe/testing/__init__.py,sha256=VVCosQhitU74A3NnE52O4mNtGZONapuEXcc20QmSlnQ,132
131
132
  sqlframe/testing/utils.py,sha256=PFsGZpwNUE_4-g_f43_vstTqsK0AQ2lBneb5Eb6NkFo,13008
132
- sqlframe-3.22.1.dist-info/LICENSE,sha256=VZu79YgW780qxaFJMr0t5ZgbOYEh04xWoxaWOaqIGWk,1068
133
- sqlframe-3.22.1.dist-info/METADATA,sha256=T51BFHOahh25l4U0bR07BvwoXMIyO_FvhzwJYA54-sQ,8970
134
- sqlframe-3.22.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
135
- sqlframe-3.22.1.dist-info/top_level.txt,sha256=T0_RpoygaZSF6heeWwIDQgaP0varUdSK1pzjeJZRjM8,9
136
- sqlframe-3.22.1.dist-info/RECORD,,
133
+ sqlframe-3.24.0.dist-info/LICENSE,sha256=VZu79YgW780qxaFJMr0t5ZgbOYEh04xWoxaWOaqIGWk,1068
134
+ sqlframe-3.24.0.dist-info/METADATA,sha256=j0VhoDveh4Jv1Hem4K4TXKyiF9RC2L7oYHEZ7fmL4M4,8971
135
+ sqlframe-3.24.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
136
+ sqlframe-3.24.0.dist-info/top_level.txt,sha256=T0_RpoygaZSF6heeWwIDQgaP0varUdSK1pzjeJZRjM8,9
137
+ sqlframe-3.24.0.dist-info/RECORD,,