python (3.11.7)
       1  from typing import Optional, TYPE_CHECKING
       2  
       3  from .segment import Segment
       4  from .style import StyleType
       5  from ._loop import loop_last
       6  
       7  
       8  if TYPE_CHECKING:
       9      from .console import (
      10          Console,
      11          ConsoleOptions,
      12          RenderResult,
      13          RenderableType,
      14          Group,
      15      )
      16  
      17  
      18  class ESC[4;38;5;81mScreen:
      19      """A renderable that fills the terminal screen and crops excess.
      20  
      21      Args:
      22          renderable (RenderableType): Child renderable.
      23          style (StyleType, optional): Optional background style. Defaults to None.
      24      """
      25  
      26      renderable: "RenderableType"
      27  
      28      def __init__(
      29          self,
      30          *renderables: "RenderableType",
      31          style: Optional[StyleType] = None,
      32          application_mode: bool = False,
      33      ) -> None:
      34          from pip._vendor.rich.console import Group
      35  
      36          self.renderable = Group(*renderables)
      37          self.style = style
      38          self.application_mode = application_mode
      39  
      40      def __rich_console__(
      41          self, console: "Console", options: "ConsoleOptions"
      42      ) -> "RenderResult":
      43          width, height = options.size
      44          style = console.get_style(self.style) if self.style else None
      45          render_options = options.update(width=width, height=height)
      46          lines = console.render_lines(
      47              self.renderable or "", render_options, style=style, pad=True
      48          )
      49          lines = Segment.set_shape(lines, width, height, style=style)
      50          new_line = Segment("\n\r") if self.application_mode else Segment.line()
      51          for last, line in loop_last(lines):
      52              yield from line
      53              if not last:
      54                  yield new_line