@@ -3739,6 +3739,36 @@ def test_from_records_iterator(self):
37393739 nrows = 2 )
37403740 assert_frame_equal (df , xp .reindex (columns = ['x' ,'y' ]), check_dtype = False )
37413741
3742+ def test_from_records_tuples_generator (self ):
3743+ def tuple_generator (length ):
3744+ for i in range (length ):
3745+ letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
3746+ yield (i , letters [i % len (letters )], i / length )
3747+
3748+ columns_names = ['Integer' , 'String' , 'Float' ]
3749+ columns = [[i [j ] for i in tuple_generator (10 )] for j in range (len (columns_names ))]
3750+ data = {'Integer' : columns [0 ], 'String' : columns [1 ], 'Float' : columns [2 ]}
3751+ expected = DataFrame (data , columns = columns_names )
3752+
3753+ generator = tuple_generator (10 )
3754+ result = DataFrame .from_records (generator , columns = columns_names )
3755+ assert_frame_equal (result , expected )
3756+
3757+ def test_from_records_lists_generator (self ):
3758+ def list_generator (length ):
3759+ for i in range (length ):
3760+ letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
3761+ yield [i , letters [i % len (letters )], i / length ]
3762+
3763+ columns_names = ['Integer' , 'String' , 'Float' ]
3764+ columns = [[i [j ] for i in list_generator (10 )] for j in range (len (columns_names ))]
3765+ data = {'Integer' : columns [0 ], 'String' : columns [1 ], 'Float' : columns [2 ]}
3766+ expected = DataFrame (data , columns = columns_names )
3767+
3768+ generator = list_generator (10 )
3769+ result = DataFrame .from_records (generator , columns = columns_names )
3770+ assert_frame_equal (result , expected )
3771+
37423772 def test_from_records_columns_not_modified (self ):
37433773 tuples = [(1 , 2 , 3 ),
37443774 (1 , 2 , 3 ),
0 commit comments