diff options
Diffstat (limited to 'third_party/python/pip/pip/_vendor/rich/abc.py')
-rw-r--r-- | third_party/python/pip/pip/_vendor/rich/abc.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/third_party/python/pip/pip/_vendor/rich/abc.py b/third_party/python/pip/pip/_vendor/rich/abc.py new file mode 100644 index 0000000000..e6e498efab --- /dev/null +++ b/third_party/python/pip/pip/_vendor/rich/abc.py @@ -0,0 +1,33 @@ +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)) |