Skip to content

Latest commit

 

History

History
110 lines (64 loc) · 4.46 KB

CHANGELOG.md

File metadata and controls

110 lines (64 loc) · 4.46 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Calendar Versioning.

The first number of the version is the year. The second number is incremented with each release, starting at 1 for each year. The third number is for emergencies when we need to start branches for older releases.

You can find our backwards-compatibility policy here.

24.2.0 - 2024-01-31

Added

  • stamina.RetryingCaller and stamina.AsyncRetryingCaller that allow even easier retries of single callables: stamina.RetryingCaller(attempts=5).on(ValueError)(do_something, "foo", bar=42) and stamina.RetryingCaller(attempts=5)(ValueError, do_something, "foo", bar=42) will call do_something("foo", bar=42) and retry on ValueError up to 5 times.

    stamina.RetryingCaller and stamina.AsyncRetryingCaller take the same arguments as stamina.retry(), except for on that can be bound separately.

    #56 #57

24.1.0 - 2024-01-03

Fixed

  • stamina doesn't retry successful blocks when it's deactivated anymore (yes, you read it right). #54

23.3.0 - 2023-12-05

Added

23.2.0 - 2023-10-30

Added

  • Instrumentation is now pluggable! You can define your own hooks that are run with retry details whenever a retry is scheduled. The documentation now has a whole chapter on instrumentation. #37

  • If structlog is not installed, the scheduled retry is now logged using the standard library logging module by default. #35

Changed

  • Tenacity's internal AttemptManager object is no longer exposed to the user. This was an oversight and never documented. stamina.retry_context() now yields instances of stamina.Attempt. #22

  • Initialization of instrumentation is now delayed. This means that if there's no retries, there's no startup overhead from importing structlog and prometheus-client. #34

  • Some key names in structlog log messages have been renamed to better reflect their meaning (sleptwaited_so_far, attemptretry_num, and errorcaused_by). You can rename them back using structlog's structlog.processors.EventRenamer. #35

23.1.0 - 2023-07-04

Added

  • Official Python 3.12 support. #9
  • Async support. #10
  • Retries of arbitrary blocks using (async) for loops and context managers. #12
  • Proper documentation. #16
  • A backwards-compatibility policy.

Changed

  • The timeout, wait_initial, wait_max, and wait_jitter arguments can now also be of type datetime.timedelta.

22.2.0 - 2022-10-06

Added

  • Retries are now instrumented. If prometheus-client is installed, retries are counted using the Prometheus counter stamina_retries_total. If structlog is installed, they are logged using a structlog logger at warning level. These two instrumentations are independent from each other.

22.1.0 - 2022-10-02

Added

  • Initial release.