From 92ef80fd61117e1e90da7f5243a016ad9046d7ad Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Fri, 15 Apr 2011 21:04:24 -0500 Subject: [PATCH] Copy more attributes from controller callables to partial wrappers --- src/milla/dispatch/routing.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/milla/dispatch/routing.py b/src/milla/dispatch/routing.py index d5f7a9b..997d060 100644 --- a/src/milla/dispatch/routing.py +++ b/src/milla/dispatch/routing.py @@ -94,10 +94,17 @@ class Router(object): urlvars = match.groupdict() urlvars.update(vars) func = functools.partial(controller, **urlvars) - if hasattr(func, '__name__'): - func.__name__ = controller.__name__ - if hasattr(func, '__doc__'): - func.__doc__ = controller.__doc__ + # Work around for Python Issue 3445 for older versions + for attr in functools.WRAPPER_ASSIGNMENTS: + try: + value = getattr(controller, attr) + except AttributeError: + pass + else: + setattr(func, attr, value) + for attr in functools.WRAPPER_UPDATES: + getattr(func, attr).update(getattr(controller, + attr, {})) self._cache[path_info] = func return func