opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
pip
/
_vendor
/
rich
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
__init__.py
5.95 KB
Rename
Delete
__main__.py
8.28 KB
Rename
Delete
_cell_widths.py
9.97 KB
Rename
Delete
_emoji_codes.py
136.95 KB
Rename
Delete
_emoji_replace.py
1.04 KB
Rename
Delete
_export_format.py
2.08 KB
Rename
Delete
_extension.py
265 bytes
Rename
Delete
_fileno.py
799 bytes
Rename
Delete
_inspect.py
9.43 KB
Rename
Delete
_log_render.py
3.15 KB
Rename
Delete
_loop.py
1.21 KB
Rename
Delete
_null_file.py
1.36 KB
Rename
Delete
_palettes.py
6.90 KB
Rename
Delete
_pick.py
423 bytes
Rename
Delete
_ratio.py
5.34 KB
Rename
Delete
_spinners.py
19.45 KB
Rename
Delete
_stack.py
351 bytes
Rename
Delete
_timer.py
417 bytes
Rename
Delete
_win32_console.py
22.22 KB
Rename
Delete
_windows.py
1.88 KB
Rename
Delete
_windows_renderer.py
2.72 KB
Rename
Delete
_wrap.py
3.32 KB
Rename
Delete
abc.py
890 bytes
Rename
Delete
align.py
10.22 KB
Rename
Delete
ansi.py
6.76 KB
Rename
Delete
bar.py
3.19 KB
Rename
Delete
box.py
10.58 KB
Rename
Delete
cells.py
5.01 KB
Rename
Delete
color.py
17.78 KB
Rename
Delete
color_triplet.py
1.03 KB
Rename
Delete
columns.py
6.96 KB
Rename
Delete
console.py
97.81 KB
Rename
Delete
constrain.py
1.26 KB
Rename
Delete
containers.py
5.37 KB
Rename
Delete
control.py
6.47 KB
Rename
Delete
default_styles.py
7.97 KB
Rename
Delete
diagnose.py
972 bytes
Rename
Delete
emoji.py
2.44 KB
Rename
Delete
errors.py
642 bytes
Rename
Delete
file_proxy.py
1.64 KB
Rename
Delete
filesize.py
2.43 KB
Rename
Delete
highlighter.py
9.36 KB
Rename
Delete
json.py
4.91 KB
Rename
Delete
jupyter.py
3.18 KB
Rename
Delete
layout.py
13.68 KB
Rename
Delete
live.py
13.94 KB
Rename
Delete
live_render.py
3.58 KB
Rename
Delete
logging.py
12.17 KB
Rename
Delete
markup.py
8.25 KB
Rename
Delete
measure.py
5.18 KB
Rename
Delete
padding.py
4.79 KB
Rename
Delete
pager.py
828 bytes
Rename
Delete
palette.py
3.32 KB
Rename
Delete
panel.py
10.97 KB
Rename
Delete
pretty.py
35.54 KB
Rename
Delete
progress.py
58.94 KB
Rename
Delete
progress_bar.py
7.97 KB
Rename
Delete
prompt.py
12.16 KB
Rename
Delete
protocol.py
1.36 KB
Rename
Delete
py.typed
0 bytes
Rename
Delete
region.py
166 bytes
Rename
Delete
repr.py
4.33 KB
Rename
Delete
rule.py
4.49 KB
Rename
Delete
scope.py
2.78 KB
Rename
Delete
screen.py
1.55 KB
Rename
Delete
segment.py
24.16 KB
Rename
Delete
spinner.py
4.26 KB
Rename
Delete
status.py
4.32 KB
Rename
Delete
style.py
26.43 KB
Rename
Delete
styled.py
1.23 KB
Rename
Delete
syntax.py
34.92 KB
Rename
Delete
table.py
39.16 KB
Rename
Delete
terminal_theme.py
3.29 KB
Rename
Delete
text.py
46.44 KB
Rename
Delete
theme.py
3.68 KB
Rename
Delete
themes.py
102 bytes
Rename
Delete
traceback.py
31.05 KB
Rename
Delete
tree.py
9.23 KB
Rename
Delete
from operator import itemgetter from typing import TYPE_CHECKING, Callable, NamedTuple, Optional, Sequence from . import errors from .protocol import is_renderable, rich_cast if TYPE_CHECKING: from .console import Console, ConsoleOptions, RenderableType class Measurement(NamedTuple): """Stores the minimum and maximum widths (in characters) required to render an object.""" minimum: int """Minimum number of cells required to render.""" maximum: int """Maximum number of cells required to render.""" @property def span(self) -> int: """Get difference between maximum and minimum.""" return self.maximum - self.minimum def normalize(self) -> "Measurement": """Get measurement that ensures that minimum <= maximum and minimum >= 0 Returns: Measurement: A normalized measurement. """ minimum, maximum = self minimum = min(max(0, minimum), maximum) return Measurement(max(0, minimum), max(0, max(minimum, maximum))) def with_maximum(self, width: int) -> "Measurement": """Get a RenderableWith where the widths are <= width. Args: width (int): Maximum desired width. Returns: Measurement: New Measurement object. """ minimum, maximum = self return Measurement(min(minimum, width), min(maximum, width)) def with_minimum(self, width: int) -> "Measurement": """Get a RenderableWith where the widths are >= width. Args: width (int): Minimum desired width. Returns: Measurement: New Measurement object. """ minimum, maximum = self width = max(0, width) return Measurement(max(minimum, width), max(maximum, width)) def clamp( self, min_width: Optional[int] = None, max_width: Optional[int] = None ) -> "Measurement": """Clamp a measurement within the specified range. Args: min_width (int): Minimum desired width, or ``None`` for no minimum. Defaults to None. max_width (int): Maximum desired width, or ``None`` for no maximum. Defaults to None. Returns: Measurement: New Measurement object. """ measurement = self if min_width is not None: measurement = measurement.with_minimum(min_width) if max_width is not None: measurement = measurement.with_maximum(max_width) return measurement @classmethod def get( cls, console: "Console", options: "ConsoleOptions", renderable: "RenderableType" ) -> "Measurement": """Get a measurement for a renderable. Args: console (~rich.console.Console): Console instance. options (~rich.console.ConsoleOptions): Console options. renderable (RenderableType): An object that may be rendered with Rich. Raises: errors.NotRenderableError: If the object is not renderable. Returns: Measurement: Measurement object containing range of character widths required to render the object. """ _max_width = options.max_width if _max_width < 1: return Measurement(0, 0) if isinstance(renderable, str): renderable = console.render_str( renderable, markup=options.markup, highlight=False ) renderable = rich_cast(renderable) if is_renderable(renderable): get_console_width: Optional[ Callable[["Console", "ConsoleOptions"], "Measurement"] ] = getattr(renderable, "__rich_measure__", None) if get_console_width is not None: render_width = ( get_console_width(console, options) .normalize() .with_maximum(_max_width) ) if render_width.maximum < 1: return Measurement(0, 0) return render_width.normalize() else: return Measurement(0, _max_width) else: raise errors.NotRenderableError( f"Unable to get render width for {renderable!r}; " "a str, Segment, or object with __rich_console__ method is required" ) def measure_renderables( console: "Console", options: "ConsoleOptions", renderables: Sequence["RenderableType"], ) -> "Measurement": """Get a measurement that would fit a number of renderables. Args: console (~rich.console.Console): Console instance. options (~rich.console.ConsoleOptions): Console options. renderables (Iterable[RenderableType]): One or more renderable objects. Returns: Measurement: Measurement object containing range of character widths required to contain all given renderables. """ if not renderables: return Measurement(0, 0) get_measurement = Measurement.get measurements = [ get_measurement(console, options, renderable) for renderable in renderables ] measured_width = Measurement( max(measurements, key=itemgetter(0)).minimum, max(measurements, key=itemgetter(1)).maximum, ) return measured_width
Save