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()