77from functools import wraps
88from types import MethodType
99from types import ModuleType as PythonModule
10- from typing import Any , Self , final , overload
10+ from typing import Any , Concatenate , Self , final , overload
1111
1212from injection import Module
1313from injection .loaders import ProfileLoader , PythonModuleLoader
1616
1717type AsyncEntrypoint [** P , T ] = Entrypoint [P , Coroutine [Any , Any , T ]]
1818type EntrypointDecorator [** P , T1 , T2 ] = Callable [[Callable [P , T1 ]], Callable [P , T2 ]]
19- type EntrypointSetupMethod [* Ts , ** P , T1 , T2 ] = Callable [
20- [Entrypoint [P , T1 ], * Ts ],
21- Entrypoint [P , T2 ],
19+ type EntrypointSetupMethod [** P , ** EPP , T1 , T2 ] = Callable [
20+ Concatenate [Entrypoint [EPP , T1 ], P ],
21+ Entrypoint [EPP , T2 ],
2222]
2323
2424
@@ -31,35 +31,35 @@ def decorator(wp: Callable[P, T]) -> Callable[P, T]:
3131
3232
3333@overload
34- def entrypointmaker [* Ts , ** P , T1 , T2 ](
35- wrapped : EntrypointSetupMethod [* Ts , P , T1 , T2 ],
34+ def entrypointmaker [** SMP , ** EPP , T1 , T2 ](
35+ wrapped : EntrypointSetupMethod [SMP , EPP , T1 , T2 ],
3636 / ,
3737 * ,
3838 profile_loader : ProfileLoader = ...,
39- ) -> EntrypointDecorator [P , T1 , T2 ]: ...
39+ ) -> EntrypointDecorator [EPP , T1 , T2 ]: ...
4040
4141
4242@overload
43- def entrypointmaker [* Ts , ** P , T1 , T2 ](
43+ def entrypointmaker [** SMP , ** EPP , T1 , T2 ](
4444 wrapped : None = ...,
4545 / ,
4646 * ,
4747 profile_loader : ProfileLoader = ...,
4848) -> Callable [
49- [EntrypointSetupMethod [* Ts , P , T1 , T2 ]],
50- EntrypointDecorator [P , T1 , T2 ],
49+ [EntrypointSetupMethod [SMP , EPP , T1 , T2 ]],
50+ EntrypointDecorator [EPP , T1 , T2 ],
5151]: ...
5252
5353
54- def entrypointmaker [* Ts , ** P , T1 , T2 ](
55- wrapped : EntrypointSetupMethod [* Ts , P , T1 , T2 ] | None = None ,
54+ def entrypointmaker [** SMP , ** EPP , T1 , T2 ](
55+ wrapped : EntrypointSetupMethod [SMP , EPP , T1 , T2 ] | None = None ,
5656 / ,
5757 * ,
5858 profile_loader : ProfileLoader | None = None ,
5959) -> Any :
6060 def decorator (
61- wp : EntrypointSetupMethod [* Ts , P , T1 , T2 ],
62- ) -> EntrypointDecorator [P , T1 , T2 ]:
61+ wp : EntrypointSetupMethod [SMP , EPP , T1 , T2 ],
62+ ) -> EntrypointDecorator [EPP , T1 , T2 ]:
6363 return Entrypoint ._make_decorator (wp , profile_loader )
6464
6565 return decorator (wrapped ) if wrapped else decorator
@@ -143,9 +143,9 @@ def __recreate[**_P, _T](
143143 return type (self )(function , self .profile_loader )
144144
145145 @classmethod
146- def _make_decorator [* Ts , _T ](
146+ def _make_decorator [** _P , _T ](
147147 cls ,
148- setup_method : EntrypointSetupMethod [* Ts , P , T , _T ],
148+ setup_method : EntrypointSetupMethod [_P , P , T , _T ],
149149 / ,
150150 profile_loader : ProfileLoader | None = None ,
151151 ) -> EntrypointDecorator [P , T , _T ]:
0 commit comments