Skip to content

Commit 3fc0ee5

Browse files
mathauseheadtr1ck
andauthored
test and fix empty xindexes repr (#8521)
* test and fix empty xindexes repr * fix spaces * max: use default * ignore typing * Apply suggestions from code review Co-authored-by: Michael Niklas <[email protected]> * Apply suggestions from code review --------- Co-authored-by: Michael Niklas <[email protected]>
1 parent ce1af97 commit 3fc0ee5

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

xarray/core/formatting.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ def summarize_attr(key, value, col_width=None):
357357

358358

359359
def _calculate_col_width(col_items):
360-
max_name_length = max(len(str(s)) for s in col_items) if col_items else 0
360+
max_name_length = max((len(str(s)) for s in col_items), default=0)
361361
col_width = max(max_name_length, 7) + 6
362362
return col_width
363363

xarray/tests/test_formatting.py

+30
Original file line numberDiff line numberDiff line change
@@ -773,3 +773,33 @@ def __array__(self, dtype=None):
773773
# These will crash if var.data are converted to numpy arrays:
774774
var.__repr__()
775775
var._repr_html_()
776+
777+
778+
@pytest.mark.parametrize("as_dataset", (False, True))
779+
def test_format_xindexes_none(as_dataset: bool) -> None:
780+
# ensure repr for empty xindexes can be displayed #8367
781+
782+
expected = """\
783+
Indexes:
784+
*empty*"""
785+
expected = dedent(expected)
786+
787+
obj: xr.DataArray | xr.Dataset = xr.DataArray()
788+
obj = obj._to_temp_dataset() if as_dataset else obj
789+
790+
actual = repr(obj.xindexes)
791+
assert actual == expected
792+
793+
794+
@pytest.mark.parametrize("as_dataset", (False, True))
795+
def test_format_xindexes(as_dataset: bool) -> None:
796+
expected = """\
797+
Indexes:
798+
x PandasIndex"""
799+
expected = dedent(expected)
800+
801+
obj: xr.DataArray | xr.Dataset = xr.DataArray([1], coords={"x": [1]})
802+
obj = obj._to_temp_dataset() if as_dataset else obj
803+
804+
actual = repr(obj.xindexes)
805+
assert actual == expected

0 commit comments

Comments
 (0)