Skip to content

Commit 94deaba

Browse files
committed
Split test, update expected, targeted xfails
1 parent 6c8fc89 commit 94deaba

File tree

1 file changed

+88
-11
lines changed

1 file changed

+88
-11
lines changed

pandas/tests/indexes/categorical/test_formats.py

Lines changed: 88 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,78 +10,132 @@
1010
from pandas import CategoricalIndex
1111

1212

13-
class TestCategoricalIndexRepr:
14-
@pytest.mark.xfail(using_string_dtype(), reason="repr different")
15-
def test_string_categorical_index_repr(self):
13+
class TestCategoricalIndexReprStringCategories:
14+
def test_string_categorical_index_repr(self, using_infer_string):
1615
# short
1716
idx = CategoricalIndex(["a", "bb", "ccc"])
1817
expected = """CategoricalIndex(['a', 'bb', 'ccc'], categories=['a', 'bb', 'ccc'], ordered=False, dtype='category')""" # noqa: E501
18+
if using_infer_string:
19+
expected = expected.replace(
20+
"categories=['a', 'bb', 'ccc']",
21+
"categories=[a, bb, ccc]",
22+
)
1923
assert repr(idx) == expected
2024

25+
@pytest.mark.xfail(using_string_dtype(), reason="Different padding on multi-line")
26+
def test_categorical_index_repr_multiline(self, using_infer_string):
2127
# multiple lines
2228
idx = CategoricalIndex(["a", "bb", "ccc"] * 10)
2329
expected = """CategoricalIndex(['a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a',
2430
'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb',
2531
'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc'],
2632
categories=['a', 'bb', 'ccc'], ordered=False, dtype='category')""" # noqa: E501
27-
33+
if using_infer_string:
34+
expected = expected.replace(
35+
"categories=['a', 'bb', 'ccc']",
36+
"categories=[a, bb, ccc]",
37+
)
2838
assert repr(idx) == expected
2939

40+
@pytest.mark.xfail(using_string_dtype(), reason="Different padding on multi-line")
41+
def test_categorical_index_repr_truncated(self, using_infer_string):
3042
# truncated
3143
idx = CategoricalIndex(["a", "bb", "ccc"] * 100)
3244
expected = """CategoricalIndex(['a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a',
3345
...
3446
'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc'],
3547
categories=['a', 'bb', 'ccc'], ordered=False, dtype='category', length=300)""" # noqa: E501
36-
48+
if using_infer_string:
49+
expected = expected.replace(
50+
"categories=['a', 'bb', 'ccc']",
51+
"categories=[a, bb, ccc]",
52+
)
3753
assert repr(idx) == expected
3854

55+
def test_categorical_index_repr_many_categories(self, using_infer_string):
3956
# larger categories
4057
idx = CategoricalIndex(list("abcdefghijklmmo"))
4158
expected = """CategoricalIndex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
4259
'm', 'm', 'o'],
4360
categories=['a', 'b', 'c', 'd', ..., 'k', 'l', 'm', 'o'], ordered=False, dtype='category')""" # noqa: E501
44-
61+
if using_infer_string:
62+
expected = expected.replace(
63+
"categories=['a', 'b', 'c', 'd', ..., 'k', 'l', 'm', 'o']",
64+
"categories=[a, b, c, d, ..., k, l, m, o]",
65+
)
4566
assert repr(idx) == expected
4667

68+
def test_categorical_index_repr_unicode(self, using_infer_string):
4769
# short
4870
idx = CategoricalIndex(["あ", "いい", "ううう"])
4971
expected = """CategoricalIndex(['あ', 'いい', 'ううう'], categories=['あ', 'いい', 'ううう'], ordered=False, dtype='category')""" # noqa: E501
72+
if using_infer_string:
73+
expected = expected.replace(
74+
"categories=['あ', 'いい', 'ううう']",
75+
"categories=[あ, いい, ううう]",
76+
)
5077
assert repr(idx) == expected
5178

79+
@pytest.mark.xfail(using_string_dtype(), reason="Different padding on multi-line")
80+
def test_categorical_index_repr_unicode_multiline(self, using_infer_string):
5281
# multiple lines
5382
idx = CategoricalIndex(["あ", "いい", "ううう"] * 10)
5483
expected = """CategoricalIndex(['あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ',
5584
'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい',
5685
'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう'],
5786
categories=['あ', 'いい', 'ううう'], ordered=False, dtype='category')""" # noqa: E501
58-
87+
if using_infer_string:
88+
expected = expected.replace(
89+
"categories=['あ', 'いい', 'ううう']",
90+
"categories=[あ, いい, ううう]",
91+
)
5992
assert repr(idx) == expected
6093

