diff --git a/mitogen/core.py b/mitogen/core.py index 4dd44925..b3eb557c 100644 --- a/mitogen/core.py +++ b/mitogen/core.py @@ -1471,6 +1471,7 @@ class Importer(object): def load_module(self, fullname): fullname = to_text(fullname) + # taco _v and self._log.debug('requesting %s', fullname) self._refuse_imports(fullname) diff --git a/mitogen/master.py b/mitogen/master.py index a530b665..f3c66c0e 100644 --- a/mitogen/master.py +++ b/mitogen/master.py @@ -497,6 +497,17 @@ class PkgutilMethod(FinderMethod): if not loader: return + # if fullname == "ansible_collections": + # import epdb; epdb.set_trace() + # ba = loader.load_module("ansible_collections.alikins") + # # if fullname == "ansible_collections": + # # # ansible named the fake __file__ for collections `__synthetic__` with no extension + # # module.__file__ = module.__file__ + ".py" + # # import epdb; epdb.set_trace() + # # # import epdb; epdb.set_trace() + # # # taco + # doesn't work because .get_source doesn't exist. Collections loader is super complicated + # and doesn't offer an easy way to extract source code try: path = _py_filename(loader.get_filename(fullname)) source = loader.get_source(fullname) @@ -549,6 +560,12 @@ class SysModulesMethod(FinderMethod): fullname, alleged_name, module) return + if fullname == "ansible_collections": + # ansible named the fake __file__ for collections `__synthetic__` with no extension + module.__file__ = module.__file__ + ".py" + # import epdb; epdb.set_trace() + # taco + # faking this leads to a "no module named X" error because submodules are empty path = _py_filename(getattr(module, '__file__', '')) if not path: return @@ -657,6 +674,13 @@ class ParentEnumerationMethod(FinderMethod): def _find_one_component(self, modname, search_path): try: #fp, path, (suffix, _, kind) = imp.find_module(modname, search_path) + # if modname == "ansible_collections": + # print(dir(sys.modules['ansible_collections'])) + # A + # taco + # filename = sys.modules['ansible_collections'].__file__ + ".py" + # return open(filename), filename, ('.py', 'r', imp.PY_SOURCE) + # regular imp.find_module doesn't work here, but perhaps we can try the loader? return imp.find_module(modname, search_path) except ImportError: e = sys.exc_info()[1] @@ -941,6 +965,15 @@ class ModuleResponder(object): minify_safe_re = re.compile(b(r'\s+#\s*!mitogen:\s*minify_safe')) def _build_tuple(self, fullname): + # tried to see if anything with collections was in the cache already + # no luck though + # taco + # if fullname == "ansible_collections": + # import epdb; epdb.set_trace() + # for key, val in self._cache.items(): + # if "collection_inspect" in key: + # print(key, val) + # import epdb; epdb.set_trace() if fullname in self._cache: return self._cache[fullname] @@ -971,6 +1004,10 @@ class ModuleResponder(object): self.minify_secs += mitogen.core.now() - t0 if is_pkg: + # taco + # child modules are empty... + # if fullname == "ansible_collections": + # import epdb; epdb.set_trace() pkg_present = get_child_modules(path) self._log.debug('%s is a package at %s with submodules %r', fullname, path, pkg_present)