Skip to content

Commit 8607064

Browse files
gvanrossummatthiaskramm
authored andcommitted
Improve csv module and float() signature (#1418)
* DictReader should not be abstract. Reformat long lines. * Make restval optional for DictWriter.__init__. * The arg to reader() is *Iterable*, not *Iterator*. * Improve signature of float() (use Union instead of overload).
1 parent 945527d commit 8607064

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

stdlib/2/__builtin__.pyi

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,14 +144,7 @@ class int(SupportsInt, SupportsFloat, SupportsAbs[int]):
144144
def __nonzero__(self) -> bool: ...
145145

146146
class float(SupportsFloat, SupportsInt, SupportsAbs[float]):
147-
@overload
148-
def __init__(self) -> None: ...
149-
@overload
150-
def __init__(self, x: SupportsFloat) -> None: ...
151-
@overload
152-
def __init__(self, x: unicode) -> None: ...
153-
@overload
154-
def __init__(self, x: bytearray) -> None: ...
147+
def __init__(self, x: Union[SupportsFloat, str, unicode, bytearray] = ...) -> None: ...
155148
def as_integer_ratio(self) -> Tuple[int, int]: ...
156149
def hex(self) -> str: ...
157150
def is_integer(self) -> bool: ...

stdlib/2and3/_csv.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class _writer:
3737

3838
# TODO: precise type
3939
def writer(csvfile: Any, dialect: Any = ..., **fmtparams: Any) -> _writer: ...
40-
def reader(csvfile: Iterator[str], dialect: Any = ..., **fmtparams: Any) -> _reader: ...
40+
def reader(csvfile: Iterable[str], dialect: Any = ..., **fmtparams: Any) -> _reader: ...
4141
def register_dialect(name: str, dialect: Any = ..., **fmtparams: Any) -> None: ...
4242
def unregister_dialect(name: str) -> None: ...
4343
def get_dialect(name: str) -> Dialect: ...

stdlib/2and3/csv.pyi

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,26 @@ from collections import OrderedDict
22
import sys
33
from typing import Any, Dict, Iterable, Iterator, List, Optional, Sequence, Union
44

5-
from _csv import _reader, _writer, reader as reader, writer as writer, register_dialect as register_dialect, unregister_dialect as unregister_dialect, get_dialect as get_dialect, list_dialects as list_dialects, field_size_limit as field_size_limit, QUOTE_ALL as QUOTE_ALL, QUOTE_MINIMAL as QUOTE_MINIMAL, QUOTE_NONE as QUOTE_NONE, QUOTE_NONNUMERIC as QUOTE_NONNUMERIC, Error as Error
5+
from _csv import (_reader,
6+
_writer,
7+
reader as reader,
8+
writer as writer,
9+
register_dialect as register_dialect,
10+
unregister_dialect as unregister_dialect,
11+
get_dialect as get_dialect,
12+
list_dialects as list_dialects,
13+
field_size_limit as field_size_limit,
14+
QUOTE_ALL as QUOTE_ALL,
15+
QUOTE_MINIMAL as QUOTE_MINIMAL,
16+
QUOTE_NONE as QUOTE_NONE,
17+
QUOTE_NONNUMERIC as QUOTE_NONNUMERIC,
18+
Error as Error,
19+
)
620

721
_Dialect = Union[str, Dialect]
822
_DictRow = Dict[str, Any]
923

10-
class Dialect:
24+
class Dialect(object):
1125
delimiter = ... # type: str
1226
quotechar = ... # type: Optional[str]
1327
escapechar = ... # type: Optional[str]
@@ -45,7 +59,11 @@ if sys.version_info >= (3, 6):
4559
dialect = ... # type: _Dialect
4660
line_num = ... # type: int
4761
fieldnames = ... # type: Sequence[str]
48-
def __init__(self, f: Iterator[str], fieldnames: Sequence[str] = ..., restkey: Optional[str] = ..., restval: Optional[str] = ..., dialect: _Dialect = ..., *args: Any, **kwds: Any) -> None: ...
62+
def __init__(self, f: Iterator[str], fieldnames: Sequence[str] = ...,
63+
restkey: Optional[str] = ..., restval: Optional[str] = ..., dialect: _Dialect = ...,
64+
*args: Any, **kwds: Any) -> None: ...
65+
def __iter__(self) -> Iterator[OrderedDict[str, str]]: ...
66+
def next(self) -> OrderedDict[str, str]: ...
4967
else:
5068
class DictReader(Iterator[Dict[str, str]]):
5169
restkey = ... # type: Optional[str]
@@ -54,19 +72,25 @@ else:
5472
dialect = ... # type: _Dialect
5573
line_num = ... # type: int
5674
fieldnames = ... # type: Sequence[str]
57-
def __init__(self, f: Iterator[str], fieldnames: Sequence[str] = ..., restkey: Optional[str] = ..., restval: Optional[str] = ..., dialect: _Dialect = ..., *args: Any, **kwds: Any) -> None: ...
75+
def __init__(self, f: Iterator[str], fieldnames: Sequence[str] = ...,
76+
restkey: Optional[str] = ..., restval: Optional[str] = ..., dialect: _Dialect = ...,
77+
*args: Any, **kwds: Any) -> None: ...
78+
def __iter__(self) -> Iterator[OrderedDict[str, str]]: ...
79+
def next(self) -> OrderedDict[str, str]: ...
5880

59-
class DictWriter:
81+
class DictWriter(object):
6082
fieldnames = ... # type: Sequence[str]
6183
restval = ... # type: Optional[Any]
6284
extrasaction = ... # type: str
6385
writer = ... # type: _writer
64-
def __init__(self, f: Any, fieldnames: Sequence[str], restval: Optional[Any], extrasaction: str = ..., dialect: _Dialect = ..., *args: Any, **kwds: Any) -> None: ...
86+
def __init__(self, f: Any, fieldnames: Sequence[str],
87+
restval: Optional[Any] = ..., extrasaction: str = ..., dialect: _Dialect = ...,
88+
*args: Any, **kwds: Any) -> None: ...
6589
def writeheader(self) -> None: ...
6690
def writerow(self, rowdict: _DictRow) -> None: ...
6791
def writerows(self, rowdicts: Iterable[_DictRow]) -> None: ...
6892

69-
class Sniffer:
93+
class Sniffer(object):
7094
preferred = ... # type: List[str]
7195
def __init__(self) -> None: ...
7296
def sniff(self, sample: str, delimiters: Optional[str] = ...) -> Dialect: ...

0 commit comments

Comments
 (0)