1
0
forked from VimPlug/jedi

Use raise from instead of weird magic

This commit is contained in:
Dave Halter
2020-07-02 16:14:53 +02:00
parent dac1fb0a06
commit 806ad06d6a

View File

@@ -1,6 +1,4 @@
""" A universal module with functions / classes without dependencies. """
import sys
import contextlib
import functools
import re
import os
@@ -34,7 +32,6 @@ class UncaughtAttributeError(Exception):
"""
Important, because `__getattr__` and `hasattr` catch AttributeErrors
implicitly. This is really evil (mainly because of `__getattr__`).
`hasattr` in Python 2 is even more evil, because it catches ALL exceptions.
Therefore this class originally had to be derived from `BaseException`
instead of `Exception`. But because I removed relevant `hasattr` from
the code base, we can now switch back to `Exception`.
@@ -63,17 +60,13 @@ def reraise_uncaught(func):
difficult. This decorator is to help us getting there by changing
`AttributeError` to `UncaughtAttributeError` to avoid unexpected catch.
This helps us noticing bugs earlier and facilitates debugging.
.. note:: Treating StopIteration here is easy.
Add that feature when needed.
"""
@functools.wraps(func)
def wrapper(*args, **kwds):
try:
return func(*args, **kwds)
except AttributeError:
exc_info = sys.exc_info()
UncaughtAttributeError(exc_info[1]).with_traceback(exc_info[2])
except AttributeError as e:
raise UncaughtAttributeError(e) from e
return wrapper