@@ -924,22 +924,19 @@ def test_difference_incomparable_true(self, opname):
924924 with pytest .raises (TypeError , match = msg ):
925925 op (a )
926926
927- def test_symmetric_difference_mi (self , sort ):
927+ def test_symmetric_difference_mi (self , sort , request ):
928928 index1 = MultiIndex .from_tuples (zip (["foo" , "bar" , "baz" ], [1 , 2 , 3 ]))
929929 index2 = MultiIndex .from_tuples ([("foo" , 1 ), ("bar" , 3 )])
930930
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-
936931 for idx in [index1 , index2 ]:
937932 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+ )
941939 )
942-
943940 result = index1 .symmetric_difference (index2 , sort = sort )
944941 expected = MultiIndex .from_tuples ([("bar" , 2 ), ("baz" , 3 ), ("bar" , 3 )])
945942 if sort is None :
0 commit comments