dycw-utilities 0.109.2__py3-none-any.whl → 0.109.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.
- {dycw_utilities-0.109.2.dist-info → dycw_utilities-0.109.3.dist-info}/METADATA +1 -1
- {dycw_utilities-0.109.2.dist-info → dycw_utilities-0.109.3.dist-info}/RECORD +7 -7
- utilities/__init__.py +1 -1
- utilities/parse.py +15 -1
- utilities/typing.py +9 -0
- {dycw_utilities-0.109.2.dist-info → dycw_utilities-0.109.3.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.109.2.dist-info → dycw_utilities-0.109.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
utilities/__init__.py,sha256=
|
1
|
+
utilities/__init__.py,sha256=XHS4BHXBA86Rjy07zPtJwGLkB2QC4JUa0pQjTRZS2zE,60
|
2
2
|
utilities/altair.py,sha256=NSyDsm8QlkAGmsGdxVwCkHnPxt_35yJBa9Lg7bz9Ays,9054
|
3
3
|
utilities/astor.py,sha256=xuDUkjq0-b6fhtwjhbnebzbqQZAjMSHR1IIS5uOodVg,777
|
4
4
|
utilities/asyncio.py,sha256=41oQUurWMvadFK5gFnaG21hMM0Vmfn2WS6OpC0R9mas,14757
|
@@ -40,7 +40,7 @@ utilities/operator.py,sha256=0M2yZJ0PODH47ogFEnkGMBe_cfxwZR02T_92LZVZvHo,3715
|
|
40
40
|
utilities/optuna.py,sha256=loyJGWTzljgdJaoLhP09PT8Jz6o_pwBOwehY33lHkhw,1923
|
41
41
|
utilities/orjson.py,sha256=Wj5pzG_VdgoAy14a7Luhem-BgYrRtRFvvl_POiszRd0,36930
|
42
42
|
utilities/os.py,sha256=D_FyyT-6TtqiN9KSS7c9g1fnUtgxmyMtzAjmYLkk46A,3587
|
43
|
-
utilities/parse.py,sha256
|
43
|
+
utilities/parse.py,sha256=-rnx9qBKo9UZbE1HtvBwYOs4vF7YiJiciPAM6IKmfRc,5183
|
44
44
|
utilities/pathlib.py,sha256=31WPMXdLIyXgYOMMl_HOI2wlo66MGSE-cgeelk-Lias,1410
|
45
45
|
utilities/period.py,sha256=ikHXsWtDLr553cfH6p9mMaiCnIAP69B7q84ckWV3HaA,10884
|
46
46
|
utilities/pickle.py,sha256=Bhvd7cZl-zQKQDFjUerqGuSKlHvnW1K2QXeU5UZibtg,657
|
@@ -75,7 +75,7 @@ utilities/threading.py,sha256=GvBOp4CyhHfN90wGXZuA2VKe9fGzMaEa7oCl4f3nnPU,1009
|
|
75
75
|
utilities/timer.py,sha256=Rkc49KSpHuC8s7vUxGO9DU55U9I6yDKnchsQqrUCVBs,4075
|
76
76
|
utilities/traceback.py,sha256=KwHPLdEbdj0fFhXo8MBfxcvem8A-VXYDwFMNJ6f0cTM,27328
|
77
77
|
utilities/types.py,sha256=QK8kgH80TJdh_vktaZHrCEk7f1f8kHiDr8dJlK8aSac,17814
|
78
|
-
utilities/typing.py,sha256=
|
78
|
+
utilities/typing.py,sha256=gLg4EbE1FX52fJ1d3ji4i08qolwu9qgWt8w_w_Y5DTk,5512
|
79
79
|
utilities/tzdata.py,sha256=2ZsPmhTVM9Ptrxb4QrWKtKOB9RiH8IOO-A1u7ULdVbg,176
|
80
80
|
utilities/tzlocal.py,sha256=42BCquGF54oIqIKe5RGziP4K8Nbm3Ey7uqcNn6m5ge8,534
|
81
81
|
utilities/uuid.py,sha256=jJTFxz-CWgltqNuzmythB7iEQ-Q1mCwPevUfKthZT3c,611
|
@@ -84,7 +84,7 @@ utilities/warnings.py,sha256=yUgjnmkCRf6QhdyAXzl7u0qQFejhQG3PrjoSwxpbHrs,1819
|
|
84
84
|
utilities/whenever.py,sha256=5x2t47VJmJRWcd_NLFy54NkB3uom-XQYxEbLtEfL1bs,17775
|
85
85
|
utilities/zipfile.py,sha256=24lQc9ATcJxHXBPc_tBDiJk48pWyRrlxO2fIsFxU0A8,699
|
86
86
|
utilities/zoneinfo.py,sha256=-DQz5a0Ikw9jfSZtL0BEQkXOMC9yGn_xiJYNCLMiqEc,1989
|
87
|
-
dycw_utilities-0.109.
|
88
|
-
dycw_utilities-0.109.
|
89
|
-
dycw_utilities-0.109.
|
90
|
-
dycw_utilities-0.109.
|
87
|
+
dycw_utilities-0.109.3.dist-info/METADATA,sha256=TF66WIpVFJnaJA80lxa_GKBZKZUzfz8VWd95FQW8v4A,13004
|
88
|
+
dycw_utilities-0.109.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
89
|
+
dycw_utilities-0.109.3.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
90
|
+
dycw_utilities-0.109.3.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/parse.py
CHANGED
@@ -5,6 +5,7 @@ from contextlib import suppress
|
|
5
5
|
from dataclasses import dataclass
|
6
6
|
from enum import Enum
|
7
7
|
from pathlib import Path
|
8
|
+
from re import DOTALL
|
8
9
|
from types import NoneType
|
9
10
|
from typing import Any, override
|
10
11
|
|
@@ -12,9 +13,10 @@ from utilities.datetime import is_subclass_date_not_datetime
|
|
12
13
|
from utilities.enum import ParseEnumError, parse_enum
|
13
14
|
from utilities.functions import is_subclass_int_not_bool
|
14
15
|
from utilities.iterables import one, one_str
|
16
|
+
from utilities.re import ExtractGroupError, extract_group
|
15
17
|
from utilities.sentinel import ParseSentinelError, Sentinel, parse_sentinel
|
16
18
|
from utilities.text import ParseBoolError, ParseNoneError, parse_bool, parse_none
|
17
|
-
from utilities.typing import get_args, is_literal_type, is_optional_type
|
19
|
+
from utilities.typing import get_args, is_literal_type, is_optional_type, is_tuple_type
|
18
20
|
from utilities.version import ParseVersionError, Version, parse_version
|
19
21
|
|
20
22
|
|
@@ -42,6 +44,18 @@ def parse_text(
|
|
42
44
|
return _parse_text_type(inner, text, case_sensitive=case_sensitive)
|
43
45
|
except ParseTextError:
|
44
46
|
raise ParseTextError(obj=obj, text=text) from None
|
47
|
+
if is_tuple_type(obj):
|
48
|
+
args = get_args(obj)
|
49
|
+
try:
|
50
|
+
texts = extract_group(r"^\((.*)\)$", text, flags=DOTALL).split(", ")
|
51
|
+
except ExtractGroupError:
|
52
|
+
raise ParseTextError(obj=obj, text=text) from None
|
53
|
+
if len(args) != len(texts):
|
54
|
+
raise ParseTextError(obj=obj, text=text)
|
55
|
+
return tuple(
|
56
|
+
parse_text(arg, text, case_sensitive=case_sensitive, head=head)
|
57
|
+
for arg, text in zip(args, texts, strict=True)
|
58
|
+
)
|
45
59
|
raise ParseTextError(obj=obj, text=text) from None
|
46
60
|
|
47
61
|
|
utilities/typing.py
CHANGED
@@ -182,6 +182,14 @@ def is_set_type(obj: Any, /) -> bool:
|
|
182
182
|
##
|
183
183
|
|
184
184
|
|
185
|
+
def is_tuple_type(obj: Any, /) -> bool:
|
186
|
+
"""Check if an object is a tuple type annotation."""
|
187
|
+
return _is_annotation_of_type(obj, tuple)
|
188
|
+
|
189
|
+
|
190
|
+
##
|
191
|
+
|
192
|
+
|
185
193
|
def is_union_type(obj: Any, /) -> bool:
|
186
194
|
"""Check if an object is a union type annotation."""
|
187
195
|
is_old_union = _is_annotation_of_type(obj, Union) # pyright: ignore[reportDeprecated]
|
@@ -212,5 +220,6 @@ __all__ = [
|
|
212
220
|
"is_optional_type",
|
213
221
|
"is_sequence_type",
|
214
222
|
"is_set_type",
|
223
|
+
"is_tuple_type",
|
215
224
|
"is_union_type",
|
216
225
|
]
|
File without changes
|
File without changes
|