@@ -142,6 +142,15 @@ def test_from_arrays_iterator(idx):
142142 MultiIndex .from_arrays (0 )
143143
144144
145+ def test_from_arrays_tuples (idx ):
146+ arrays = tuple (tuple (np .asarray (lev ).take (level_codes ))
147+ for lev , level_codes in zip (idx .levels , idx .codes ))
148+
149+ # tuple of tuples as input
150+ result = MultiIndex .from_arrays (arrays , names = idx .names )
151+ tm .assert_index_equal (result , idx )
152+
153+
145154def test_from_arrays_index_series_datetimetz ():
146155 idx1 = pd .date_range ('2015-01-01 10:00' , freq = 'D' , periods = 3 ,
147156 tz = 'US/Eastern' )
@@ -254,11 +263,13 @@ def test_from_arrays_empty():
254263
255264
256265@pytest .mark .parametrize ('invalid_sequence_of_arrays' , [
257- 1 , [1 ], [1 , 2 ], [[1 ], 2 ], 'a' , ['a' ], ['a' , 'b' ], [['a' ], 'b' ]])
266+ 1 , [1 ], [1 , 2 ], [[1 ], 2 ], [1 , [2 ]], 'a' , ['a' ], ['a' , 'b' ], [['a' ], 'b' ],
267+ (1 ,), (1 , 2 ), ([1 ], 2 ), (1 , [2 ]), 'a' , ('a' ,), ('a' , 'b' ), (['a' ], 'b' ),
268+ [(1 ,), 2 ], [1 , (2 ,)], [('a' ,), 'b' ],
269+ ((1 ,), 2 ), (1 , (2 ,)), (('a' ,), 'b' )
270+ ])
258271def test_from_arrays_invalid_input (invalid_sequence_of_arrays ):
259- msg = (r"Input must be a list / sequence of array-likes|"
260- r"Input must be list-like|"
261- r"object of type 'int' has no len\(\)" )
272+ msg = "Input must be a list / sequence of array-likes"
262273 with pytest .raises (TypeError , match = msg ):
263274 MultiIndex .from_arrays (arrays = invalid_sequence_of_arrays )
264275
0 commit comments