@@ -616,32 +616,75 @@ def test_types_median() -> None:
616616def test_types_iterrows () -> None :
617617 df = pd .DataFrame (data = {"col1" : [2 , 1 ], "col2" : [3 , 4 ]})
618618 check (
619- assert_type (df .iterrows (), "Iterable [tuple[Hashable, pd.Series]]" ),
619+ assert_type (df .iterrows (), "Iterator [tuple[Hashable, pd.Series]]" ),
620620 Iterable ,
621621 tuple ,
622622 )
623+ for t1 , t2 in df .iterrows ():
624+ check (assert_type (t1 , Hashable ), Hashable )
625+ check (assert_type (t2 , pd .Series ), pd .Series )
623626
624627
625628def test_types_itertuples () -> None :
626629 df = pd .DataFrame (data = {"col1" : [2 , 1 ], "col2" : [3 , 4 ]})
627630 check (
628- assert_type (df .itertuples (), Iterable [_PandasNamedTuple ]),
629- Iterable ,
631+ assert_type (df .itertuples (), Iterator [_PandasNamedTuple ]),
632+ Iterator ,
630633 _PandasNamedTuple ,
631634 )
632635 check (
633636 assert_type (
634- df .itertuples (index = False , name = "Foobar" ), Iterable [_PandasNamedTuple ]
637+ df .itertuples (index = False , name = "Foobar" ), Iterator [_PandasNamedTuple ]
635638 ),
636- Iterable ,
639+ Iterator ,
637640 _PandasNamedTuple ,
638641 )
639642 check (
640- assert_type (df .itertuples (index = False , name = None ), Iterable [tuple [Any , ...]]),
641- Iterable ,
643+ assert_type (df .itertuples (index = False , name = None ), Iterator [tuple [Any , ...]]),
644+ Iterator ,
642645 object ,
643646 )
644647
648+ for t1 in df .itertuples ():
649+ assert_type (t1 , _PandasNamedTuple )
650+ assert t1 .__class__ .__name__ == "Pandas"
651+ assert isinstance (t1 .Index , int )
652+ assert isinstance (t1 .col1 , int )
653+ assert isinstance (t1 .col2 , int )
654+ for k in [0 , 1 , 2 ]:
655+ assert isinstance (t1 [k ], int )
656+
657+ for t1 in df .itertuples (name = "FooBar" ):
658+ assert_type (t1 , _PandasNamedTuple )
659+ assert t1 .__class__ .__name__ == "FooBar"
660+ assert isinstance (t1 .Index , int )
661+ assert isinstance (t1 .col1 , int )
662+ assert isinstance (t1 .col2 , int )
663+ for k in [0 , 1 , 2 ]:
664+ assert isinstance (t1 [k ], int )
665+
666+
667+ def test_types_items () -> None :
668+ df = pd .DataFrame (data = {"col1" : [2 , 1 ], "col2" : [3 , 4 ]})
669+ check (
670+ assert_type (df .items (), Iterator [tuple [Hashable , pd .Series ]]),
671+ Iterator ,
672+ tuple ,
673+ )
674+
675+ for t1 , t2 in df .items ():
676+ check (assert_type (t1 , Hashable ), Hashable )
677+ check (assert_type (t2 , pd .Series ), pd .Series )
678+
679+
680+ def test_frame_iterator () -> None :
681+ """Test iterator methods for a dataframe GH1217."""
682+ df = pd .DataFrame (data = {"col1" : [2 , 1 ], "col2" : [3 , 4 ]})
683+
684+ check (assert_type (next (df .items ()), tuple [Hashable , "pd.Series" ]), tuple )
685+ check (assert_type (next (df .iterrows ()), tuple [Hashable , "pd.Series" ]), tuple )
686+ check (assert_type (next (df .itertuples ()), _PandasNamedTuple ), _PandasNamedTuple )
687+
645688
646689def test_types_sum () -> None :
647690 df = pd .DataFrame (data = {"col1" : [2 , 1 ], "col2" : [3 , 4 ]})
0 commit comments