Get the module that is the sole module, or the module
        that matches the package name/version
        :return:

def find_central_module(self):  # type: () -> Optional[str]
        """
        Get the module that is the sole module, or the module
        that matches the package name/version
        :return:
        """
        # find modules.
        mf = ModuleFinder(self.file_opener)

        candidates = mf.find_by_any_method()

        sub_modules = []
        root_modules = []

        for candidate in candidates:
            if "." in candidate:
                sub_modules.append(candidate)
            else:
                root_modules.append(candidate)

        candidates = root_modules

        # remove junk. Junk only has meaning in the sense of finding the central module.
        candidates = self.remove_likely_non_central(candidates)
        if len(candidates) == 1:
            return candidates[0]

        # see if there is 1 out of the many with same name pkg_foo, module_foo
        if self.package_name:
            if self.package_name in candidates:
                return self.package_name

        # I don't understand the _ to - transformations.
        if self.package_name:
            if self.package_name.replace("-", "_") in candidates:
                return self.package_name.replace("-", "_")

        if self.package_name:
            if self.package_name.replace("-", "") in candidates:
                return self.package_name.replace("-", "")

        if self.package_name:
            if self.package_name.replace("_", "") in candidates:
                return self.package_name.replace("_", "")
        # see if there is 1 out of the many with version in sync- pkg_foo v1.2.3, module_bar v1.2.3
        # TODO:

        return None