From: Mike Bayer Date: Sun, 9 Nov 2025 18:14:48 +0000 (-0500) Subject: be more aggressive in removing all references X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3fa4fae23cc326645d257ceaae35c979311fe2c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git be more aggressive in removing all references python3.14t is showing connections being referenced and not finalized. explicit closes/disposes and such dont seem to be working but ensuring globs are cleared out is working better Change-Id: I0c53f7702027e37ad11bd6e15e828900c8f52213 --- diff --git a/test/base/test_tutorials.py b/test/base/test_tutorials.py index 616da4d581..7734669278 100644 --- a/test/base/test_tutorials.py +++ b/test/base/test_tutorials.py @@ -74,6 +74,18 @@ class DocTest(fixtures.TestBase): parser = doctest.DocTestParser() globs = {"print_function": print} + try: + self._run_doctest_impl(fnames, sqla_base, runner, parser, globs) + finally: + # Clear all references from doctest execution + globs.clear() + + # Delete references to avoid keeping stack frames alive + del runner + del parser + del globs + + def _run_doctest_impl(self, fnames, sqla_base, runner, parser, globs): for fname in fnames: path = os.path.join(sqla_base, "doc/build", fname) if not os.path.exists(path): @@ -103,8 +115,13 @@ class DocTest(fixtures.TestBase): buf[0][0], ) buf[:] = [] - runner.run(test, clear_globs=False) - globs.update(test.globs) + try: + runner.run(test, clear_globs=False) + globs.update(test.globs) + finally: + # Clear test object references + test.globs.clear() + test.examples.clear() doctest_enabled = True @@ -132,8 +149,8 @@ class DocTest(fixtures.TestBase): run_buf(fname, False) - runner.summarize() - assert not runner.failures + runner.summarize() + assert not runner.failures @requires.has_json_each def test_20_style(self):