Skip to content

Instantly share code, notes, and snippets.

@guyskk
Created July 7, 2016 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guyskk/cd72940da5188b362decb92fd7ef9214 to your computer and use it in GitHub Desktop.
Save guyskk/cd72940da5188b362decb92fd7ef9214 to your computer and use it in GitHub Desktop.
def handle_default_optional_desc(some_validater):
def wrapped_validater(*args, **kwargs):
default = kwargs.pop("default", None)
optional = kwargs.pop("optional", False)
desc = kwargs.pop("desc", None)
origin_validater = some_validater(*args, **kwargs)
def validater(value):
if value is None:
if default is not None:
return default
elif optional:
return None
else:
raise Invalid("required")
return origin_validater(value)
return validater
return wrapped_validater
@handle_default_optional_desc
def int_validater(min=0, max=1024):
def validater(value):
try:
v = int(value)
except ValueError:
raise Invalid("invalid int")
if v < min:
raise Invalid("value must >= %d" % min)
elif v > max:
raise Invalid("value must <= %d" % max)
return v
return validater
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment