Spaces:
Running
Running
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() |