dycw-utilities 0.136.5__py3-none-any.whl → 0.136.6__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.136.5
3
+ Version: 0.136.6
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=YnEnDHzwZotFIueP2TiR3whPRliR8W86Na6TxjOkcfQ,60
1
+ utilities/__init__.py,sha256=AkTwc_IslcficXaKXyPr9mQYVL_PcizHlUpq1xo5QTc,60
2
2
  utilities/aiolimiter.py,sha256=mD0wEiqMgwpty4XTbawFpnkkmJS6R4JRsVXFUaoitSU,628
3
3
  utilities/altair.py,sha256=HeZBVUocjkrTNwwKrClppsIqgNFF-ykv05HfZSoHYno,9104
4
4
  utilities/asyncio.py,sha256=dcGeKQzjLBXxKzZkVIk5oZsFXEcynVbRB9iNB5XEDZk,38526
@@ -29,7 +29,7 @@ utilities/inflect.py,sha256=DbqB5Q9FbRGJ1NbvEiZBirRMxCxgrz91zy5jCO9ZIs0,347
29
29
  utilities/ipython.py,sha256=V2oMYHvEKvlNBzxDXdLvKi48oUq2SclRg5xasjaXStw,763
30
30
  utilities/iterables.py,sha256=wlcm0PS2fKG-H0r0k367NOLrryMbfXLlwzUeAmBSvv8,43392
31
31
  utilities/jupyter.py,sha256=ft5JA7fBxXKzP-L9W8f2-wbF0QeYc_2uLQNFDVk4Z-M,2917
32
- utilities/libcst.py,sha256=_yG3TWvgx8Z34S2oxI-b4iSJxZQcnWwqL-23sIGu8X4,4974
32
+ utilities/libcst.py,sha256=XTT8cCYAYfI9ZIdxjiTCqbF45cN-viDNDa7GE5mR2T4,5615
33
33
  utilities/lightweight_charts.py,sha256=JrkrAZMo6JID2Eoc9QCc05Y_pK4l2zsApIhmii1z2Ig,2764
34
34
  utilities/logging.py,sha256=j0xS7bNdZcMAobWSRahpg_d7GWewd_99oXvexrjWm6k,17841
35
35
  utilities/luigi.py,sha256=wK7cB3y8NXeSa8d6r_yTKRmjMguNmIPmy52yg10vPaI,4774
@@ -88,7 +88,7 @@ utilities/warnings.py,sha256=un1LvHv70PU-LLv8RxPVmugTzDJkkGXRMZTE2-fTQHw,1771
88
88
  utilities/whenever.py,sha256=A-yoOqBqrcVD1yDINDsTFDw7dq9-zgUGn_f8CxVUQJs,23332
89
89
  utilities/zipfile.py,sha256=24lQc9ATcJxHXBPc_tBDiJk48pWyRrlxO2fIsFxU0A8,699
90
90
  utilities/zoneinfo.py,sha256=oEH-nL3t4h9uawyZqWDtNtDAl6M-CLpLYGI_nI6DulM,1971
91
- dycw_utilities-0.136.5.dist-info/METADATA,sha256=IzGxc0DUvPm2PhmY1Ful44RBfat_JFpa8acA-KKoHXc,1637
92
- dycw_utilities-0.136.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
93
- dycw_utilities-0.136.5.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
94
- dycw_utilities-0.136.5.dist-info/RECORD,,
91
+ dycw_utilities-0.136.6.dist-info/METADATA,sha256=abfQoeh81tTgbJfqO9Sh2xjiQ-Vj3pAI_jR9eOHdnGw,1637
92
+ dycw_utilities-0.136.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
93
+ dycw_utilities-0.136.6.dist-info/licenses/LICENSE,sha256=gppZp16M6nSVpBbUBrNL6JuYfvKwZiKgV7XoKKsHzqo,1066
94
+ dycw_utilities-0.136.6.dist-info/RECORD,,
utilities/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.136.5"
3
+ __version__ = "0.136.6"
utilities/libcst.py CHANGED
@@ -43,10 +43,30 @@ def generate_import_from(
43
43
  module: str, name: str, /, *, asname: str | None = None
44
44
  ) -> ImportFrom:
45
45
  """Generate an `ImportFrom` object."""
46
- alias = ImportAlias(
47
- name=Name(name), asname=AsName(Name(asname)) if asname else None
48
- )
49
- return ImportFrom(module=split_dotted_str(module), names=[alias])
46
+ match name, asname:
47
+ case "*", None:
48
+ names = ImportStar()
49
+ case "*", str():
50
+ raise GenerateImportFromError(module=module, asname=asname)
51
+ case _, None:
52
+ alias = ImportAlias(name=Name(name))
53
+ names = [alias]
54
+ case _, str():
55
+ alias = ImportAlias(name=Name(name), asname=AsName(Name(asname)))
56
+ names = [alias]
57
+ case _ as never:
58
+ assert_never(never)
59
+ return ImportFrom(module=split_dotted_str(module), names=names)
60
+
61
+
62
+ @dataclass(kw_only=True, slots=True)
63
+ class GenerateImportFromError(Exception):
64
+ module: str
65
+ asname: str | None = None
66
+
67
+ @override
68
+ def __str__(self) -> str:
69
+ return f"Invalid import: 'from {self.module} import * as {self.asname}'"
50
70
 
51
71
 
52
72
  ##
@@ -168,6 +188,7 @@ def render_module(source: str | Module, /) -> str:
168
188
 
169
189
 
170
190
  __all__ = [
191
+ "GenerateImportFromError",
171
192
  "ParseImportError",
172
193
  "generate_f_string",
173
194
  "generate_import",