From 935b475842c1da4fde6d556e715427e27ddb0084 Mon Sep 17 00:00:00 2001 From: cmp0xff Date: Sun, 3 Aug 2025 14:07:44 +0200 Subject: [PATCH 1/4] fix: #1304 PD_LTE_23 https://github.com/pandas-dev/pandas-stubs/issues/1304#issue-3284782852 --- tests/series/arithmetic/test_truediv.py | 23 +++++++++++++++++++---- tests/series/test_series.py | 12 ------------ 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/tests/series/arithmetic/test_truediv.py b/tests/series/arithmetic/test_truediv.py index 39ec872b..05be0f31 100644 --- a/tests/series/arithmetic/test_truediv.py +++ b/tests/series/arithmetic/test_truediv.py @@ -5,7 +5,10 @@ import pandas as pd from typing_extensions import assert_type -from tests import check +from tests import ( + PD_LTE_23, + check, +) left = pd.DataFrame({"a": [1, 2, 3]})["a"] # left operand @@ -140,12 +143,24 @@ def test_truediv_pd_series() -> None: check(assert_type(left.rdiv(c), pd.Series), pd.Series) +def test_path_div() -> None: + # GH 682 + folder = Path.cwd() + + folders = pd.Series([folder, folder]) + check(assert_type(folders / Path("a.png"), pd.Series), pd.Series, Path) + + def test_truediv_path() -> None: - """Test pd.Series / path object""" - left, p = pd.Series(["pat", "ath", "path"]), Path() + """Test pd.Series / path object. + + Also GH 682.""" + left, p = pd.Series(["a.png", "b.gz", "c.txt"]), Path.cwd() check(assert_type(left / p, pd.Series), pd.Series, Path) - check(assert_type(p / left, pd.Series), pd.Series, Path) + if PD_LTE_23: + # Bug in 3.0 https://github.com/pandas-dev/pandas/issues/61940 + check(assert_type(p / left, pd.Series), pd.Series, Path) check(assert_type(left.truediv(p), pd.Series), pd.Series, Path) check(assert_type(left.div(p), pd.Series), pd.Series, Path) diff --git a/tests/series/test_series.py b/tests/series/test_series.py index 4d84edff..c194d994 100644 --- a/tests/series/test_series.py +++ b/tests/series/test_series.py @@ -3802,18 +3802,6 @@ def test_series_bool_fails() -> None: pass -def test_path_div() -> None: - # GH 682 - folder = Path.cwd() - files = pd.Series(["a.png", "b.png"]) - if PD_LTE_23: - # Bug in 3.0 https://github.com/pandas-dev/pandas/issues/61940 - check(assert_type(folder / files, pd.Series), pd.Series, Path) - - folders = pd.Series([folder, folder]) - check(assert_type(folders / Path("a.png"), pd.Series), pd.Series, Path) - - def test_series_dict() -> None: # GH 812 check( From 0d9931a47ad06f6c7d4190307c6cf804e86d7a7c Mon Sep 17 00:00:00 2001 From: cmp0xff Date: Mon, 4 Aug 2025 17:58:26 +0200 Subject: [PATCH 2/4] fix: pandas nightly --- tests/series/arithmetic/test_truediv.py | 37 ++++++++++++++++--------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/tests/series/arithmetic/test_truediv.py b/tests/series/arithmetic/test_truediv.py index 05be0f31..8ef951cd 100644 --- a/tests/series/arithmetic/test_truediv.py +++ b/tests/series/arithmetic/test_truediv.py @@ -7,6 +7,7 @@ from tests import ( PD_LTE_23, + WINDOWS, check, ) @@ -143,27 +144,37 @@ def test_truediv_pd_series() -> None: check(assert_type(left.rdiv(c), pd.Series), pd.Series) -def test_path_div() -> None: - # GH 682 - folder = Path.cwd() +def test_path_div(tmp_path: Path) -> None: + """Test pd.Series of paths / path object. - folders = pd.Series([folder, folder]) - check(assert_type(folders / Path("a.png"), pd.Series), pd.Series, Path) + Also GH 682.""" + fpath = Path("a.png") + folders, fpaths = pd.Series([tmp_path, tmp_path]), pd.Series([fpath, fpath]) + + check(assert_type(folders / fpath, pd.Series), pd.Series, Path) + check(assert_type(folders.truediv(fpath), pd.Series), pd.Series, Path) + check(assert_type(folders.div(fpath), pd.Series), pd.Series, Path) + + check(assert_type(tmp_path / fpaths, pd.Series), pd.Series, Path) + check(assert_type(fpaths.rtruediv(tmp_path), pd.Series), pd.Series, Path) + check(assert_type(fpaths.rdiv(tmp_path), pd.Series), pd.Series, Path) -def test_truediv_path() -> None: +def test_truediv_path(tmp_path: Path) -> None: """Test pd.Series / path object. Also GH 682.""" - left, p = pd.Series(["a.png", "b.gz", "c.txt"]), Path.cwd() + fnames = pd.Series(["a.png", "b.gz", "c.txt"]) - check(assert_type(left / p, pd.Series), pd.Series, Path) if PD_LTE_23: # Bug in 3.0 https://github.com/pandas-dev/pandas/issues/61940 - check(assert_type(p / left, pd.Series), pd.Series, Path) + check(assert_type(fnames / tmp_path, pd.Series), pd.Series, Path) + check(assert_type(tmp_path / fnames, pd.Series), pd.Series, Path) - check(assert_type(left.truediv(p), pd.Series), pd.Series, Path) - check(assert_type(left.div(p), pd.Series), pd.Series, Path) + if PD_LTE_23 or not WINDOWS: + # pyarrow.lib.ArrowInvalid: Could not convert WindowsPath('...') with type WindowsPath: did not recognize Python value type when inferring an Arrow data type + check(assert_type(fnames.truediv(tmp_path), pd.Series), pd.Series, Path) + check(assert_type(fnames.div(tmp_path), pd.Series), pd.Series, Path) - check(assert_type(left.rtruediv(p), pd.Series), pd.Series, Path) - check(assert_type(left.rdiv(p), pd.Series), pd.Series, Path) + check(assert_type(fnames.rtruediv(tmp_path), pd.Series), pd.Series, Path) + check(assert_type(fnames.rdiv(tmp_path), pd.Series), pd.Series, Path) From a64f8e8781e6b4b092f13fd494f0a95909da6bd5 Mon Sep 17 00:00:00 2001 From: cmp0xff Date: Mon, 4 Aug 2025 18:04:58 +0200 Subject: [PATCH 3/4] fix: mypy and naming --- tests/series/arithmetic/test_truediv.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/series/arithmetic/test_truediv.py b/tests/series/arithmetic/test_truediv.py index 8ef951cd..87e2d479 100644 --- a/tests/series/arithmetic/test_truediv.py +++ b/tests/series/arithmetic/test_truediv.py @@ -144,7 +144,7 @@ def test_truediv_pd_series() -> None: check(assert_type(left.rdiv(c), pd.Series), pd.Series) -def test_path_div(tmp_path: Path) -> None: +def test_truediv_paths(tmp_path: Path) -> None: """Test pd.Series of paths / path object. Also GH 682.""" @@ -155,7 +155,8 @@ def test_path_div(tmp_path: Path) -> None: check(assert_type(folders.truediv(fpath), pd.Series), pd.Series, Path) check(assert_type(folders.div(fpath), pd.Series), pd.Series, Path) - check(assert_type(tmp_path / fpaths, pd.Series), pd.Series, Path) + # mypy thinks it's `Path`, in contrast to Series.__rtruediv__(self, other: Path) -> Series: ... + check(assert_type(tmp_path / fpaths, pd.Series), pd.Series, Path) # type: ignore[assert-type] check(assert_type(fpaths.rtruediv(tmp_path), pd.Series), pd.Series, Path) check(assert_type(fpaths.rdiv(tmp_path), pd.Series), pd.Series, Path) From ce7498a36196856b74d83869395bacfc4df9ed40 Mon Sep 17 00:00:00 2001 From: cmp0xff Date: Mon, 4 Aug 2025 18:11:32 +0200 Subject: [PATCH 4/4] fix(comment): https://github.com/pandas-dev/pandas-stubs/pull/1306#discussion_r2251930341 --- tests/series/arithmetic/test_truediv.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/series/arithmetic/test_truediv.py b/tests/series/arithmetic/test_truediv.py index 87e2d479..c5d5efaf 100644 --- a/tests/series/arithmetic/test_truediv.py +++ b/tests/series/arithmetic/test_truediv.py @@ -7,7 +7,6 @@ from tests import ( PD_LTE_23, - WINDOWS, check, ) @@ -168,12 +167,10 @@ def test_truediv_path(tmp_path: Path) -> None: fnames = pd.Series(["a.png", "b.gz", "c.txt"]) if PD_LTE_23: - # Bug in 3.0 https://github.com/pandas-dev/pandas/issues/61940 + # Bug in 3.0 https://github.com/pandas-dev/pandas/issues/61940 (pyarrow.lib.ArrowInvalid) check(assert_type(fnames / tmp_path, pd.Series), pd.Series, Path) check(assert_type(tmp_path / fnames, pd.Series), pd.Series, Path) - if PD_LTE_23 or not WINDOWS: - # pyarrow.lib.ArrowInvalid: Could not convert WindowsPath('...') with type WindowsPath: did not recognize Python value type when inferring an Arrow data type check(assert_type(fnames.truediv(tmp_path), pd.Series), pd.Series, Path) check(assert_type(fnames.div(tmp_path), pd.Series), pd.Series, Path)