/opt/imh/python3.13/lib/python3.13/site-packages/pip/_vendor/rich
NameSizeModeActions
__pycache__/-0755rm
abc.py8900644editdlrm
align.py103680644editdlrm
ansi.py69060644editdlrm
bar.py32630644editdlrm
box.py108310644editdlrm
cells.py47800644editdlrm
color.py182230644editdlrm
color_triplet.py10540644editdlrm
columns.py71310644editdlrm
console.py991730644editdlrm
constrain.py12880644editdlrm
containers.py55020644editdlrm
control.py66300644editdlrm
default_styles.py80820644editdlrm
diagnose.py9720644editdlrm
emoji.py25010644editdlrm
errors.py6420644editdlrm
filesize.py25080644editdlrm
file_proxy.py16830644editdlrm
highlighter.py95850644editdlrm
json.py50310644editdlrm
jupyter.py32520644editdlrm
layout.py140040644editdlrm
live.py142710644editdlrm
live_render.py36660644editdlrm
logging.py119030644editdlrm
markup.py84510644editdlrm
measure.py53050644editdlrm
padding.py49700644editdlrm
pager.py8280644editdlrm
palette.py33960644editdlrm
panel.py107050644editdlrm
pretty.py358480644editdlrm
progress.py597150644editdlrm
progress_bar.py81640644editdlrm
prompt.py113040644editdlrm
protocol.py13910644editdlrm
py.typed00644editdlrm
region.py1660644editdlrm
repr.py44310644editdlrm
rule.py46020644editdlrm
scope.py28430644editdlrm
screen.py15910644editdlrm
segment.py242460644editdlrm
spinner.py43390644editdlrm
status.py44240644editdlrm
style.py270730644editdlrm
styled.py12580644editdlrm
syntax.py354750644editdlrm
table.py396800644editdlrm
terminal_theme.py33700644editdlrm
text.py473120644editdlrm
theme.py37770644editdlrm
themes.py1020644editdlrm
traceback.py296010644editdlrm
tree.py91670644editdlrm
_cell_widths.py102090644editdlrm
_emoji_codes.py1402350644editdlrm
_emoji_replace.py10640644editdlrm
_export_format.py21280644editdlrm
_extension.py2650644editdlrm
_fileno.py7990644editdlrm
_inspect.py96950644editdlrm
_log_render.py32250644editdlrm
_loop.py12360644editdlrm
_null_file.py13870644editdlrm
_palettes.py70630644editdlrm
_pick.py4230644editdlrm
_ratio.py54710644editdlrm
_spinners.py199190644editdlrm
_stack.py3510644editdlrm
_timer.py4170644editdlrm
_win32_console.py228200644editdlrm
_windows.py19250644editdlrm
_windows_renderer.py27830644editdlrm
_wrap.py34040644editdlrm
__init__.py60900644editdlrm
__main__.py84770644editdlrm
Edit: /opt/imh/python3.13/lib/python3.13/site-packages/pip/_vendor/rich/bar.py (3263B)
from typing import Optional, Union from .color import Color from .console import Console, ConsoleOptions, RenderResult from .jupyter import JupyterMixin from .measure import Measurement from .segment import Segment from .style import Style # There are left-aligned characters for 1/8 to 7/8, but # the right-aligned characters exist only for 1/8 and 4/8. BEGIN_BLOCK_ELEMENTS = ["█", "█", "█", "▐", "▐", "▐", "▕", "▕"] END_BLOCK_ELEMENTS = [" ", "▏", "▎", "▍", "▌", "▋", "▊", "▉"] FULL_BLOCK = "█" class Bar(JupyterMixin): """Renders a solid block bar. Args: size (float): Value for the end of the bar. begin (float): Begin point (between 0 and size, inclusive). end (float): End point (between 0 and size, inclusive). width (int, optional): Width of the bar, or ``None`` for maximum width. Defaults to None. color (Union[Color, str], optional): Color of the bar. Defaults to "default". bgcolor (Union[Color, str], optional): Color of bar background. Defaults to "default". """ def __init__( self, size: float, begin: float, end: float, *, width: Optional[int] = None, color: Union[Color, str] = "default", bgcolor: Union[Color, str] = "default", ): self.size = size self.begin = max(begin, 0) self.end = min(end, size) self.width = width self.style = Style(color=color, bgcolor=bgcolor) def __repr__(self) -> str: return f"Bar({self.size}, {self.begin}, {self.end})" def __rich_console__( self, console: Console, options: ConsoleOptions ) -> RenderResult: width = min( self.width if self.width is not None else options.max_width, options.max_width, ) if self.begin >= self.end: yield Segment(" " * width, self.style) yield Segment.line() return prefix_complete_eights = int(width * 8 * self.begin / self.size) prefix_bar_count = prefix_complete_eights // 8 prefix_eights_count = prefix_complete_eights % 8 body_complete_eights = int(width * 8 * self.end / self.size) body_bar_count = body_complete_eights // 8 body_eights_count = body_complete_eights % 8 # When start and end fall into the same cell, we ideally should render # a symbol that's "center-aligned", but there is no good symbol in Unicode. # In this case, we fall back to right-aligned block symbol for simplicity. prefix = " " * prefix_bar_count if prefix_eights_count: prefix += BEGIN_BLOCK_ELEMENTS[prefix_eights_count] body = FULL_BLOCK * body_bar_count if body_eights_count: body += END_BLOCK_ELEMENTS[body_eights_count] suffix = " " * (width - len(body)) yield Segment(prefix + body[len(prefix) :] + suffix, self.style) yield Segment.line() def __rich_measure__( self, console: Console, options: ConsoleOptions ) -> Measurement: return ( Measurement(self.width, self.width) if self.width is not None else Measurement(4, options.max_width) )