diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index da31cff03..4d9958320 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -566,10 +566,10 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): cls, data: ( np_2darray - | Sequence[SequenceNotStr] - | Sequence[Mapping[str, Any]] - | Mapping[str, Any] - | Mapping[str, SequenceNotStr[Any]] + | Iterable[SequenceNotStr[Any]] + | Iterable[Mapping[HashableT, Any]] + | Mapping[HashableT, Any] + | Mapping[HashableT, SequenceNotStr[Any]] ), index: str | Axes | None = None, exclude: ListLike | None = None, diff --git a/tests/test_frame.py b/tests/test_frame.py index d007e687c..7383ea223 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -4755,20 +4755,19 @@ def test_from_records() -> None: pd.DataFrame, ) - # testing with pd.Index as columns parameter + # testing with an iterable of tuples check( assert_type( - pd.DataFrame.from_records(data_tuples, columns=pd.Index(["id", "name"])), + pd.DataFrame.from_records(iter(data_tuples), columns=["id", "name"]), pd.DataFrame, ), pd.DataFrame, ) - # Testing with list of tuples (instead of structured array for type compatibility) - data_array_tuples = [(1, "a"), (2, "b")] + # testing with pd.Index as columns parameter check( assert_type( - pd.DataFrame.from_records(data_array_tuples, columns=["id", "name"]), + pd.DataFrame.from_records(data_tuples, columns=pd.Index(["id", "name"])), pd.DataFrame, ), pd.DataFrame, @@ -4784,6 +4783,15 @@ def test_from_records() -> None: pd.DataFrame, ) + # test with an iterable 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(