diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 27fb80f45..d073b80fc 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -544,8 +544,8 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): cls, data: ( np_2darray - | Sequence[SequenceNotStr] - | Sequence[Mapping[str, Any]] + | Iterator[SequenceNotStr] + | Iterator[Mapping[str, Any]] | Mapping[str, Any] | Mapping[str, SequenceNotStr[Any]] ), diff --git a/tests/test_frame.py b/tests/test_frame.py index e16a973fd..315c8b10c 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -4710,6 +4710,15 @@ def test_from_records() -> None: pd.DataFrame, ) + # testing with an iterator of tuples + check( + assert_type( + pd.DataFrame.from_records(iter(data_tuples), columns=["id", "name"]), + pd.DataFrame, + ), + pd.DataFrame, + ) + # testing with pd.Index as columns parameter check( assert_type( @@ -4739,6 +4748,15 @@ def test_from_records() -> None: pd.DataFrame, ) + # test with an iterator of dictionaries + check( + assert_type( + pd.DataFrame.from_records(iter(data_dict_list), columns=["id", "name"]), + pd.DataFrame, + ), + pd.DataFrame, + ) + # test with single dictionary data_single_dict = {"id": 1, "name": "a"} check(