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

1from typing import Optional, TYPE_CHECKING 

2 

3from .jupyter import JupyterMixin 

4from .measure import Measurement 

5 

6if TYPE_CHECKING: 

7 from .console import Console, ConsoleOptions, RenderableType, RenderResult 

8 

9 

10class Constrain(JupyterMixin): 

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