1from typing
import Any, cast, Set, TYPE_CHECKING
19def rich_cast(renderable: object) ->
"RenderableType":
20 """Cast an object to a renderable by calling __rich__ if present.
23 renderable (object): A potentially renderable object
26 object: The result of recursively calling __rich__.
30 rich_visited_set: Set[type] = set()
31 while hasattr(renderable,
"__rich__")
and not isclass(renderable):
33 if hasattr(renderable, _GIBBERISH):
34 return repr(renderable)
35 cast_method =
getattr(renderable,
"__rich__")
37 renderable_type = type(renderable)
38 if renderable_type
in rich_visited_set:
42 return cast(RenderableType, renderable)