Data Validation Patterns
Defaults Merge
Validation often applies default values before code reads configuration fields.
Defaults Merge
defaults.py
def with_defaults(defaults, overrides):
merged = {**defaults, **overrides}
return merged
timeout =
defaults = {"timeout": 10, "retries": 2}
overrides = {"timeout": timeout}
config = with_defaults(defaults, overrides)
print(f"timeout={config['timeout']};retries={config['retries']}")
def with_defaults(defaults, overrides):
merged = {**defaults, **overrides}
return merged
timeout =
defaults = {"timeout": 10, "retries": 2}
overrides = {"timeout": timeout}
config = with_defaults(defaults, overrides)
print(f"timeout={config['timeout']};retries={config['retries']}")
defaults
Merging defaults with overrides gives every expected configuration key a value.