dycw-utilities 0.149.1__py3-none-any.whl → 0.149.2__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.149.1
3
+ Version: 0.149.2
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -1,10 +1,10 @@
1
- utilities/__init__.py,sha256=JP1_vDjx7triKVpffufyRF4tTLDTrHerAtlEopa1IYA,60
1
+ utilities/__init__.py,sha256=H4_Q2BKrZajf_bk-k0Cucn-DVrh9y1yhmsey0h5gW-Y,60
2
2
  utilities/altair.py,sha256=92E2lCdyHY4Zb-vCw6rEJIsWdKipuu-Tu2ab1ufUfAk,9079
3
3
  utilities/asyncio.py,sha256=z0w3fb-U5Ml5YXVaFFPClizXaQmjDO6YgZg-V9QL0VQ,16021
4
4
  utilities/atomicwrites.py,sha256=xcOWenTBRS0oat3kg7Sqe51AohNThMQ2ixPL7QCG8hw,5795
5
5
  utilities/atools.py,sha256=9im2g8OCf-Iynqa8bAv8N0Ycj9QvrJmGO7yLCZEdgII,986
6
6
  utilities/cachetools.py,sha256=v1-9sXHLdOLiwmkq6NB0OUbxeKBuVVN6wmAWefWoaHI,2744
7
- utilities/click.py,sha256=AyM__WPPvsIFaZZ5wyVrYvWCdK-mTH1nmlcX0sHDTz8,16668
7
+ utilities/click.py,sha256=4godcta2Ozm-s3VvIXeNgoBlK2NIz_Q0XfAq64vAfZY,17369
8
8
  utilities/concurrent.py,sha256=ZdhcNeBl1-HaAPY3h7bZ5ccuYdfdq2ATHplvZdnzlhk,2858
9
9
  utilities/contextlib.py,sha256=THWVU14w3kgVM7TSxn2oHqVdBbdeliABR9gRXiPpo2U,7440
10
10
  utilities/contextvars.py,sha256=RsSGGrbQqqZ67rOydnM7WWIsM2lIE31UHJLejnHJPWY,505
@@ -74,7 +74,7 @@ utilities/text.py,sha256=ymBFlP_cA8OgNnZRVNs7FAh7OG8HxE6YkiLEMZv5g_A,11297
74
74
  utilities/threading.py,sha256=GvBOp4CyhHfN90wGXZuA2VKe9fGzMaEa7oCl4f3nnPU,1009
75
75
  utilities/timer.py,sha256=oXfTii6ymu57niP0BDGZjFD55LEHi2a19kqZKiTgaFQ,2588
76
76
  utilities/traceback.py,sha256=zofhzIedpUHrzDNiRJDVzm_wuu_tlTQvVqK4quxVlgM,9151
77
- utilities/typed_settings.py,sha256=-mzQP5ZCIGWOhm7nPxlajWQhgtX657HVnRCfUYGKQKs,4433
77
+ utilities/typed_settings.py,sha256=98OQQsXyfjxbGPjWqG45P_DoNgrzS4gZ7062oD2lgtE,4481
78
78
  utilities/types.py,sha256=iDfk_Z96v7cIxPlgGYMap0fYmjgRUJ7uQzPPCQe1odY,18115
79
79
  utilities/typing.py,sha256=Z-_XDaWyT_6wIo3qfNK-hvRlzxP2Jxa9PgXzm5rDYRA,13790
80
80
  utilities/tzdata.py,sha256=fgNVj66yUbCSI_-vrRVzSD3gtf-L_8IEJEPjP_Jel5Y,266
@@ -88,8 +88,8 @@ utilities/zoneinfo.py,sha256=oEH-nL3t4h9uawyZqWDtNtDAl6M-CLpLYGI_nI6DulM,1971
88
88
  utilities/pytest_plugins/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
89
89
  utilities/pytest_plugins/pytest_randomly.py,sha256=NXzCcGKbpgYouz5yehKb4jmxmi2SexKKpgF4M65bi10,414
90
90
  utilities/pytest_plugins/pytest_regressions.py,sha256=Iwhfv_OJH7UCPZCfoh7ugZ2Xjqjil-BBBsOb8sDwiGI,1471
91
- dycw_utilities-0.149.1.dist-info/METADATA,sha256=4gXdqC0JM7T2UI9VWjQkJxq3-eqcaDG3SAEGsoRO01c,1697
92
- dycw_utilities-0.149.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
93
- dycw_utilities-0.149.1.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
94
- dycw_utilities-0.149.1.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
95
- dycw_utilities-0.149.1.dist-info/RECORD,,
91
+ dycw_utilities-0.149.2.dist-info/METADATA,sha256=hmwpFOQnK6Lfw3KEzMnDsAY3Ip9xlmq0touVZaJXGlU,1697
92
+ dycw_utilities-0.149.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
93
+ dycw_utilities-0.149.2.dist-info/entry_points.txt,sha256=BOD_SoDxwsfJYOLxhrSXhHP_T7iw-HXI9f2WVkzYxvQ,135
94
+ dycw_utilities-0.149.2.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
95
+ dycw_utilities-0.149.2.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.149.1"
3
+ __version__ = "0.149.2"
utilities/click.py CHANGED
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  import enum
4
4
  import ipaddress
5
5
  import pathlib
6
+ import uuid
6
7
  from typing import TYPE_CHECKING, TypedDict, assert_never, override
7
8
 
8
9
  import click
@@ -329,6 +330,32 @@ class TimeDelta(ParamType):
329
330
  assert_never(never)
330
331
 
331
332
 
333
+ class UUID(ParamType):
334
+ """A UUID-valued parameter."""
335
+
336
+ name = "uuid"
337
+
338
+ @override
339
+ def __repr__(self) -> str:
340
+ return self.name.upper()
341
+
342
+ @override
343
+ def convert(
344
+ self, value: uuid.UUID | str, param: Parameter | None, ctx: Context | None
345
+ ) -> uuid.UUID:
346
+ """Convert a value into the `UUID` type."""
347
+ match value:
348
+ case uuid.UUID():
349
+ return value
350
+ case str():
351
+ try:
352
+ return uuid.UUID(value)
353
+ except ValueError as error:
354
+ self.fail(str(error), param, ctx)
355
+ case _ as never:
356
+ assert_never(never)
357
+
358
+
332
359
  class YearMonth(ParamType):
333
360
  """A year-month parameter."""
334
361
 
@@ -561,6 +588,7 @@ def _make_metavar(param: Parameter, desc: str, /) -> str:
561
588
 
562
589
  __all__ = [
563
590
  "CONTEXT_SETTINGS_HELP_OPTION_NAMES",
591
+ "UUID",
564
592
  "Date",
565
593
  "DateDelta",
566
594
  "DateTimeDelta",
@@ -7,6 +7,7 @@ from os import environ
7
7
  from pathlib import Path
8
8
  from re import search
9
9
  from typing import TYPE_CHECKING, Any, assert_never, override
10
+ from uuid import UUID
10
11
 
11
12
  import typed_settings
12
13
  from typed_settings import EnvLoader, FileLoader, find
@@ -62,6 +63,7 @@ class ExtendedTSConverter(TSConverter):
62
63
  (PlainDateTime, PlainDateTime.parse_common_iso),
63
64
  (Time, Time.parse_common_iso),
64
65
  (TimeDelta, TimeDelta.parse_common_iso),
66
+ (UUID, UUID),
65
67
  (YearMonth, YearMonth.parse_common_iso),
66
68
  (ZonedDateTime, ZonedDateTime.parse_common_iso),
67
69
  ]