X7ROOT File Manager
Current Path:
/opt/cloudlinux/venv/lib/python3.11/site-packages/pip/_vendor/rich
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
pip
/
_vendor
/
rich
/
??
..
??
__init__.py
(5.95 KB)
??
__main__.py
(8.28 KB)
??
__pycache__
??
_cell_widths.py
(9.97 KB)
??
_emoji_codes.py
(136.95 KB)
??
_emoji_replace.py
(1.04 KB)
??
_export_format.py
(2.08 KB)
??
_extension.py
(265 B)
??
_fileno.py
(799 B)
??
_inspect.py
(9.43 KB)
??
_log_render.py
(3.15 KB)
??
_loop.py
(1.21 KB)
??
_null_file.py
(1.36 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.22 KB)
??
_windows.py
(1.88 KB)
??
_windows_renderer.py
(2.72 KB)
??
_wrap.py
(3.32 KB)
??
abc.py
(890 B)
??
align.py
(10.22 KB)
??
ansi.py
(6.76 KB)
??
bar.py
(3.19 KB)
??
box.py
(10.58 KB)
??
cells.py
(5.01 KB)
??
color.py
(17.78 KB)
??
color_triplet.py
(1.03 KB)
??
columns.py
(6.96 KB)
??
console.py
(97.81 KB)
??
constrain.py
(1.26 KB)
??
containers.py
(5.37 KB)
??
control.py
(6.47 KB)
??
default_styles.py
(7.97 KB)
??
diagnose.py
(972 B)
??
emoji.py
(2.44 KB)
??
errors.py
(642 B)
??
file_proxy.py
(1.64 KB)
??
filesize.py
(2.43 KB)
??
highlighter.py
(9.36 KB)
??
json.py
(4.91 KB)
??
jupyter.py
(3.18 KB)
??
layout.py
(13.68 KB)
??
live.py
(13.94 KB)
??
live_render.py
(3.58 KB)
??
logging.py
(12.17 KB)
??
markup.py
(8.25 KB)
??
measure.py
(5.18 KB)
??
padding.py
(4.79 KB)
??
pager.py
(828 B)
??
palette.py
(3.32 KB)
??
panel.py
(10.97 KB)
??
pretty.py
(35.54 KB)
??
progress.py
(58.94 KB)
??
progress_bar.py
(7.97 KB)
??
prompt.py
(12.16 KB)
??
protocol.py
(1.36 KB)
??
py.typed
(0 B)
??
region.py
(166 B)
??
repr.py
(4.33 KB)
??
rule.py
(4.49 KB)
??
scope.py
(2.78 KB)
??
screen.py
(1.55 KB)
??
segment.py
(24.16 KB)
??
spinner.py
(4.26 KB)
??
status.py
(4.32 KB)
??
style.py
(26.43 KB)
??
styled.py
(1.23 KB)
??
syntax.py
(34.92 KB)
??
table.py
(39.16 KB)
??
terminal_theme.py
(3.29 KB)
??
text.py
(46.44 KB)
??
theme.py
(3.68 KB)
??
themes.py
(102 B)
??
traceback.py
(31.05 KB)
??
tree.py
(9.23 KB)
Editing: panel.py
from typing import TYPE_CHECKING, Optional from .align import AlignMethod from .box import ROUNDED, Box from .cells import cell_len from .jupyter import JupyterMixin from .measure import Measurement, measure_renderables from .padding import Padding, PaddingDimensions from .segment import Segment from .style import Style, 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. title (Optional[TextType], optional): Optional title displayed in panel header. Defaults to None. title_align (AlignMethod, optional): Alignment of title. Defaults to "center". subtitle (Optional[TextType], optional): Optional subtitle displayed in panel footer. Defaults to None. subtitle_align (AlignMethod, optional): Alignment of subtitle. Defaults to "center". 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, height: Optional[int] = None, padding: PaddingDimensions = (0, 1), highlight: bool = False, ) -> "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, height=height, padding=padding, highlight=highlight, 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) partial_border_style = console.get_style(self.border_style) border_style = style + partial_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) def align_text( text: Text, width: int, align: str, character: str, style: Style ) -> Text: """Gets new aligned text. Args: text (Text): Title or subtitle text. width (int): Desired width. align (str): Alignment. character (str): Character for alignment. style (Style): Border style Returns: Text: New text instance """ text = text.copy() text.truncate(width) excess_space = width - cell_len(text.plain) if text.style: text.stylize(console.get_style(text.style)) if excess_space: if align == "left": return Text.assemble( text, (character * excess_space, style), no_wrap=True, end="", ) elif align == "center": left = excess_space // 2 return Text.assemble( (character * left, style), text, (character * (excess_space - left), style), no_wrap=True, end="", ) else: return Text.assemble( (character * excess_space, style), text, no_wrap=True, end="", ) return text title_text = self._title if title_text is not None: title_text.stylize_before(partial_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_text( title_text, width - 4, self.title_align, box.top, border_style, ) 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.stylize_before(partial_border_style) if subtitle_text is None or width <= 4: yield Segment(box.get_bottom([width - 2]), border_style) else: subtitle_text = align_text( subtitle_text, width - 4, self.subtitle_align, box.bottom, border_style, ) 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)
Upload File
Create Folder