python (3.11.7)

(root)/
lib/
python3.11/
site-packages/
pip/
_vendor/
rich/
constrain.py
       1  from typing import Optional, TYPE_CHECKING
       2  
       3  from .jupyter import JupyterMixin
       4  from .measure import Measurement
       5  
       6  if TYPE_CHECKING:
       7      from .console import Console, ConsoleOptions, RenderableType, RenderResult
       8  
       9  
      10  class ESC[4;38;5;81mConstrain(ESC[4;38;5;149mJupyterMixin):
      11      """Constrain the width of a renderable to a given number of characters.
      12  
      13      Args:
      14          renderable (RenderableType): A renderable object.
      15          width (int, optional): The maximum width (in characters) to render. Defaults to 80.
      16      """
      17  
      18      def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None:
      19          self.renderable = renderable
      20          self.width = width
      21  
      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)
      30  
      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