def extract_top_level_class()

in mujoco_worldgen/util/types.py [0:0]


def extract_top_level_class(module, subclass):
    '''
    Searches module for a top-level class (in terms if inheritence)
    of type subclass.
    :param module: module in which we search for subclass
    :param subclass: subclass that we search for
    :return: object of type subclass.
    '''
    extracted_classes = []
    for key, value in module.items():
        if isinstance(value, types.ClassType) and issubclass(value, subclass):
            extracted_classes.append([key, value, 0])
    # Get the class which is the most top level.
    assert len(extracted_classes) > 0, "Couldn't extract %s from module: %s" % (subclass, module)
    top_level = extracted_classes[0]
    for i in range(len(extracted_classes)):
        for j in range(len(extracted_classes)):
            if issubclass(extracted_classes[i][1], extracted_classes[j][1]):
                extracted_classes[i][2] += 1
        if extracted_classes[i][2] > top_level[2]:
            top_level = extracted_classes[i]
    return top_level[1]