Fixed properly resolving definitions imported more than once

pull/155/head
Ashley Whetter 6 years ago
parent 2799fb32cc
commit a1f1fd8651

@ -93,7 +93,9 @@ class PythonSphinxMapper(SphinxMapperBase):
# Find import chains and resolve the placeholders together
visited = {id(placeholder): placeholder}
original = all_data[placeholder['original_path']]
while original['type'] == 'placeholder':
while (original['type'] == 'placeholder'
# Or it's an already resolved placeholder
or 'from_line_no' not in original):
if id(original) in visited:
parent['children'].remove(placeholder)
break
@ -109,8 +111,8 @@ class PythonSphinxMapper(SphinxMapperBase):
new['name'] = to_resolve['name']
new['full_name'] = to_resolve['full_name']
new['original_path'] = to_resolve['original_path']
new.pop('from_line_no', None)
new.pop('to_line_no', None)
del new['from_line_no']
del new['to_line_no']
stack = list(new.get('children', ()))
while stack:
data = stack.pop()
@ -120,8 +122,8 @@ class PythonSphinxMapper(SphinxMapperBase):
suffix = data['full_name'][len(original['full_name']):]
data['original_path'] = new['original_path'] + suffix
data['full_name'] = new['full_name'] + suffix
data.pop('from_line_no', None)
data.pop('to_line_no', None)
del data['from_line_no']
del data['to_line_no']
stack.extend(data.get('children', ()))
to_resolve.clear()
to_resolve.update(new)

Loading…
Cancel
Save