sqlframe 3.37.0__py3-none-any.whl → 3.38.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 +2 -2
- sqlframe/base/column.py +8 -1
- sqlframe/base/session.py +6 -0
- {sqlframe-3.37.0.dist-info → sqlframe-3.38.0.dist-info}/METADATA +2 -2
- {sqlframe-3.37.0.dist-info → sqlframe-3.38.0.dist-info}/RECORD +8 -8
- {sqlframe-3.37.0.dist-info → sqlframe-3.38.0.dist-info}/LICENSE +0 -0
- {sqlframe-3.37.0.dist-info → sqlframe-3.38.0.dist-info}/WHEEL +0 -0
- {sqlframe-3.37.0.dist-info → sqlframe-3.38.0.dist-info}/top_level.txt +0 -0
sqlframe/_version.py
CHANGED
sqlframe/base/column.py
CHANGED
@@ -222,6 +222,12 @@ class Column:
|
|
222
222
|
else:
|
223
223
|
value = value.astimezone(datetime.timezone.utc).isoformat(sep=" ")
|
224
224
|
return cls(exp.cast(exp.Literal.string(value), exp.DataType.Type.TIMESTAMPTZ))
|
225
|
+
elif isinstance(value, datetime.timedelta):
|
226
|
+
return cls(
|
227
|
+
exp.Interval(
|
228
|
+
this=exp.Literal.string(int(value.total_seconds())), unit=exp.Var(this="SECOND")
|
229
|
+
)
|
230
|
+
)
|
225
231
|
return cls(exp.convert(value))
|
226
232
|
|
227
233
|
@classmethod
|
@@ -413,8 +419,9 @@ class Column:
|
|
413
419
|
return self.invoke_expression_over_column(self, exp.StartsWith, expression=value.expression)
|
414
420
|
|
415
421
|
def endswith(self, value: t.Union[str, Column]) -> Column:
|
422
|
+
ends_with_func = get_func_from_session("endswith")
|
416
423
|
value = self._lit(value) if not isinstance(value, Column) else value
|
417
|
-
return
|
424
|
+
return ends_with_func(self, value)
|
418
425
|
|
419
426
|
def rlike(self, regexp: str) -> Column:
|
420
427
|
return self.invoke_expression_over_column(
|
sqlframe/base/session.py
CHANGED
@@ -12,6 +12,7 @@ from collections import defaultdict
|
|
12
12
|
from functools import cached_property
|
13
13
|
|
14
14
|
import sqlglot
|
15
|
+
from dateutil.relativedelta import relativedelta
|
15
16
|
from sqlglot import Dialect, exp
|
16
17
|
from sqlglot.dialects.dialect import DialectType, NormalizationStrategy
|
17
18
|
from sqlglot.expressions import parse_identifier
|
@@ -613,6 +614,11 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
613
614
|
return [cls._to_value(x) for x in value]
|
614
615
|
elif isinstance(value, datetime.datetime):
|
615
616
|
return value.replace(tzinfo=None)
|
617
|
+
elif isinstance(value, relativedelta):
|
618
|
+
return datetime.timedelta(
|
619
|
+
days=value.days, hours=value.hours, minutes=value.minutes, seconds=value.seconds
|
620
|
+
)
|
621
|
+
|
616
622
|
return value
|
617
623
|
|
618
624
|
@classmethod
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sqlframe
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.38.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 <27.
|
20
|
+
Requires-Dist: sqlglot <27.4,>=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'
|
@@ -1,10 +1,10 @@
|
|
1
1
|
sqlframe/__init__.py,sha256=SB80yLTITBXHI2GCDS6n6bN5ObHqgPjfpRPAUwxaots,3403
|
2
|
-
sqlframe/_version.py,sha256=
|
2
|
+
sqlframe/_version.py,sha256=QFZM372YAR5g-moTkhEicbj8HSNBFoNWHFgQ704qMgo,513
|
3
3
|
sqlframe/py.typed,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
|
4
4
|
sqlframe/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
sqlframe/base/_typing.py,sha256=b2clI5HI1zEZKB_3Msx3FeAJQyft44ubUifJwQRVXyQ,1298
|
6
6
|
sqlframe/base/catalog.py,sha256=-YulM2BMK8MoWbXi05AsJIPxd4AuiZDBCZuk4HoeMlE,38900
|
7
|
-
sqlframe/base/column.py,sha256=
|
7
|
+
sqlframe/base/column.py,sha256=f6rK6-hTiNx9WwJP7t6tqL3xEC2gwERPDlhWCS5iCBw,21417
|
8
8
|
sqlframe/base/dataframe.py,sha256=0diYONDlet8iZt49LC3vcmfXHAAZ2MovPL2pTXYHj2U,85974
|
9
9
|
sqlframe/base/decorators.py,sha256=IhE5xNQDkwJHacCvulq5WpUKyKmXm7dL2A3o5WuKGP4,2131
|
10
10
|
sqlframe/base/exceptions.py,sha256=9Uwvqn2eAkDpqm4BrRgbL61qM-GMCbJEMAW8otxO46s,370
|
@@ -14,7 +14,7 @@ sqlframe/base/group.py,sha256=fBm8EUve7W7xz11nybTXr09ih-yZxL_vvEiZVE1eb_0,12025
|
|
14
14
|
sqlframe/base/normalize.py,sha256=nXAJ5CwxVf4DV0GsH-q1w0p8gmjSMlv96k_ez1eVul8,3880
|
15
15
|
sqlframe/base/operations.py,sha256=g-YNcbvNKTOBbYm23GKfB3fmydlR7ZZDAuZUtXIHtzw,4438
|
16
16
|
sqlframe/base/readerwriter.py,sha256=Nb2VJ_HBmLQp5mK8JhnFooZh2ydAaboCAFVPb-4MNX4,31241
|
17
|
-
sqlframe/base/session.py,sha256=
|
17
|
+
sqlframe/base/session.py,sha256=ExaGjY_lxkMi2WDwJ8wTd2uf7a2PjOOk9bx1ViEaAqA,27507
|
18
18
|
sqlframe/base/table.py,sha256=rCeh1W5SWbtEVfkLAUiexzrZwNgmZeptLEmLcM1ABkE,6961
|
19
19
|
sqlframe/base/transforms.py,sha256=y0j3SGDz3XCmNGrvassk1S-owllUWfkHyMgZlY6SFO4,467
|
20
20
|
sqlframe/base/types.py,sha256=OktuJ5f7tEogOW0oupI0RBlHfzZMmKh7zGLke9cwllo,12305
|
@@ -130,8 +130,8 @@ sqlframe/standalone/udf.py,sha256=azmgtUjHNIPs0WMVNId05SHwiYn41MKVBhKXsQJ5dmY,27
|
|
130
130
|
sqlframe/standalone/window.py,sha256=6GKPzuxeSapJakBaKBeT9VpED1ACdjggDv9JRILDyV0,35
|
131
131
|
sqlframe/testing/__init__.py,sha256=VVCosQhitU74A3NnE52O4mNtGZONapuEXcc20QmSlnQ,132
|
132
132
|
sqlframe/testing/utils.py,sha256=PFsGZpwNUE_4-g_f43_vstTqsK0AQ2lBneb5Eb6NkFo,13008
|
133
|
-
sqlframe-3.
|
134
|
-
sqlframe-3.
|
135
|
-
sqlframe-3.
|
136
|
-
sqlframe-3.
|
137
|
-
sqlframe-3.
|
133
|
+
sqlframe-3.38.0.dist-info/LICENSE,sha256=VZu79YgW780qxaFJMr0t5ZgbOYEh04xWoxaWOaqIGWk,1068
|
134
|
+
sqlframe-3.38.0.dist-info/METADATA,sha256=9I9SbVhzN2eSfBMmQ1TN9QjFbWXiAKMra4AvhnqYENc,9039
|
135
|
+
sqlframe-3.38.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
136
|
+
sqlframe-3.38.0.dist-info/top_level.txt,sha256=T0_RpoygaZSF6heeWwIDQgaP0varUdSK1pzjeJZRjM8,9
|
137
|
+
sqlframe-3.38.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|