diff --git a/autoapi/mappers/python.py b/autoapi/mappers/python.py index 26b022e..78b7d2a 100644 --- a/autoapi/mappers/python.py +++ b/autoapi/mappers/python.py @@ -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)