Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
One option is to write a (parameterised) decorator that transforms your jitter function with a given percentage value: from typing import Callable def percent_jitter_dec(percentage: float = 0.2...
#1: Initial revision
One option is to write a (parameterised) [decorator](https://docs.python.org/3/glossary.html#term-decorator) that transforms your jitter function with a given `percentage` value:
```python
from typing import Callable
def percent_jitter_dec(percentage: float = 0.2) -> Callable[[float], float]:
def _jitter(value: float) -> float:
max_jitter = value * percentage
return value + random.uniform(-max_jitter, max_jitter)
return _jitter
```
Now, you should be able to use `jitter=percent_jitter_dec(percentage=0.5)`.
In this simple case, you actually do not need to write the wrapper yourself. The `functools` package (normally included with any standard Python installation) provides the [`partial`](https://docs.python.org/3/library/functools.html#functools.partial) function that implements exactly this kind of transformations. To use it, you would do something as follows:
```python
from functools import partial
@backoff.on_exception(jitter=partial(percent_jitter, percentage=0.5))
def func(): ...
```
Note that we are using the plain `percent_jitter` function you provided in your question, here.
