import inspect
import importlib


def list_class_names(clz, package):
    """
    Find sub-classes in a specific module and return their names

    Args:
        clz: the target superclass
        package: the module

    Returns: list of potential classes

    """

    def isclz(obj):
        if inspect.isclass(obj):
            return issubclass(obj, clz) and not obj == clz
        return False

    module = importlib.import_module(package)

    return [name for name, _ in inspect.getmembers(module, isclz)]