"
- for k, v in attrs.items()
- )
+ attrs_dl = ""
+ for k, v in attrs.items():
+ # Supply default repr values for certain built-in type (so far, just dict)
+
+ # Check for a _repr_html_inline_ method
+ if hasattr(v, "_repr_html_inline_"):
+ repr_html_inline_fn = v._repr_html_inline_
+ elif isinstance(v, dict):
+ repr_html_inline_fn = lambda: _default_repr_html_inline_dict(v) # noqa: B023
+ else:
+ repr_html_inline_fn = None
+ # Check for a _repr_html_ method
+ if hasattr(v, "_repr_html_"):
+ repr_html_fn = v._repr_html_
+ elif isinstance(v, dict):
+ repr_html_fn = lambda: _default_repr_html_dict(v) # noqa: B023
+ else:
+ repr_html_fn = None
+
+ if repr_html_inline_fn and repr_html_fn:
+ # If we have both, then consider if we need to include an expand option
+ inline_repr = repr_html_inline_fn()
+ full_repr = repr_html_fn()
+ if inline_repr == full_repr:
+ value_representation = inline_repr
+ else:
+ # Show the inline, with an option to expand and show the full
+ value_representation = _collapsible_repr(inline_repr, full_repr)
+ elif repr_html_inline_fn:
+ value_representation = escape(repr_html_inline_fn())
+ else:
+ value_representation = escape(str(v))
+
+ attrs_dl += (
+ f"