1
1
import argparse
2
- from typing import Generic , List , Optional , Sequence , Tuple , Type , TypeVar , overload , Callable
2
+ from typing import List , Optional , Sequence , Tuple , Type , TypeVar , overload , Callable
3
3
import dataclasses
4
4
import logging
5
5
@@ -42,14 +42,13 @@ def parse_known_args(
42
42
return opts , unknown
43
43
44
44
45
- class _Parsable (Generic [T ]):
46
-
45
+ class TypedArgs :
47
46
@classmethod
48
- def parse_args (cls , args : Optional [Sequence [str ]] = None , namespace : Optional [argparse .Namespace ] = None ) -> T :
47
+ def parse_args (cls : Type [ T ] , args : Optional [Sequence [str ]] = None , namespace : Optional [argparse .Namespace ] = None ) -> T :
49
48
pass
50
49
51
50
@classmethod
52
- def parse_known_args (cls , args : Optional [Sequence [str ]] = None , namespace : Optional [argparse .Namespace ] = None ) -> Tuple [T , List [str ]]:
51
+ def parse_known_args (cls : Type [ T ] , args : Optional [Sequence [str ]] = None , namespace : Optional [argparse .Namespace ] = None ) -> Tuple [T , List [str ]]:
53
52
pass
54
53
55
54
@@ -68,12 +67,12 @@ def argument_parser(
68
67
add_help : bool = True ,
69
68
allow_abbrev : bool = True ,
70
69
exit_on_error : bool = True ,
71
- ) -> Callable [[Type [ T ]], _Parsable [ T ] ]: ...
70
+ ) -> Callable [[T ], T ]: ...
72
71
73
72
74
73
def argument_parser (** kwargs ):
75
74
76
- def f (klass : Type [ T ]) -> _Parsable [ T ] :
75
+ def f (klass ) :
77
76
def _make_parser ():
78
77
return argparse .ArgumentParser (** kwargs )
79
78
0 commit comments