dycw-utilities 0.159.8__py3-none-any.whl → 0.160.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.159.8
3
+ Version: 0.160.0
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -1,4 +1,4 @@
1
- utilities/__init__.py,sha256=ZNV6cnMhMqb35heJ2XDn7MrYezCm7WhHn0JLWgxfK3c,60
1
+ utilities/__init__.py,sha256=KzM9quB3tnVvjnkbcK8xcoFUxydORZMj9PxkQWDPRDo,60
2
2
  utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
3
3
  utilities/asyncio.py,sha256=PUedzQ5deqlSECQ33sam9cRzI9TnygHz3FdOqWJWPTM,15288
4
4
  utilities/atomicwrites.py,sha256=tPo6r-Rypd9u99u66B9z86YBPpnLrlHtwox_8Z7T34Y,5790
@@ -45,7 +45,7 @@ utilities/parse.py,sha256=JcJn5yXKhIWXBCwgBdPsyu7Hvcuw6kyEdqvaebCaI9k,17951
45
45
  utilities/pathlib.py,sha256=qGuU8XPmdgGpy8tOMUgelfXx3kxI8h9IaV3TI_06QGE,8428
46
46
  utilities/pickle.py,sha256=MBT2xZCsv0pH868IXLGKnlcqNx2IRVKYNpRcqiQQqxw,653
47
47
  utilities/platform.py,sha256=pTn7gw6N4T6LdKrf0virwarof_mze9WtoQlrGMzhGVI,2798
48
- utilities/polars.py,sha256=aDICWXSOP8F1P40kS3C7vIUY9RDVceOEdhDxYBWOv_8,80518
48
+ utilities/polars.py,sha256=z1A4Uqqbccu1rSYmymMq6Ku5mLxEFpRhPGgoQ41WLyA,79912
49
49
  utilities/polars_ols.py,sha256=Uc9V5kvlWZ5cU93lKZ-cfAKdVFFw81tqwLW9PxtUvMs,5618
50
50
  utilities/postgres.py,sha256=ynCTTaF-bVEOSW-KEAR-dlLh_hYjeVVjm__-4pEU8Zk,12269
51
51
  utilities/pottery.py,sha256=ggMN72Y7wx7Js8VN6eyNyodpm8TIYqZHGghkDPXIVWk,3949
@@ -87,8 +87,8 @@ utilities/zoneinfo.py,sha256=FBMcUQ4662Aq8SsuCL1OAhDQiyANmVjtb-C30DRrWoE,1966
87
87
  utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
88
88
  utilities/pytest_plugins/pytest_randomly.py,sha256=B1qYVlExGOxTywq2r1SMi5o7btHLk2PNdY_b1p98dkE,409
89
89
  utilities/pytest_plugins/pytest_regressions.py,sha256=9v8kAXDM2ycIXJBimoiF4EgrwbUvxTycFWJiGR_GHhM,1466
90
- dycw_utilities-0.159.8.dist-info/METADATA,sha256=m2wmC4GlUq04TCY6GANKluJqCEl9MLw8XruIEQhM8Ew,1643
91
- dycw_utilities-0.159.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
92
- dycw_utilities-0.159.8.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
93
- dycw_utilities-0.159.8.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
94
- dycw_utilities-0.159.8.dist-info/RECORD,,
90
+ dycw_utilities-0.160.0.dist-info/METADATA,sha256=uNm9eVdsStvpIIDOUkcqxeyAqHAdEDZTHTQ_4FJt8EQ,1643
91
+ dycw_utilities-0.160.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
92
+ dycw_utilities-0.160.0.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
93
+ dycw_utilities-0.160.0.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
94
+ dycw_utilities-0.160.0.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.159.8"
3
+ __version__ = "0.160.0"
utilities/polars.py CHANGED
@@ -1325,18 +1325,6 @@ class _FiniteEWMWeightsError(Exception):
1325
1325
  ##
1326
1326
 
1327
1327
 
1328
- @overload
1329
- def first_true_horizontal(column: Series, /) -> Series: ...
1330
- @overload
1331
- def first_true_horizontal(column1: Series, column2: Series, /) -> Series: ...
1332
- @overload
1333
- def first_true_horizontal(
1334
- column1: Series, column2: Series, column3: Series, /
1335
- ) -> Series: ...
1336
- @overload
1337
- def first_true_horizontal(
1338
- column1: Series, column2: Series, column3: Series, column4: Series, /
1339
- ) -> Series: ...
1340
1328
  @overload
1341
1329
  def first_true_horizontal(*columns: Series) -> Series: ...
1342
1330
  @overload
@@ -1931,27 +1919,17 @@ def nan_sum_agg(column: str | Expr, /, *, dtype: PolarsDataType | None = None) -
1931
1919
  ##
1932
1920
 
1933
1921
 
1934
- def nan_sum_cols(
1935
- column: str | Expr, *columns: str | Expr, dtype: PolarsDataType | None = None
1936
- ) -> Expr:
1922
+ @overload
1923
+ def nan_sum_horizonal(*columns: Series) -> Series: ...
1924
+ @overload
1925
+ def nan_sum_horizonal(*columns: IntoExprColumn) -> ExprOrSeries: ...
1926
+ def nan_sum_horizonal(*columns: IntoExprColumn) -> ExprOrSeries:
1937
1927
  """Nan sum across columns."""
1938
- all_columns = chain([column], columns)
1939
- all_exprs = (
1940
- col(column) if isinstance(column, str) else column for column in all_columns
1928
+ columns2 = ensure_expr_or_series_many(*columns)
1929
+ expr = when(any_horizontal(*(c.is_not_null() for c in columns2))).then(
1930
+ sum_horizontal(*columns2)
1941
1931
  )
1942
-
1943
- def func(x: Expr, y: Expr, /) -> Expr:
1944
- return (
1945
- when(x.is_not_null() & y.is_not_null())
1946
- .then(x + y)
1947
- .when(x.is_not_null() & y.is_null())
1948
- .then(x)
1949
- .when(x.is_null() & y.is_not_null())
1950
- .then(y)
1951
- .otherwise(lit(None, dtype=dtype))
1952
- )
1953
-
1954
- return reduce(func, all_exprs)
1932
+ return try_reify_expr(expr, *columns2)
1955
1933
 
1956
1934
 
1957
1935
  ##
@@ -2724,7 +2702,7 @@ __all__ = [
2724
2702
  "join_into_periods",
2725
2703
  "map_over_columns",
2726
2704
  "nan_sum_agg",
2727
- "nan_sum_cols",
2705
+ "nan_sum_horizonal",
2728
2706
  "normal",
2729
2707
  "number_of_decimals",
2730
2708
  "offset_datetime",