diff options
| author | Chris McDonough <chrism@plope.com> | 2012-02-14 04:28:59 -0500 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2012-02-14 04:28:59 -0500 |
| commit | 9264a759f7a4ce169818f3fbb1cda95d9f183645 (patch) | |
| tree | e6d8bd7872878944d060134e224621651a065ee3 | |
| parent | 0dd383d5c160460a66cef5fce46a4d4e7c6fe167 (diff) | |
| download | pyramid-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.py | 14 |
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): |
