diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2017-03-27 12:27:56 -0400 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@awstats.zzzcomputing.com> | 2017-03-27 12:27:56 -0400 |
| commit | 6eae79ac55ea2b25270758ed72f1a08e7f54980e (patch) | |
| tree | 4d99b411a29368d6abc0a1ddf137cc89302f42fe /lib/sqlalchemy | |
| parent | ecf85cb083c6dd92cf845b703a8aa79d4a445267 (diff) | |
| parent | c0a224aba3d4e2a41f92a29f9d18c6cb9d09d61f (diff) | |
| download | sqlalchemy-6eae79ac55ea2b25270758ed72f1a08e7f54980e.tar.gz | |
Merge "Add safe_reraise() + warnings only to Connection._autorollback"
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/engine/base.py | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/assertions.py | 9 | ||||
| -rw-r--r-- | lib/sqlalchemy/util/langhelpers.py | 8 |
3 files changed, 14 insertions, 6 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 0334d2d7a..f680edada 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1383,7 +1383,8 @@ class Connection(Connectable): if not self._is_disconnect: if cursor: self._safe_close_cursor(cursor) - self._autorollback() + with util.safe_reraise(warn_only=True): + self._autorollback() if newraise: util.raise_from_cause(newraise, exc_info) diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py index 0244f18a9..884556345 100644 --- a/lib/sqlalchemy/testing/assertions.py +++ b/lib/sqlalchemy/testing/assertions.py @@ -10,11 +10,11 @@ from __future__ import absolute_import from . import util as testutil from sqlalchemy import pool, orm, util from sqlalchemy.engine import default, url -from sqlalchemy.util import decorator +from sqlalchemy.util import decorator, compat from sqlalchemy import types as sqltypes, schema, exc as sa_exc import warnings import re -from .exclusions import db_spec, _is_excluded +from .exclusions import db_spec from . import assertsql from . import config from .util import fail @@ -118,7 +118,8 @@ def uses_deprecated(*messages): @contextlib.contextmanager -def _expect_warnings(exc_cls, messages, regex=True, assert_=True): +def _expect_warnings(exc_cls, messages, regex=True, assert_=True, + py2konly=False): if regex: filters = [re.compile(msg, re.I | re.S) for msg in messages] @@ -147,7 +148,7 @@ def _expect_warnings(exc_cls, messages, regex=True, assert_=True): with mock.patch("warnings.warn", our_warn): yield - if assert_: + if assert_ and (not py2konly or not compat.py3k): assert not seen, "Warnings were not seen: %s" % \ ", ".join("%r" % (s.pattern if regex else s) for s in seen) diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py index 41fed882d..9ca19f138 100644 --- a/lib/sqlalchemy/util/langhelpers.py +++ b/lib/sqlalchemy/util/langhelpers.py @@ -49,6 +49,11 @@ class safe_reraise(object): """ + __slots__ = ('warn_only', '_exc_info') + + def __init__(self, warn_only=False): + self.warn_only = warn_only + def __enter__(self): self._exc_info = sys.exc_info() @@ -57,7 +62,8 @@ class safe_reraise(object): if type_ is None: exc_type, exc_value, exc_tb = self._exc_info self._exc_info = None # remove potential circular references - compat.reraise(exc_type, exc_value, exc_tb) + if not self.warn_only: + compat.reraise(exc_type, exc_value, exc_tb) else: if not compat.py3k and self._exc_info and self._exc_info[1]: # emulate Py3K's behavior of telling us when an exception |
