dycw-utilities 0.109.25__py3-none-any.whl → 0.109.26__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.25.dist-info → dycw_utilities-0.109.26.dist-info}/METADATA +1 -1
- {dycw_utilities-0.109.25.dist-info → dycw_utilities-0.109.26.dist-info}/RECORD +6 -6
- utilities/__init__.py +1 -1
- utilities/text.py +24 -5
- {dycw_utilities-0.109.25.dist-info → dycw_utilities-0.109.26.dist-info}/WHEEL +0 -0
- {dycw_utilities-0.109.25.dist-info → dycw_utilities-0.109.26.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
utilities/__init__.py,sha256=
|
1
|
+
utilities/__init__.py,sha256=u3bOXUZkUtu44-KigskBo_7SPJ0LgayUw3iTPoGATOo,61
|
2
2
|
utilities/altair.py,sha256=Gpja-flOo-Db0PIPJLJsgzAlXWoKUjPU1qY-DQ829ek,9156
|
3
3
|
utilities/astor.py,sha256=xuDUkjq0-b6fhtwjhbnebzbqQZAjMSHR1IIS5uOodVg,777
|
4
4
|
utilities/asyncio.py,sha256=41oQUurWMvadFK5gFnaG21hMM0Vmfn2WS6OpC0R9mas,14757
|
@@ -73,7 +73,7 @@ utilities/streamlit.py,sha256=U9PJBaKP1IdSykKhPZhIzSPTZsmLsnwbEPZWzNhJPKk,2955
|
|
73
73
|
utilities/sys.py,sha256=h0Xr7Vj86wNalvwJVP1wj5Y0kD_VWm1vzuXZ_jw94mE,2743
|
74
74
|
utilities/tempfile.py,sha256=VqmZJAhTJ1OaVywFzk5eqROV8iJbW9XQ_QYAV0bpdRo,1384
|
75
75
|
utilities/tenacity.py,sha256=1PUvODiBVgeqIh7G5TRt5WWMSqjLYkEqP53itT97WQc,4914
|
76
|
-
utilities/text.py,sha256=
|
76
|
+
utilities/text.py,sha256=Ax_n-nY80_onWxag9M0PkmbaAqwyut9AEA9tEMd5lBs,6694
|
77
77
|
utilities/threading.py,sha256=GvBOp4CyhHfN90wGXZuA2VKe9fGzMaEa7oCl4f3nnPU,1009
|
78
78
|
utilities/timer.py,sha256=Rkc49KSpHuC8s7vUxGO9DU55U9I6yDKnchsQqrUCVBs,4075
|
79
79
|
utilities/traceback.py,sha256=KwHPLdEbdj0fFhXo8MBfxcvem8A-VXYDwFMNJ6f0cTM,27328
|
@@ -87,7 +87,7 @@ utilities/warnings.py,sha256=yUgjnmkCRf6QhdyAXzl7u0qQFejhQG3PrjoSwxpbHrs,1819
|
|
87
87
|
utilities/whenever.py,sha256=TjoTAJ1R27-rKXiXzdE4GzPidmYqm0W58XydDXp-QZM,17786
|
88
88
|
utilities/zipfile.py,sha256=24lQc9ATcJxHXBPc_tBDiJk48pWyRrlxO2fIsFxU0A8,699
|
89
89
|
utilities/zoneinfo.py,sha256=-DQz5a0Ikw9jfSZtL0BEQkXOMC9yGn_xiJYNCLMiqEc,1989
|
90
|
-
dycw_utilities-0.109.
|
91
|
-
dycw_utilities-0.109.
|
92
|
-
dycw_utilities-0.109.
|
93
|
-
dycw_utilities-0.109.
|
90
|
+
dycw_utilities-0.109.26.dist-info/METADATA,sha256=aJEgBNp03JxSJvRWENUjCb_0CqvmCZktjl1S-XNYfDQ,13005
|
91
|
+
dycw_utilities-0.109.26.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
92
|
+
dycw_utilities-0.109.26.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
|
93
|
+
dycw_utilities-0.109.26.dist-info/RECORD,,
|
utilities/__init__.py
CHANGED
utilities/text.py
CHANGED
@@ -122,22 +122,40 @@ def split_key_value_pairs(
|
|
122
122
|
mapping: bool = False,
|
123
123
|
) -> Sequence[tuple[str, str]] | StrStrMapping:
|
124
124
|
"""Split a string into key-value pairs."""
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
125
|
+
try:
|
126
|
+
pairs = [
|
127
|
+
split_str(text_i, separator=pair_separator, n=2)
|
128
|
+
for text_i in split_str(text, separator=list_separator)
|
129
|
+
]
|
130
|
+
except SplitStrError as error:
|
131
|
+
raise _SplitKeyValuePairsSplitError(text=text, inner=error.text) from None
|
129
132
|
if not mapping:
|
130
133
|
return pairs
|
131
134
|
try:
|
132
135
|
check_duplicates(k for k, _ in pairs)
|
133
136
|
except CheckDuplicatesError as error:
|
134
|
-
raise
|
137
|
+
raise _SplitKeyValuePairsDuplicateKeysError(
|
138
|
+
text=text, counts=error.counts
|
139
|
+
) from None
|
135
140
|
return dict(pairs)
|
136
141
|
|
137
142
|
|
138
143
|
@dataclass(kw_only=True, slots=True)
|
139
144
|
class SplitKeyValuePairsError(Exception):
|
140
145
|
text: str
|
146
|
+
|
147
|
+
|
148
|
+
@dataclass(kw_only=True, slots=True)
|
149
|
+
class _SplitKeyValuePairsSplitError(SplitKeyValuePairsError):
|
150
|
+
inner: str
|
151
|
+
|
152
|
+
@override
|
153
|
+
def __str__(self) -> str:
|
154
|
+
return f"Unable to split {self.text!r} into key-value pairs; got {self.inner!r}"
|
155
|
+
|
156
|
+
|
157
|
+
@dataclass(kw_only=True, slots=True)
|
158
|
+
class _SplitKeyValuePairsDuplicateKeysError(SplitKeyValuePairsError):
|
141
159
|
counts: Mapping[str, int]
|
142
160
|
|
143
161
|
@override
|
@@ -236,6 +254,7 @@ def strip_and_dedent(text: str, /, *, trailing: bool = False) -> str:
|
|
236
254
|
__all__ = [
|
237
255
|
"ParseBoolError",
|
238
256
|
"ParseNoneError",
|
257
|
+
"SplitKeyValuePairsError",
|
239
258
|
"SplitStrError",
|
240
259
|
"join_strs",
|
241
260
|
"parse_bool",
|
File without changes
|
File without changes
|