Skip to content

Commit b63e09c

Browse files
gvanrossumddfisher
authored andcommitted
Fix some issues for dateutil and argparse (#357)
* Fix stubs for 2.7/dateutil. They were pretty broken. (The 3/dateutil share some of the brokenness but that's still a TODO.) * Fix argparse stubs. - Container is not strong enough for choices. - add_subparsers() returns something with an add_parser() method.
1 parent 63cbe2d commit b63e09c

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

stdlib/2and3/argparse.pyi

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Stubs for argparse (Python 3.4)
22

33
from typing import (
4-
Any, Callable, Container, List, IO, Optional, Sequence, Tuple, Type, Union,
4+
Any, Callable, Iterable, List, IO, Optional, Sequence, Tuple, Type, Union,
55
TypeVar, overload
66
)
77
import sys
@@ -53,7 +53,7 @@ class ArgumentParser:
5353
const: Any = ...,
5454
default: Any = ...,
5555
type: Callable[[str], _T] = ...,
56-
choices: Container[_T] = ...,
56+
choices: Iterable[_T] = ...,
5757
required: bool = ...,
5858
help: str = ...,
5959
metavar: Union[str, Tuple[str, ...]] = ...,
@@ -69,7 +69,7 @@ class ArgumentParser:
6969
option_string: str = ...,
7070
dest: Optional[str] = ...,
7171
help: Optional[str] = ...,
72-
metavar: Optional[str] = ...) -> None: ...
72+
metavar: Optional[str] = ...) -> _SubParsersAction: ...
7373
def add_argument_group(self, title: Optional[str] = ...,
7474
description: Optional[str] = ...) -> _ArgumentGroup: ...
7575
@overload
@@ -108,7 +108,7 @@ class Action:
108108
const: Any = ...,
109109
default: Any = ...,
110110
type: Optional[Callable[[str], _T]] = ...,
111-
choices: Optional[Container[_T]] = ...,
111+
choices: Optional[Iterable[_T]] = ...,
112112
required: bool = ...,
113113
help: Optional[str] = ...,
114114
metavar: Union[str, Tuple[str, ...]] = ...) -> None: ...
@@ -139,7 +139,7 @@ class _ArgumentGroup:
139139
const: Any = ...,
140140
default: Any = ...,
141141
type: Callable[[str], _T] = ...,
142-
choices: Container[_T] = ...,
142+
choices: Iterable[_T] = ...,
143143
required: bool = ...,
144144
help: str = ...,
145145
metavar: Union[str, Tuple[str, ...]] = ...,
@@ -148,5 +148,9 @@ class _ArgumentGroup:
148148

149149
class _MutuallyExclusiveGroup(_ArgumentGroup): ...
150150

151+
class _SubParsersAction:
152+
# TODO: Type keyword args properly.
153+
def add_parser(self, name: str, **kwargs: Any) -> ArgumentParser: ...
154+
151155
# not documented
152156
class ArgumentTypeError(Exception): ...

third_party/2.7/dateutil/parser.pyi

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ class parserinfo(object):
2727
def validate(self, res: datetime) -> bool: ...
2828

2929
class parser(object):
30-
def __init__(self, info: Optional['parserinfo']) -> None: ...
30+
def __init__(self, info: parserinfo = None) -> None: ...
3131
def parse(self, timestr: Union[str, unicode, IO[unicode]],
32-
default: Optional[datetime],
33-
ignoretz: bool, tzinfos: Dict[Union[str, unicode], tzinfo],
34-
**kwargs: Dict[str, Any]) -> datetime: ...
32+
default: datetime = None,
33+
ignoretz: bool = ..., tzinfos: Dict[Union[str, unicode], tzinfo] = None,
34+
**kwargs: Any) -> datetime: ...
3535

36-
DEFAULTPARSER = ... # type: 'parser'
36+
DEFAULTPARSER = ... # type: parser
3737
def parse(timestr: Union[str, unicode, IO[unicode]],
38-
parserinfo: Optional['parserinfo'],
39-
**kwargs: Dict[str, Any]) -> datetime: ...
38+
parserinfo: parserinfo = None,
39+
**kwargs: Any) -> datetime: ...

0 commit comments

Comments
 (0)