soupy.py
def _helpful_failure(method):
    """
    Decorator for eval_ that prints a helpful error message
    if an exception is generated in a Q expression
    """

    @wraps(method)
    def wrapper(self, val):
        try:
            return method(self, val)
        except:
            exc_cls, inst, tb = sys.exc_info()

            if hasattr(inst, '_RERAISE'):
                _, expr, _, inner_val = Q.__debug_info__
                Q.__debug_info__ = QDebug(self, expr, val, inner_val)
                raise

            if issubclass(exc_cls, KeyError):  # Overrides formatting
                exc_cls = QKeyError

            # Show val, unless it's too long
            prettyval = repr(val)
            if len(prettyval) > 150:
                prettyval = "<%s instance>" % (type(val).__name__)

            msg = "{0}\n\n\tEncountered when evaluating {1}{2}".format(
                inst, prettyval, self)

            new_exc = exc_cls(msg)
            new_exc._RERAISE = True
            Q.__debug_info__ = QDebug(self, self, val, val)

            six.reraise(exc_cls, new_exc, tb)

    return wrapper
def _helpful_failure(method):
    @wraps(method)
    def wrapper(self, val):
        try:
            return method(self, val)
        except:
            exc_cls, inst, tb = sys.exc_info()

            if hasattr(inst, '_RERAISE'):
                _, expr, _, inner_val = Q.__debug_info__
                Q.__debug_info__ = QDebug(self, expr, val, inner_val)
                raise

            if issubclass(exc_cls, KeyError):  # Overrides formatting
                exc_cls = QKeyError

            # Show val, unless it's too long
            prettyval = repr(val)
            if len(prettyval) > 150:
                prettyval = "<%s instance>" % (type(val).__name__)

            msg = "{0}\n\n\tEncountered when evaluating {1}{2}".format(
                inst, prettyval, self)

            new_exc = exc_cls(msg)
            new_exc._RERAISE = True
            Q.__debug_info__ = QDebug(self, self, val, val)

            six.reraise(exc_cls, new_exc, tb)

    return wrapper
def _helpful_failure ( method ) : @ wraps ( method ) def wrapper ( self , val ) : try : return method ( self , val ) except : exc_cls , inst , tb = sys . exc_info ( ) if hasattr ( inst , '_RERAISE' ) : _ , expr , _ , inner_val = Q . __debug_info__ Q . __debug_info__ = QDebug ( self , expr , val , inner_val ) raise if issubclass ( exc_cls , KeyError ) : # Overrides formatting exc_cls = QKeyError # Show val, unless it's too long prettyval = repr ( val ) if len ( prettyval ) > 150 : prettyval = "<%s instance>" % ( type ( val ) . __name__ ) msg = "{0}\n\n\tEncountered when evaluating {1}{2}" . format ( inst , prettyval , self ) new_exc = exc_cls ( msg ) new_exc . _RERAISE = True Q . __debug_info__ = QDebug ( self , self , val , val ) six . reraise ( exc_cls , new_exc , tb ) return wrapper
Decorator for eval_ that prints a helpful error message
    if an exception is generated in a Q expression
Decorator for eval_ that prints a helpful error message if an exception is generated in a Q expression