@@ -126,6 +126,13 @@ def get_object_fixed(self, path, **kwargs):
126
126
f" Does an object with the path { path } exist?"
127
127
)
128
128
129
+ @staticmethod
130
+ def _clean_member_path (path , new ):
131
+ if ":" in new :
132
+ return new .replace (":" , "." )
133
+
134
+ return new
135
+
129
136
@dispatch
130
137
def visit (self , el ):
131
138
# TODO: use a context handler
@@ -205,8 +212,10 @@ def enter(self, el: Auto):
205
212
pkg = self .crnt_package
206
213
if pkg is None :
207
214
path = el .name
215
+ elif ":" in pkg or ":" in el .name :
216
+ path = f"{ pkg } .{ el .name } "
208
217
else :
209
- path = f"{ pkg } . { el . name } " if ":" in el . name else f" { pkg } :{ el .name } "
218
+ path = f"{ pkg } :{ el .name } "
210
219
211
220
_log .info (f"Getting object for { path } " )
212
221
@@ -224,22 +233,27 @@ def enter(self, el: Auto):
224
233
# but the actual objects on the target.
225
234
# On the other hand, we've wired get_object up to make sure getting
226
235
# the member of an Alias also returns an Alias.
227
- member_path = self ._append_member_path (path , entry )
228
- obj_member = self .get_object_fixed (member_path , dynamic = dynamic )
236
+ # member_path = self._append_member_path(path, entry)
237
+ relative_path = self ._clean_member_path (path , entry )
238
+
239
+ # create Doc element for member ----
240
+ # TODO: when a member is a Class, it is currently created using
241
+ # defaults, and there is no way to override those.
242
+ doc = self .visit (Auto (name = relative_path , dynamic = dynamic , package = path ))
229
243
230
244
# do no document submodules
231
245
if (
232
- _is_external_alias (obj_member , obj .package )
233
- or obj_member .kind .value == "module"
246
+ _is_external_alias (doc . obj , obj .package )
247
+ or doc . obj .kind .value == "module"
234
248
):
235
249
continue
236
250
237
- # create element for child ----
238
- doc = Doc .from_griffe (obj_member .name , obj_member )
251
+ # obj_member = self.get_object_fixed(member_path, dynamic=dynamic)
252
+ # doc = Doc.from_griffe(obj_member.name, obj_member)
239
253
240
254
# Case 1: make each member entry its own page
241
255
if el .children == ChoicesChildren .separate :
242
- res = MemberPage (path = obj_member .path , contents = [doc ])
256
+ res = MemberPage (path = doc . obj .path , contents = [doc ])
243
257
# Case2: use just the Doc element, so it gets embedded directly
244
258
# into the class being documented
245
259
elif el .children in {ChoicesChildren .embedded , ChoicesChildren .flat }:
@@ -248,8 +262,9 @@ def enter(self, el: Auto):
248
262
# if the page for the member is not created somewhere else, then it
249
263
# won't exist in the documentation (but its summary will still be in
250
264
# the table).
265
+ # TODO: we shouldn't even bother blueprinting these members.
251
266
elif el .children == ChoicesChildren .linked :
252
- res = Link (name = obj_member . path , obj = obj_member )
267
+ res = Link (name = doc . obj . path , obj = doc . obj )
253
268
else :
254
269
raise ValueError (f"Unsupported value of children: { el .children } " )
255
270
0 commit comments