1
0
forked from VimPlug/jedi

Add common.rethrow_uncaught

This commit is contained in:
Takafumi Arakaki
2013-03-13 23:21:15 +01:00
parent 74a9501bd7
commit e42ff9e762
2 changed files with 24 additions and 1 deletions

View File

@@ -1,8 +1,10 @@
""" A universal module with functions / classes without dependencies. """
import sys
import contextlib
import functools
import tokenize
from _compatibility import next
from _compatibility import next, reraise
import debug
import settings
@@ -33,6 +35,17 @@ class MultiLevelAttributeError(Exception):
return 'Original:\n\n' + ''.join(tb)
def rethrow_uncaught(func):
@functools.wraps(func)
def wrapper(*args, **kwds):
try:
return func(*args, **kwds)
except AttributeError:
exc_info = sys.exc_info()
reraise(MultiLevelAttributeError, exc_info[2])
return wrapper
class PushBackIterator(object):
def __init__(self, iterator):
self.pushes = []