Skip to content
CAI
Software that uses CAICheck a score

Textualize/rich

71.7

Strong · 26 September 2026

25.1k

lines of production code

Python

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.