94+
@pytest.mark.xfail(using_string_dtype(), reason="Different padding on multi-line")
95+
def test_categorical_index_repr_unicode_truncated(self, using_infer_string):
6196
# truncated
6297
idx = CategoricalIndex(["あ", "いい", "ううう"] * 100)
6398
expected = """CategoricalIndex(['あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ',
6499
...
65100
'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう'],
66101
categories=['あ', 'いい', 'ううう'], ordered=False, dtype='category', length=300)""" # noqa: E501
67-
102+
if using_infer_string:
103+
expected = expected.replace(
104+
"categories=['あ', 'いい', 'ううう']",
105+
"categories=[あ, いい, ううう]",
106+
)
68107
assert repr(idx) == expected
69108

109+
def test_categorical_index_repr_unicode_many_categories(self, using_infer_string):
70110
# larger categories
71111
idx = CategoricalIndex(list("あいうえおかきくけこさしすせそ"))
72112
expected = """CategoricalIndex(['あ', 'い', 'う', 'え', 'お', 'か', 'き', 'く', 'け', 'こ', 'さ', 'し',
73113
'す', 'せ', 'そ'],
74114
categories=['あ', 'い', 'う', 'え', ..., 'し', 'す', 'せ', 'そ'], ordered=False, dtype='category')""" # noqa: E501
75-
115+
if using_infer_string:
116+
expected = expected.replace(
117+
"categories=['あ', 'い', 'う', 'え', ..., 'し', 'す', 'せ', 'そ']",
118+
"categories=[あ, い, う, え, ..., し, す, せ, そ]",
119+
)
76120
assert repr(idx) == expected
77121

78-
# Enable Unicode option -----------------------------------------
122+
def test_categorical_index_repr_east_asian_width(self, using_infer_string):
79123
with cf.option_context("display.unicode.east_asian_width", True):
80124
# short
81125
idx = CategoricalIndex(["あ", "いい", "ううう"])
82126
expected = """CategoricalIndex(['あ', 'いい', 'ううう'], categories=['あ', 'いい', 'ううう'], ordered=False, dtype='category')""" # noqa: E501
127+
if using_infer_string:
128+
expected = expected.replace(
129+
"categories=['あ', 'いい', 'ううう']",
130+
"categories=[あ, いい, ううう]",
131+
)
83132
assert repr(idx) == expected
84133

134+
@pytest.mark.xfail(using_string_dtype(), reason="Different padding on multi-line")
135+
def test_categorical_index_repr_east_asian_width_multiline(
136+
self, using_infer_string
137+
):
138+
with cf.option_context("display.unicode.east_asian_width", True):
85139
# multiple lines
86140
idx = CategoricalIndex(["あ", "いい", "ううう"] * 10)
87141
expected = """CategoricalIndex(['あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい',
@@ -90,8 +144,18 @@ def test_string_categorical_index_repr(self):
90144
'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう'],
91145
categories=['あ', 'いい', 'ううう'], ordered=False, dtype='category')""" # noqa: E501
92146

147+
if using_infer_string:
148+
expected = expected.replace(
149+
"categories=['あ', 'いい', 'ううう']",
150+
"categories=[あ, いい, ううう]",
151+
)
93152
assert repr(idx) == expected
94153

154+
@pytest.mark.xfail(using_string_dtype(), reason="Different padding on multi-line")
155+
def test_categorical_index_repr_east_asian_width_truncated(
156+
self, using_infer_string
157+
):
158+
with cf.option_context("display.unicode.east_asian_width", True):
95159
# truncated
96160
idx = CategoricalIndex(["あ", "いい", "ううう"] * 100)
97161
expected = """CategoricalIndex(['あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい',
@@ -101,12 +165,25 @@ def test_string_categorical_index_repr(self):
101165
'あ', 'いい', 'ううう'],
102166
categories=['あ', 'いい', 'ううう'], ordered=False, dtype='category', length=300)""" # noqa: E501
103167

168+
if using_infer_string:
169+
expected = expected.replace(
170+
"categories=['あ', 'いい', 'ううう']",
171+
"categories=[あ, いい, ううう]",
172+
)
104173
assert repr(idx) == expected
105174

106-
# larger categories
175+
def test_categorical_index_repr_east_asian_width_many_categories(
176+
self, using_infer_string
177+
):
178+
with cf.option_context("display.unicode.east_asian_width", True):
107179
idx = CategoricalIndex(list("あいうえおかきくけこさしすせそ"))
108180
expected = """CategoricalIndex(['あ', 'い', 'う', 'え', 'お', 'か', 'き', 'く', 'け', 'こ',
109181
'さ', 'し', 'す', 'せ', 'そ'],
110182
categories=['あ', 'い', 'う', 'え', ..., 'し', 'す', 'せ', 'そ'], ordered=False, dtype='category')""" # noqa: E501
111183

184+
if using_infer_string:
185+
expected = expected.replace(
186+
"categories=['あ', 'い', 'う', 'え', ..., 'し', 'す', 'せ', 'そ']",
187+
"categories=[あ, い, う, え, ..., し, す, せ, そ]",
188+
)
112189
assert repr(idx) == expected

0 commit comments

Comments
 (0)