v2.4.0
🚀 Added
- feat: Add a retry context manager #191 (from @edgarrmondragon)
- feat: Add type annotations to decorator functions #182 (from @edgarrmondragon)
🔄 Changed
- Drop support for Python 3.8 #152 (from @edgarrmondragon)
🐛 Fixed
- fix: Updated the type annotation of the
exceptionargument inon_exception,on_predicate,retry_contextandaretry_contextto correctly expect an exception type or a tuple of exception types #192 (from @edgarrmondragon) - fix: Measure elapsed time after function call #187 (from @edgarrmondragon)
📚 Documentation
- docs: Enable offline usage of the docs #154 (from @edgarrmondragon)
- docs: Fixed some code examples #116 (from @edgarrmondragon)
- docs: Prepare for ReadTheDocs #108 (from @edgarrmondragon)
- docs: Format Python code blocks in Markdown files with native Ruff support #102 (from @edgarrmondragon)
- docs: Remove duplicate headers in API reference docs #80 (from @edgarrmondragon)
🧰 Internal
- refactor: Use retry context internally inside our public decorators #193 (from @edgarrmondragon)
- refactor: Move retry loop logic into a dedicated object #189 (from @edgarrmondragon)
- refactor: Simplify
expo,decay, andfibowait generators #188 (from @edgarrmondragon) - chore: Bump Ruff to v0.16 #184 (from @edgarrmondragon)
- refactor: Simplify
backoff.constantwait generator implementation #181 (from @edgarrmondragon) - chore: Check types with
tyand update some type annotations #179 (from @edgarrmondragon) - test: Update parametrized tests to address pytest 9.1.0 deprecations #170 (from @edgarrmondragon)
- ci: add zizmor GitHub Actions security analysis #165 (from @edgarrmondragon)
- chore: Create CODEOWNERS #115 (from @edgarrmondragon)
- Apply the Ruff
FArules #104 (from @edgarrmondragon) - chore: Enable more Ruff rules #103 (from @edgarrmondragon)
- Apply the Ruff
Brules #100 (from @edgarrmondragon) - Apply the Ruff
Irules #99 (from @edgarrmondragon) - Apply the Ruff
RETrules #92 (from @edgarrmondragon) - chore: Add a tox env for building docs #91 (from @edgarrmondragon)
- chore: Do not use a uv.lock file #87 (from @edgarrmondragon)
🛠️ Maintenance
- ci: Wire up release drafter #194 (from @edgarrmondragon)
- ci: Simplify CodeQL analysis workflow #186 (from @edgarrmondragon)
- chore: Check types with
tyand update some type annotations #179 (from @edgarrmondragon) - test: Update parametrized tests to address pytest 9.1.0 deprecations #170 (from @edgarrmondragon)
- chore: Migrate docs config to zensical.toml #118 (from @edgarrmondragon)
- ci: Future-proof tested Python versions #117 (from @edgarrmondragon)
- chore: Create CODEOWNERS #115 (from @edgarrmondragon)
- ci: Use actionlint in CI #112 (from @edgarrmondragon)
- Pin Zensical while it is unstable #93 (from @edgarrmondragon)