-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
BUG: Fix Index.__repr__ when display.max_seq_items
= 1
#38443
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Thanks @skvrahul for the PR. please add a test. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this issue needs to confirm / add any tests that we are missing
@@ -382,7 +382,11 @@ def best_len(values: List[str]) -> int: | |||
summary = f"[{first}, {last}]{close}" | |||
else: | |||
|
|||
if n > max_seq_items: | |||
if max_seq_items == 1: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you also cover in a test the max_seq_items == 0 case (I think we have this but maybe not). Also pls confirm that we have a test for n == max_seq_items.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like we don't have a test for n == max_seq_items
. Will cover these in my tests.
Just wanted to confirm that this is the relevant location for adding these?
pandas/pandas/tests/indexes/multi/test_formats.py
Lines 92 to 119 in e2dec8d
def test_repr(self, idx): | |
result = idx[:1].__repr__() | |
expected = """\ | |
MultiIndex([('foo', 'one')], | |
names=['first', 'second'])""" | |
assert result == expected | |
result = idx.__repr__() | |
expected = """\ | |
MultiIndex([('foo', 'one'), | |
('foo', 'two'), | |
('bar', 'one'), | |
('baz', 'two'), | |
('qux', 'one'), | |
('qux', 'two')], | |
names=['first', 'second'])""" | |
assert result == expected | |
with pd.option_context("display.max_seq_items", 5): | |
result = idx.__repr__() | |
expected = """\ | |
MultiIndex([('foo', 'one'), | |
('foo', 'two'), | |
... | |
('qux', 'one'), | |
('qux', 'two')], | |
names=['first', 'second'], length=6)""" | |
assert result == expected |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah there plus some generic Index ones (look in pandas/tests/indexes/); you may have to grep around a bit
e.g.
~/pandas-dev$ grep -r max_seq_items pandas/tests/
pandas/tests/io/formats/test_format.py: with option_context("display.max_seq_items", 2000):
pandas/tests/io/formats/test_format.py: with option_context("display.max_seq_items", 5):
pandas/tests/groupby/test_groupby.py: "max_seq_items, expected",
pandas/tests/groupby/test_groupby.py:def test_groups_repr_truncates(max_seq_items, expected):
pandas/tests/groupby/test_groupby.py: with pd.option_context("display.max_seq_items", max_seq_items):
pandas/tests/indexes/multi/test_formats.py: with pd.option_context("display.max_seq_items", None):
pandas/tests/indexes/multi/test_formats.py: with pd.option_context("display.max_seq_items", 5):
pandas/tests/indexes/common.py: with pd.option_context("display.max_seq_items", None):
pandas/tests/indexes/base_class/test_formats.py: with cf.option_context("display.max_seq_items", 10):
i think pandas/tests/indexes/base_class/test_formats.py: with cf.option_context("display.max_seq_items", 10):
has a number of tests as well
@jreback @simonjayhawkins
and not
|
Checked on |
@@ -382,7 +382,11 @@ def best_len(values: List[str]) -> int: | |||
summary = f"[{first}, {last}]{close}" | |||
else: | |||
|
|||
if n > max_seq_items: | |||
if max_seq_items == 1: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah there plus some generic Index ones (look in pandas/tests/indexes/); you may have to grep around a bit
e.g.
~/pandas-dev$ grep -r max_seq_items pandas/tests/
pandas/tests/io/formats/test_format.py: with option_context("display.max_seq_items", 2000):
pandas/tests/io/formats/test_format.py: with option_context("display.max_seq_items", 5):
pandas/tests/groupby/test_groupby.py: "max_seq_items, expected",
pandas/tests/groupby/test_groupby.py:def test_groups_repr_truncates(max_seq_items, expected):
pandas/tests/groupby/test_groupby.py: with pd.option_context("display.max_seq_items", max_seq_items):
pandas/tests/indexes/multi/test_formats.py: with pd.option_context("display.max_seq_items", None):
pandas/tests/indexes/multi/test_formats.py: with pd.option_context("display.max_seq_items", 5):
pandas/tests/indexes/common.py: with pd.option_context("display.max_seq_items", None):
pandas/tests/indexes/base_class/test_formats.py: with cf.option_context("display.max_seq_items", 10):
i think pandas/tests/indexes/base_class/test_formats.py: with cf.option_context("display.max_seq_items", 10):
has a number of tests as well
@@ -118,6 +118,28 @@ def test_repr(self, idx): | |||
names=['first', 'second'], length=6)""" | |||
assert result == expected | |||
|
|||
# display.max_seq_items == n |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
prob better to make a new test as easier to see / run
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it. Moved this to it's own test case
@jreback Added tests and moved one of the tests to its own TC. |
doc/source/whatsnew/v1.3.0.rst
Outdated
@@ -144,8 +144,6 @@ Performance improvements | |||
Bug fixes | |||
~~~~~~~~~ | |||
|
|||
- | |||
- | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you undo this
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. Have reverted the changes.
Revert deleted bullet points
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pls also merge master
@@ -382,7 +382,11 @@ def best_len(values: List[str]) -> int: | |||
summary = f"[{first}, {last}]{close}" | |||
else: | |||
|
|||
if n > max_seq_items: | |||
if max_seq_items == 1: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we have a case of max_seq_items==0 ? (I think this is a valid value), < 0 is restricted i am pretty sure?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes we do. Max_seq_items ==0 implies unlimited if I'm not mistaken
thanks @skvrahul very nice |
display.max_seq_items
= 1 #38415black pandas
git diff upstream/master -u -- "*.py" | flake8 --diff