From: mike bayer Date: Mon, 2 Mar 2020 23:45:35 +0000 (+0000) Subject: Merge "Ensure all nested exception throws have a cause" X-Git-Tag: rel_1_4_0b1~493 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5050beb73b2e50b122c36e7dcdc06abffd472f2;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Merge "Ensure all nested exception throws have a cause" --- b5050beb73b2e50b122c36e7dcdc06abffd472f2 diff --cc lib/sqlalchemy/util/compat.py index 104e8e03dd,004b4687a6..31654b97c8 --- a/lib/sqlalchemy/util/compat.py +++ b/lib/sqlalchemy/util/compat.py @@@ -369,7 -398,44 +398,9 @@@ else import collections as collections_abc # noqa -@contextlib.contextmanager -def nested(*managers): - """Implement contextlib.nested, mostly for unit tests. - - As tests still need to run on py2.6 we can't use multiple-with yet. - - Function is removed in py3k but also emits deprecation warning in 2.7 - so just roll it here for everyone. - - """ - - exits = [] - vars_ = [] - exc = (None, None, None) - try: - for mgr in managers: - exit_ = mgr.__exit__ - enter = mgr.__enter__ - vars_.append(enter()) - exits.append(exit_) - yield vars_ - except: - exc = sys.exc_info() - finally: - while exits: - exit_ = exits.pop() # noqa - try: - if exit_(*exc): - exc = (None, None, None) - except: - exc = sys.exc_info() - if exc != (None, None, None): - reraise(exc[0], exc[1], exc[2]) - - def raise_from_cause(exception, exc_info=None): + r"""legacy. use raise\_()""" + if exc_info is None: exc_info = sys.exc_info() exc_type, exc_value, exc_tb = exc_info