123456789101112131415161718192021222324252627282930313233 |
- from abc import ABC
- class RichRenderable(ABC):
- """An abstract base class for Rich renderables.
- Note that there is no need to extend this class, the intended use is to check if an
- object supports the Rich renderable protocol. For example::
- if isinstance(my_object, RichRenderable):
- console.print(my_object)
- """
- @classmethod
- def __subclasshook__(cls, other: type) -> bool:
- """Check if this class supports the rich render protocol."""
- return hasattr(other, "__rich_console__") or hasattr(other, "__rich__")
- if __name__ == "__main__": # pragma: no cover
- from pip._vendor.rich.text import Text
- t = Text()
- print(isinstance(Text, RichRenderable))
- print(isinstance(t, RichRenderable))
- class Foo:
- pass
- f = Foo()
- print(isinstance(f, RichRenderable))
- print(isinstance("", RichRenderable))
|