Skip to content

Commit 6bd2b80

Browse files
author
SunDoge
committed
fix type inference
1 parent 2f54a88 commit 6bd2b80

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

examples/prog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
@ta.argument_parser(
66
description='Process some integers.'
77
)
8-
class Args:
8+
class Args(ta.TypedArgs):
99
integers: List[int] = ta.add_argument(
1010
metavar='N', type=int, nargs='+',
1111
help='an integer for the accumulator'

typed_args/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
raise e
99

1010

11-
from ._core import parse_args, parse_known_args, argument_parser
11+
from ._core import parse_args, parse_known_args, argument_parser, TypedArgs
1212
from ._parser import add_argument, add_argument_group, add_parser, add_subparsers
1313
from ._utils import SubcommandEnum, DefaultHelpFormatter
1414
from argparse import SUPPRESS, OPTIONAL, ZERO_OR_MORE, ONE_OR_MORE, REMAINDER
@@ -17,7 +17,7 @@
1717

1818
__all__ = [
1919
'dataclass',
20-
'parse_args', 'parse_known_args', 'argument_parser',
20+
'parse_args', 'parse_known_args', 'argument_parser', 'TypedArgs',
2121
'add_argument', 'add_argument_group', 'add_parser', 'add_subparsers',
2222
'SubcommandEnum', 'DefaultHelpFormatter',
2323
'SUPPRESS', 'OPTIONAL', 'ZERO_OR_MORE', 'ONE_OR_MORE', 'REMAINDER',

typed_args/_core.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
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
33
import dataclasses
44
import logging
55

@@ -42,14 +42,13 @@ def parse_known_args(
4242
return opts, unknown
4343

4444

45-
class _Parsable(Generic[T]):
46-
45+
class TypedArgs:
4746
@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:
4948
pass
5049

5150
@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]]:
5352
pass
5453

5554

@@ -68,12 +67,12 @@ def argument_parser(
6867
add_help: bool = True,
6968
allow_abbrev: bool = True,
7069
exit_on_error: bool = True,
71-
) -> Callable[[Type[T]], _Parsable[T]]: ...
70+
) -> Callable[[T], T]: ...
7271

7372

7473
def argument_parser(**kwargs):
7574

76-
def f(klass: Type[T]) -> _Parsable[T]:
75+
def f(klass):
7776
def _make_parser():
7877
return argparse.ArgumentParser(**kwargs)
7978

0 commit comments

Comments
 (0)