|
33 | 33 | from pandas.core.resample import Resampler # noqa: F401
|
34 | 34 | from pandas.core.series import Series
|
35 | 35 | import pytest
|
36 |
| -from typing_extensions import assert_type |
| 36 | +from typing_extensions import ( |
| 37 | + TypeAlias, |
| 38 | + assert_type, |
| 39 | +) |
37 | 40 | import xarray as xr
|
38 | 41 |
|
39 | 42 | from pandas._typing import Scalar
|
|
47 | 50 | from pandas.io.formats.style import Styler
|
48 | 51 | from pandas.io.parsers import TextFileReader
|
49 | 52 |
|
| 53 | +if TYPE_CHECKING: |
| 54 | + from pandas.core.frame import _PandasNamedTuple |
| 55 | +else: |
| 56 | + _PandasNamedTuple: TypeAlias = tuple |
| 57 | + |
50 | 58 | DF = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]})
|
51 | 59 |
|
52 | 60 |
|
@@ -439,9 +447,23 @@ def test_types_iterrows() -> None:
|
439 | 447 |
|
440 | 448 | def test_types_itertuples() -> None:
|
441 | 449 | df = pd.DataFrame(data={"col1": [2, 1], "col2": [3, 4]})
|
442 |
| - res1: Iterable[tuple[Any, ...]] = df.itertuples() |
443 |
| - res2: Iterable[tuple[Any, ...]] = df.itertuples(index=False, name="Foobar") |
444 |
| - res3: Iterable[tuple[Any, ...]] = df.itertuples(index=False, name=None) |
| 450 | + check( |
| 451 | + assert_type(df.itertuples(), Iterable[_PandasNamedTuple]), |
| 452 | + Iterable, |
| 453 | + _PandasNamedTuple, |
| 454 | + ) |
| 455 | + check( |
| 456 | + assert_type( |
| 457 | + df.itertuples(index=False, name="Foobar"), Iterable[_PandasNamedTuple] |
| 458 | + ), |
| 459 | + Iterable, |
| 460 | + _PandasNamedTuple, |
| 461 | + ) |
| 462 | + check( |
| 463 | + assert_type(df.itertuples(index=False, name=None), Iterable[_PandasNamedTuple]), |
| 464 | + Iterable, |
| 465 | + _PandasNamedTuple, |
| 466 | + ) |
445 | 467 |
|
446 | 468 |
|
447 | 469 | def test_types_sum() -> None:
|
@@ -2962,3 +2984,12 @@ def test_frame_setitem_na() -> None:
|
2962 | 2984 | df["x"] = df["y"] + pd.Timedelta(days=3)
|
2963 | 2985 | df.loc[ind, :] = pd.NaT
|
2964 | 2986 | df.iloc[[0, 2], :] = pd.NaT
|
| 2987 | + |
| 2988 | + |
| 2989 | +def test_itertuples() -> None: |
| 2990 | + # GH 822 |
| 2991 | + df = pd.DataFrame({"a": [1, 2, 3, 4], "b": [5, 6, 7, 8]}) |
| 2992 | + |
| 2993 | + for item in df.itertuples(): |
| 2994 | + check(assert_type(item, _PandasNamedTuple), tuple) |
| 2995 | + assert_type(item.a, Scalar) |
0 commit comments