dycw-utilities 0.162.6__py3-none-any.whl → 0.162.7__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.162.6
3
+ Version: 0.162.7
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=gjPlIBqtxGUVmb6pZvmbsEfu_kDvff1JWcZUUza19AQ,60
1
+ utilities/__init__.py,sha256=Dcz0z6bhNKqyHot7MCQfuWzE8TliQJMNyt--tNT0EAs,60
2
2
  utilities/aeventkit.py,sha256=ddoleSwW9zdc2tjX5Ge0pMKtYwV_JMxhHYOxnWX2AGM,12609
3
3
  utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
4
4
  utilities/asyncio.py,sha256=PUedzQ5deqlSECQ33sam9cRzI9TnygHz3FdOqWJWPTM,15288
@@ -39,7 +39,7 @@ utilities/more_itertools.py,sha256=syfIPhQF_WS-YiicdGe2h5F1G-Ld12Q2XsVduL2hA40,1
39
39
  utilities/numpy.py,sha256=Xn23sA2ZbVNqwUYEgNJD3XBYH6IbCri_WkHSNhg3NkY,26122
40
40
  utilities/operator.py,sha256=nhxn5q6CFNzUm1wpTwWPCu9JGCqVHSlaJf0o1-efoII,3616
41
41
  utilities/optuna.py,sha256=C-fhWYiXHVPo1l8QctYkFJ4DyhbSrGorzP1dJb_qvd8,1933
42
- utilities/orjson.py,sha256=QKodAoG0tFEJ8l6TUVFq7ZB9PSlKtRek8H5fOnIgMBc,41541
42
+ utilities/orjson.py,sha256=pOCsldgiuxTFQJQAxh6vzEZnkDGuOCx_Nn1t5ziNFhY,41970
43
43
  utilities/os.py,sha256=8TjFLVWlGhhEpzZ0X_vNAyhYntjeVL5WTwaQcdTaNVw,3934
44
44
  utilities/parse.py,sha256=JcJn5yXKhIWXBCwgBdPsyu7Hvcuw6kyEdqvaebCaI9k,17951
45
45
  utilities/pathlib.py,sha256=qGuU8XPmdgGpy8tOMUgelfXx3kxI8h9IaV3TI_06QGE,8428
@@ -88,8 +88,8 @@ utilities/zoneinfo.py,sha256=tdIScrTB2-B-LH0ukb1HUXKooLknOfJNwHk10MuMYvA,3619
88
88
  utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
89
89
  utilities/pytest_plugins/pytest_randomly.py,sha256=B1qYVlExGOxTywq2r1SMi5o7btHLk2PNdY_b1p98dkE,409
90
90
  utilities/pytest_plugins/pytest_regressions.py,sha256=9v8kAXDM2ycIXJBimoiF4EgrwbUvxTycFWJiGR_GHhM,1466
91
- dycw_utilities-0.162.6.dist-info/METADATA,sha256=zXFVqk-andgkMkvkEddzxk1O5hfu6j0oe-b5iEeRVAE,1696
92
- dycw_utilities-0.162.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
93
- dycw_utilities-0.162.6.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
94
- dycw_utilities-0.162.6.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
95
- dycw_utilities-0.162.6.dist-info/RECORD,,
91
+ dycw_utilities-0.162.7.dist-info/METADATA,sha256=SbAYx4H3pjMZFKDEgFhfeTghXPl6wnH3GNC6ILRaIN4,1696
92
+ dycw_utilities-0.162.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
93
+ dycw_utilities-0.162.7.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
94
+ dycw_utilities-0.162.7.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
95
+ dycw_utilities-0.162.7.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.162.6"
3
+ __version__ = "0.162.7"
utilities/orjson.py CHANGED
@@ -20,6 +20,7 @@ from orjson import (
20
20
  OPT_PASSTHROUGH_DATACLASS,
21
21
  OPT_PASSTHROUGH_DATETIME,
22
22
  OPT_SORT_KEYS,
23
+ JSONDecodeError,
23
24
  dumps,
24
25
  loads,
25
26
  )
@@ -371,8 +372,12 @@ def deserialize(
371
372
  redirects: Mapping[str, type[Any]] | None = None,
372
373
  ) -> Any:
373
374
  """Deserialize an object."""
375
+ try:
376
+ obj = loads(data)
377
+ except JSONDecodeError:
378
+ raise _DeserializeInvalidJSONError(data=data) from None
374
379
  return _object_hook(
375
- loads(data),
380
+ obj,
376
381
  data=data,
377
382
  dataclass_hook=dataclass_hook,
378
383
  objects=objects,
@@ -380,6 +385,11 @@ def deserialize(
380
385
  )
381
386
 
382
387
 
388
+ @dataclass(kw_only=True, slots=True)
389
+ class DeerializeError(Exception):
390
+ obj: Any
391
+
392
+
383
393
  (
384
394
  _DATE_PATTERN,
385
395
  _DATE_DELTA_PATTERN,
@@ -739,11 +749,19 @@ def _object_hook_get_object(
739
749
  @dataclass(kw_only=True, slots=True)
740
750
  class DeserializeError(Exception):
741
751
  data: bytes
742
- qualname: str
752
+
753
+
754
+ @dataclass(kw_only=True, slots=True)
755
+ class _DeserializeInvalidJSONError(DeserializeError):
756
+ @override
757
+ def __str__(self) -> str:
758
+ return f"Invalid JSON: {self.data!r}"
743
759
 
744
760
 
745
761
  @dataclass(kw_only=True, slots=True)
746
762
  class _DeserializeNoObjectsError(DeserializeError):
763
+ qualname: str
764
+
747
765
  @override
748
766
  def __str__(self) -> str:
749
767
  return f"Objects required to deserialize {self.qualname!r} from {self.data!r}"
@@ -751,6 +769,8 @@ class _DeserializeNoObjectsError(DeserializeError):
751
769
 
752
770
  @dataclass(kw_only=True, slots=True)
753
771
  class _DeserializeObjectNotFoundError(DeserializeError):
772
+ qualname: str
773
+
754
774
  @override
755
775
  def __str__(self) -> str:
756
776
  return (