##### SUMMARY
2.9/devel currently supports relative Python imports inside a collection for all but modules/module_utils. Extend the AnsiballZ analysis/bundling to support relative imports for those as well.

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
module_common.py

##### ADDITIONAL INFORMATION
This is needed to minimize the number of places a collection must refer to itself by name. Also a convenience for shorter intra-collection Python imports (eg `from ..module_utils.blah import AThing` vs. `from ansible_collections.myns.mycoll.plugins.module_utils.blah import AThing`)
except Exception as e:
                    display.warning("Skipping plugin (%s) as it seems to be invalid: %s" % (path, to_text(e)))
                    continue
                self._module_cache[path] = module
                found_in_cache = False
            try:
                obj = getattr(self._module_cache[path], self.class_name)
            except AttributeError as e:
                display.warning("Skipping plugin (%s) as it seems to be invalid: %s" % (path, to_text(e)))
                continue
            if self.base_class:
                
                
                module = __import__(self.package, fromlist=[self.base_class])
                
                try:
                    plugin_class = getattr(module, self.base_class)
                except AttributeError:
                    continue
                if not issubclass(obj, plugin_class):
                    continue
            self._display_plugin_load(self.class_name, basename, self._searched_paths, path, found_in_cache=found_in_cache, class_only=class_only)
            if not class_only:
                try:
                    obj = obj(*args, **kwargs)
                except TypeError as e:
                    display.warning("Skipping plugin (%s) as it seems to be incomplete: %s" % (path, to_text(e)))
            self._update_object(obj, basename, path)
            yield obj
class Jinja2Loader(PluginLoader):