Skip to main content
Moderne OnlyThis recipe is proprietary to Moderne and runs on the Moderne platform or CLI — it isn’t part of the open-source catalog. Available with a Moderne subscription.Contact Sales

Find backoff decorators that need a hand migration

Recipe IDorg.openrewrite.python.migrate.FindBackoffDecoratorsNotMigrated
Artifactopenrewrite-migrate-python

Mark every backoff.on_exception and backoff.on_predicate, applied with an @ or called, that org.openrewrite.python.migrate.ReplaceBackoffDecoratorsWithTenacity declines to rewrite, with the reason, and record it in a data table. This changes no behaviour; it scopes the hand migration left after the mechanical one. The markup it prints is not valid Python, so run it for a report rather than as part of a migration.

Single recipePythonpythonsearchbackofftenacitymigrationretryModerne Proprietary License
Try in PlatformTry this recipe in the Moderne platform. Not a user yet? You’ll get a no-setup demo environment, with nothing to install or configure.

Usage​

Run this recipe

In order to run Python recipes, you will need to use the Moderne CLI.

This recipe calls into other OpenRewrite packages as it runs. You will need to install all of the following packages before running it:

RELEASE resolves to the newest release and LATEST to the newest build of any kind, including snapshots. Either one lets mod config recipes upgrade pull in later versions without editing this command; a pinned version stays where you put it.

Install the recipe packages
mod config recipes pip install openrewrite-migrate-python
mod config recipes jar install org.openrewrite.recipe:rewrite-migrate-python:RELEASE
mod config recipes jar install org.openrewrite:rewrite-python:RELEASE

Then, you can run the recipe via:

Run the recipe
mod run . --recipe org.openrewrite.python.migrate.FindBackoffDecoratorsNotMigrated

Data tables​

Backoff decorators needing a hand migration
org.openrewrite.python.migrate.table.BackoffDecorators

Backoff retry decorators whose behaviour tenacity cannot reproduce mechanically.

Export after a run
mod study . --last-recipe-run \
--data-table org.openrewrite.python.migrate.table.BackoffDecorators
ColumnDescription
Source pathThe path of the file holding the decorator.
DecoratorWhich backoff decorator it is, on_exception or on_predicate.
ReasonWhy tenacity cannot reproduce the decorator's behaviour.