Skip to content

Commit 591bacc

Browse files
committed
refactor: Auto-register module in collection within loading helpers
Issue #177: #177
1 parent eec5701 commit 591bacc

2 files changed

Lines changed: 13 additions & 25 deletions

File tree

src/griffe/tests.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ def temporary_visited_module(
174174
"""
175175
patch_ast()
176176
with temporary_pyfile(code, module_name=module_name) as (_, path):
177-
yield visit(
177+
module = visit(
178178
module_name,
179179
filepath=path,
180180
code=dedent(code),
@@ -185,6 +185,8 @@ def temporary_visited_module(
185185
lines_collection=lines_collection,
186186
modules_collection=modules_collection,
187187
)
188+
module.modules_collection[module_name] = module
189+
yield module
188190

189191

190192
@contextmanager
@@ -218,7 +220,7 @@ def temporary_inspected_module(
218220
"""
219221
with temporary_pyfile(code, module_name=module_name) as (_, path):
220222
try:
221-
yield inspect(
223+
module = inspect(
222224
module_name,
223225
filepath=path,
224226
import_paths=import_paths,
@@ -229,6 +231,8 @@ def temporary_inspected_module(
229231
lines_collection=lines_collection,
230232
modules_collection=modules_collection,
231233
)
234+
module.modules_collection[module_name] = module
235+
yield module
232236
finally:
233237
if module_name in sys.modules:
234238
del sys.modules[module_name]

tests/test_inheritance.py

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,6 @@ def method_from_d(self): ...
5656
inspection_options["import_paths"] = [module1.filepath.parent]
5757

5858
with agent2(code2, module_name="module2", modules_collection=collection, **inspection_options) as module2:
59-
collection["module1"] = module1
60-
collection["module2"] = module2
61-
6259
classa = module1["A"]
6360
classb = module1["B"]
6461
classc = module2["C"]
@@ -102,9 +99,7 @@ class B:
10299
class C(A.B):
103100
attr_from_c = 1
104101
"""
105-
collection = ModulesCollection()
106-
with agent(code, modules_collection=collection) as module:
107-
collection["module"] = module
102+
with agent(code) as module:
108103
assert "attr_from_b" in module["C"].inherited_members
109104

110105
code = """
@@ -117,9 +112,7 @@ class Inner(OuterA.Inner): ...
117112
class OuterD(OuterC):
118113
class Inner(OuterC.Inner, OuterB.Inner): ...
119114
"""
120-
collection = ModulesCollection()
121-
with temporary_visited_module(code, modules_collection=collection) as module:
122-
collection["module"] = module
115+
with temporary_visited_module(code) as module:
123116
assert _mro_paths(module["OuterD.Inner"]) == [
124117
"module.OuterC.Inner",
125118
"module.OuterB.Inner",
@@ -149,9 +142,7 @@ def test_computing_mro(classes: list[str], cls: str, expected_mro: list[str]) ->
149142
expected_mro: The expected computed MRO.
150143
"""
151144
code = "class " + ": ...\nclass ".join(classes) + ": ..."
152-
collection = ModulesCollection()
153-
with temporary_visited_module(code, modules_collection=collection) as module:
154-
collection["module"] = module
145+
with temporary_visited_module(code) as module:
155146
assert _mro_paths(module[cls]) == [f"module.{base}" for base in expected_mro]
156147

157148

@@ -170,11 +161,8 @@ def test_uncomputable_mro(classes: list[str], cls: str) -> None:
170161
cls: The class to compute the MRO of.
171162
"""
172163
code = "class " + ": ...\nclass ".join(classes) + ": ..."
173-
collection = ModulesCollection()
174-
with temporary_visited_module(code, modules_collection=collection) as module:
175-
collection["module"] = module
176-
with pytest.raises(ValueError, match="Cannot compute C3 linearization"):
177-
_mro_paths(module[cls])
164+
with temporary_visited_module(code) as module, pytest.raises(ValueError, match="Cannot compute C3 linearization"):
165+
_mro_paths(module[cls])
178166

179167

180168
def test_dynamic_base_classes() -> None:
@@ -184,12 +172,8 @@ def test_dynamic_base_classes() -> None:
184172
class A(namedtuple("B", "attrb")):
185173
attra = 0
186174
"""
187-
collection = ModulesCollection()
188-
with temporary_visited_module(code, modules_collection=collection) as module:
189-
collection["module"] = module
175+
with temporary_visited_module(code) as module:
190176
assert _mro_paths(module["A"]) == [] # not supported
191177

192-
collection = ModulesCollection()
193-
with temporary_inspected_module(code, modules_collection=collection) as module:
194-
collection["module"] = module
178+
with temporary_inspected_module(code) as module:
195179
assert _mro_paths(module["A"]) == [] # not supported either

0 commit comments

Comments
 (0)