Textualize/rich
71.7
Strong · 26 September 2026
25.1k
lines of production code
Python
primary language
4
measurements over time
What this system is
Features
Add Unicode version data for width calculation
The library now includes a new \rich/\_unicode\_data\ module that provides cell width tables for multiple Unicode versions (from 4.1.0 through 17.0.0). This allows Rich to accurately calculate the display width of characters according to the specific Unicode standard, ensuring correct text alignment and formatting in terminal output.
_rich/\_unicode\data · high confidence
Add logo assets
Added the project logo in PDF and SVG formats to the assets directory, providing scalable and print-ready versions of the brand mark.
assets · high confidence
Add new examples for Rich features
The examples directory now includes a README.md and a collection of new demonstration scripts. These cover a wide range of Rich capabilities, including progress bars (cp\_progress, dynamic\_progress, file\_progress, live\_progress, jobs), layout and live updates (fullscreen, layout, table\_movie), table rendering (table, table\_movie), tree views (tree), columns, groups, and exception/traceback handling (exception, recursive\_error). Additional examples demonstrate text highlighting (highlighter, rainbow), export functionality (export, save\_table\_svg), and other UI elements like spinners, status, and padding.
examples · high confidence
Added development and profiling tools to the repository
Added several new files in the tools/ directory to support development and performance analysis. This includes scripts for generating emoji and Unicode width tables (make\_emoji.py, make\_width\_tables.py), a stress test for the pretty-printing functionality (stress\_test\_pretty.py), and profiling scripts for the divide and pretty-printing logic (profile\_divide.py, profile\_pretty.py). Additionally, example data files (cats.json) and Markdown documents (README.md, movies.md) were added to the tools directory.
tools · high confidence
Initial benchmark suite for tracking Rich performance
Added a new \benchmarks\ directory containing a comprehensive suite of performance tests using the Airspeed Velocity (\asv\) framework. This includes Python scripts defining test suites for \Text\, \Syntax\, \Table\, \Pretty\, \Style\, and \Color\ components, along with a \README\ explaining how to run and update the benchmark dashboard. The suite captures baseline performance metrics for these core library features.
benchmarks · high confidence
Repository maintenance and documentation updates
The repository now includes configuration files for code coverage (.coveragerc), pre-commit hooks (.pre-commit-config.yaml), and Read the Docs (.readthedocs.yml) to standardize development workflows. Additionally, an AI\_POLICY.md has been added to establish guidelines for AI-generated pull requests, and the CHANGELOG.md has been updated to reflect recent changes.
(repo-wide) · high confidence
Behavioural changes
Improved exception group detection and traceback formatting
The library now detects recursion in Exception Groups, preventing potential infinite loops or crashes when handling nested exception groups. Additionally, the traceback rendering has been polished to correctly handle missing frame file information and address a 'missing whitespace' bug in tracebacks, ensuring that exception messages are displayed accurately without spurious colon formatting or missing context.
rich · high confidence
Test coverage
Added card rendering test data
Added a new test file \tests/\_card\_render.py\ containing the expected ANSI-escaped output for the card rendering feature, enabling snapshot-style verification of the card's visual output in tests.
tests · high confidence
Dependencies
Migrate project build and dependency management to Poetry
The project has been migrated from a pip-based dependency management system to Poetry. This introduces a \pyproject.toml\ file that defines the package metadata, runtime dependencies (such as \pygments\ and \markdown-it-py\), and development dependencies (including \pytest\, \black\, and \mypy\). A \poetry.lock\ file is added to pin exact versions of all dependencies and their transitive dependencies, ensuring reproducible builds. Additionally, a \docs/requirements.txt\ file is created to specify the versions of documentation tools like \Sphinx\ and \alabaster\.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 50 → 72 (+22.0)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 85 (-8.1)
- Architecture 94 → 97 (+3.2)
- Maturity 55 → 54 (-1.4)
- Readiness 30 → 90 (+59.8)
- Security 66 → 88 (+22.5)
Resolved (27)
- Coverage not measured — test suite did not build
- Dimension evaluation failed
- Duplicated block (14 lines × 2) (rich/json.py)
- Duplicated block (9 lines × 2) (rich/text.py)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- LLM evaluation failed
- Low: security finding (details withheld)
- Low: security finding (details withheld)
- Medium: security finding (details withheld)
- …and 7 more
New (115)
- AnsiDecoder.decode_line (cognitive 36) (rich/ansi.py)
- AnsiDecoder.decode_line (cyclomatic 21) (rich/ansi.py)
- Color.downgrade (cognitive 24) (rich/color.py)
- Color.get_ansi_codes (cognitive 16) (rich/color.py)
- Columns.__rich_console__ (cognitive 26) (rich/columns.py)
- Console.init (cognitive 43) (rich/console.py)
- Console.init (cyclomatic 32) (rich/console.py)
- Console._write_buffer (cognitive 65) (rich/console.py)
- Console._write_buffer (cyclomatic 18) (rich/console.py)
- Console.export_html (cognitive 33) (rich/console.py)
- Console.export_svg (cognitive 30) (rich/console.py)
- Console.print (cognitive 32) (rich/console.py)
- Console.print (cyclomatic 18) (rich/console.py)
- Dependency hygiene PARTLY measured — Python dependencies read, no exact pin to grade for currency
- Duplicated block (10–12 lines × 2) (rich/text.py)
- Duplicated block (14 lines × 2) (rich/json.py)
- Duplicated block (14 lines × 2) (rich/style.py)
- Duplicated block (19 lines × 2) (rich/segment.py)
- Duplicated block (44–51 lines × 2) (rich/progress.py)
- Duplicated block (7 lines × 2) (rich/progress.py)
- …and 95 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Textualize/rich was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 26 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 9d8f9a372cc5916fd4781fec207ced7ddac2f08f — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-09659c52afae.