Rich is a Python library for rich text and beautiful formatting in the terminal.
This report presents the forensic synthetic code analysis of Textualize/rich, a Python project with 56,850 GitHub stars. SynthScan v2.0 examined 68,106 lines of code across 454 source files, recording 544 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 12.7 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 544 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_pretty.py | 65 | def test_ipy_display_hook__repr_html() -> None: | CODE |
| LOW | tests/test_pretty.py | 79 | def test_ipy_display_hook__multiple_special_reprs() -> None: | CODE |
| LOW | tests/test_pretty.py | 101 | def test_ipy_display_hook__no_special_repr_methods() -> None: | CODE |
| LOW | tests/test_pretty.py | 113 | def test_ipy_display_hook__special_repr_raises_exception() -> None: | CODE |
| LOW | tests/test_pretty.py | 137 | def test_ipy_display_hook__console_renderables_on_newline() -> None: | CODE |
| LOW⚡ | tests/test_pretty.py | 234 | def test_pretty_namedtuple_length_one_no_trailing_comma() -> None: | CODE |
| LOW⚡ | tests/test_pretty.py | 239 | def test_pretty_namedtuple_empty() -> None: | CODE |
| LOW⚡ | tests/test_pretty.py | 244 | def test_pretty_namedtuple_custom_repr() -> None: | CODE |
| LOW⚡ | tests/test_pretty.py | 252 | def test_pretty_namedtuple_fields_invalid_type() -> None: | CODE |
| LOW⚡ | tests/test_pretty.py | 261 | def test_pretty_namedtuple_max_depth() -> None: | CODE |
| LOW | tests/test_pretty.py | 312 | def test_reference_cycle_container() -> None: | CODE |
| LOW | tests/test_pretty.py | 330 | def test_reference_cycle_namedtuple() -> None: | CODE |
| LOW | tests/test_pretty.py | 347 | def test_reference_cycle_dataclass() -> None: | CODE |
| LOW | tests/test_pretty.py | 370 | def test_reference_cycle_attrs() -> None: | CODE |
| LOW | tests/test_pretty.py | 393 | def test_reference_cycle_custom_repr() -> None: | CODE |
| LOW | tests/test_pretty.py | 730 | def test_tuple_rich_repr_default() -> None: | CODE |
| LOW | tests/test_pretty.py | 742 | def test_dataclass_no_attribute() -> None: | CODE |
| LOW | tests/test_filesize.py | 17 | def test_pick_unit_and_suffix(): | CODE |
| LOW | tests/test_tree.py | 18 | def test_render_single_branch(): | CODE |
| LOW | tests/test_tree.py | 30 | def test_render_double_branch(): | CODE |
| LOW | tests/test_logging.py | 64 | def test_exception_with_extra_lines(): | CODE |
| LOW | tests/test_logging.py | 94 | def test_stderr_and_stdout_are_none(monkeypatch): | CODE |
| LOW | tests/test_logging.py | 125 | def test_markup_and_highlight(): | CODE |
| LOW | tests/test_win32_console.py | 30 | def test_windows_coordinates_to_ctype(): | CODE |
| LOW | tests/test_win32_console.py | 123 | def test_write_styled_reverse( | CODE |
| LOW | tests/test_win32_console.py | 140 | def test_write_styled_reverse( | CODE |
| LOW | tests/test_win32_console.py | 157 | def test_write_styled_no_foreground_color( | CODE |
| LOW | tests/test_win32_console.py | 174 | def test_write_styled_no_background_color( | CODE |
| LOW | tests/test_win32_console.py | 263 | def test_move_cursor_to_out_of_bounds_row( | CODE |
| LOW | tests/test_win32_console.py | 274 | def test_move_cursor_to_out_of_bounds_col( | CODE |
| LOW | tests/test_win32_console.py | 321 | def test_move_cursor_forward_newline_wrap( | CODE |
| LOW⚡ | tests/test_win32_console.py | 338 | def test_move_cursor_to_column( | CODE |
| LOW⚡ | tests/test_win32_console.py | 348 | def test_move_cursor_backward( | CODE |
| LOW⚡ | tests/test_win32_console.py | 358 | def test_move_cursor_backward_prev_line_wrap( | CODE |
| LOW⚡ | tests/test_console.py | 243 | def test_print_json_ensure_ascii() -> None: | CODE |
| LOW⚡ | tests/test_console.py | 252 | def test_print_json_with_default_ensure_ascii() -> None: | CODE |
| LOW⚡ | tests/test_console.py | 261 | def test_print_json_indent_none() -> None: | CODE |
| LOW | tests/test_console.py | 82 | def test_console_options_update() -> None: | CODE |
| LOW | tests/test_console.py | 106 | def test_console_options_update_height() -> None: | CODE |
| LOW | tests/test_console.py | 155 | def test_size_can_fall_back_to_std_descriptors( | CODE |
| LOW | tests/test_console.py | 164 | def get_terminal_size_mock_impl(fileno: int = None) -> Tuple[int, int]: | CODE |
| LOW | tests/test_console.py | 195 | def test_print_empty_with_end() -> None: | CODE |
| LOW | tests/test_console.py | 448 | def test_justify_renderable_none() -> None: | CODE |
| LOW | tests/test_console.py | 460 | def test_justify_renderable_left() -> None: | CODE |
| LOW | tests/test_console.py | 472 | def test_justify_renderable_center() -> None: | CODE |
| LOW | tests/test_console.py | 484 | def test_justify_renderable_right() -> None: | CODE |
| LOW | tests/test_console.py | 504 | def test_render_broken_renderable() -> None: | CODE |
| LOW | tests/test_console.py | 551 | def test_export_svg_specified_unique_id() -> None: | CODE |
| LOW | tests/test_console.py | 837 | def test_update_options_markup() -> None: | CODE |
| LOW | tests/test_console.py | 872 | def test_is_terminal_broken_file() -> None: | CODE |
| LOW | tests/test_console.py | 915 | def test_render_lines_height_minus_vertical_pad_is_negative() -> None: | CODE |
| LOW | tests/test_console.py | 930 | def test_recording_no_stdout_and_no_stderr_files(monkeypatch) -> None: | CODE |
| LOW | tests/test_console.py | 943 | def test_capturing_no_stdout_and_no_stderr_files(monkeypatch) -> None: | CODE |
| LOW | tests/test_console.py | 980 | def test_reenable_highlighting() -> None: | CODE |
| LOW | tests/test_syntax.py | 75 | def test_python_render_simple() -> None: | CODE |
| LOW | tests/test_syntax.py | 90 | def test_python_render_simple_passing_lexer_instance() -> None: | CODE |
| LOW | tests/test_syntax.py | 106 | def test_python_render_simple_indent_guides() -> None: | CODE |
| LOW | tests/test_syntax.py | 123 | def test_python_render_line_range_indent_guides() -> None: | CODE |
| LOW | tests/test_syntax.py | 140 | def test_python_render_indent_guides() -> None: | CODE |
| LOW | tests/test_syntax.py | 160 | def test_pygments_syntax_theme_non_str() -> None: | CODE |
| 155 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.hi.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.fr.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.sv.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.it.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.es.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.cn.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.tr.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.de.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.fa.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.ja.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.pt-br.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.de-ch.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.zh-tw.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.id.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.pl.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.ru.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.kr.md | 0 | def iter_first_last(values: iterable[t]) -> iterable[tuple[bool, bool, t]]: | STRING |
| HIGH | README.hi.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.fr.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.sv.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.it.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.es.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.cn.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.tr.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.de.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.fa.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.ja.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.pt-br.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.de-ch.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.zh-tw.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.id.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.pl.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.ru.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | README.kr.md | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | tests/test_syntax.py | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return first = true for value i | STRING |
| HIGH | tests/render.py | 0 | link ids have a random id and system path which is a problem for reproducible tests. | STRING |
| HIGH | tests/test_log.py | 0 | link ids have a random id and system path which is a problem for reproducible tests. | STRING |
| HIGH | tests/test_card.py | 0 | link ids have a random id and system path which is a problem for reproducible tests. | STRING |
| HIGH | tests/test_markdown_no_hyperlinks.py | 0 | link ids have a random id and system path which is a problem for reproducible tests. | STRING |
| HIGH | tests/test_markdown.py | 0 | link ids have a random id and system path which is a problem for reproducible tests. | STRING |
| HIGH | rich/live.py | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return for value in iter_values | STRING |
| HIGH | rich/progress.py | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return for value in iter_values | STRING |
| HIGH | rich/__main__.py | 0 | iter_values = iter(values) try: previous_value = next(iter_values) except stopiteration: return for value in iter_values | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_cells.py | 1 | CODE | |
| LOW | tests/test_unicode_data.py | 1 | CODE | |
| LOW | rich/screen.py | 9 | CODE | |
| LOW | rich/screen.py | 9 | CODE | |
| LOW | rich/screen.py | 9 | CODE | |
| LOW | rich/screen.py | 9 | CODE | |
| LOW | rich/logging.py | 1 | CODE | |
| LOW | rich/measure.py | 8 | CODE | |
| LOW | rich/measure.py | 8 | CODE | |
| LOW | rich/measure.py | 8 | CODE | |
| LOW | rich/tree.py | 4 | CODE | |
| LOW | rich/tree.py | 4 | CODE | |
| LOW | rich/console.py | 60 | CODE | |
| LOW | rich/box.py | 7 | CODE | |
| LOW | rich/color.py | 14 | CODE | |
| LOW | rich/_fileno.py | 1 | CODE | |
| LOW | rich/align.py | 11 | CODE | |
| LOW | rich/align.py | 11 | CODE | |
| LOW | rich/align.py | 11 | CODE | |
| LOW | rich/_wrap.py | 1 | CODE | |
| LOW | rich/_log_render.py | 8 | CODE | |
| LOW | rich/_log_render.py | 8 | CODE | |
| LOW | rich/emoji.py | 10 | CODE | |
| LOW | rich/emoji.py | 10 | CODE | |
| LOW | rich/containers.py | 14 | CODE | |
| LOW | rich/containers.py | 14 | CODE | |
| LOW | rich/containers.py | 14 | CODE | |
| LOW | rich/containers.py | 14 | CODE | |
| LOW | rich/containers.py | 14 | CODE | |
| LOW | rich/containers.py | 14 | CODE | |
| LOW | rich/control.py | 7 | CODE | |
| LOW | rich/control.py | 7 | CODE | |
| LOW | rich/__init__.py | 6 | CODE | |
| LOW | rich/file_proxy.py | 8 | CODE | |
| LOW | rich/constrain.py | 7 | CODE | |
| LOW | rich/constrain.py | 7 | CODE | |
| LOW | rich/constrain.py | 7 | CODE | |
| LOW | rich/constrain.py | 7 | CODE | |
| LOW | rich/pretty.py | 50 | CODE | |
| LOW | rich/pretty.py | 50 | CODE | |
| LOW | rich/pretty.py | 50 | CODE | |
| LOW | rich/pretty.py | 50 | CODE | |
| LOW | rich/pretty.py | 50 | CODE | |
| LOW | rich/pretty.py | 50 | CODE | |
| LOW | rich/markdown.py | 1 | CODE | |
| LOW | rich/text.py | 33 | CODE | |
| LOW | rich/text.py | 33 | CODE | |
| LOW | rich/text.py | 33 | CODE | |
| LOW | rich/live.py | 1 | CODE | |
| LOW | rich/live.py | 6 | CODE | |
| LOW | rich/syntax.py | 1 | CODE | |
| LOW | rich/table.py | 28 | CODE | |
| LOW | rich/table.py | 28 | CODE | |
| LOW | rich/table.py | 28 | CODE | |
| LOW | rich/table.py | 28 | CODE | |
| LOW | rich/table.py | 28 | CODE | |
| LOW | rich/segment.py | 29 | CODE | |
| LOW | rich/segment.py | 29 | CODE | |
| LOW | rich/progress.py | 1 | CODE | |
| LOW | rich/progress.py | 14 | CODE | |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_stack.py | 6 | stack.push("foo") | CODE |
| HIGH | tests/test_stack.py | 7 | stack.push("bar") | CODE |
| HIGH⚡ | tests/test_console.py | 271 | # When stdout and stderr are null, Console.file should be replaced with NullFile | COMMENT |
| HIGH | tests/test_console.py | 221 | console.print_json('[false, true, null, "foo"]', indent=4) | CODE |
| HIGH⚡ | tests/test_rich_print.py | 35 | rich.print_json('[false, true, null, "foo"]', indent=4) | CODE |
| HIGH⚡ | tests/test_rich_print.py | 38 | expected = '[\n false,\n true,\n null,\n "foo"\n]\n' | CODE |
| HIGH | tests/test_style.py | 185 | stack.push(Style(bold=True)) | CODE |
| HIGH | rich/logging.py | 180 | # Handles pythonw, where stdout/stderr are null, and we return NullFile | COMMENT |
| HIGH | rich/tree.py | 171 | style_stack.push(get_style(node.style)) | CODE |
| HIGH | rich/tree.py | 172 | guide_style_stack.push(get_style(node.guide_style)) | CODE |
| HIGH | rich/markdown.py | 504 | self.style_stack.push(style) | CODE |
| HIGH | rich/markdown.py | 618 | context.stack.push(Link.create(self, token)) | CODE |
| HIGH | rich/markdown.py | 670 | context.stack.push(element) | CODE |
| HIGH | rich/highlighter.py | 117 | r"\b(?P<bool_true>true)\b|\b(?P<bool_false>false)\b|\b(?P<null>null)\b", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | rich/measure.py | 82 | Get a measurement for a renderable. Args: console (~rich.console.Console): Console instance. | STRING |
| HIGH | rich/console.py | 823 | Set Live instance. Used by Live context manager (no need to call directly). Args: live (Live): Live | STRING |
| HIGH | rich/console.py | 1473 | Get a Style instance by its theme name or parse a definition. Args: name (str): The name of a style | STRING |
| HIGH | rich/console.py | 1912 | Get caller frame information. Args: offset (int): the caller offset within the current frame stack. | STRING |
| HIGH | rich/style.py | 499 | Parse a style definition. Args: style_definition (str): A string containing a style. Raise | STRING |
| HIGH | rich/markup.py | 112 | Render console markup in to a Text instance. Args: markup (str): A string containing console markup. | STRING |
| HIGH | rich/highlighter.py | 21 | Highlight a str or Text instance. Args: text (Union[str, ~Text]): Text to highlight. Raise | STRING |
| HIGH | rich/progress_bar.py | 129 | Renders the pulse animation. Args: console (Console): Console instance. width (int): Wi | STRING |
| HIGH | rich/prompt.py | 228 | Process response from user, convert to prompt type. Args: value (str): String typed by user. | STRING |
| HIGH | rich/progress.py | 1245 | Track progress file reading from a binary file. Args: file (BinaryIO): A file-like object opened in | STRING |
| HIGH | rich/progress.py | 1324 | Track progress while reading from a binary file. Args: path (Union[str, PathLike[str]]): The path t | STRING |
| HIGH | rich/_win32_console.py | 96 | Retrieves the current input mode of a console's input buffer or the current output mode of a console screen buffer. | STRING |
| HIGH | rich/_unicode_data/__init__.py | 32 | Parse a version string into a tuple of 3 integers. Args: version: A version string. Raises: Va | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_progress.py | 647 | CODE | |
| LOW | tests/test_traceback.py | 13 | CODE | |
| LOW | examples/print_calendar.py | 20 | CODE | |
| LOW | rich/tree.py | 86 | CODE | |
| LOW | rich/console.py | 383 | CODE | |
| LOW | rich/console.py | 619 | CODE | |
| LOW | rich/console.py | 1500 | CODE | |
| LOW | rich/console.py | 1652 | CODE | |
| LOW | rich/console.py | 2059 | CODE | |
| LOW | rich/console.py | 2244 | CODE | |
| LOW | rich/box.py | 115 | CODE | |
| LOW | rich/color.py | 349 | CODE | |
| LOW | rich/color.py | 485 | CODE | |
| LOW | rich/color.py | 513 | CODE | |
| LOW | rich/align.py | 143 | CODE | |
| LOW | rich/align.py | 161 | CODE | |
| LOW | rich/style.py | 344 | CODE | |
| LOW | rich/style.py | 498 | CODE | |
| LOW | rich/_wrap.py | 26 | CODE | |
| LOW | rich/containers.py | 111 | CODE | |
| LOW | rich/traceback.py | 56 | CODE | |
| LOW | rich/traceback.py | 433 | CODE | |
| LOW | rich/traceback.py | 768 | CODE | |
| LOW | rich/markup.py | 106 | CODE | |
| LOW | rich/repr.py | 36 | CODE | |
| LOW | rich/repr.py | 41 | CODE | |
| LOW | rich/repr.py | 42 | CODE | |
| LOW | rich/repr.py | 67 | CODE | |
| LOW | rich/pretty.py | 580 | CODE | |
| LOW | rich/pretty.py | 424 | CODE | |
| LOW | rich/pretty.py | 621 | CODE | |
| LOW | rich/pretty.py | 633 | CODE | |
| LOW | rich/columns.py | 62 | CODE | |
| LOW | rich/_inspect.py | 125 | CODE | |
| LOW | rich/markdown.py | 579 | CODE | |
| LOW | rich/text.py | 817 | CODE | |
| LOW | rich/text.py | 964 | CODE | |
| LOW | rich/text.py | 1106 | CODE | |
| LOW | rich/highlighter.py | 123 | CODE | |
| LOW | rich/live.py | 145 | CODE | |
| LOW | rich/live.py | 244 | CODE | |
| LOW | rich/syntax.py | 470 | CODE | |
| LOW | rich/syntax.py | 652 | CODE | |
| LOW | rich/table.py | 523 | CODE | |
| LOW | rich/table.py | 755 | CODE | |
| LOW | rich/segment.py | 247 | CODE | |
| LOW | rich/segment.py | 276 | CODE | |
| LOW | rich/segment.py | 307 | CODE | |
| LOW | rich/segment.py | 354 | CODE | |
| LOW | rich/segment.py | 630 | CODE | |
| LOW | rich/ansi.py | 138 | CODE | |
| LOW | rich/progress.py | 1311 | CODE | |
| LOW | rich/cells.py | 113 | CODE | |
| LOW | rich/cells.py | 161 | CODE | |
| LOW | rich/_windows_renderer.py | 7 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_inspect.py | 381 | except Exception as e: | CODE |
| LOW | tests/test_inspect.py | 416 | except Exception as e: | CODE |
| LOW | tests/test_repr.py | 69 | except Exception: | CODE |
| MEDIUM | tests/test_traceback.py | 63 | def test_capture(): | CODE |
| MEDIUM | tests/test_traceback.py | 286 | def test_suppress(): | CODE |
| MEDIUM | tests/test_traceback.py | 386 | def foo() -> None: | CODE |
| MEDIUM | tests/test_traceback.py | 392 | def bar() -> None: | CODE |
| LOW⚡ | tests/test_traceback.py | 97 | except Exception: | CODE |
| LOW⚡ | tests/test_traceback.py | 107 | except Exception: | CODE |
| LOW⚡ | tests/test_traceback.py | 118 | except Exception: | CODE |
| LOW⚡ | tests/test_traceback.py | 196 | except Exception: | CODE |
| LOW⚡ | tests/test_traceback.py | 206 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 27 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 66 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 147 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 174 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 228 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 244 | except Exception: | CODE |
| LOW | tests/test_traceback.py | 370 | except Exception as error: | CODE |
| LOW | tests/test_traceback.py | 389 | except Exception as e: | CODE |
| LOW | tests/test_traceback.py | 395 | except Exception as e: | CODE |
| LOW | tests/test_traceback.py | 278 | except Exception: | STRING |
| LOW | tests/test_traceback.py | 289 | except Exception: | STRING |
| LOW | tests/test_traceback.py | 323 | except Exception: | STRING |
| LOW | examples/exception.py | 25 | except Exception: | CODE |
| LOW | examples/recursive_error.py | 24 | except Exception: | CODE |
| LOW | rich/logging.py | 187 | except Exception: | CODE |
| LOW⚡ | rich/console.py | 81 | except Exception: | CODE |
| LOW⚡ | rich/console.py | 85 | except Exception: | CODE |
| LOW⚡ | rich/console.py | 89 | except Exception: | CODE |
| LOW | rich/_fileno.py | 19 | except Exception: | CODE |
| LOW | rich/traceback.py | 214 | except Exception: | CODE |
| LOW | rich/traceback.py | 480 | except Exception: | CODE |
| LOW | rich/traceback.py | 858 | except Exception as error: | CODE |
| LOW | rich/markup.py | 195 | except Exception as error: | CODE |
| LOW | rich/repr.py | 84 | except Exception as error: | CODE |
| LOW | rich/pretty.py | 86 | except Exception: # pragma: no coverage | CODE |
| LOW | rich/pretty.py | 167 | except Exception: | CODE |
| LOW | rich/pretty.py | 574 | except Exception: | CODE |
| LOW | rich/pretty.py | 613 | except Exception as error: | CODE |
| LOW | rich/pretty.py | 653 | except Exception: | CODE |
| LOW | rich/pretty.py | 661 | except Exception: | CODE |
| LOW | rich/pretty.py | 739 | except Exception as error: | CODE |
| LOW | rich/_inspect.py | 136 | except Exception as error: | CODE |
| LOW | rich/live.py | 134 | except Exception: | CODE |
| LOW | rich/json.py | 135 | except Exception as error: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/render.py | 24 | CODE | |
| LOW | tests/test_card.py | 26 | CODE | |
| LOW | tests/test_markdown_no_hyperlinks.py | 89 | CODE | |
| LOW | examples/exception.py | 15 | CODE | |
| LOW | rich/logging.py | 71 | CODE | |
| LOW | rich/console.py | 157 | CODE | |
| LOW | rich/console.py | 619 | CODE | |
| LOW | rich/console.py | 1652 | CODE | |
| LOW | rich/console.py | 1758 | CODE | |
| LOW | rich/console.py | 1947 | CODE | |
| LOW | rich/style.py | 131 | CODE | |
| LOW | rich/traceback.py | 84 | CODE | |
| LOW | rich/traceback.py | 295 | CODE | |
| LOW | rich/traceback.py | 353 | CODE | |
| LOW | rich/__init__.py | 77 | CODE | |
| LOW | rich/__init__.py | 120 | CODE | |
| LOW | rich/pretty.py | 113 | CODE | |
| LOW | rich/pretty.py | 171 | CODE | |
| LOW | rich/pretty.py | 273 | CODE | |
| LOW | rich/columns.py | 31 | CODE | |
| LOW | rich/_inspect.py | 37 | CODE | |
| LOW | rich/text.py | 144 | CODE | |
| LOW | rich/text.py | 329 | CODE | |
| LOW | rich/live.py | 57 | CODE | |
| LOW | rich/syntax.py | 279 | CODE | |
| LOW | rich/syntax.py | 320 | CODE | |
| LOW | rich/table.py | 188 | CODE | |
| LOW | rich/table.py | 364 | CODE | |
| LOW | rich/progress_bar.py | 33 | CODE | |
| LOW | rich/prompt.py | 80 | CODE | |
| LOW | rich/prompt.py | 97 | CODE | |
| LOW | rich/prompt.py | 112 | CODE | |
| LOW | rich/progress.py | 104 | CODE | |
| LOW | rich/progress.py | 306 | CODE | |
| LOW | rich/progress.py | 372 | CODE | |
| LOW | rich/progress.py | 397 | CODE | |
| LOW | rich/progress.py | 421 | CODE | |
| LOW | rich/progress.py | 714 | CODE | |
| LOW | rich/progress.py | 1077 | CODE | |
| LOW | rich/progress.py | 1311 | CODE | |
| LOW | rich/panel.py | 40 | CODE | |
| LOW | rich/panel.py | 74 | CODE | |
| LOW | rich/json.py | 25 | CODE | |
| LOW | rich/json.py | 54 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/profile_divide.py | 3 | text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore | CODE |
| LOW | tools/profile_divide.py | 3 | text = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore | CODE |
| LOW | tests/test_markdown_no_hyperlinks.py | 47 | > Lorem ipsum | CODE |
| LOW | tests/test_markdown_no_hyperlinks.py | 96 | expected = " \x1b[1;4mHeading\x1b[0m | STRING |
| LOW | tests/_card_render.py | 1 | expected = "\x1b[3m Rich features \ | CODE |
| LOW | tests/test_markdown.py | 47 | > Lorem ipsum | CODE |
| LOW | tests/test_markdown.py | 102 | expected = " \x1b[1;4mHeading\x1b[0m | STRING |
| LOW | examples/highlighter.py | 20 | console.print("Send funds to money@example.org") | CODE |
| LOW | benchmarks/snippets.py | 94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq | STRING |
| LOW | benchmarks/snippets.py | 94 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq | STRING |
| LOW | rich/text.py | 1342 | """\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolo | STRING |
| LOW | rich/text.py | 1342 | """\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolo | STRING |
| LOW | rich/__main__.py | 71 | lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in metus sed sapien ultricies pretium a at | CODE |
| LOW | rich/__main__.py | 71 | lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque in metus sed sapien ultricies pretium a at | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rich/live_render.py | 43 | def set_renderable(self, renderable: RenderableType) -> None: | CODE |
| LOW | rich/filesize.py | 13 | __all__ = ["decimal"] | CODE |
| LOW | rich/__init__.py | 8 | __all__ = ["get_console", "reconfigure", "print", "inspect", "print_json"] | CODE |
| LOW | rich/text.py | 680 | def set_length(self, new_length: int) -> None: | CODE |
| LOW | rich/_win32_console.py | 559 | def set_title(self, title: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/source/conf.py | 1 | # Configuration file for the Sphinx documentation builder. | COMMENT |
| LOW | .github/workflows/codeql.yml | 41 | # Prefix the list here with "+" to use these queries and those in the config file. | COMMENT |
| LOW | rich/highlighter.py | 161 | # | COMMENT |
| LOW | rich/highlighter.py | 181 | # Calendar date with hours, minutes, and seconds (e.g., 2008-08-30 17:21:59 or 20080830 172159). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | rich/console.py | 2031 | """This function is called when a `BrokenPipeError` is raised. | STRING |
| MEDIUM | rich/align.py | 40 | # Create a panel 20 characters wide | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 443 | [Toad](https://github.com/batrachianai/toad) is a unified interface for agentic coding. Built with Rich and Textual. | STRING |