import functools def validate_schema(required_keys): def decorator(func): @functools.wraps(func) def wrapper(data, *args, **kwargs): if not isinstance(data, dict): raise TypeError(f"Expected dict, got {type(data).__name__}") missing = required_keys - data.keys() if missing: raise ValueError(f"Missing required keys: {missing}") return func(data, *args, **kwargs) return wrapper return decorator