# HG changeset patch # User cmlenz # Date 1161085106 0 # Node ID ade3089aef5402f4ae9d9270512eecf49f52f85e # Parent 8d07e6fe17a455d722469cccc5908929d74748ad Hide some internal expression evaluation frames from traceback display for apps that support the `__traceback_hide__` protocol (see [http://pythonpaste.org/class-paste.exceptions.collector.ExceptionCollector.html paste.exceptions.collector]). diff --git a/genshi/eval.py b/genshi/eval.py --- a/genshi/eval.py +++ b/genshi/eval.py @@ -142,9 +142,11 @@ self._name = name def __call__(self, *args, **kwargs): + __traceback_hide__ = True self.throw() def __getattr__(self, name): + __traceback_hide__ = True self.throw() def __iter__(self): @@ -157,6 +159,7 @@ return 'undefined' def throw(self): + __traceback_hide__ = True raise NameError('Variable "%s" is not defined' % self._name) @@ -187,6 +190,7 @@ BUILTINS['Undefined'] = Undefined def _lookup_name(data, name, locals_=None): + __traceback_hide__ = True val = Undefined if locals_: val = locals_.get(name, val) @@ -203,6 +207,7 @@ return val(name) def _lookup_attr(data, obj, key): + __traceback_hide__ = True if type(obj) is Undefined: obj.throw() if hasattr(obj, key): @@ -213,6 +218,7 @@ return Undefined(key) def _lookup_item(data, obj, key): + __traceback_hide__ = True if type(obj) is Undefined: obj.throw() if len(key) == 1: