@@ -924,22 +924,19 @@ def test_difference_incomparable_true(self, opname):
924
924
with pytest .raises (TypeError , match = msg ):
925
925
op (a )
926
926
927
- def test_symmetric_difference_mi (self , sort ):
927
+ def test_symmetric_difference_mi (self , sort , request ):
928
928
index1 = MultiIndex .from_tuples (zip (["foo" , "bar" , "baz" ], [1 , 2 , 3 ]))
929
929
index2 = MultiIndex .from_tuples ([("foo" , 1 ), ("bar" , 3 )])
930
930
931
- def has_mixed_types (level ):
932
- return any (isinstance (x , str ) for x in level ) and any (
933
- isinstance (x , int ) for x in level
934
- )
935
-
936
931
for idx in [index1 , index2 ]:
937
932
for lvl in range (idx .nlevels ):
938
- if has_mixed_types (idx .get_level_values (lvl )):
939
- pytest .skip (
940
- f"Mixed types in MultiIndex level { lvl } are not orderable"
933
+ level = idx .get_level_values (lvl )
934
+ if getattr (level , "inferred_type" , None ) in {"mixed" , "mixed-integer" , "mixed-int-string" }:
935
+ request .applymarker (
936
+ pytest .mark .xfail (
937
+ reason = f"Mixed types in MultiIndex level { lvl } are not orderable"
938
+ )
941
939
)
942
-
943
940
result = index1 .symmetric_difference (index2 , sort = sort )
944
941
expected = MultiIndex .from_tuples ([("bar" , 2 ), ("baz" , 3 ), ("bar" , 3 )])
945
942
if sort is None :
0 commit comments