dycw-utilities 0.150.15__py3-none-any.whl → 0.151.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.
- {dycw_utilities-0.150.15.dist-info → dycw_utilities-0.151.0.dist-info}/METADATA +1 -1
- {dycw_utilities-0.150.15.dist-info → dycw_utilities-0.151.0.dist-info}/RECORD +8 -8
- utilities/__init__.py +1 -1
- utilities/polars.py +22 -4
- utilities/sqlalchemy_polars.py +2 -2
- {dycw_utilities-0.150.15.dist-info → dycw_utilities-0.151.0.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.150.15.dist-info → dycw_utilities-0.151.0.dist-info}/entry_points.txt +0 -0
- {dycw_utilities-0.150.15.dist-info → dycw_utilities-0.151.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
utilities/__init__.py,sha256=
|
1
|
+
utilities/__init__.py,sha256=71XmySqRGuPBb5b0QQ5iiwm2oq_xL_zqjQqp5Yu5GX0,60
|
2
2
|
utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
|
3
3
|
utilities/asyncio.py,sha256=2m2a2C-Qgc6OHTTHL332-t66A7xDITt_SORT7a1DJWo,16792
|
4
4
|
utilities/atomicwrites.py,sha256=xcOWenTBRS0oat3kg7Sqe51AohNThMQ2ixPL7QCG8hw,5795
|
@@ -47,7 +47,7 @@ utilities/pathlib.py,sha256=FnteXeVeMOSc6QTN7oF6UrobjOX9gXv_5tG1slg83W8,8496
|
|
47
47
|
utilities/period.py,sha256=hsHdAKAstfMzB2Ar5EbxjkbMff3CA-B5wtYNVZOXVXI,10127
|
48
48
|
utilities/pickle.py,sha256=MBT2xZCsv0pH868IXLGKnlcqNx2IRVKYNpRcqiQQqxw,653
|
49
49
|
utilities/platform.py,sha256=Ue9LSxYvg9yUXGKuz5aZoy_qkUEXde-v6B09exgSctU,2813
|
50
|
-
utilities/polars.py,sha256=
|
50
|
+
utilities/polars.py,sha256=wusyiQTHMxcPrRzsjWWt975rgcMQBRcaY4cJgkNUzw4,72501
|
51
51
|
utilities/polars_ols.py,sha256=Uc9V5kvlWZ5cU93lKZ-cfAKdVFFw81tqwLW9PxtUvMs,5618
|
52
52
|
utilities/postgres.py,sha256=48km6Mb6hRUb1-0FWg7FKEfrW75z8-7AY1jahtdu_KY,12406
|
53
53
|
utilities/pottery.py,sha256=u0uvyGgYyujxftEMlsv6ppYTKQoVVjHt5jnVxxYz9s4,6596
|
@@ -67,7 +67,7 @@ utilities/shelve.py,sha256=4OzjQI6kGuUbJciqf535rwnao-_IBv66gsT6tRGiUt0,759
|
|
67
67
|
utilities/slack_sdk.py,sha256=ppFBvKgfg5IRWiIoKPtpTyzBtBF4XmwEvU3I5wLJikM,2140
|
68
68
|
utilities/socket.py,sha256=K77vfREvzoVTrpYKo6MZakol0EYu2q1sWJnnZqL0So0,118
|
69
69
|
utilities/sqlalchemy.py,sha256=QbCFKefrkkqL23iDF5WdOKRfISMj6c-SyrI3rvBATE4,39641
|
70
|
-
utilities/sqlalchemy_polars.py,sha256=
|
70
|
+
utilities/sqlalchemy_polars.py,sha256=TqNLQz85ow3gMjf17T_3WKL0MWYgSi0sXOgMYMxdNSU,14249
|
71
71
|
utilities/statsmodels.py,sha256=koyiBHvpMcSiBfh99wFUfSggLNx7cuAw3rwyfAhoKpQ,3410
|
72
72
|
utilities/string.py,sha256=MB0X6UPTUc06JdAdj-PctZ238IXeCjE5dAJibNw6ZrU,587
|
73
73
|
utilities/tempfile.py,sha256=HxB2BF28CcecDJLQ3Bx2Ej-Pb6RJc6W9ngSpB9CnP4k,2018
|
@@ -89,8 +89,8 @@ utilities/zoneinfo.py,sha256=oEH-nL3t4h9uawyZqWDtNtDAl6M-CLpLYGI_nI6DulM,1971
|
|
89
89
|
utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
90
90
|
utilities/pytest_plugins/pytest_randomly.py,sha256=NXzCcGKbpgYouz5yehKb4jmxmi2SexKKpgF4M65bi10,414
|
91
91
|
utilities/pytest_plugins/pytest_regressions.py,sha256=Iwhfv_OJH7UCPZCfoh7ugZ2Xjqjil-BBBsOb8sDwiGI,1471
|
92
|
-
dycw_utilities-0.
|
93
|
-
dycw_utilities-0.
|
94
|
-
dycw_utilities-0.
|
95
|
-
dycw_utilities-0.
|
96
|
-
dycw_utilities-0.
|
92
|
+
dycw_utilities-0.151.0.dist-info/METADATA,sha256=I4nTKjthEa7fGAT86M6MJEZ2a-yLC_9wAu9X6WQYrrE,1696
|
93
|
+
dycw_utilities-0.151.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
94
|
+
dycw_utilities-0.151.0.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
|
95
|
+
dycw_utilities-0.151.0.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
96
|
+
dycw_utilities-0.151.0.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/polars.py
CHANGED
@@ -1097,7 +1097,7 @@ def _dataclass_to_schema_datetime(
|
|
1097
1097
|
) -> PolarsDataType:
|
1098
1098
|
if field.value.tzinfo is None:
|
1099
1099
|
return Datetime
|
1100
|
-
return
|
1100
|
+
return zoned_datetime_dtype(time_zone=ensure_time_zone(field.value.tzinfo))
|
1101
1101
|
|
1102
1102
|
|
1103
1103
|
def _dataclass_to_schema_one(
|
@@ -2259,7 +2259,7 @@ def _struct_from_dataclass_one(
|
|
2259
2259
|
if ann is dt.datetime:
|
2260
2260
|
if time_zone is None:
|
2261
2261
|
raise _StructFromDataClassTimeZoneMissingError
|
2262
|
-
return
|
2262
|
+
return zoned_datetime_dtype(time_zone=time_zone)
|
2263
2263
|
if is_dataclass_class(ann):
|
2264
2264
|
return struct_from_dataclass(ann, time_zone=time_zone)
|
2265
2265
|
if (isinstance(ann, type) and issubclass(ann, enum.Enum)) or (
|
@@ -2388,13 +2388,30 @@ def week_num(column: IntoExprColumn, /, *, start: WeekDay = "mon") -> Expr | Ser
|
|
2388
2388
|
##
|
2389
2389
|
|
2390
2390
|
|
2391
|
-
def
|
2391
|
+
def zoned_datetime_dtype(
|
2392
2392
|
*, time_unit: TimeUnit = "us", time_zone: TimeZoneLike = UTC
|
2393
2393
|
) -> Datetime:
|
2394
2394
|
"""Create a zoned datetime data type."""
|
2395
2395
|
return Datetime(time_unit=time_unit, time_zone=get_time_zone_name(time_zone))
|
2396
2396
|
|
2397
2397
|
|
2398
|
+
def zoned_datetime_period_dtype(
|
2399
|
+
*,
|
2400
|
+
time_unit: TimeUnit = "us",
|
2401
|
+
time_zone: TimeZoneLike | tuple[TimeZoneLike, TimeZoneLike] = UTC,
|
2402
|
+
) -> Struct:
|
2403
|
+
"""Create a zoned datetime period data type."""
|
2404
|
+
match time_zone:
|
2405
|
+
case start, end:
|
2406
|
+
return struct_dtype(
|
2407
|
+
start=zoned_datetime_dtype(time_unit=time_unit, time_zone=start),
|
2408
|
+
end=zoned_datetime_dtype(time_unit=time_unit, time_zone=end),
|
2409
|
+
)
|
2410
|
+
case _:
|
2411
|
+
dtype = zoned_datetime_dtype(time_unit=time_unit, time_zone=time_zone)
|
2412
|
+
return struct_dtype(start=dtype, end=dtype)
|
2413
|
+
|
2414
|
+
|
2398
2415
|
__all__ = [
|
2399
2416
|
"BooleanValueCountsError",
|
2400
2417
|
"CheckPolarsDataFrameError",
|
@@ -2470,5 +2487,6 @@ __all__ = [
|
|
2470
2487
|
"unique_element",
|
2471
2488
|
"write_dataframe",
|
2472
2489
|
"write_series",
|
2473
|
-
"
|
2490
|
+
"zoned_datetime_dtype",
|
2491
|
+
"zoned_datetime_period_dtype",
|
2474
2492
|
]
|
utilities/sqlalchemy_polars.py
CHANGED
@@ -35,7 +35,7 @@ from utilities.iterables import (
|
|
35
35
|
chunked,
|
36
36
|
one,
|
37
37
|
)
|
38
|
-
from utilities.polars import
|
38
|
+
from utilities.polars import zoned_datetime_dtype
|
39
39
|
from utilities.reprlib import get_repr
|
40
40
|
from utilities.sqlalchemy import (
|
41
41
|
CHUNK_SIZE_FRAC,
|
@@ -390,7 +390,7 @@ def _select_to_dataframe_map_table_column_type_to_dtype(
|
|
390
390
|
return pl.Date
|
391
391
|
if is_subclass_gen(py_type, dt.datetime):
|
392
392
|
has_tz: bool = type_use.timezone
|
393
|
-
return
|
393
|
+
return zoned_datetime_dtype(time_zone=time_zone) if has_tz else Datetime()
|
394
394
|
if issubclass(py_type, dt.time):
|
395
395
|
return Time
|
396
396
|
if issubclass(py_type, dt.timedelta):
|
File without changes
|
File without changes
|
File without changes
|