NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #52 most downloaded on PyPI
Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal
Last release 5 months ago
12 Apr 2026
Release timing varies
gaps range from 8 days to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
207 releases · first in 2019
Fixed underscore with display hook https://github.com/willmcgugan/rich/issues/235
Version 5.20 adds the ability to disable cropping to the console width, in effect allowing the terminal to soft wrap lines.
Version 5.20 adds the ability to disable cropping to the console width, in effect allowing the terminal to soft wrap lines.
Also in 5.20 is the ability to specify multiple characters in a Rule.
<img width="1411" alt="Screen Shot 2020-08-14 at 17 09 29" src="https://user-images.githubusercontent.com/554369/90270527-42f10e00-de52-11ea-8fbe-1d9954d0df16.png">
One column per quarter.
Further optimized pretty printing ~5X.
Optimized pretty printing ~3X faster
Fixed deprecation warnings re backslash https://github.com/willmcgugan/rich/issues/210
This release adds a home grown pretty print formatter, and removes the pprintpp dependancy. The new formatter is better integrated with Rich and will be a more flexible solution, but its not as battle tested as pprintpp. Please report any bugs!
Also in 5.1.0 is a 'display hook' which allows for integration of Rich in to the REPL, so all your data will be pretty. It's kind of fun to use.
The following will install the display hook.
>>> from rich import pretty
>>> pretty.install()
<img width="1189" alt="repl" src="https://user-images.githubusercontent.com/554369/89718656-4b5fc980-d9b8-11ea-9ece-38f00d89094e.png">
Console markup syntax has been tweaked to not overlap with Python data structures.
Console markup syntax has been tweaked to not overlap with Python data structures.
Prior to 5.0.0 if you stringified a list it would typically be removed from the output as Rich would interpret it as a markup tag. This surprised people when printing lists in an f-string.
For instance, prior to 5.0.0 the following would not print as you might expect:
>>> my_list = [1,2,3]
>>> print(f"my_list={my_list}")
my_list=
With 5.0.0 it prints this following::
my_list = [1, 2, 3]
Which is less astonishing.
This change required some changes to the console markup syntax, which is the reason for the major version bump.
You can no longer use a number between 0 and 255 to provide a color, now it must be wrapped with color(NUMBER). So "[4]Red[/]" becomes "[color(4)]Red[/]". From an extensive search of Github, most people never used this syntax anyway and would prefer to use friendly color names.
Additionally escaping has changed. Prior to 5.0.0 you could escape square brackets by doubling them up. From 5.0.0 you can escape a tag with backslash.
[1,2,3] is treated as a literal, not a tag."color(<number>)" so that [5] (for example) is considered a literal.foo[[]] would be foo\[bar]Added thread to automatically call update() in progress.track(). Replacing previous adaptive algorithm.
Added show_time and show_level parameters to RichHandler https://github.com/willmcgugan/rich/pull/182
Fixed missing new lines https://github.com/willmcgugan/rich/issues/178
Optimized progress.track for very quick iterations https://github.com/willmcgugan/rich/issues/176
Major version bump for a breaking change to Text.stylize signature, which corrects a minor but irritating API wart. The style now comes first and the…
Major version bump for a breaking change to Text.stylize signature, which corrects a minor but irritating API wart. The style now comes first and the start and end offsets default to the entire text. This allows for text.stylize_all(style) to be replaced with text.stylize(style). The start and end offsets now support negative indexing, so text.stylize("bold", -1) makes the last character bold.
Fixed incorrect default of expand in Table.grid
Progress bars are now usable when NO_COLOR env var is set.
New rich.prompt functionality.
<img width="705" alt="Screen Shot 2020-07-22 at 17 19 41" src="https://user-images.githubusercontent.com/554369/88201637-9d29f500-cc3f-11ea-802b-0aef0878ab1a.png">
Progress bars are now usable when NO_COLOR env var is set.
<img width="1432" alt="Screen Shot 2020-07-22 at 18 09 02" src="https://user-images.githubusercontent.com/554369/88206674-8f2ba280-cc46-11ea-95ab-793f6980d4a0.png">
Change log_locals to use scope.render_scope
<img width="683" alt="Screen Shot 2020-07-14 at 17 19 50" src="https://user-images.githubusercontent.com/554369/87472511-f5497180-c617-11ea-99e0-d542af1b6bbb.png">
Removed replace of -- --- ... from Markdown, as it made it impossible to include CLI info
### Changed
Added title and title_align options to Panel
Added Align.left Align.center Align.right shortcuts
__bool__ on Segmentborder_style argument to Panel (note, style now applies to interior of the panel)Progress bars now work in Jupyter
Fixed Windows version number require for truecolor
More precise detection of Windows console https://github.com/willmcgugan/rich/issues/140
Fixed edge case with wrapped and overflowed text
Added rich.styled.Styled class to apply styles to renderable
### Added
Added markup argument to logging extra
A new major version due to changes to Rule and Panel constructor, and Table.add_column method. This is unlikely to break anyones code but semver manda
A new major version due to changes to Rule and Panel constructor, and Table.add_column method. This is unlikely to break anyones code but semver mandates a major version bump.
Otherwise, the highlight of this release is that legacy Windows supports a greater range of box characters for Table / Panel etc.
safe_box flagDisabled legacy_windows if jupyter is detected
Fixed highlighting of paths / filenames
style parameter for highlight_regex to be a callable that returns a styleStore a "link id" on Style instance, so links containing different styles are highlighted together.
## [2.2.5] - 2020-06-23 ### Fixed - Fixed justify of tables
Added enable_link_path to RichHandler
Fixed console.log hyperlink not containing full path
Exposed RichHandler highlighter as a class var
Linked path in log render to file
Added redirect_stdout and redirect_stderr to Progress
Added 'transient' option to Progress
### Changed
Some minor optimizations in Text
A new major version due to some backwards incompatible changes. A name change of JustifyValues to JustifyMethod, and the introduction of some keyword…
A new major version due to some backwards incompatible changes. A name change of JustifyValues to JustifyMethod, and the introduction of some keyword only arguments. Most code using an earlier version will require no changes.
Added width argument to Columns
columns_first argument in ColumnsAdded rich.get_console() function to get global console instance.
markdown.Heading.create() to work with subclassing.Added padding parameter to Panel
padding parameter to PanelIssue with right aligned wrapped text adding extra spaces
Note to self: Don't publish until GH actions tests on all Python versions.
Note to self: Don't publish until GH actions tests on all Python versions.
Support for double underline, framed, encircled, and overlined attributes
__console__ to __rich_console__, and __measure__ to __rich_measure__Exception when BarColumn.bar_width == None
Optimizations for Segment, Console and Table
### Added
Added collapse_padding option to Table.
### Added
Added justify argument to Console.print and console.log
Changed progress bars to write to stdout on terminal and hide on non-terminal
Fixed incorrect file and link in progress.log
### Added
Issue with progress of one line
Added -p switch to python -m rich.markdown to page output
Stripped cursor moving control codes from text
Added hyperlinks to Style and markup
python -m rich.syntax commandAdded python -m rich.syntax command
python -m rich.syntax commandIssue with Windows legacy support https://github.com/willmcgugan/rich/issues/59
Applied console markup after highlighting
python -m rich.theme commandpython -m rich.markdown commandImprovements to repr highlighter to highlight URLs
Fixed incorrect markdown rendering for quotes and changed style
Removed debug print from rich.progress
Added Table.show_lines to render lines between rows
Fix row_styles applying to header
Your coding agent can read these notes before it upgrades. Set up the MCP server →