def make_check(exc_type, template, pred, actual, funcname):
 if isinstance(funcname, str):
  def get_funcname(_):
   return funcname
 else:
  get_funcname = funcname
 def _check(func, argname, argvalue):
  if pred(argvalue):
   raise exc_type((template % {'funcname': get_funcname(func), 'argname': argname, 'actual': actual(argvalue)}))
  return argvalue
 return _check

def make_check ( exc_type , template , pred , actual , funcname ) : if isinstance ( funcname , str ) : def get_funcname ( _ ) : return funcname else : get_funcname = funcname def _check ( func , argname , argvalue ) : if pred ( argvalue ) : raise exc_type ( ( template % { 'funcname' : get_funcname ( func ) , 'argname' : argname , 'actual' : actual ( argvalue ) } ) ) return argvalue return _check
factory for making preprocessing functions that check a predicate on the input value .