click-extended 1.0.4__py3-none-any.whl → 1.0.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.
@@ -3,6 +3,7 @@ Child validation node module for nodes that can
3
3
  act as both child and validation nodes.
4
4
  """
5
5
 
6
+ import asyncio
6
7
  from abc import ABC
7
8
  from functools import wraps
8
9
  from typing import TYPE_CHECKING, Any, Callable, ParamSpec, TypeVar
@@ -88,8 +89,20 @@ class ChildValidationNode(ChildNode, ValidationNode, ABC):
88
89
  instance = cls(name=name, process_args=args, process_kwargs=kwargs)
89
90
  Tree.queue_child_validation(instance)
90
91
 
92
+ if asyncio.iscoroutinefunction(func):
93
+
94
+ @wraps(func)
95
+ async def async_wrapper(
96
+ *call_args: P.args, **call_kwargs: P.kwargs
97
+ ) -> T:
98
+ """Async wrapper that preserves the original function."""
99
+ return await func(*call_args, **call_kwargs) # type: ignore
100
+
101
+ return async_wrapper # type: ignore
102
+
91
103
  @wraps(func)
92
104
  def wrapper(*call_args: P.args, **call_kwargs: P.kwargs) -> T:
105
+ """Wrapper that preserves the original function."""
93
106
  return func(*call_args, **call_kwargs)
94
107
 
95
108
  return wrapper
@@ -1,5 +1,6 @@
1
1
  """ValidationNode class for global validation logic."""
2
2
 
3
+ import asyncio
3
4
  from abc import ABC
4
5
  from functools import wraps
5
6
  from typing import TYPE_CHECKING, Any, Callable, ParamSpec, TypeVar
@@ -111,6 +112,18 @@ class ValidationNode(Node, ABC):
111
112
  instance = cls(name=name, process_args=args, process_kwargs=kwargs)
112
113
  Tree.queue_validation(instance)
113
114
 
115
+ if asyncio.iscoroutinefunction(func):
116
+
117
+ @wraps(func)
118
+ async def async_wrapper(
119
+ *call_args: P.args,
120
+ **call_kwargs: P.kwargs,
121
+ ) -> T:
122
+ """Async wrapper that preserves the original function."""
123
+ return await func(*call_args, **call_kwargs) # type: ignore
124
+
125
+ return async_wrapper # type: ignore
126
+
114
127
  @wraps(func)
115
128
  def wrapper(*call_args: P.args, **call_kwargs: P.kwargs) -> T:
116
129
  """Wrapper that preserves the original function."""
@@ -92,14 +92,14 @@ def get_context() -> Context:
92
92
  parent = parent_node
93
93
 
94
94
  return Context(
95
- root=cast(RootNode, root_node),
96
- current=cast(Node | None, current),
97
- parent=cast(ParentNode | Tag | None, parent),
95
+ root=cast("RootNode", root_node),
96
+ current=cast("Node | None", current),
97
+ parent=cast("ParentNode | Tag | None", parent),
98
98
  click_context=click_context,
99
- nodes=cast(dict[str, Node], all_nodes),
100
- parents=cast(dict[str, ParentNode], parents),
101
- tags=cast(dict[str, Tag], tags),
102
- children=cast(dict[str, ChildNode], children),
99
+ nodes=cast("dict[str, Node]", all_nodes),
100
+ parents=cast("dict[str, ParentNode]", parents),
101
+ tags=cast("dict[str, Tag]", tags),
102
+ children=cast("dict[str, ChildNode]", children),
103
103
  data=meta.get("data", {}),
104
104
  debug=bool(meta.get("debug", False)),
105
105
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: click_extended
3
- Version: 1.0.4
3
+ Version: 1.0.6
4
4
  Summary: An extension to Click with additional features like automatic async support, aliasing and a modular decorator system.
5
5
  Author-email: Marcus Fredriksson <marcus@marcusfredriksson.com>
6
6
  License: MIT License
@@ -17,17 +17,17 @@ click_extended/core/nodes/__init__.py,sha256=jSsKTiHPUpqXdk54cRXDotT0YMmVGezIIb3
17
17
  click_extended/core/nodes/_root_node.py,sha256=PitK6GT7LPYugxPFdVO6blG0-mZV9S2apUupgWCsYI0,43060
18
18
  click_extended/core/nodes/argument_node.py,sha256=gqG4HTDR40Xru_U_beKsbjVtLtwmPKfwwAUmcf5-1iQ,5284
19
19
  click_extended/core/nodes/child_node.py,sha256=yIuXmUzdXN0EToR9ohBRvHFBriSZ-xaLkv7P27PbTrA,17095
20
- click_extended/core/nodes/child_validation_node.py,sha256=p4ODRpW-Q-aQB0zlbNAeLahFAcuAaMLPtZl4r0ywmk0,3301
20
+ click_extended/core/nodes/child_validation_node.py,sha256=Xcqid9EL3pHVrgv_43zz-ZL4W4yFm0Esj2qkk9qhWMc,3807
21
21
  click_extended/core/nodes/node.py,sha256=Q5OgaSNhz1dAIcYNDQOaAS2eCdu9XMMyDA5lXfZbY4E,1602
22
22
  click_extended/core/nodes/option_node.py,sha256=fCYrnW846mz1aDyf9sTQAnuIYUGd5g6XyUN6aBMIWgE,7055
23
23
  click_extended/core/nodes/parent_node.py,sha256=x526r7XjfsUypsB1N-5aXjEbP2d06eLF30G6IszxV3w,7352
24
- click_extended/core/nodes/validation_node.py,sha256=9X_dBbr1BB-OYRxnGsM8CoKRbKT1MuQ29Injtf_Iu_E,4020
24
+ click_extended/core/nodes/validation_node.py,sha256=TwpbzEeZNd8Ju-EeoTsT5Ghd6opDJRT2YHuOnBkegDg,4479
25
25
  click_extended/core/other/__init__.py,sha256=ZYPlENo4widfcRWcg4yojmkNf_E89Y7U_8hRFCTOZoY,236
26
26
  click_extended/core/other/_click_command.py,sha256=NR7e-GyKiqyVJC8X5NjRXz5ehsYl9axVIxZCSejzUg4,1738
27
27
  click_extended/core/other/_click_group.py,sha256=BoEQoyx13n27Qy1-h_Dkaie68MlyPClIVB8cNtfPGdY,7714
28
28
  click_extended/core/other/_tree.py,sha256=IFSA3aQ-1tHjdjLO392-RLzQrpxO9b4JsyXvjdoJZ6k,16404
29
29
  click_extended/core/other/context.py,sha256=KrXfDGoVV_xuIv6fFskF0hHtWDyRDETWoSXw24GxYs8,14619
30
- click_extended/core/other/get_context.py,sha256=FtoyCJmSRAVdqJZTTYFnfWinF6phv3u3z5yA97WgpGA,3255
30
+ click_extended/core/other/get_context.py,sha256=wFPufh9Y8TUQlfTSjgETQ8Zof7UDN_A1eoDH3A19l5Y,3269
31
31
  click_extended/decorators/__init__.py,sha256=BzOreglycbxGITsWLSB3VkN8e37F-ADYlGOWoO1aO7A,1142
32
32
  click_extended/decorators/check/__init__.py,sha256=WKwRFBWFQHxA69DcHgO23fBZfLRzM8N9uUlkrl7UCS4,2180
33
33
  click_extended/decorators/check/conflicts.py,sha256=qnu4k9uAWWFkzuOUXWtDS6M8VlIjzfEAH3m4qLUdwH8,4557
@@ -143,9 +143,9 @@ click_extended/utils/naming.py,sha256=kNmzOqidgZZ1dE5aMYrxpWt4VwcLuEiFunpumpfHuZ
143
143
  click_extended/utils/process.py,sha256=sU3ZCMjBgjKcDnTRLKPdQ_TAjk0AT7Q8SatagD0JyHA,9729
144
144
  click_extended/utils/selection.py,sha256=_OQC88pGPUh29boxmS5ugXEi9jZGqAG180S27PeQaj0,9875
145
145
  click_extended/utils/time.py,sha256=H5m5caIEau_1GHkiYgKL_LcTtVdw2TkFVbkqJu7A9rQ,1067
146
- click_extended-1.0.4.dist-info/licenses/AUTHORS.md,sha256=NkShPinjqtnRDQVRyVnfJuOGM56sejauE3WRoYCcbtw,132
147
- click_extended-1.0.4.dist-info/licenses/LICENSE,sha256=gjO8hzM4mFSBXFikktaXVSgmXGcre91_GPJ-E_yP56E,1075
148
- click_extended-1.0.4.dist-info/METADATA,sha256=T9OnyBvzTlf1Eyo2y635O8x0oYjvx77TwJ2JbSK3dX8,10841
149
- click_extended-1.0.4.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
150
- click_extended-1.0.4.dist-info/top_level.txt,sha256=2G3bm6tCNv80okRm773jKTk-_z1ElY-seaozZrn_TxA,15
151
- click_extended-1.0.4.dist-info/RECORD,,
146
+ click_extended-1.0.6.dist-info/licenses/AUTHORS.md,sha256=NkShPinjqtnRDQVRyVnfJuOGM56sejauE3WRoYCcbtw,132
147
+ click_extended-1.0.6.dist-info/licenses/LICENSE,sha256=gjO8hzM4mFSBXFikktaXVSgmXGcre91_GPJ-E_yP56E,1075
148
+ click_extended-1.0.6.dist-info/METADATA,sha256=e5g0yuAeIk_iB4JP-GqePD-OMwv2MgOQMSkkttGSNRY,10841
149
+ click_extended-1.0.6.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
150
+ click_extended-1.0.6.dist-info/top_level.txt,sha256=2G3bm6tCNv80okRm773jKTk-_z1ElY-seaozZrn_TxA,15
151
+ click_extended-1.0.6.dist-info/RECORD,,