Runs code, so this is a bit dangerous, especially if it isn't your own
        :return:

def execute_setup_name(self):  # type: () -> Optional[str]
        """
        Runs code, so this is a bit dangerous, especially if it isn't your own
        :return:
        """
        try:
            name = execute_get_text("python setup.py --name")
        except subprocess.CalledProcessError:
            # setup.py is not always in an executable state
            return None
        if not name:
            return None
        name = name.strip(" \n\t")
        if " " in name or "\n" in name:
            # likely includes print() that ruin results
            return None
        return name