diff --git a/apis/python/doc/uns_group.md b/apis/python/doc/uns_group.md
index 8a03c693c8..30786d77e5 100644
--- a/apis/python/doc/uns_group.md
+++ b/apis/python/doc/uns_group.md
@@ -64,15 +64,15 @@ def __iter__() -> List
Implements `for element in soma.uns: ...`
-
+
-#### show
+#### \_\_repr\_\_
```python
-def show(display_name="uns") -> None
+def __repr__() -> str
```
-Recursively displays the uns data.
+Default display for uns groups.
diff --git a/apis/python/src/tiledbsc/uns_group.py b/apis/python/src/tiledbsc/uns_group.py
index f9ef7181e3..e7cce425a4 100644
--- a/apis/python/src/tiledbsc/uns_group.py
+++ b/apis/python/src/tiledbsc/uns_group.py
@@ -102,41 +102,38 @@ def __iter__(self) -> List: # List[Union[UnsGroup, UnsArray]]
return iter(retval)
# ----------------------------------------------------------------
- def show(self, display_name="uns") -> None:
+ def __repr__(self) -> str:
+ """
+ Default display for uns groups.
+ """
+ return self._repr_aux()
+
+ # ----------------------------------------------------------------
+ def _repr_aux(self, display_name="uns", indent="") -> str:
"""
Recursively displays the uns data.
"""
- print()
- print(display_name + ":")
+ strings = []
+ strings.append(indent + display_name + ":")
+ # Scalars are stored as metadata, not 1D arrays
for k, v in self.metadata().items():
if not k.startswith("__"):
- print(k + ":", v)
+ strings.append(indent + k + ": " + repr(v))
+ # Now do subgroups, and non-scalar values
for e in self:
element_display_name = display_name + "/" + e.name
if isinstance(e, UnsGroup):
- e.show(display_name=element_display_name)
+ strings.append(
+ indent
+ + e._repr_aux(
+ display_name=element_display_name, indent=indent + " "
+ )
+ )
else:
- print(element_display_name + "/")
+ strings.append(indent + element_display_name + "/")
with e._open() as A:
- print(A[:])
-
- # uns:
- # scalar_float: 3.25
- # scalar_string: a string
- # [1]
- # [ 0. 1.25 2.5 3.75 5. 6.25 7.5 8.75 10. 11.25]
- # [ 0 10 20 30 40 50 60 70 80 90]
- # [1 2 3]
- # [[1. 2. 3.]
- # [4. 5. 6.]]
- #
- # uns/simple_dict:
- # B: one
- # [0]
- # ['a' 'b' 'c']
- # OrderedDict([('A', array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int32)), ('__tiledb_rows', array([b'0', b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9'],
- # dtype=object))])
- # ['0' '100' '200' '300' '400' '500' '600' '700' '800' '900']
+ strings.append(indent + str(A[:]))
+ return "\n".join(strings)
# ----------------------------------------------------------------
def from_anndata_uns(self, uns: ad.compat.OverloadedDict) -> None:
diff --git a/apis/python/tests/test_anndata_uns.py b/apis/python/tests/test_anndata_uns.py
index c1da2245dc..d0906de24d 100644
--- a/apis/python/tests/test_anndata_uns.py
+++ b/apis/python/tests/test_anndata_uns.py
@@ -53,7 +53,7 @@ def test_from_anndata_uns(tmp_path):
# Example of what we're verifying:
- # >>> soma.uns.show()
+ # >>> soma.uns
#
# uns:
# scalar_float: 3.25