Skip to content

Commit 94f23e7

Browse files
committed
fix: Override exports when merging module stubs
Issue-mkdocstrings-751: mkdocstrings/mkdocstrings#751
1 parent b940c51 commit 94f23e7

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/_griffe/merger.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ def _merge_stubs_members(obj: Module | Class, stubs: Module | Class) -> None:
5656
# Merge imports to later know if objects coming from the stubs were imported.
5757
obj.imports.update(stubs.imports)
5858

59+
# Override exports to later know if objects coming from the stubs were exported.
60+
if stubs.exports is not None:
61+
obj.exports = stubs.exports
62+
5963
for member_name, stub_member in stubs.members.items():
6064
if member_name in obj.members:
6165
# We don't merge imported stub objects that already exist in the concrete module.

tests/test_merger.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,19 @@ def test_merge_imports() -> None:
4949
assert set(pkg["mod"].imports) == {"abc", "collections"}
5050

5151

52+
def test_override_exports() -> None:
53+
"""Assert that exports are overridden too (like imports are merged)."""
54+
with temporary_visited_package(
55+
"package",
56+
{
57+
"__init__.py": "import dynamic_all\n__all__ = dynamic_all()",
58+
"__init__.pyi": "from ._hello import hello\n__all__ = ['hello']",
59+
"_hello.py": "def hello() -> None:\n '''Say hello.'''",
60+
},
61+
) as pkg:
62+
assert pkg.exports == ["hello"]
63+
64+
5265
def test_merge_attribute_values() -> None:
5366
"""Assert that attribute values are merged correctly."""
5467
with temporary_visited_package(

0 commit comments

Comments
 (0)