[issue25509] PyImport_ImportModule inaccurately described
New submission from Memeplex: The documentation (for 3.5) states that "[PyImport_ImportModule] is a simplified interface to PyImport_ImportModuleEx()" but the current implementation calls PyImport_Import instead, which is a higher level interface that takes into account import hooks. Older versions of PyImport_ImportModule (say 2.0) did call PyImport_ImportModuleEx, but that's no longer the case. The PyImport_Import* naming convention got a bit messy with the years and maybe I'm not understanding the intention quite well, but it seems to me that the documentation is outdated and that there is a change in semantics for PyImport_ImportModule. ---------- assignee: docs@python components: Documentation messages: 253674 nosy: docs@python, memeplex priority: normal severity: normal status: open title: PyImport_ImportModule inaccurately described versions: Python 3.5 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25509> _______________________________________
Changes by Brett Cannon <brett@python.org>: ---------- nosy: +brett.cannon _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25509> _______________________________________
Brett Cannon added the comment: Semantic change was probably because of the lack of import hook support which is required since Python 3.3. So the docs just need to be fixed rather than the semantics. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25509> _______________________________________
Memeplex added the comment: Brett, I'm not sure about that, notice that the "import hook" as is mentioned in the docs is just the current __import__ in the builtins module (which could have been replaced and in this sense would be a "hook") but not proper import hooks. I think the original distinction between PyImport_ImportModule and PyImport_Import is still sensible today. Originally PyImport_ImportModule directly called the import machinery, while PyImport_Import called it indirectly through builtins.__import__ (which could have been replaced). Now, for some reason, for good or for bad, PyImport_ImportModule also goes through builtins.__import__. The documentation is wrong but what is the fix? Revert PyImport_ImportModule or redocument it? ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25509> _______________________________________
Memeplex added the comment: Well it's like that since 2.1 so I guess the doc is wrong indeee. ---------- _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue25509> _______________________________________
Brett Cannon <brett@python.org> added the comment: https://github.com/python/cpython/blob/45b34a04a577aa49fa4825421758c3e8eaa16... shows that the docs could be simplified to point out that `PyImport_ImportModule()` is a wrapper around `PyImport_Import()` which takes `const char *`. ---------- _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25509> _______________________________________
Change by Brett Cannon <brett@python.org>: ---------- versions: +Python 3.10 -Python 3.5 _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25509> _______________________________________
Change by Brett Cannon <brett@python.org>: ---------- keywords: +easy _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25509> _______________________________________
Brett Cannon <brett@python.org> added the comment: The docs for PyImport_ImportModule() is https://docs.python.org/3/c-api/import.html?highlight=pyimport_importmodule#... and https://github.com/python/cpython/blob/master/Doc/c-api/import.rst. ---------- keywords: +easy (C) -easy _______________________________________ Python tracker <report@bugs.python.org> <https://bugs.python.org/issue25509> _______________________________________
participants (2)
-
Brett Cannon
-
Memeplex