Photo-Filter-2.0 / registry.py
eienmojiki's picture
Update registry.py
4c61c0c verified
raw
history blame
1.22 kB
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()