MCPcopy
hub / github.com/mne-tools/mne-python / brain_gc

Function brain_gc

mne/conftest.py:980–1019  ·  view source on GitHub ↗

Ensure that brain can be properly garbage collected.

(request)

Source from the content-addressed store, hash-verified

978
979@pytest.fixture()
980def brain_gc(request):
981 """Ensure that brain can be properly garbage collected."""
982 keys = (
983 "renderer_interactive",
984 "renderer_interactive_pyvistaqt",
985 "renderer",
986 "renderer_pyvistaqt",
987 "renderer_notebook",
988 )
989 assert set(request.fixturenames) & set(keys) != set()
990 for key in keys:
991 if key in request.fixturenames:
992 is_pv = request.getfixturevalue(key)._get_3d_backend() == "pyvistaqt"
993 close_func = request.getfixturevalue(key).backend._close_all
994 break
995 if not is_pv:
996 yield
997 return
998 from mne.viz import Brain
999
1000 ignore = set(id(o) for o in gc.get_objects())
1001 yield
1002 close_func()
1003 if not _test_passed(request):
1004 return
1005 _assert_no_instances(Brain, "after")
1006 # Check VTK
1007 objs = gc.get_objects()
1008 bad = list()
1009 for o in objs:
1010 try:
1011 name = o.__class__.__name__
1012 except Exception: # old Python, probably
1013 pass
1014 else:
1015 if name.startswith("vtk") and id(o) not in ignore:
1016 bad.append(name)
1017 del o
1018 del objs, ignore, Brain
1019 assert len(bad) == 0, "VTK objects linger:\n" + "\n".join(bad)
1020
1021
1022_files = list()

Callers

nothing calls this directly

Calls 4

_assert_no_instancesFunction · 0.90
setFunction · 0.85
_test_passedFunction · 0.85
appendMethod · 0.45

Tested by

no test coverage detected