Skip to content

Feature Request: First-class representation of nested attributes #11240

@etienneschalk

Description

@etienneschalk

Is your feature request related to a problem?

Formats such as Zarr store group attributes in JSON (e.g. .zattrs), so attributes can be deeply nested (objects and arrays). The current xarray APIs and built-in representations (e.g. repr(), HTML repr in Jupyter) typically expose attributes in a flat or single-level way. That makes it hard to inspect or document complex metadata in the IDE or in notebooks. Users either see a flattened view, truncated output, or have to manually traverse raw attribute dicts instead of seeing the structure xarray actually has at hand.

Xarray current HTML representation (only top-level attributes are shown, with full content):

Image

Describe the solution you'd like

First-class support for nested attributes in xarray’s APIs and/or representations, for example:

  • Repr / HTML repr: Optionally render nested attributes as an expandable/collapsible tree (or at least with clear indentation/structure) instead of a single-level or flattened dump, so users can see the full hierarchy in Jupyter and other environments that rely on xarray’s built-in repr.

The goal is that opening a dataset with rich nested metadata (e.g. from Zarr) feels natural in xarray: the repr and APIs should reflect that nesting rather than flattening or hiding it.

Describe alternatives you've considered

  • Manual traversal: Users can already walk ds.attrs (or group attrs) and pretty-print themselves. This doesn’t improve the default experience in Jupyter or the consistency of tooling.
  • Downstream-only handling: Some tools (e.g. Scientific Data Viewer) can render nested attributes in a tree view on the viewer side. That helps when using those tools but doesn’t improve the experience for users who only use xarray’s built-in repr or other consumers that follow xarray’s representation.
  • Leaving attributes as “opaque” dicts: Keeps implementation simple but under-serves users and formats (like Zarr) where nested metadata is the norm.

Example: Scientific Data Viewer nested representation of nested attributes with collapsible sections:

Image

Additional context

  • This would benefit anyone opening Zarr (or similar) datasets with rich .zattrs-style metadata in Jupyter or scripts.
  • Downstream projects (e.g. Scientific Data Viewer) could align their UIs with xarray’s representation for consistency when the same dataset is opened in xarray and in other tools.
  • Reference: Scientific Data Viewer – xarray and nested attributes (doc that motivated this request).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions