From f5ebd264032fbcb07a41a49031c2281f81c9a814 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 23 Aug 2013 10:58:49 -0400 Subject: Emphasize that people should not override __import__. With importlib getting used more and more, changing __import__ will not work as well as people used to hope as it will potentially bypass importers, etc. It also will not work with importlib.import_module() as it uses "importlib.__import__" (i.e. importlib's implementation of import) directly and not builtins.__import__. --- Doc/library/functions.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index b94c434..c3fff31 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -1451,10 +1451,11 @@ are always available. They are listed here in alphabetical order. This function is invoked by the :keyword:`import` statement. It can be replaced (by importing the :mod:`builtins` module and assigning to ``builtins.__import__``) in order to change semantics of the - :keyword:`import` statement, but nowadays it is usually simpler to use import - hooks (see :pep:`302`) to attain the same goals. Direct use of - :func:`__import__` is entirely discouraged in favor of - :func:`importlib.import_module`. + :keyword:`import` statement, but doing so is **strongly** discouraged as it + is usually simpler to use import hooks (see :pep:`302`) to attain the same + goals and does not cause issues with code which assumes the default import + implementation is in use. Direct use of :func:`__import__` is also + discouraged in favor of :func:`importlib.import_module`. The function imports the module *name*, potentially using the given *globals* and *locals* to determine how to interpret the name in a package context. -- cgit v0.12