NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Friendly misc/utils/convenience library
Last release 5 months ago
05 May 2026
Release timing varies
gaps range from 8 days to 7 months
Most releases are documented
notes for 43 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
193 releases · first in 2018
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Moved release notes to wiki: https://github.com/codrsquad/runez/wiki/Release-notes
Moved release notes to wiki: https://github.com/codrsquad/runez/wiki/Release-notes
Corrected @thread_local_property decorator
Dropped support for python2
Added runez.http
Nothing published for this version
Nothing published for this version
Nothing published for this version
* Added Version.given_components
Added Version.given_components
Extract optional epoch, local part and suffix from PEP-440 Version()
Extract optional epoch, local part and suffix from PEP-440 Version()
Allow to customize globally what logger to use for abort()
Allow to customize globally what logger to use for abort()
Added runez.log.resolved_dryrun()
Added SYS_INFO.program_version and SYS_INFO.user_agent
Added SYS_INFO.program_version and SYS_INFO.user_agent
Edge case for hdry(message=None)
Edge case for hdry(message=None)
Enforce bounds for @retry parameters
Enforce bounds for @retry parameters
Added @retry decorator, as well a python -mrunez retry command
Added @retry decorator, as well a python -mrunez retry command
hdry() available via runez.log (allows to conveniently resolve dryrun=UNSET)
Fixed bug in PythonSpec.speccified()
Fixed bug in PythonSpec.speccified()
* Don't crash on plural(None)
Don't crash on plural(None)
Unfortunately, click's mix_stderr seems to mean "ignore stderr please"
Unfortunately, click's mix_stderr seems to mean "ignore stderr please"
Added cli.exercise_main() and a typical runez.click.protected_main()
Added cli.exercise_main() and a typical runez.click.protected_main()
Generalized diagnostics(), simplified internals for cli fixture
Generalized diagnostics(), simplified internals for cli fixture
Allow for script invocations as well via cli.run(..., main="src/my-script.py")
Added wcswidth(), corrected PrettyTable rendering with unicode characters
Moved development related functions to runez.DEV
Moved development related functions to runez.DEV
Updated code to use SYS_INFO instead of deprecated runez.log calss
Added {project} placeholder for runez.log.setup()
Updated code to use SYS_INFO instead of deprecated runez.log calss
Allow dict source for two_column_diagnostics() render
Allow dict source for two_column_diagnostics() render
Added cached_property.to_dict()
Added cached_property.to_dict()
Resilient CurrentFolder() in dryrun mode
Resilient CurrentFolder() in dryrun mode
Added ability to run() a command in background
Added ability to run() a command in background
Added SYS_INFO.program_name
find_python() accepts PythonInstallation objects
find_python() accepts PythonInstallation objects
Allow to represent PythonSpec in custom/colored ways
Allow to represent PythonSpec in custom/colored ways
Don't crash if python version could not be determined
Don't crash if python version could not be determined
Better error report in runez.run() when program is not installed
Better error report in runez.run() when program is not installed
Version.from_text() can extract version from chatty text
Version.from_text() can extract version from chatty text
Don't rely on VIRTUAL_ENV env var to determine dev_folder()
Don't rely on VIRTUAL_ENV env var to determine dev_folder()
Try harder with get_version(): use importlib.metadata when available
Try harder with get_version(): use importlib.metadata when available
Nothing published for this version
runez.run(passthrough=True) now properly lets terminal colors through
runez.run(passthrough=True) now properly lets terminal colors through
Added runez.inspector.auto_install()
Your coding agent can read these notes before it upgrades. Set up the MCP server →