for really surprising things like a dict foo in setup(**foo)
        consider python3 setup.py --version
        :return:

def execute_setup(self):  # type: () -> Dict[str,str]
        """
        for really surprising things like a dict foo in setup(**foo)
        consider python3 setup.py --version
        :return:
        """

        ver = execute_get_text("python setup.py --version")
        if not ver:
            return None

        if "UserWarning" in ver:
            logger.warning(
                "python setup.py --version won't parse, got :" + unicode(ver)
            )
            # UserWarning- Ther version specified ... is an invalid...
            return {}

        if ver:
            string = unicode(ver).strip(" \n")
            if "\n" in string:
                string = string.split("\n")[0]

            return {"setup.py --version": string.strip(" \n")}
        else:
            return {}