--- /dev/null
+from collections import OrderedDict\r
+import sys\r
+from typing import Any, Dict, Iterable, Iterator, List, Optional, Sequence, Union\r
+\r
+from _csv import (_reader,\r
+ _writer,\r
+ reader as reader,\r
+ writer as writer,\r
+ register_dialect as register_dialect,\r
+ unregister_dialect as unregister_dialect,\r
+ get_dialect as get_dialect,\r
+ list_dialects as list_dialects,\r
+ field_size_limit as field_size_limit,\r
+ QUOTE_ALL as QUOTE_ALL,\r
+ QUOTE_MINIMAL as QUOTE_MINIMAL,\r
+ QUOTE_NONE as QUOTE_NONE,\r
+ QUOTE_NONNUMERIC as QUOTE_NONNUMERIC,\r
+ Error as Error,\r
+ )\r
+\r
+_Dialect = Union[str, Dialect]\r
+_DictRow = Dict[str, Any]\r
+\r
+class Dialect(object):\r
+ delimiter = ... # type: str\r
+ quotechar = ... # type: Optional[str]\r
+ escapechar = ... # type: Optional[str]\r
+ doublequote = ... # type: bool\r
+ skipinitialspace = ... # type: bool\r
+ lineterminator = ... # type: str\r
+ quoting = ... # type: int\r
+ def __init__(self) -> None: ...\r
+\r
+class excel(Dialect):\r
+ delimiter = ... # type: str\r
+ quotechar = ... # type: str\r
+ doublequote = ... # type: bool\r
+ skipinitialspace = ... # type: bool\r
+ lineterminator = ... # type: str\r
+ quoting = ... # type: int\r
+\r
+class excel_tab(excel):\r
+ delimiter = ... # type: str\r
+\r
+if sys.version_info >= (3,):\r
+ class unix_dialect(Dialect):\r
+ delimiter = ... # type: str\r
+ quotechar = ... # type: str\r
+ doublequote = ... # type: bool\r
+ skipinitialspace = ... # type: bool\r
+ lineterminator = ... # type: str\r
+ quoting = ... # type: int\r
+\r
+if sys.version_info >= (3, 6):\r
+ _DRMapping = OrderedDict[str, str]\r
+else:\r
+ _DRMapping = Dict[str, str]\r
+\r
+\r
+class DictReader(Iterator[_DRMapping]):\r
+ restkey = ... # type: Optional[str]\r
+ restval = ... # type: Optional[str]\r
+ reader = ... # type: _reader\r
+ dialect = ... # type: _Dialect\r
+ line_num = ... # type: int\r
+ fieldnames = ... # type: Sequence[str]\r
+ def __init__(self, f: Iterable[str], fieldnames: Sequence[str] = ...,\r
+ restkey: Optional[str] = ..., restval: Optional[str] = ..., dialect: _Dialect = ...,\r
+ *args: Any, **kwds: Any) -> None: ...\r
+ def __iter__(self) -> 'DictReader': ...\r
+ if sys.version_info >= (3,):\r
+ def __next__(self) -> _DRMapping: ...\r
+ else:\r
+ def next(self) -> _DRMapping: ...\r
+\r
+\r
+class DictWriter(object):\r
+ fieldnames = ... # type: Sequence[str]\r
+ restval = ... # type: Optional[Any]\r
+ extrasaction = ... # type: str\r
+ writer = ... # type: _writer\r
+ def __init__(self, f: Any, fieldnames: Sequence[str],\r
+ restval: Optional[Any] = ..., extrasaction: str = ..., dialect: _Dialect = ...,\r
+ *args: Any, **kwds: Any) -> None: ...\r
+ def writeheader(self) -> None: ...\r
+ def writerow(self, rowdict: _DictRow) -> None: ...\r
+ def writerows(self, rowdicts: Iterable[_DictRow]) -> None: ...\r
+\r
+class Sniffer(object):\r
+ preferred = ... # type: List[str]\r
+ def __init__(self) -> None: ...\r
+ def sniff(self, sample: str, delimiters: Optional[str] = ...) -> Dialect: ...\r
+ def has_header(self, sample: str) -> bool: ...\r