diff options
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/session.py | 27 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/fixtures.py | 4 |
3 files changed, 28 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/__init__.py b/lib/sqlalchemy/orm/__init__.py index c64623da9..a596d1408 100644 --- a/lib/sqlalchemy/orm/__init__.py +++ b/lib/sqlalchemy/orm/__init__.py @@ -40,6 +40,7 @@ from .relationships import foreign # noqa from .relationships import RelationshipProperty # noqa from .relationships import remote # noqa from .scoping import scoped_session # noqa +from .session import close_all_sessions # noqa from .session import make_transient # noqa from .session import make_transient_to_detached # noqa from .session import object_session # noqa diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 1d405e3fa..e1a1e5577 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -59,11 +59,16 @@ class _SessionClassMethods(object): """Class-level methods for :class:`.Session`, :class:`.sessionmaker`.""" @classmethod + @util.deprecated( + "1.3", + "The :meth:`.Session.close_all` method is deprecated and will be " + "removed in a future release. Please refer to " + ":func:`.session.close_all_sessions`.", + ) def close_all(cls): """Close *all* sessions in memory.""" - for sess in _sessions.values(): - sess.close() + close_all_sessions() @classmethod @util.dependencies("sqlalchemy.orm.util") @@ -3220,6 +3225,24 @@ class sessionmaker(_SessionClassMethods): ) +def close_all_sessions(): + """Close all sessions in memory. + + This function consults a global registry of all :class:`.Session` objects + and calls :meth:`.Session.close` on them, which resets them to a clean + state. + + This function is not for general use but may be useful for test suites + within the teardown scheme. + + .. versionadded:: 1.3 + + """ + + for sess in _sessions.values(): + sess.close() + + def make_transient(instance): """Alter the state of the given instance so that it is :term:`transient`. diff --git a/lib/sqlalchemy/testing/fixtures.py b/lib/sqlalchemy/testing/fixtures.py index 64d9328d7..953b229f2 100644 --- a/lib/sqlalchemy/testing/fixtures.py +++ b/lib/sqlalchemy/testing/fixtures.py @@ -246,7 +246,7 @@ class RemovesEvents(object): class _ORMTest(object): @classmethod def teardown_class(cls): - sa.orm.session.Session.close_all() + sa.orm.session.close_all_sessions() sa.orm.clear_mappers() @@ -287,7 +287,7 @@ class MappedTest(_ORMTest, TablesTest, assertions.AssertsExecutionResults): self._setup_each_inserts() def teardown(self): - sa.orm.session.Session.close_all() + sa.orm.session.close_all_sessions() self._teardown_each_mappers() self._teardown_each_classes() self._teardown_each_tables() |
