summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2012-02-14 04:28:59 -0500
committerChris McDonough <chrism@plope.com>2012-02-14 04:28:59 -0500
commit9264a759f7a4ce169818f3fbb1cda95d9f183645 (patch)
treee6d8bd7872878944d060134e224621651a065ee3
parent0dd383d5c160460a66cef5fce46a4d4e7c6fe167 (diff)
downloadpyramid-9264a759f7a4ce169818f3fbb1cda95d9f183645.tar.gz
pyramid-9264a759f7a4ce169818f3fbb1cda95d9f183645.tar.bz2
pyramid-9264a759f7a4ce169818f3fbb1cda95d9f183645.zip
only mutate mapped_view if it's a function
-rw-r--r--pyramid/config/views.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/pyramid/config/views.py b/pyramid/config/views.py
index 1988b532b..b36bd1ca7 100644
--- a/pyramid/config/views.py
+++ b/pyramid/config/views.py
@@ -407,11 +407,15 @@ class DefaultViewMapper(object):
mapped_view = self.map_nonclass_requestonly(view)
elif self.attr:
mapped_view = self.map_nonclass_attr(view)
- if self.attr is not None:
- mapped_view.__text__ = 'attr %s of %s' % (
- self.attr, object_description(view))
- else:
- mapped_view.__text__ = object_description(view)
+ if inspect.isroutine(mapped_view):
+ # we potentially mutate an unwrapped view here if it's a function;
+ # we do this to avoid function call overhead of injecting another
+ # wrapper
+ if self.attr is not None:
+ mapped_view.__text__ = 'attr %s of %s' % (
+ self.attr, object_description(view))
+ else:
+ mapped_view.__text__ = object_description(view)
return mapped_view
def map_class_requestonly(self, view):