123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- import numpy as np
- import pytest
- import pandas._config.config as cf
- from pandas import Index
- class TestIndexRendering:
- @pytest.mark.parametrize(
- "index,expected",
- [
- # ASCII
- # short
- (
- Index(["a", "bb", "ccc"]),
- """Index(['a', 'bb', 'ccc'], dtype='object')""",
- ),
- # multiple lines
- (
- Index(["a", "bb", "ccc"] * 10),
- "Index(['a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', "
- "'bb', 'ccc', 'a', 'bb', 'ccc',\n"
- " 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', "
- "'bb', 'ccc', 'a', 'bb', 'ccc',\n"
- " 'a', 'bb', 'ccc', 'a', 'bb', 'ccc'],\n"
- " dtype='object')",
- ),
- # truncated
- (
- Index(["a", "bb", "ccc"] * 100),
- "Index(['a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a',\n"
- " ...\n"
- " 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc', 'a', 'bb', 'ccc'],\n"
- " dtype='object', length=300)",
- ),
- # Non-ASCII
- # short
- (
- Index(["あ", "いい", "ううう"]),
- """Index(['あ', 'いい', 'ううう'], dtype='object')""",
- ),
- # multiple lines
- (
- Index(["あ", "いい", "ううう"] * 10),
- (
- "Index(['あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', "
- "'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう',\n"
- " 'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', "
- "'あ', 'いい', 'ううう', 'あ', 'いい', 'ううう',\n"
- " 'あ', 'いい', 'ううう', 'あ', 'いい', "
- "'ううう'],\n"
- " dtype='object')"
- ),
- ),
- # truncated
- (
- Index(["あ", "いい", "ううう"] * 100),
- (
- "Index(['あ', 'いい', 'ううう', 'あ', 'いい', 'ううう', "
- "'あ', 'いい', 'ううう', 'あ',\n"
- " ...\n"
- " 'ううう', 'あ', 'いい', 'ううう', 'あ', 'いい', "
- "'ううう', 'あ', 'いい', 'ううう'],\n"
- " dtype='object', length=300)"
- ),
- ),
- ],
- )
- def test_string_index_repr(self, index, expected):
- result = repr(index)
- assert result == expected
- @pytest.mark.parametrize(
- "index,expected",
- [
- # short
- (
- Index(["あ", "いい", "ううう"]),
- ("Index(['あ', 'いい', 'ううう'], dtype='object')"),
- ),
- # multiple lines
- (
- Index(["あ", "いい", "ううう"] * 10),
- (
- "Index(['あ', 'いい', 'ううう', 'あ', 'いい', "
- "'ううう', 'あ', 'いい', 'ううう',\n"
- " 'あ', 'いい', 'ううう', 'あ', 'いい', "
- "'ううう', 'あ', 'いい', 'ううう',\n"
- " 'あ', 'いい', 'ううう', 'あ', 'いい', "
- "'ううう', 'あ', 'いい', 'ううう',\n"
- " 'あ', 'いい', 'ううう'],\n"
- " dtype='object')"
- ""
- ),
- ),
- # truncated
- (
- Index(["あ", "いい", "ううう"] * 100),
- (
- "Index(['あ', 'いい', 'ううう', 'あ', 'いい', "
- "'ううう', 'あ', 'いい', 'ううう',\n"
- " 'あ',\n"
- " ...\n"
- " 'ううう', 'あ', 'いい', 'ううう', 'あ', "
- "'いい', 'ううう', 'あ', 'いい',\n"
- " 'ううう'],\n"
- " dtype='object', length=300)"
- ),
- ),
- ],
- )
- def test_string_index_repr_with_unicode_option(self, index, expected):
- # Enable Unicode option -----------------------------------------
- with cf.option_context("display.unicode.east_asian_width", True):
- result = repr(index)
- assert result == expected
- def test_repr_summary(self):
- with cf.option_context("display.max_seq_items", 10):
- result = repr(Index(np.arange(1000)))
- assert len(result) < 200
- assert "..." in result
- def test_summary_bug(self):
- # GH#3869
- ind = Index(["{other}%s", "~:{range}:0"], name="A")
- result = ind._summary()
- # shouldn't be formatted accidentally.
- assert "~:{range}:0" in result
- assert "{other}%s" in result
- def test_index_repr_bool_nan(self):
- # GH32146
- arr = Index([True, False, np.nan], dtype=object)
- exp1 = arr.format()
- out1 = ["True", "False", "NaN"]
- assert out1 == exp1
- exp2 = repr(arr)
- out2 = "Index([True, False, nan], dtype='object')"
- assert out2 == exp2
- def test_format_different_scalar_lengths(self):
- # GH#35439
- idx = Index(["aaaaaaaaa", "b"])
- expected = ["aaaaaaaaa", "b"]
- assert idx.format() == expected
|