##### 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
try:
            
            return sys.modules[fullname]
        except KeyError:
            pass
        mod = self.__get_module(fullname)
        if isinstance(mod, MovedModule):
            mod = mod._resolve()
        else:
            mod.__loader__ = self
        sys.modules[fullname] = mod
        return mod
    def is_package(self, fullname):
        """
        Return true, if the named module is a package.
        We need this method to get correct spec objects with
        Python 3.4 (see PEP451)
        """
        return hasattr(self.__get_module(fullname), "__path__")
    def get_code(self, fullname):
        """Return None
        Required, if is_package is implemented"""
        self.__get_module(fullname)  
        return None
    get_source = get_code  
_importer = _SixMetaPathImporter(__name__)
class _MovedItems(_LazyModule):