@@ -142,6 +142,15 @@ def test_from_arrays_iterator(idx):
142
142
MultiIndex .from_arrays (0 )
143
143
144
144
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
+
145
154
def test_from_arrays_index_series_datetimetz ():
146
155
idx1 = pd .date_range ('2015-01-01 10:00' , freq = 'D' , periods = 3 ,
147
156
tz = 'US/Eastern' )
@@ -254,11 +263,13 @@ def test_from_arrays_empty():
254
263
255
264
256
265
@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
+ ])
258
271
def 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"
262
273
with pytest .raises (TypeError , match = msg ):
263
274
MultiIndex .from_arrays (arrays = invalid_sequence_of_arrays )
264
275
0 commit comments