From 9e39333f741b32b86cea01a7f909c0ae79f1e7fb Mon Sep 17 00:00:00 2001 From: Sjors Lockhorst Date: Mon, 17 Apr 2023 16:59:05 +0200 Subject: [PATCH 1/3] Added test for date_format in read_csv --- tests/test_io.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_io.py b/tests/test_io.py index e259b82ec..d06ec3f26 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -621,6 +621,10 @@ def test_types_read_csv() -> None: header=0, index_col=0, ) + df26: pd.DataFrame = pd.read_csv(path, parse_dates=True, date_format="%Y-%m-%d") + df27: pd.DataFrame = pd.read_csv( + path, parse_dates=True, date_format={"col1": "%Y-%m-%d"} + ) if TYPE_CHECKING_INVALID_USAGE: pd.read_csv(path, names="abcd") # type: ignore[call-overload] # pyright: ignore[reportGeneralTypeIssues] From 221deb4faccffd95813e17b0b22ebfdbdf078fd2 Mon Sep 17 00:00:00 2001 From: Sjors Lockhorst Date: Mon, 17 Apr 2023 17:00:22 +0200 Subject: [PATCH 2/3] Added date_format to read_csv --- pandas-stubs/io/parsers/readers.pyi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pandas-stubs/io/parsers/readers.pyi b/pandas-stubs/io/parsers/readers.pyi index 4c580f256..2be3db371 100644 --- a/pandas-stubs/io/parsers/readers.pyi +++ b/pandas-stubs/io/parsers/readers.pyi @@ -67,6 +67,7 @@ def read_csv( infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: Callable = ..., + date_format: str | Mapping[str, str] | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: Literal[True], @@ -126,6 +127,7 @@ def read_csv( infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: Callable = ..., + date_format: str | Mapping[str, str] | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: bool = ..., @@ -185,6 +187,7 @@ def read_csv( infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: Callable = ..., + date_format: str | Mapping[str, str] | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: Literal[False] = ..., From 26f709a254f6fca027d15b69ead590bdfccc5b00 Mon Sep 17 00:00:00 2001 From: Sjors Lockhorst Date: Sat, 22 Apr 2023 14:49:43 +0200 Subject: [PATCH 3/3] date_format int col mapping and extra tests --- pandas-stubs/io/parsers/readers.pyi | 6 +++--- tests/test_io.py | 19 +++++++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/pandas-stubs/io/parsers/readers.pyi b/pandas-stubs/io/parsers/readers.pyi index 2be3db371..2747f5338 100644 --- a/pandas-stubs/io/parsers/readers.pyi +++ b/pandas-stubs/io/parsers/readers.pyi @@ -67,7 +67,7 @@ def read_csv( infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: Callable = ..., - date_format: str | Mapping[str, str] | None = ..., + date_format: str | Mapping[int | str, str] | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: Literal[True], @@ -127,7 +127,7 @@ def read_csv( infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: Callable = ..., - date_format: str | Mapping[str, str] | None = ..., + date_format: str | Mapping[int | str, str] | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: bool = ..., @@ -187,7 +187,7 @@ def read_csv( infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: Callable = ..., - date_format: str | Mapping[str, str] | None = ..., + date_format: str | Mapping[int | str, str] | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: Literal[False] = ..., diff --git a/tests/test_io.py b/tests/test_io.py index d06ec3f26..fa4d7b754 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -621,10 +621,6 @@ def test_types_read_csv() -> None: header=0, index_col=0, ) - df26: pd.DataFrame = pd.read_csv(path, parse_dates=True, date_format="%Y-%m-%d") - df27: pd.DataFrame = pd.read_csv( - path, parse_dates=True, date_format={"col1": "%Y-%m-%d"} - ) if TYPE_CHECKING_INVALID_USAGE: pd.read_csv(path, names="abcd") # type: ignore[call-overload] # pyright: ignore[reportGeneralTypeIssues] @@ -642,6 +638,21 @@ def test_types_read_csv() -> None: tfr4: TextFileReader = pd.read_csv(path, nrows=2, iterator=True) tfr4.close() + df_dates = pd.DataFrame(data={"col1": ["2023-03-15", "2023-04-20"]}) + + with ensure_clean() as path: + df_dates.to_csv(path) + + df26: pd.DataFrame = pd.read_csv( + path, parse_dates=["col1"], date_format="%Y-%m-%d" + ) + df27: pd.DataFrame = pd.read_csv( + path, parse_dates=["col1"], date_format={"col1": "%Y-%m-%d"} + ) + df28: pd.DataFrame = pd.read_csv( + path, parse_dates=["col1"], date_format={1: "%Y-%m-%d"} + ) + def test_read_table(): with ensure_clean() as path: