X7ROOT File Manager
Current Path:
/opt/alt/python38/lib/python3.8/site-packages/pip/_vendor/rich
opt
/
alt
/
python38
/
lib
/
python3.8
/
site-packages
/
pip
/
_vendor
/
rich
/
ðŸ“
..
📄
__init__.py
(5.8 KB)
📄
__main__.py
(8.6 KB)
ðŸ“
__pycache__
📄
_cell_widths.py
(9.86 KB)
📄
_emoji_codes.py
(136.95 KB)
📄
_emoji_replace.py
(1.04 KB)
📄
_export_format.py
(2.06 KB)
📄
_extension.py
(265 B)
📄
_inspect.py
(9.47 KB)
📄
_log_render.py
(3.15 KB)
📄
_loop.py
(1.21 KB)
📄
_palettes.py
(6.9 KB)
📄
_pick.py
(423 B)
📄
_ratio.py
(5.34 KB)
📄
_spinners.py
(19.45 KB)
📄
_stack.py
(351 B)
📄
_timer.py
(417 B)
📄
_win32_console.py
(22.29 KB)
📄
_windows.py
(1.88 KB)
📄
_windows_renderer.py
(2.72 KB)
📄
_wrap.py
(1.8 KB)
📄
abc.py
(890 B)
📄
align.py
(10.13 KB)
📄
ansi.py
(6.66 KB)
📄
bar.py
(3.19 KB)
📄
box.py
(9.63 KB)
📄
cells.py
(4.4 KB)
📄
color.py
(17.54 KB)
📄
color_triplet.py
(1.03 KB)
📄
columns.py
(6.96 KB)
📄
console.py
(93.64 KB)
📄
constrain.py
(1.26 KB)
📄
containers.py
(5.37 KB)
📄
control.py
(6.47 KB)
📄
default_styles.py
(7.77 KB)
📄
diagnose.py
(972 B)
📄
emoji.py
(2.44 KB)
📄
errors.py
(642 B)
📄
file_proxy.py
(1.58 KB)
📄
filesize.py
(2.45 KB)
📄
highlighter.py
(9.36 KB)
📄
json.py
(4.93 KB)
📄
jupyter.py
(3.18 KB)
📄
layout.py
(13.74 KB)
📄
live.py
(13.84 KB)
📄
live_render.py
(3.58 KB)
📄
logging.py
(11.2 KB)
📄
markup.py
(8.01 KB)
📄
measure.py
(5.18 KB)
📄
padding.py
(4.85 KB)
📄
pager.py
(828 B)
📄
palette.py
(3.32 KB)
📄
panel.py
(8.54 KB)
📄
pretty.py
(35.72 KB)
📄
progress.py
(58.35 KB)
📄
progress_bar.py
(7.97 KB)
📄
prompt.py
(11.04 KB)
📄
protocol.py
(1.36 KB)
📄
region.py
(166 B)
📄
repr.py
(4.34 KB)
📄
rule.py
(4.66 KB)
📄
scope.py
(2.78 KB)
📄
screen.py
(1.55 KB)
📄
segment.py
(23.66 KB)
📄
spinner.py
(4.27 KB)
📄
status.py
(4.32 KB)
📄
style.py
(25.63 KB)
📄
styled.py
(1.23 KB)
📄
syntax.py
(33.88 KB)
📄
table.py
(38.59 KB)
📄
terminal_theme.py
(3.29 KB)
📄
text.py
(43.62 KB)
📄
theme.py
(3.54 KB)
📄
themes.py
(102 B)
📄
traceback.py
(25.45 KB)
📄
tree.py
(8.95 KB)
Editing: repr.py
from functools import partial import inspect import sys from typing import ( Any, Callable, Iterable, List, Optional, overload, Union, Tuple, Type, TypeVar, ) T = TypeVar("T") Result = Iterable[Union[Any, Tuple[Any], Tuple[str, Any], Tuple[str, Any, Any]]] RichReprResult = Result class ReprError(Exception): """An error occurred when attempting to build a repr.""" @overload def auto(cls: Optional[Type[T]]) -> Type[T]: ... @overload def auto(*, angular: bool = False) -> Callable[[Type[T]], Type[T]]: ... def auto( cls: Optional[Type[T]] = None, *, angular: Optional[bool] = None ) -> Union[Type[T], Callable[[Type[T]], Type[T]]]: """Class decorator to create __repr__ from __rich_repr__""" def do_replace(cls: Type[T], angular: Optional[bool] = None) -> Type[T]: def auto_repr(self: T) -> str: """Create repr string from __rich_repr__""" repr_str: List[str] = [] append = repr_str.append angular: bool = getattr(self.__rich_repr__, "angular", False) # type: ignore[attr-defined] for arg in self.__rich_repr__(): # type: ignore[attr-defined] if isinstance(arg, tuple): if len(arg) == 1: append(repr(arg[0])) else: key, value, *default = arg if key is None: append(repr(value)) else: if len(default) and default[0] == value: continue append(f"{key}={value!r}") else: append(repr(arg)) if angular: return f"<{self.__class__.__name__} {' '.join(repr_str)}>" else: return f"{self.__class__.__name__}({', '.join(repr_str)})" def auto_rich_repr(self: Type[T]) -> Result: """Auto generate __rich_rep__ from signature of __init__""" try: signature = inspect.signature(self.__init__) for name, param in signature.parameters.items(): if param.kind == param.POSITIONAL_ONLY: yield getattr(self, name) elif param.kind in ( param.POSITIONAL_OR_KEYWORD, param.KEYWORD_ONLY, ): if param.default == param.empty: yield getattr(self, param.name) else: yield param.name, getattr(self, param.name), param.default except Exception as error: raise ReprError( f"Failed to auto generate __rich_repr__; {error}" ) from None if not hasattr(cls, "__rich_repr__"): auto_rich_repr.__doc__ = "Build a rich repr" cls.__rich_repr__ = auto_rich_repr # type: ignore[attr-defined] auto_repr.__doc__ = "Return repr(self)" cls.__repr__ = auto_repr # type: ignore[assignment] if angular is not None: cls.__rich_repr__.angular = angular # type: ignore[attr-defined] return cls if cls is None: return partial(do_replace, angular=angular) else: return do_replace(cls, angular=angular) @overload def rich_repr(cls: Optional[Type[T]]) -> Type[T]: ... @overload def rich_repr(*, angular: bool = False) -> Callable[[Type[T]], Type[T]]: ... def rich_repr( cls: Optional[Type[T]] = None, *, angular: bool = False ) -> Union[Type[T], Callable[[Type[T]], Type[T]]]: if cls is None: return auto(angular=angular) else: return auto(cls) if __name__ == "__main__": @auto class Foo: def __rich_repr__(self) -> Result: yield "foo" yield "bar", {"shopping": ["eggs", "ham", "pineapple"]} yield "buy", "hand sanitizer" foo = Foo() from pip._vendor.rich.console import Console console = Console() console.rule("Standard repr") console.print(foo) console.print(foo, width=60) console.print(foo, width=30) console.rule("Angular repr") Foo.__rich_repr__.angular = True # type: ignore[attr-defined] console.print(foo) console.print(foo, width=60) console.print(foo, width=30)
Upload File
Create Folder