From c4d8ab1906453e6abe77a83059d0d3e1553231ea Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Wed, 13 Oct 2021 10:33:28 -0400 Subject: [PATCH 1/2] fix overloads for read_csv and read_table --- pandas/io/parsers.pyi | 227 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 217 insertions(+), 10 deletions(-) diff --git a/pandas/io/parsers.pyi b/pandas/io/parsers.pyi index 696616d6..ac611df6 100644 --- a/pandas/io/parsers.pyi +++ b/pandas/io/parsers.pyi @@ -3,7 +3,7 @@ from collections import abc import sys from pandas._typing import FilePathOrBuffer as FilePathOrBuffer, Scalar from pandas.core.frame import DataFrame as DataFrame -from typing import Any, Callable, IO, List, Mapping, Optional, Sequence, Union, overload +from typing import Any, Callable, List, Mapping, Optional, Sequence, Union, overload if sys.version_info >= (3, 8): from typing import Literal else: @@ -11,7 +11,7 @@ else: @overload def read_csv( - reader: IO, + reader: FilePathOrBuffer, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -41,7 +41,7 @@ def read_csv( date_parser: Optional[Callable] = ..., dayfirst: bool = ..., cache_dates: bool = ..., - iterator: bool = ..., + iterator: Literal[True], chunksize: Optional[int] = ..., compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., thousands: Optional[str] = ..., @@ -94,8 +94,60 @@ def read_csv( date_parser: Optional[Callable] = ..., dayfirst: bool = ..., cache_dates: bool = ..., - iterator: bool = ..., - chunksize: Optional[int] = ..., + iterator: Literal[False], + chunksize: int, + compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., + thousands: Optional[str] = ..., + decimal: Optional[str] = ..., + lineterminator: Optional[str] = ..., + quotechar: str = ..., + quoting: int = ..., + doublequote: bool = ..., + escapechar: Optional[str] = ..., + comment: Optional[str] = ..., + encoding: Optional[str] = ..., + dialect: Optional[str] = ..., + error_bad_lines: bool = ..., + warn_bad_lines: bool = ..., + delim_whitespace: bool = ..., + low_memory: bool = ..., + memory_map: bool = ..., + float_precision: Optional[str] = ..., +) -> TextFileReader: ... +@overload +def read_csv( + filepath: FilePathOrBuffer, + sep: str = ..., + delimiter: Optional[str] = ..., + header: Union[int, Sequence[int], str, Literal["infer"]] = ..., + names: Optional[Sequence[str]] = ..., + index_col: Optional[Union[int, str, Sequence, Union[bool, Literal[False]]]] = ..., + usecols: Optional[Union[int, str, Sequence]] = ..., + squeeze: bool = ..., + prefix: Optional[str] = ..., + mangle_dupe_cols: bool = ..., + dtype: Optional[Union[str, Mapping[str, Any]]] = ..., + engine: Optional[Union[str, Literal["c", "python"]]] = ..., + converters: Optional[Mapping[Union[int, str], Callable]] = ..., + true_values: Optional[Sequence[Scalar]] = ..., + false_values: Optional[Sequence[Scalar]] = ..., + skipinitialspace: bool = ..., + skiprows: Optional[Union[Sequence, int, Callable]] = ..., + skipfooter: int = ..., + nrows: Optional[int] = ..., + na_values = ..., + keep_default_na: bool = ..., + na_filter: bool = ..., + verbose: bool = ..., + skip_blank_lines: bool = ..., + parse_dates: Union[bool, List[int], List[str]] = ..., + infer_datetime_format: bool = ..., + keep_date_col: bool = ..., + date_parser: Optional[Callable] = ..., + dayfirst: bool = ..., + cache_dates: bool = ..., + iterator: Literal[False] = ..., + chunksize: None = ..., compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., thousands: Optional[str] = ..., decimal: Optional[str] = ..., @@ -114,10 +166,61 @@ def read_csv( memory_map: bool = ..., float_precision: Optional[str] = ..., ) -> DataFrame: ... - +@overload +def read_csv( + filepath: FilePathOrBuffer, + sep: str = ..., + delimiter: Optional[str] = ..., + header: Union[int, Sequence[int], str, Literal["infer"]] = ..., + names: Optional[Sequence[str]] = ..., + index_col: Optional[Union[int, str, Sequence, Union[bool, Literal[False]]]] = ..., + usecols: Optional[Union[int, str, Sequence]] = ..., + squeeze: bool = ..., + prefix: Optional[str] = ..., + mangle_dupe_cols: bool = ..., + dtype: Optional[Union[str, Mapping[str, Any]]] = ..., + engine: Optional[Union[str, Literal["c", "python"]]] = ..., + converters: Optional[Mapping[Union[int, str], Callable]] = ..., + true_values: Optional[Sequence[Scalar]] = ..., + false_values: Optional[Sequence[Scalar]] = ..., + skipinitialspace: bool = ..., + skiprows: Optional[Union[Sequence, int, Callable]] = ..., + skipfooter: int = ..., + nrows: Optional[int] = ..., + na_values = ..., + keep_default_na: bool = ..., + na_filter: bool = ..., + verbose: bool = ..., + skip_blank_lines: bool = ..., + parse_dates: Union[bool, List[int], List[str]] = ..., + infer_datetime_format: bool = ..., + keep_date_col: bool = ..., + date_parser: Optional[Callable] = ..., + dayfirst: bool = ..., + cache_dates: bool = ..., + iterator: bool = ..., + chunksize: int = ..., + compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., + thousands: Optional[str] = ..., + decimal: Optional[str] = ..., + lineterminator: Optional[str] = ..., + quotechar: str = ..., + quoting: int = ..., + doublequote: bool = ..., + escapechar: Optional[str] = ..., + comment: Optional[str] = ..., + encoding: Optional[str] = ..., + dialect: Optional[str] = ..., + error_bad_lines: bool = ..., + warn_bad_lines: bool = ..., + delim_whitespace: bool = ..., + low_memory: bool = ..., + memory_map: bool = ..., + float_precision: Optional[str] = ..., +) -> TextFileReader: ... @overload def read_table( - reader: IO, + reader: FilePathOrBuffer, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -147,7 +250,7 @@ def read_table( date_parser: Optional[Callable] = ..., dayfirst: bool = ..., cache_dates: bool = ..., - iterator: bool = ..., + iterator: Literal[True], chunksize: Optional[int] = ..., compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., thousands: Optional[str] = ..., @@ -200,8 +303,60 @@ def read_table( date_parser: Optional[Callable] = ..., dayfirst: bool = ..., cache_dates: bool = ..., - iterator: bool = ..., - chunksize: Optional[int] = ..., + iterator: Literal[False], + chunksize: int, + compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., + thousands: Optional[str] = ..., + decimal: Optional[str] = ..., + lineterminator: Optional[str] = ..., + quotechar: str = ..., + quoting: int = ..., + doublequote: bool = ..., + escapechar: Optional[str] = ..., + comment: Optional[str] = ..., + encoding: Optional[str] = ..., + dialect: Optional[str] = ..., + error_bad_lines: bool = ..., + warn_bad_lines: bool = ..., + delim_whitespace: bool = ..., + low_memory: bool = ..., + memory_map: bool = ..., + float_precision: Optional[str] = ..., +) -> TextFileReader: ... +@overload +def read_table( + filepath: FilePathOrBuffer, + sep: str = ..., + delimiter: Optional[str] = ..., + header: Union[int, Sequence[int], str, Literal["infer"]] = ..., + names: Optional[Sequence[str]] = ..., + index_col: Optional[Union[int, str, Sequence, bool, Literal[False]]] = ..., + usecols: Optional[Union[int, str, Sequence]] = ..., + squeeze: bool = ..., + prefix: Optional[str] = ..., + mangle_dupe_cols: bool = ..., + dtype: Optional[Union[str, Mapping[str, Any]]] = ..., + engine: Optional[Union[str, Literal["c", "python"]]] = ..., + converters: Optional[Mapping[Union[int, str], Callable]] = ..., + true_values: Optional[Sequence[Scalar]] = ..., + false_values: Optional[Sequence[Scalar]] = ..., + skipinitialspace: bool = ..., + skiprows: Optional[Union[Sequence, int, Callable]] = ..., + skipfooter: int = ..., + nrows: Optional[int] = ..., + na_values = ..., + keep_default_na: bool = ..., + na_filter: bool = ..., + verbose: bool = ..., + skip_blank_lines: bool = ..., + parse_dates: Union[bool, List[int], List[str]] = ..., + infer_datetime_format: bool = ..., + keep_date_col: bool = ..., + date_parser: Optional[Callable] = ..., + dayfirst: bool = ..., + cache_dates: bool = ..., + iterator: Literal[False] = ..., + chunksize: None = ..., compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., thousands: Optional[str] = ..., decimal: Optional[str] = ..., @@ -220,6 +375,58 @@ def read_table( memory_map: bool = ..., float_precision: Optional[str] = ..., ) -> DataFrame: ... +@overload +def read_table( + filepath: FilePathOrBuffer, + sep: str = ..., + delimiter: Optional[str] = ..., + header: Union[int, Sequence[int], str, Literal["infer"]] = ..., + names: Optional[Sequence[str]] = ..., + index_col: Optional[Union[int, str, Sequence, bool, Literal[False]]] = ..., + usecols: Optional[Union[int, str, Sequence]] = ..., + squeeze: bool = ..., + prefix: Optional[str] = ..., + mangle_dupe_cols: bool = ..., + dtype: Optional[Union[str, Mapping[str, Any]]] = ..., + engine: Optional[Union[str, Literal["c", "python"]]] = ..., + converters: Optional[Mapping[Union[int, str], Callable]] = ..., + true_values: Optional[Sequence[Scalar]] = ..., + false_values: Optional[Sequence[Scalar]] = ..., + skipinitialspace: bool = ..., + skiprows: Optional[Union[Sequence, int, Callable]] = ..., + skipfooter: int = ..., + nrows: Optional[int] = ..., + na_values = ..., + keep_default_na: bool = ..., + na_filter: bool = ..., + verbose: bool = ..., + skip_blank_lines: bool = ..., + parse_dates: Union[bool, List[int], List[str]] = ..., + infer_datetime_format: bool = ..., + keep_date_col: bool = ..., + date_parser: Optional[Callable] = ..., + dayfirst: bool = ..., + cache_dates: bool = ..., + iterator: bool = ..., + chunksize: int = ..., + compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., + thousands: Optional[str] = ..., + decimal: Optional[str] = ..., + lineterminator: Optional[str] = ..., + quotechar: str = ..., + quoting: int = ..., + doublequote: bool = ..., + escapechar: Optional[str] = ..., + comment: Optional[str] = ..., + encoding: Optional[str] = ..., + dialect: Optional[str] = ..., + error_bad_lines: bool = ..., + warn_bad_lines: bool = ..., + delim_whitespace: bool = ..., + low_memory: bool = ..., + memory_map: bool = ..., + float_precision: Optional[str] = ..., +) -> TextFileReader: ... def read_fwf(filepath_or_buffer: FilePathOrBuffer, colspecs=..., widths=..., infer_nrows=..., **kwds) : ... From 28473c332ed83de5c0e39eb0ae7521a9a8d1101e Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Thu, 14 Oct 2021 10:01:44 -0400 Subject: [PATCH 2/2] add asterisks to read_csv 4 overloads, and one non-asterisk overload --- pandas/io/parsers.pyi | 114 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 2 deletions(-) diff --git a/pandas/io/parsers.pyi b/pandas/io/parsers.pyi index ac611df6..aab90246 100644 --- a/pandas/io/parsers.pyi +++ b/pandas/io/parsers.pyi @@ -12,6 +12,7 @@ else: @overload def read_csv( reader: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -61,10 +62,10 @@ def read_csv( memory_map: bool = ..., float_precision: Optional[str] = ..., ) -> TextFileReader: ... - @overload def read_csv( filepath: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -117,6 +118,7 @@ def read_csv( @overload def read_csv( filepath: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -169,6 +171,7 @@ def read_csv( @overload def read_csv( filepath: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -219,8 +222,61 @@ def read_csv( float_precision: Optional[str] = ..., ) -> TextFileReader: ... @overload +def read_csv( + filepath: FilePathOrBuffer, + sep: str = ..., + delimiter: Optional[str] = ..., + header: Union[int, Sequence[int], str, Literal["infer"]] = ..., + names: Optional[Sequence[str]] = ..., + index_col: Optional[Union[int, str, Sequence, Union[bool, Literal[False]]]] = ..., + usecols: Optional[Union[int, str, Sequence]] = ..., + squeeze: bool = ..., + prefix: Optional[str] = ..., + mangle_dupe_cols: bool = ..., + dtype: Optional[Union[str, Mapping[str, Any]]] = ..., + engine: Optional[Union[str, Literal["c", "python"]]] = ..., + converters: Optional[Mapping[Union[int, str], Callable]] = ..., + true_values: Optional[Sequence[Scalar]] = ..., + false_values: Optional[Sequence[Scalar]] = ..., + skipinitialspace: bool = ..., + skiprows: Optional[Union[Sequence, int, Callable]] = ..., + skipfooter: int = ..., + nrows: Optional[int] = ..., + na_values = ..., + keep_default_na: bool = ..., + na_filter: bool = ..., + verbose: bool = ..., + skip_blank_lines: bool = ..., + parse_dates: Union[bool, List[int], List[str]] = ..., + infer_datetime_format: bool = ..., + keep_date_col: bool = ..., + date_parser: Optional[Callable] = ..., + dayfirst: bool = ..., + cache_dates: bool = ..., + iterator: bool = ..., + chunksize: int = ..., + compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., + thousands: Optional[str] = ..., + decimal: Optional[str] = ..., + lineterminator: Optional[str] = ..., + quotechar: str = ..., + quoting: int = ..., + doublequote: bool = ..., + escapechar: Optional[str] = ..., + comment: Optional[str] = ..., + encoding: Optional[str] = ..., + dialect: Optional[str] = ..., + error_bad_lines: bool = ..., + warn_bad_lines: bool = ..., + delim_whitespace: bool = ..., + low_memory: bool = ..., + memory_map: bool = ..., + float_precision: Optional[str] = ..., +) -> DataFrame: ... +@overload def read_table( reader: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -270,10 +326,10 @@ def read_table( memory_map: bool = ..., float_precision: Optional[str] = ..., ) -> TextFileReader: ... - @overload def read_table( filepath: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -326,6 +382,7 @@ def read_table( @overload def read_table( filepath: FilePathOrBuffer, + *, sep: str = ..., delimiter: Optional[str] = ..., header: Union[int, Sequence[int], str, Literal["infer"]] = ..., @@ -376,6 +433,59 @@ def read_table( float_precision: Optional[str] = ..., ) -> DataFrame: ... @overload +def read_table( + filepath: FilePathOrBuffer, + *, + sep: str = ..., + delimiter: Optional[str] = ..., + header: Union[int, Sequence[int], str, Literal["infer"]] = ..., + names: Optional[Sequence[str]] = ..., + index_col: Optional[Union[int, str, Sequence, bool, Literal[False]]] = ..., + usecols: Optional[Union[int, str, Sequence]] = ..., + squeeze: bool = ..., + prefix: Optional[str] = ..., + mangle_dupe_cols: bool = ..., + dtype: Optional[Union[str, Mapping[str, Any]]] = ..., + engine: Optional[Union[str, Literal["c", "python"]]] = ..., + converters: Optional[Mapping[Union[int, str], Callable]] = ..., + true_values: Optional[Sequence[Scalar]] = ..., + false_values: Optional[Sequence[Scalar]] = ..., + skipinitialspace: bool = ..., + skiprows: Optional[Union[Sequence, int, Callable]] = ..., + skipfooter: int = ..., + nrows: Optional[int] = ..., + na_values = ..., + keep_default_na: bool = ..., + na_filter: bool = ..., + verbose: bool = ..., + skip_blank_lines: bool = ..., + parse_dates: Union[bool, List[int], List[str]] = ..., + infer_datetime_format: bool = ..., + keep_date_col: bool = ..., + date_parser: Optional[Callable] = ..., + dayfirst: bool = ..., + cache_dates: bool = ..., + iterator: bool = ..., + chunksize: int = ..., + compression: Optional[Union[str, Literal["infer", "gzip", "bz2", "zip", "xz"]]] = ..., + thousands: Optional[str] = ..., + decimal: Optional[str] = ..., + lineterminator: Optional[str] = ..., + quotechar: str = ..., + quoting: int = ..., + doublequote: bool = ..., + escapechar: Optional[str] = ..., + comment: Optional[str] = ..., + encoding: Optional[str] = ..., + dialect: Optional[str] = ..., + error_bad_lines: bool = ..., + warn_bad_lines: bool = ..., + delim_whitespace: bool = ..., + low_memory: bool = ..., + memory_map: bool = ..., + float_precision: Optional[str] = ..., +) -> TextFileReader: ... +@overload def read_table( filepath: FilePathOrBuffer, sep: str = ...,