Spaces:
Running
Running
File size: 784 Bytes
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 |
from functools import wraps
import inspect
class FilterRegistry:
def __init__(self):
self.filters = {}
self.params_map = {}
def register(self, name, **defaults):
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)
}
self.params_map[name] = params
return func
return decorator
registry = FilterRegistry() |