Changelog
[v2.4.0] - 2026-08-07
🚀 Added
feat: Add a retry context manager (#191) @edgarrmondragon
feat: Add type annotations to decorator functions (#182) @edgarrmondragon
🔄 Changed
Drop support for Python 3.8 (#152) @edgarrmondragon
🐛 Fixed
fix: Updated the type annotation of the exception argument in on_exception, on_predicate, retry_context and aretry_context to correctly expect an exception type or a tuple of exception types (#192) @edgarrmondragon
fix: Measure elapsed time after function call (#187) @edgarrmondragon
📚 Documentation
docs: Enable offline usage of the docs (#154) @edgarrmondragon
docs: Fixed some code examples (#116) @edgarrmondragon
docs: Prepare for ReadTheDocs (#108) @edgarrmondragon
docs: Format Python code blocks in Markdown files with native Ruff support (#102) @edgarrmondragon
docs: Remove duplicate headers in API reference docs (#80) @edgarrmondragon
🧰 Internal
refactor: Use retry context internally inside our public decorators (#193) @edgarrmondragon
refactor: Move retry loop logic into a dedicated object (#189) @edgarrmondragon
refactor: Simplify expo, decay, and fibo wait generators (#188) @edgarrmondragon
chore: Bump Ruff to v0.16 (#184) @edgarrmondragon
refactor: Simplify backoff.constant wait generator implementation (#181) @edgarrmondragon
chore: Check types with ty and update some type annotations (#179) @edgarrmondragon
test: Update parametrized tests to address pytest 9.1.0 deprecations (#170) @edgarrmondragon
ci: add zizmor GitHub Actions security analysis (#165) @edgarrmondragon
chore: Create CODEOWNERS (#115) @edgarrmondragon
Apply the Ruff FA rules (#104) @edgarrmondragon
chore: Enable more Ruff rules (#103) @edgarrmondragon
Apply the Ruff B rules (#100) @edgarrmondragon
Apply the Ruff I rules (#99) @edgarrmondragon
Apply the Ruff RET rules (#92) @edgarrmondragon
chore: Add a tox env for building docs (#91) @edgarrmondragon
chore: Do not use a uv.lock file (#87) @edgarrmondragon
🛠️ Maintenance
ci: Wire up release drafter (#194) @edgarrmondragon
ci: Simplify CodeQL analysis workflow (#186) @edgarrmondragon
chore: Check types with ty and update some type annotations (#179) @edgarrmondragon
test: Update parametrized tests to address pytest 9.1.0 deprecations (#170) @edgarrmondragon
chore: Migrate docs config to zensical.toml (#118) @edgarrmondragon
ci: Future-proof tested Python versions (#117) @edgarrmondragon
chore: Create CODEOWNERS (#115) @edgarrmondragon
ci: Use actionlint in CI (#112) @edgarrmondragon
Pin Zensical while it is unstable (#93) @edgarrmondragon
[v2.3.1] - 2025-12-18
Fixed
Changed the type of the target key in the Details dictionary to represent an actual function #72 (from @edgarrmondragon )
Synced __version__ value in __init__.py with package version #76 (from @edgarrmondragon )
Documentation
Internal
[v2.3.0] - 2025-11-28
Changed
Use time.monotonic instead of datetime.datetime.now #23 (from @luccabb )
Drop support for Python 3.7 #49 (from @edgarrmondragon )
Improve performance of expo by multiplying previous result #50 (from @whonore )
[v2.2.2] - 2025-11-17
Fixed
Use inspect.iscoroutinefunction instead of asyncio.iscoroutinefunction to avoid Python 3.14 deprecation warning #3 (from @edgarrmondragon )
Adapt test cases to pytest-asyncio 1.0 compatibility #1 (from @pastalian )
Include tests in source distribution #13 (from @edgarrmondragon )
Added logging.LoggerAdapter to _MaybeLogger union #34 (from @jcbertin )
Add exception to the typing-only Details dictionary for cases when on_exception is used #35 (from @edgarrmondragon )
Add GitHub Actions for CI, documentation, and publishing #39 (from @tysoncung )
Packaging
[v2.2.1] - 2022-10-05
[v2.2.0] - 2022-10-05
Improve type annotation for wait generators from @hauntsaninja
Include exception in details dict of call handlers from @petamas
Improve type hints for call handlers from @cdce8p
[v2.1.2] - 2022-06-08
Fixed
[v2.1.1] - 2022-06-08
Fixed
[v2.1.0] - 2022-06-07
Changed
Get max_tries/max_time values for every call fixes #160 (from @jvrsantacruz )
[v2.0.1] - 2022-04-27
Changed
Allow None for jitter keyword arg (typing)
[v2.0.0] - 2022-04-26
Added
Add raise_on_giveup keyword arg for decorators
Add backoff.runtime wait generator for dynamically setting wait times based
on target function return value or exception details
Changed
Improve type hints for on_success, on_backoff, on_giveup handlers
Use decorator-specific detail and handler type hints
Optionally use typing_extensions for python 3.7 type hinting
Drop python 3.6 support
Add python 3.10 support
[v1.11.1] - 2021-07-14
Fixed
Update version in backoff module
[v1.11.0] - 2021-07-12
Added
Configurable logging levels for backoff and giveup events
Changed
Minor documentation fixes
[v1.10.0] - 2019-12-07
Changed
Allow sync decorator call from async function
NOTE: THIS WILL BE THE FINAL PYTHON 2.7 COMPATIBLE RELEASE.
[v1.9.2] - 2019-11-19
Changed
Don't include tests and changelog in distribution
[v1.9.1] - 2019-11-18
Changed
Include tests and changelog in distribution
[v1.9.0] - 2019-11-16
Changed
[v1.8.1] - 2019-10-11
Changed
[v1.8.0] - 2018-12-20
Added
Custom loggers
Iterable intervals for constant wait_gen for predefined wait sequences
Changed
Give up on StopIteration raised in wait generators
Nullary jitter signature deprecation warning
[v1.7.0] - 2018-11-23
Changed
Support Python 3.7
Drop support for async in Python 3.4
Drop support for Python 2.6
Update development dependencies
Use poetry for dependencies and packaging
[v1.6.0] - 2018-07-14
Changed
Change default log level from ERROR to INFO
Log retries on exception as INFO
[v1.5.0] - 2018-04-11
Added
Add max_time keyword argument
[v1.4.3] - 2017-05-22
Changed
Add license to source distribution
[v1.4.2] - 2017-04-25
Changed
[v1.4.1] - 2017-04-21
Added
Expose version at package root
Changed
Fix checking for running sync version in coroutine in case when event
loop is not set from @rutsky
[v1.4.0] - 2017-02-05
Added
Async support via asyncio coroutines (Python 3.4) from @rutsky
Changed
Refactor backoff module into package with identical API
[v1.3.2] - 2016-11-18
Changed
Don't log retried args and kwargs by default
README.rst syntax highlighting from @dethi
[v1.3.1] - 2016-08-08
Changed
Include README.rst in source distribution (fixes package)
[v1.3.0] - 2016-08-08
Added
Support runtime configuration with optional callable kwargs
Add giveup kwarg for exception inspection
Changed
[v1.2.1] - 2016-05-27
Changed
[v1.2.0] - 2016-05-26
Added
Changed
Jitter function now accepts raw value and returns jittered value
Change README to reST for the benefit of pypi :(
Remove docstring doc generation and make README canonical
[v1.1.0] - 2015-12-08
Added
Event handling for success, backoff, and giveup
Change log
Changed
Docs and test for multi exception invocations
Update dev environment test dependencies
[v1.0.7] - 2015-02-10
Changed
Fix string formatting for python 2.6
[v1.0.6] - 2015-02-10
Added
Changed
Fix logging bug for function calls with tuple params
[v1.0.5] - 2015-02-03
Changed
Add a default interval of 1 second for the constant generator
Improve on_predicate stop condition avoiding extra sleep
[v1.0.4] - 2014-08-12
Added
[v1.0.3] - 2014-06-05
Changed
Make logging unicode safe
Log on_predicate backoff as INFO rather than ERROR
Back to top