Skip to content

Commit b7a611e

Browse files
hauntsaninjaJelleZijlstra
authored andcommitted
csv: more precise types, remove TODO (#3581)
1 parent 1efc1ba commit b7a611e

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

stdlib/2and3/_csv.pyi

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import sys
22

3-
from typing import Any, Iterable, Iterator, List, Optional, Sequence, Text
3+
from typing import Any, Iterable, Iterator, List, Optional, Protocol, Sequence, Text, Union
44

55
QUOTE_ALL: int
66
QUOTE_MINIMAL: int
@@ -39,9 +39,10 @@ class _writer:
3939
def writerows(self, rows: Iterable[Sequence[Any]]) -> None: ...
4040

4141

42-
# TODO: precise type
43-
def writer(csvfile: Any, dialect: Any = ..., **fmtparams: Any) -> _writer: ...
44-
def reader(csvfile: Iterable[Text], dialect: Any = ..., **fmtparams: Any) -> _reader: ...
42+
class _Writer(Protocol):
43+
def write(self, s: str) -> Any: ...
44+
def writer(csvfile: _Writer, dialect: Union[Dialect, str] = ..., **fmtparams: Any) -> _writer: ...
45+
def reader(csvfile: Iterable[Text], dialect: Union[Dialect, str] = ..., **fmtparams: Any) -> _reader: ...
4546
def register_dialect(name: str, dialect: Any = ..., **fmtparams: Any) -> None: ...
4647
def unregister_dialect(name: str) -> None: ...
4748
def get_dialect(name: str) -> Dialect: ...

0 commit comments

Comments
 (0)