Skip to content

Commit b61913b

Browse files
committed
fix: do not include external aliases as members
1 parent a9c289c commit b61913b

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

quartodoc/builder/blueprint.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ def _auto_package(mod: dc.Module) -> list[Section]:
4141
# get module members for content ----
4242
contents = []
4343
for name, member in mod.members.items():
44-
external_alias = member.is_alias and not member.target_path.startswith(
45-
mod.name.split(".")[0]
46-
)
44+
external_alias = _is_external_alias(member, mod)
4745
if external_alias or member.is_module or name.startswith("__"):
4846
continue
4947

@@ -59,6 +57,35 @@ def _auto_package(mod: dc.Module) -> list[Section]:
5957
return [Section(title=mod.name, desc=desc, contents=contents)]
6058

6159

60+
def _is_external_alias(obj: dc.Alias | dc.Object, mod: dc.Module):
61+
package_name = mod.name.split(".")[0]
62+
63+
if not isinstance(obj, dc.Alias):
64+
return False
65+
66+
crnt_target = obj
67+
68+
while crnt_target.is_alias:
69+
if not crnt_target.target_path.startswith(package_name):
70+
return True
71+
72+
try:
73+
new_target = crnt_target.modules_collection.get_member(
74+
crnt_target.target_path
75+
)
76+
if new_target is crnt_target:
77+
raise Exception(f"Cyclic Alias: {new_target}")
78+
79+
crnt_target = new_target
80+
81+
except KeyError:
82+
# assumes everything from module was loaded, so target must
83+
# be outside module
84+
return True
85+
86+
return False
87+
88+
6289
def _to_simple_dict(el):
6390
# round-trip to json, so we can take advantage of pydantic
6491
# dumping Enums, etc.. There may be a simple way to do
@@ -198,7 +225,10 @@ def enter(self, el: Auto):
198225
obj_member = self.get_object_fixed(member_path, dynamic=dynamic)
199226

200227
# do no document submodules
201-
if obj_member.kind.value == "module":
228+
if (
229+
_is_external_alias(obj_member, obj.package)
230+
or obj_member.kind.value == "module"
231+
):
202232
continue
203233

204234
# create element for child ----

0 commit comments

Comments
 (0)