Spaces:
Running
Running
File size: 1,216 Bytes
4bb69b3 4c61c0c 4bb69b3 4c61c0c 4bb69b3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
from functools import wraps
import inspect
class FilterRegistry:
def __init__(self):
self.filters = {}
self.params_map = {}
def register(self, name, defaults=None, min_vals=None, max_vals=None, step_vals=None):
if defaults is None:
defaults = {}
if min_vals is None:
min_vals = {}
if max_vals is None:
max_vals = {}
if step_vals is None:
step_vals = {}
def decorator(func):
self.filters[name] = func
sig = inspect.signature(func)
params = {}
for param in sig.parameters.values():
if param.name == 'image':
continue
params[param.name] = {
'type': param.annotation,
'default': param.default if param.default != inspect.Parameter.empty else defaults.get(param.name),
'min': min_vals.get(param.name),
'max': max_vals.get(param.name),
'step': step_vals.get(param.name)
}
self.params_map[name] = params
return func
return decorator
registry = FilterRegistry() |