Skip to content

Commit 8ea1847

Browse files
committed
Do not remove methods if base class is not found
1 parent 4790704 commit 8ea1847

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

pypredefgen.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,9 @@ def remove_redundant_members_from_subclasses(module_element):
361361
parent_class_node = _get_ast_node_for_external_class(
362362
parent_class, external_class_nodes_map)
363363

364+
if parent_class_node is None:
365+
continue
366+
364367
parent_class_member_nodes = _get_class_member_nodes(
365368
parent_class, parent_class_node, member_nodes_for_classes)
366369

@@ -382,17 +385,20 @@ def _get_class_element_map(class_nodes, element):
382385

383386
def _get_ast_node_for_external_class(class_, external_class_nodes_map):
384387
class_node = external_class_nodes_map.get(class_)
385-
if class_node is None:
386-
#FIXME: This is not OK, we shouldn't use `__name__` as it can differ from
387-
# the name from `dir(module)`. We should use the latter instead.
388-
# If the name from `dir()` is not available, we need to find such name by
389-
# comparing `id(class_)` with each `dir()` member
390-
# (or use a {module: member ID} map?).
391-
class_element = Element(class_, class_.__name__, inspect.getmodule(class_))
392-
class_node = get_ast_node_for_class(class_element)
393-
external_class_nodes_map[class_] = class_node
394-
395-
return class_node
388+
if class_node is not None:
389+
return class_node
390+
else:
391+
class_module = inspect.getmodule(class_)
392+
393+
if class_.__name__ in dir(class_module):
394+
#FIXME: Is using `__name__` as `name_in_dir` OK here?
395+
class_element = Element(class_, class_.__name__, class_module)
396+
class_node = get_ast_node_for_class(class_element)
397+
external_class_nodes_map[class_] = class_node
398+
399+
return class_node
400+
else:
401+
return None
396402

397403

398404
def _get_class_member_nodes(class_, class_node, member_nodes_for_classes):

0 commit comments

Comments
 (0)