##### SUMMARY

There are several options for resolving this:

* Vendoring a second copy of `six` that implements `find_spec` and `exec_module`, and using it for newer Pythons.
* Vendoring the latest version of `six` and updating it as needed to work back through Python 2.6.

See also: https://github.com/ansible/ansible/issues/72952

##### ISSUE TYPE

Feature Idea

##### COMPONENT NAME

lib/ansible/module_utils/six/__init__.py
ansible_module.__file__ = ansible.__file__
        ansible_module.__path__ = ansible.__path__
        ansible_module.__package__ = ansible.__package__
        sys.modules[ansible.__name__] = ansible_module
    class ImporterAnsibleModuleException(Exception):
        """Exception thrown during initialization of ImporterAnsibleModule."""
    class ImporterAnsibleModule:
        """Replacement for AnsibleModule to support import testing."""
        def __init__(self, *args, **kwargs):
            raise ImporterAnsibleModuleException()
    class RestrictedModuleLoader:
        """Python module loader that restricts inappropriate imports."""
        def __init__(self, path, name, restrict_to_module_paths):
            self.path = path
            self.name = name
            self.loaded_modules = set()
            self.restrict_to_module_paths = restrict_to_module_paths
        def find_module(self, fullname, path=None):
            """Return self if the given fullname is restricted, otherwise return None.
            :param fullname: str
            :param path: str
            :return: RestrictedModuleLoader | None
            """
            if fullname in self.loaded_modules:
                return None  
            if is_name_in_namepace(fullname, ['ansible']):
                if not self.restrict_to_module_paths:
                    return None  
                if fullname in ('ansible.module_utils.basic',):
                    return self