changeset 308:ade3089aef54 trunk

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]).
author cmlenz
date Tue, 17 Oct 2006 11:38:26 +0000
parents 8d07e6fe17a4
children c91c3c04e9cd
files genshi/eval.py
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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:
Copyright (C) 2012-2017 Edgewall Software