summaryrefslogtreecommitdiff
path: root/src/pip/_vendor/rich/abc.py
diff options
context:
space:
mode:
authorPradyun Gedam <pradyunsg@users.noreply.github.com>2021-11-05 12:44:54 +0000
committerPradyun Gedam <pradyunsg@users.noreply.github.com>2021-11-26 11:50:21 +0000
commit7510fb04b6d12487a7de2d49cad8cb29366a6ae2 (patch)
treeba62f995a40f45a06c0b288715ad29d678a436be /src/pip/_vendor/rich/abc.py
parentc6037c7bbda548caae24b3df698ee6cbc5b0d67a (diff)
downloadpip-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.py33
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))