def getEntireFamilyTree(cls):
    """Returns a list of classes subclassing the input class

    One large caveat is it can only locate subclasses that had been imported somewhere
    Look to use importEntirePackage before searching for subclasses if not all children
    are being found as expected.

    """
    return cls.__subclasses__() + [
        grandchildren
        for child in cls.__subclasses__()
        for grandchildren in getEntireFamilyTree(child)
    ]