dycw-utilities 0.126.1__py3-none-any.whl → 0.126.3__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.126.1
3
+ Version: 0.126.3
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -174,7 +174,7 @@ Requires-Dist: scipy<1.16,>=1.15.3; extra == 'zzz-test-scipy'
174
174
  Provides-Extra: zzz-test-sentinel
175
175
  Provides-Extra: zzz-test-shelve
176
176
  Provides-Extra: zzz-test-slack-sdk
177
- Requires-Dist: aiohttp<3.12.5,>=3.12.4; extra == 'zzz-test-slack-sdk'
177
+ Requires-Dist: aiohttp<3.12.7,>=3.12.6; extra == 'zzz-test-slack-sdk'
178
178
  Requires-Dist: slack-sdk<3.36,>=3.35.0; extra == 'zzz-test-slack-sdk'
179
179
  Provides-Extra: zzz-test-socket
180
180
  Provides-Extra: zzz-test-sqlalchemy
@@ -1,4 +1,4 @@
1
- utilities/__init__.py,sha256=TT6o3xzkK8NoYPcxZuduhGNxPdVdo_d_IwKCNnlSSRU,60
1
+ utilities/__init__.py,sha256=w0rJI8UMlqCCFrDH0fSj-llE6ZInUj1nqYlMn7MiXbU,60
2
2
  utilities/altair.py,sha256=Gpja-flOo-Db0PIPJLJsgzAlXWoKUjPU1qY-DQ829ek,9156
3
3
  utilities/asyncio.py,sha256=K5Kj7rsM0nA17-b7d7mrNgPR1U_NbkfQmTruq5LBLRA,51778
4
4
  utilities/atomicwrites.py,sha256=geFjn9Pwn-tTrtoGjDDxWli9NqbYfy3gGL6ZBctiqSo,5393
@@ -13,7 +13,7 @@ utilities/cvxpy.py,sha256=Rv1-fD-XYerosCavRF8Pohop2DBkU3AlFaGTfD8AEAA,13776
13
13
  utilities/dataclasses.py,sha256=iiC1wpGXWhaocIikzwBt8bbLWyImoUlOlcDZJGejaIg,33011
14
14
  utilities/datetime.py,sha256=uYoaOi_C1YtNXGfTN9xlTrW62Re2b1_4Skuv14_MeYQ,38985
15
15
  utilities/enum.py,sha256=HoRwVCWzsnH0vpO9ZEcAAIZLMv0Sn2vJxxA4sYMQgDs,5793
16
- utilities/errors.py,sha256=wg6Jrgz5T_KbmG_PXF6pbDFSFso9CG93RGz1Om6Q0Lk,848
16
+ utilities/errors.py,sha256=nC7ZYtxxDBMfrTHtT_MByBfup_wfGQFRo3eDt-0ZPe8,1045
17
17
  utilities/eventkit.py,sha256=6M5Xu1SzN-juk9PqBHwy5dS-ta7T0qA6SMpDsakOJ0E,13039
18
18
  utilities/fastapi.py,sha256=LG1-Q8RDi7wsyVN6v74qptPYX8WGXPkFOQFniMvtzjc,2439
19
19
  utilities/fpdf2.py,sha256=y1NGXR5chWqLXWpewGV3hlRGMr_5yV1lVRkPBhPEgJI,1843
@@ -50,7 +50,7 @@ utilities/platform.py,sha256=48IOKx1IC6ZJXWG-b56ZQptITcNFhWRjELW72o2dGTA,2398
50
50
  utilities/polars.py,sha256=QlmUpYTqHNkcLnWOQh1TW22W2QyLzvifCvBcbsqhpdE,63272
51
51
  utilities/polars_ols.py,sha256=Uc9V5kvlWZ5cU93lKZ-cfAKdVFFw81tqwLW9PxtUvMs,5618
52
52
  utilities/pqdm.py,sha256=foRytQybmOQ05pjt5LF7ANyzrIa--4ScDE3T2wd31a4,3118
53
- utilities/psutil.py,sha256=0dXHKW7t9J3uzY3YtHGiRiZVRWr0uozccioZRCVFQfk,3761
53
+ utilities/psutil.py,sha256=RtbLKOoIJhqrJmEoHDBVeSD-KPzshtS0FtRXBP9_w2s,3751
54
54
  utilities/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  utilities/pydantic.py,sha256=f6qtR5mO2YMuyvNmbaEj5YeD9eGA4YYfb7Bjzh9jUs0,1845
56
56
  utilities/pyinstrument.py,sha256=OJFDh4o1CWIa4aYPYURdQjgap_nvP45KUsCEe94rQHY,829
@@ -90,7 +90,7 @@ utilities/warnings.py,sha256=un1LvHv70PU-LLv8RxPVmugTzDJkkGXRMZTE2-fTQHw,1771
90
90
  utilities/whenever.py,sha256=jS31ZAY5OMxFxLja_Yo5Fidi87Pd-GoVZ7Vi_teqVDA,16743
91
91
  utilities/zipfile.py,sha256=24lQc9ATcJxHXBPc_tBDiJk48pWyRrlxO2fIsFxU0A8,699
92
92
  utilities/zoneinfo.py,sha256=-5j7IQ9nb7gR43rdgA7ms05im-XuqhAk9EJnQBXxCoQ,1874
93
- dycw_utilities-0.126.1.dist-info/METADATA,sha256=XD69sQBvzpD1LR-Y8pPGquwlIpxrOwiLsaYxgKdqulA,12851
94
- dycw_utilities-0.126.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
95
- dycw_utilities-0.126.1.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
96
- dycw_utilities-0.126.1.dist-info/RECORD,,
93
+ dycw_utilities-0.126.3.dist-info/METADATA,sha256=vfNZgybbr7AVpGzaAncf74C5hz-G82zaNprRDvcEnW8,12851
94
+ dycw_utilities-0.126.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
95
+ dycw_utilities-0.126.3.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
96
+ dycw_utilities-0.126.3.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.126.1"
3
+ __version__ = "0.126.3"
utilities/errors.py CHANGED
@@ -24,6 +24,10 @@ class ImpossibleCaseError(Exception):
24
24
  def repr_error(error: MaybeType[BaseException], /) -> str:
25
25
  """Get a string representation of an error."""
26
26
  match error:
27
+ case ExceptionGroup() as group:
28
+ descs = list(map(repr_error, group.exceptions))
29
+ joined = ", ".join(descs)
30
+ return f"{group.__class__.__name__}({joined})"
27
31
  case BaseException() as error_obj:
28
32
  return f"{error_obj.__class__.__name__}({error_obj})"
29
33
  case type() as error_cls:
utilities/psutil.py CHANGED
@@ -31,7 +31,6 @@ class MemoryMonitorService(Looper[None]):
31
31
  console: str | None = field(default=None, repr=False)
32
32
  path: PathLike = "memory.txt"
33
33
  _console: Logger | None = field(init=False, repr=False)
34
- _max_age: int | None = field(default=None, init=False, repr=False)
35
34
  _path: Path = field(init=False, repr=False)
36
35
 
37
36
  @override
@@ -40,6 +39,7 @@ class MemoryMonitorService(Looper[None]):
40
39
  if self.console is not None:
41
40
  self._console = getLogger(self.console)
42
41
  self._path = Path(self.path)
42
+ self._path.parent.mkdir(parents=True, exist_ok=True)
43
43
 
44
44
  @override
45
45
  async def core(self) -> None: