Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/rich/constrain.py: 42%
19 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:35 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 06:35 +0000
1from typing import Optional, TYPE_CHECKING
3from .jupyter import JupyterMixin
4from .measure import Measurement
6if TYPE_CHECKING:
7 from .console import Console, ConsoleOptions, RenderableType, RenderResult
10class Constrain(JupyterMixin):
11 """Constrain the width of a renderable to a given number of characters.
13 Args:
14 renderable (RenderableType): A renderable object.
15 width (int, optional): The maximum width (in characters) to render. Defaults to 80.
16 """
18 def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None:
19 self.renderable = renderable
20 self.width = width
22 def __rich_console__(
23 self, console: "Console", options: "ConsoleOptions"
24 ) -> "RenderResult":
25 if self.width is None:
26 yield self.renderable
27 else:
28 child_options = options.update_width(min(self.width, options.max_width))
29 yield from console.render(self.renderable, child_options)
31 def __rich_measure__(
32 self, console: "Console", options: "ConsoleOptions"
33 ) -> "Measurement":
34 if self.width is not None:
35 options = options.update_width(self.width)
36 measurement = Measurement.get(console, options, self.renderable)
37 return measurement