diff options
| author | Pradyun Gedam <pradyunsg@users.noreply.github.com> | 2021-11-05 12:44:54 +0000 |
|---|---|---|
| committer | Pradyun Gedam <pradyunsg@users.noreply.github.com> | 2021-11-26 11:50:21 +0000 |
| commit | 7510fb04b6d12487a7de2d49cad8cb29366a6ae2 (patch) | |
| tree | ba62f995a40f45a06c0b288715ad29d678a436be /src/pip/_vendor/rich/abc.py | |
| parent | c6037c7bbda548caae24b3df698ee6cbc5b0d67a (diff) | |
| download | pip-7510fb04b6d12487a7de2d49cad8cb29366a6ae2.tar.gz | |
Vendor rich and required dependencies (pygments, typing_extensions)
This will enable building upon these libraries, to improve the
presentation style and output.
Diffstat (limited to 'src/pip/_vendor/rich/abc.py')
| -rw-r--r-- | src/pip/_vendor/rich/abc.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/pip/_vendor/rich/abc.py b/src/pip/_vendor/rich/abc.py new file mode 100644 index 000000000..e6e498efa --- /dev/null +++ b/src/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)) |
