def test_renderables_empty(): console = Console() renderables = Renderables() result = renderables.__rich_measure__(console, console.options) _min, _max = result assert _min == 1 assert _max == 1
def test_renderables_measure(): console = Console() text = Text("foo") renderables = Renderables([text]) result = renderables.__rich_measure__(console, console.options) _min, _max = result assert _min == 3 assert _max == 3 assert list(renderables) == [text]
def __call__( self, console, renderables, log_time=None, time_format=None, level="", path=None, line_no=None, link_path=None, logger_name=None, ): output = Table.grid(padding=(0, 1)) output.expand = True if self.show_time: output.add_column(style="log.time") if self.show_level: output.add_column(style="log.level", width=self.level_width) output.add_column(ratio=1, style="log.message", overflow="fold") if self.show_path and path: output.add_column(style="log.path") if logger_name: output.add_column() row = [] if self.show_time: log_time = log_time or console.get_datetime() log_time_display = log_time.strftime(time_format or self.time_format) if log_time_display == self._last_time: row.append(Text(" " * len(log_time_display))) else: row.append(Text(log_time_display)) self._last_time = log_time_display if self.show_level: row.append(level) row.append(Renderables(renderables)) if self.show_path and path: path_text = Text() path_text.append( path, style=f"link file://{link_path}" if link_path else "") if line_no: path_text.append(f":{line_no}") row.append(path_text) if logger_name: logger_name_text = Text() logger_name_text.append(f"[{logger_name}]", style="bright_black") row.append(logger_name_text) output.add_row(*row) return output
def __call__( self, console, renderables, log_time=None, time_format=None, level=None, path=None, line_no=None, link_path=None, ): from rich.containers import Renderables from rich.table import Table from rich.text import Text output = Table.grid(padding=(0, 1)) output.expand = True if self.show_level: output.add_column(style="log.level", width=5) output.add_column(ratio=1, style='log.message', overflow='ellipsis') if self.show_time: output.add_column(style="log.path") row = [] if self.show_level: row.append(level) row.append(Renderables(renderables)) if self.show_time: log_time = log_time or console.get_datetime() time_format = time_format or self.time_format if callable(time_format): log_time_display = time_format(log_time) else: log_time_display = Text(log_time.strftime(time_format)) if log_time_display == self._last_time and self.omit_repeated_times: row.append(Text(" " * len(log_time_display))) else: row.append(log_time_display) self._last_time = log_time_display output.add_row(*row) return output
def __call__( self, console: "Console", renderables: Iterable["ConsoleRenderable"], log_time: Optional[datetime] = None, time_format: Optional[Union[str, FormatTimeCallable]] = None, level: TextType = "", path: Optional[str] = None, line_no: Optional[int] = None, link_path: Optional[str] = None, thread_name: Optional[str] = None, ) -> "Table": from rich.containers import Renderables from rich.table import Table output = Table.grid(padding=(0, 1)) output.expand = True if self.show_time: output.add_column(style="log.time") if self.show_thread: rgb = str(utils.rgb_from_name(thread_name)).replace(" ", "") output.add_column(style=f"rgb{rgb}", width=self.thread_width) if self.show_level: output.add_column(style="log.level", width=self.level_width) output.add_column(ratio=1, style="log.message", overflow="fold") if self.show_path and path: output.add_column(style="log.path") row: List["RenderableType"] = [] if self.show_time: log_time = log_time or console.get_datetime() time_format = time_format or self.time_format if callable(time_format): log_time_display = time_format(log_time) else: log_time_display = Text(log_time.strftime(time_format)) if log_time_display == self._last_time and self.omit_repeated_times: row.append(Text(" " * len(log_time_display))) else: row.append(log_time_display) self._last_time = log_time_display if self.show_thread: row.append(thread_name) if self.show_level: row.append(level) row.append(Renderables(renderables)) if self.show_path and path: path_text = Text() path_text.append( path, style=f"link file://{link_path}" if link_path else "", ) if line_no: path_text.append(":") path_text.append( f"{line_no}", style=f"link file://{link_path}#{line_no}" if link_path else "", ) row.append(path_text) output.add_row(*row) return output