@@ -236,24 +236,27 @@ def set_levels(self, levels, level=None, inplace=False,
236
236
names=[u'foo', u'bar'])
237
237
"""
238
238
239
- if not (level is None or is_list_like (level )):
239
+ level_list_like = level is None or is_list_like (level )
240
+ levels_list_like = (levels != [] and
241
+ is_list_like (levels ) and
242
+ all (is_list_like (x ) for x in levels ))
243
+
244
+ if level_list_like :
245
+ # level is a list-like object of scalars
246
+ levels_error = ("`levels` and `level` are incompatible. "
247
+ "When `level` is list-like, `levels` must be a "
248
+ "list-like object containing list-like objects" )
249
+ if not levels_list_like :
250
+ raise TypeError (levels_error )
251
+ elif not level_list_like :
240
252
# level is a scalar
241
253
levels_error = ("`levels` and `level` are incompatible. "
242
254
"When `level` is a scalar, `levels` must be a "
243
255
" list-like object of scalars." )
244
- if not is_list_like (levels ):
245
- raise TypeError (levels_error )
246
- if any (is_list_like (x ) for x in levels ):
256
+ if levels_list_like :
247
257
raise TypeError (levels_error )
248
258
level = [level ]
249
259
levels = [levels ]
250
- elif level is None or is_list_like (level ):
251
- # level is a sequence of scalars
252
- levels_error = ("`levels` and `level` are incompatible. "
253
- "When `level` is list-like, `levels` must be a "
254
- "list-like object containing list-like objects" )
255
- if not (is_list_like (levels ) and all (is_list_like (x ) for x in levels )):
256
- raise TypeError (levels_error )
257
260
258
261
if inplace :
259
262
idx = self
0 commit comments