From e6798186f1e6ab1424e855b0bb1ad026e11bc861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20W=C3=B6rtwein?= Date: Tue, 14 Jun 2022 21:10:58 -0400 Subject: [PATCH] TYP: base_parser and readers --- pandas/io/common.py | 15 +++++++++++++++ pandas/io/parsers/base_parser.py | 5 +++-- pandas/io/parsers/readers.py | 27 ++++++++++++--------------- pyright_reportGeneralTypeIssues.json | 2 -- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/pandas/io/common.py b/pandas/io/common.py index 5aecc55bb363a..d692f26ab0576 100644 --- a/pandas/io/common.py +++ b/pandas/io/common.py @@ -626,6 +626,21 @@ def get_handle( ... +@overload +def get_handle( + path_or_buf: FilePath | BaseBuffer, + mode: str, + *, + encoding: str | None = ..., + compression: CompressionOptions = ..., + memory_map: bool = ..., + is_text: bool = ..., + errors: str | None = ..., + storage_options: StorageOptions = ..., +) -> IOHandles[str] | IOHandles[bytes]: + ... + + @doc(compression_options=_shared_docs["compression_options"] % "path_or_buf") def get_handle( path_or_buf: FilePath | BaseBuffer, diff --git a/pandas/io/parsers/base_parser.py b/pandas/io/parsers/base_parser.py index 185ef8b59b587..cdd24a1194a45 100644 --- a/pandas/io/parsers/base_parser.py +++ b/pandas/io/parsers/base_parser.py @@ -32,6 +32,7 @@ from pandas._typing import ( ArrayLike, DtypeArg, + Scalar, ) from pandas.errors import ( ParserError, @@ -89,7 +90,7 @@ def __init__(self, kwds) -> None: self.index_col = kwds.get("index_col", None) self.unnamed_cols: set = set() - self.index_names: list | None = None + self.index_names: Sequence[Hashable] | None = None self.col_names = None self.parse_dates = _validate_parse_dates_arg(kwds.pop("parse_dates", False)) @@ -365,7 +366,7 @@ def _maybe_make_multi_index_columns( @final def _make_index( - self, data, alldata, columns, indexnamerow=False + self, data, alldata, columns, indexnamerow: list[Scalar] | None = None ) -> tuple[Index | None, Sequence[Hashable] | MultiIndex]: index: Index | None if not is_index_col(self.index_col) or not self.index_col: diff --git a/pandas/io/parsers/readers.py b/pandas/io/parsers/readers.py index 56df5493027c5..867cdf0ee7636 100644 --- a/pandas/io/parsers/readers.py +++ b/pandas/io/parsers/readers.py @@ -636,7 +636,7 @@ def read_csv( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -696,7 +696,7 @@ def read_csv( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -756,7 +756,7 @@ def read_csv( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -816,7 +816,7 @@ def read_csv( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -891,7 +891,7 @@ def read_csv( comment: str | None = None, encoding: str | None = None, encoding_errors: str | None = "strict", - dialect=None, + dialect: str | csv.Dialect | None = None, # Error Handling error_bad_lines: bool | None = None, warn_bad_lines: bool | None = None, @@ -975,7 +975,7 @@ def read_table( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -1035,7 +1035,7 @@ def read_table( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -1095,7 +1095,7 @@ def read_table( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -1155,7 +1155,7 @@ def read_table( comment: str | None = ..., encoding: str | None = ..., encoding_errors: str | None = ..., - dialect=..., + dialect: str | csv.Dialect | None = ..., error_bad_lines: bool | None = ..., warn_bad_lines: bool | None = ..., on_bad_lines=..., @@ -1230,7 +1230,7 @@ def read_table( comment: str | None = None, encoding: str | None = None, encoding_errors: str | None = "strict", - dialect=None, + dialect: str | csv.Dialect | None = None, # Error Handling error_bad_lines: bool | None = None, warn_bad_lines: bool | None = None, @@ -1702,10 +1702,7 @@ def _make_engine( if engine == "pyarrow": is_text = False mode = "rb" - # error: No overload variant of "get_handle" matches argument types - # "Union[str, PathLike[str], ReadCsvBuffer[bytes], ReadCsvBuffer[str]]" - # , "str", "bool", "Any", "Any", "Any", "Any", "Any" - self.handles = get_handle( # type: ignore[call-overload] + self.handles = get_handle( f, mode, encoding=self.options.get("encoding", None), @@ -1925,7 +1922,7 @@ def _stringify_na_values(na_values): def _refine_defaults_read( - dialect: str | csv.Dialect, + dialect: str | csv.Dialect | None, delimiter: str | None | lib.NoDefault, delim_whitespace: bool, engine: CSVEngine | None, diff --git a/pyright_reportGeneralTypeIssues.json b/pyright_reportGeneralTypeIssues.json index bcbaa5c90f845..f6f9bed1af065 100644 --- a/pyright_reportGeneralTypeIssues.json +++ b/pyright_reportGeneralTypeIssues.json @@ -104,8 +104,6 @@ "pandas/io/parsers/arrow_parser_wrapper.py", "pandas/io/parsers/base_parser.py", "pandas/io/parsers/c_parser_wrapper.py", - "pandas/io/parsers/python_parser.py", - "pandas/io/parsers/readers.py", "pandas/io/pytables.py", "pandas/io/sas/sas7bdat.py", "pandas/io/sas/sasreader.py",