diff options
Diffstat (limited to 'venv/lib/python3.11/site-packages/rich/constrain.py')
-rw-r--r-- | venv/lib/python3.11/site-packages/rich/constrain.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/rich/constrain.py b/venv/lib/python3.11/site-packages/rich/constrain.py new file mode 100644 index 0000000..65fdf56 --- /dev/null +++ b/venv/lib/python3.11/site-packages/rich/constrain.py @@ -0,0 +1,37 @@ +from typing import Optional, TYPE_CHECKING + +from .jupyter import JupyterMixin +from .measure import Measurement + +if TYPE_CHECKING: + from .console import Console, ConsoleOptions, RenderableType, RenderResult + + +class Constrain(JupyterMixin): + """Constrain the width of a renderable to a given number of characters. + + Args: + renderable (RenderableType): A renderable object. + width (int, optional): The maximum width (in characters) to render. Defaults to 80. + """ + + def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None: + self.renderable = renderable + self.width = width + + def __rich_console__( + self, console: "Console", options: "ConsoleOptions" + ) -> "RenderResult": + if self.width is None: + yield self.renderable + else: + child_options = options.update_width(min(self.width, options.max_width)) + yield from console.render(self.renderable, child_options) + + def __rich_measure__( + self, console: "Console", options: "ConsoleOptions" + ) -> "Measurement": + if self.width is not None: + options = options.update_width(self.width) + measurement = Measurement.get(console, options, self.renderable) + return measurement |