Spaces:
Running
Running
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 | |