+ try:
+ return handler(*route, **kwargs)
+ except TypeError, e:
+ m = args_re.match(unicode(e))
+ if m:
+ (quant, n_ok, n_bad) = m.groups()
+ n_ok = int(n_ok)
+ n_bad = int(n_bad)
+ n_ok -= 1
+ n_bad -= 1
+ pl = ''
+ if n_ok > 1:
+ pl = 's'
+ raise WrongArgumentsError(u'%s takes %s %s argument%s, %s given'
+ % (handler.__name__, quant, n_ok, pl, n_bad))
+ raise