[issue14080] Sporadic test_imp failure

Stefan Krah report at bugs.python.org
Sat Feb 25 19:35:40 CET 2012


Stefan Krah <stefan-usenet at bytereef.org> added the comment:

What happens is that if self._fill_cache() is called, cache_module='pep3147'
and cache={'pep3147'}. Then 'cache_module in cache' is true and the function
returns:

    loader('pep3147', './pep3147/__init__.py')

Otherwise, find_module() returns None, control is handed back to
find_module_path() ...

    loader = _PyObject_CallMethodId(importer, &PyId_find_module, "O", fullname)

... and then to find_module_path_list(), where the search continues:

    for (i = 0; i < npath; i++) {
        path = PyList_GetItem(search_path_list, i);
        ...

search_path_list = ['.', '', ... ], but now i==1, so the dot is disregarded
and '' is used as the path, leading to the dotless result.

I don't know the contract for importlib's find_module, but it seems to me
that either find_module should handle this case or we have an unwanted
interaction between C and Python code.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue14080>
_______________________________________


More information about the Python-bugs-list mailing list