Current Path: > > opt > alt > python38 > lib > > python3.8 > site-packages > pip > _vendor > rich
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
__init__.py | File | 5944 bytes | November 13 2023 21:40:26. | |
__main__.py | File | 8808 bytes | November 13 2023 21:40:26. | |
_cell_widths.py | File | 10096 bytes | November 13 2023 21:40:26. | |
_emoji_codes.py | File | 140235 bytes | November 13 2023 21:40:26. | |
_emoji_replace.py | File | 1064 bytes | November 13 2023 21:40:26. | |
_export_format.py | File | 2114 bytes | November 13 2023 21:40:26. | |
_extension.py | File | 265 bytes | November 13 2023 21:40:26. | |
_inspect.py | File | 9695 bytes | November 13 2023 21:40:26. | |
_log_render.py | File | 3225 bytes | November 13 2023 21:40:26. | |
_loop.py | File | 1236 bytes | November 13 2023 21:40:26. | |
_palettes.py | File | 7063 bytes | November 13 2023 21:40:26. | |
_pick.py | File | 423 bytes | November 13 2023 21:40:26. | |
_ratio.py | File | 5472 bytes | November 13 2023 21:40:26. | |
_spinners.py | File | 19919 bytes | November 13 2023 21:40:26. | |
_stack.py | File | 351 bytes | November 13 2023 21:40:26. | |
_timer.py | File | 417 bytes | November 13 2023 21:40:26. | |
_win32_console.py | File | 22820 bytes | November 13 2023 21:40:26. | |
_windows.py | File | 1926 bytes | November 13 2023 21:40:26. | |
_windows_renderer.py | File | 2783 bytes | November 13 2023 21:40:26. | |
_wrap.py | File | 1840 bytes | November 13 2023 21:40:26. | |
abc.py | File | 890 bytes | November 13 2023 21:40:26. | |
align.py | File | 10368 bytes | November 13 2023 21:40:26. | |
ansi.py | File | 6820 bytes | November 13 2023 21:40:26. | |
bar.py | File | 3264 bytes | November 13 2023 21:40:26. | |
box.py | File | 9864 bytes | November 13 2023 21:40:26. | |
cells.py | File | 4503 bytes | November 13 2023 21:40:26. | |
color.py | File | 17957 bytes | November 13 2023 21:40:26. | |
color_triplet.py | File | 1054 bytes | November 13 2023 21:40:26. | |
columns.py | File | 7131 bytes | November 13 2023 21:40:26. | |
console.py | File | 95885 bytes | November 13 2023 21:40:26. | |
constrain.py | File | 1288 bytes | November 13 2023 21:40:26. | |
containers.py | File | 5497 bytes | November 13 2023 21:40:26. | |
control.py | File | 6630 bytes | November 13 2023 21:40:26. | |
default_styles.py | File | 7954 bytes | November 13 2023 21:40:26. | |
diagnose.py | File | 972 bytes | November 13 2023 21:40:26. | |
emoji.py | File | 2501 bytes | November 13 2023 21:40:26. | |
errors.py | File | 642 bytes | November 13 2023 21:40:26. | |
file_proxy.py | File | 1616 bytes | November 13 2023 21:40:26. | |
filesize.py | File | 2507 bytes | November 13 2023 21:40:26. | |
highlighter.py | File | 9585 bytes | November 13 2023 21:40:26. | |
json.py | File | 5051 bytes | November 13 2023 21:40:26. | |
jupyter.py | File | 3252 bytes | November 13 2023 21:40:26. | |
layout.py | File | 14074 bytes | November 13 2023 21:40:26. | |
live.py | File | 14172 bytes | November 13 2023 21:40:26. | |
live_render.py | File | 3667 bytes | November 13 2023 21:40:26. | |
logging.py | File | 11471 bytes | November 13 2023 21:40:26. | |
markup.py | File | 8198 bytes | November 13 2023 21:40:26. | |
measure.py | File | 5305 bytes | November 13 2023 21:40:26. | |
padding.py | File | 4970 bytes | November 13 2023 21:40:26. | |
pager.py | File | 828 bytes | November 13 2023 21:40:26. | |
palette.py | File | 3396 bytes | November 13 2023 21:40:26. | |
panel.py | File | 8744 bytes | November 13 2023 21:40:26. | |
pretty.py | File | 36576 bytes | November 13 2023 21:40:26. | |
progress.py | File | 59746 bytes | November 13 2023 21:40:26. | |
progress_bar.py | File | 8161 bytes | November 13 2023 21:40:26. | |
prompt.py | File | 11303 bytes | November 13 2023 21:40:26. | |
protocol.py | File | 1391 bytes | November 13 2023 21:40:26. | |
region.py | File | 166 bytes | November 13 2023 21:40:26. | |
repr.py | File | 4449 bytes | November 13 2023 21:40:26. | |
rule.py | File | 4773 bytes | November 13 2023 21:40:26. | |
scope.py | File | 2842 bytes | November 13 2023 21:40:26. | |
screen.py | File | 1591 bytes | November 13 2023 21:40:26. | |
segment.py | File | 24224 bytes | November 13 2023 21:40:26. | |
spinner.py | File | 4374 bytes | November 13 2023 21:40:26. | |
status.py | File | 4425 bytes | November 13 2023 21:40:26. | |
style.py | File | 26240 bytes | November 13 2023 21:40:26. | |
styled.py | File | 1258 bytes | November 13 2023 21:40:26. | |
syntax.py | File | 34697 bytes | November 13 2023 21:40:26. | |
table.py | File | 39515 bytes | November 13 2023 21:40:26. | |
terminal_theme.py | File | 3370 bytes | November 13 2023 21:40:26. | |
text.py | File | 44666 bytes | November 13 2023 21:40:26. | |
theme.py | File | 3627 bytes | November 13 2023 21:40:26. | |
themes.py | File | 102 bytes | November 13 2023 21:40:26. | |
traceback.py | File | 26060 bytes | November 13 2023 21:40:26. | |
tree.py | File | 9169 bytes | November 13 2023 21:40:26. |
from typing import TYPE_CHECKING, Optional from .align import AlignMethod from .box import ROUNDED, Box from .jupyter import JupyterMixin from .measure import Measurement, measure_renderables from .padding import Padding, PaddingDimensions from .segment import Segment from .style import StyleType from .text import Text, TextType if TYPE_CHECKING: from .console import Console, ConsoleOptions, RenderableType, RenderResult class Panel(JupyterMixin): """A console renderable that draws a border around its contents. Example: >>> console.print(Panel("Hello, World!")) Args: renderable (RenderableType): A console renderable object. box (Box, optional): A Box instance that defines the look of the border (see :ref:`appendix_box`. Defaults to box.ROUNDED. safe_box (bool, optional): Disable box characters that don't display on windows legacy terminal with *raster* fonts. Defaults to True. expand (bool, optional): If True the panel will stretch to fill the console width, otherwise it will be sized to fit the contents. Defaults to True. style (str, optional): The style of the panel (border and contents). Defaults to "none". border_style (str, optional): The style of the border. Defaults to "none". width (Optional[int], optional): Optional width of panel. Defaults to None to auto-detect. height (Optional[int], optional): Optional height of panel. Defaults to None to auto-detect. padding (Optional[PaddingDimensions]): Optional padding around renderable. Defaults to 0. highlight (bool, optional): Enable automatic highlighting of panel title (if str). Defaults to False. """ def __init__( self, renderable: "RenderableType", box: Box = ROUNDED, *, title: Optional[TextType] = None, title_align: AlignMethod = "center", subtitle: Optional[TextType] = None, subtitle_align: AlignMethod = "center", safe_box: Optional[bool] = None, expand: bool = True, style: StyleType = "none", border_style: StyleType = "none", width: Optional[int] = None, height: Optional[int] = None, padding: PaddingDimensions = (0, 1), highlight: bool = False, ) -> None: self.renderable = renderable self.box = box self.title = title self.title_align: AlignMethod = title_align self.subtitle = subtitle self.subtitle_align = subtitle_align self.safe_box = safe_box self.expand = expand self.style = style self.border_style = border_style self.width = width self.height = height self.padding = padding self.highlight = highlight @classmethod def fit( cls, renderable: "RenderableType", box: Box = ROUNDED, *, title: Optional[TextType] = None, title_align: AlignMethod = "center", subtitle: Optional[TextType] = None, subtitle_align: AlignMethod = "center", safe_box: Optional[bool] = None, style: StyleType = "none", border_style: StyleType = "none", width: Optional[int] = None, padding: PaddingDimensions = (0, 1), ) -> "Panel": """An alternative constructor that sets expand=False.""" return cls( renderable, box, title=title, title_align=title_align, subtitle=subtitle, subtitle_align=subtitle_align, safe_box=safe_box, style=style, border_style=border_style, width=width, padding=padding, expand=False, ) @property def _title(self) -> Optional[Text]: if self.title: title_text = ( Text.from_markup(self.title) if isinstance(self.title, str) else self.title.copy() ) title_text.end = "" title_text.plain = title_text.plain.replace("\n", " ") title_text.no_wrap = True title_text.expand_tabs() title_text.pad(1) return title_text return None @property def _subtitle(self) -> Optional[Text]: if self.subtitle: subtitle_text = ( Text.from_markup(self.subtitle) if isinstance(self.subtitle, str) else self.subtitle.copy() ) subtitle_text.end = "" subtitle_text.plain = subtitle_text.plain.replace("\n", " ") subtitle_text.no_wrap = True subtitle_text.expand_tabs() subtitle_text.pad(1) return subtitle_text return None def __rich_console__( self, console: "Console", options: "ConsoleOptions" ) -> "RenderResult": _padding = Padding.unpack(self.padding) renderable = ( Padding(self.renderable, _padding) if any(_padding) else self.renderable ) style = console.get_style(self.style) border_style = style + console.get_style(self.border_style) width = ( options.max_width if self.width is None else min(options.max_width, self.width) ) safe_box: bool = console.safe_box if self.safe_box is None else self.safe_box box = self.box.substitute(options, safe=safe_box) title_text = self._title if title_text is not None: title_text.style = border_style child_width = ( width - 2 if self.expand else console.measure( renderable, options=options.update_width(width - 2) ).maximum ) child_height = self.height or options.height or None if child_height: child_height -= 2 if title_text is not None: child_width = min( options.max_width - 2, max(child_width, title_text.cell_len + 2) ) width = child_width + 2 child_options = options.update( width=child_width, height=child_height, highlight=self.highlight ) lines = console.render_lines(renderable, child_options, style=style) line_start = Segment(box.mid_left, border_style) line_end = Segment(f"{box.mid_right}", border_style) new_line = Segment.line() if title_text is None or width <= 4: yield Segment(box.get_top([width - 2]), border_style) else: title_text.align(self.title_align, width - 4, character=box.top) yield Segment(box.top_left + box.top, border_style) yield from console.render(title_text, child_options.update_width(width - 4)) yield Segment(box.top + box.top_right, border_style) yield new_line for line in lines: yield line_start yield from line yield line_end yield new_line subtitle_text = self._subtitle if subtitle_text is not None: subtitle_text.style = border_style if subtitle_text is None or width <= 4: yield Segment(box.get_bottom([width - 2]), border_style) else: subtitle_text.align(self.subtitle_align, width - 4, character=box.bottom) yield Segment(box.bottom_left + box.bottom, border_style) yield from console.render( subtitle_text, child_options.update_width(width - 4) ) yield Segment(box.bottom + box.bottom_right, border_style) yield new_line def __rich_measure__( self, console: "Console", options: "ConsoleOptions" ) -> "Measurement": _title = self._title _, right, _, left = Padding.unpack(self.padding) padding = left + right renderables = [self.renderable, _title] if _title else [self.renderable] if self.width is None: width = ( measure_renderables( console, options.update_width(options.max_width - padding - 2), renderables, ).maximum + padding + 2 ) else: width = self.width return Measurement(width, width) if __name__ == "__main__": # pragma: no cover from .console import Console c = Console() from .box import DOUBLE, ROUNDED from .padding import Padding p = Panel( "Hello, World!", title="rich.Panel", style="white on blue", box=DOUBLE, padding=1, ) c.print() c.print(p)
SILENT KILLER Tool