[Python-checkins] cpython: Issue #15288: Clarify that pkgutil.walk_packages() and friends will no

brett.cannon python-checkins at python.org
Mon Jul 9 20:10:31 CEST 2012


http://hg.python.org/cpython/rev/96f7926ea444
changeset:   78027:96f7926ea444
user:        Brett Cannon <brett at python.org>
date:        Mon Jul 09 14:10:23 2012 -0400
summary:
  Issue #15288: Clarify that pkgutil.walk_packages() and friends will no
longer work as expected in Python 3.3 as importlib's loaders do not
implement the non-standard iter_modules() method. Also link to the
term "loader" in the requisite notes to help make it clearer what has
happened.

files:
  Doc/library/pkgutil.rst |  17 +++++++++++++----
  Misc/NEWS               |   5 +++++
  2 files changed, 18 insertions(+), 4 deletions(-)


diff --git a/Doc/library/pkgutil.rst b/Doc/library/pkgutil.rst
--- a/Doc/library/pkgutil.rst
+++ b/Doc/library/pkgutil.rst
@@ -139,8 +139,13 @@
    *prefix* is a string to output on the front of every module name on output.
 
    .. note::
-      Only works for importers which define a ``iter_modules()`` method, which
-      is non-standard but implemented by classes defined in this module.
+      Only works wtih a :term:`loader` which defines a ``iter_modules()``
+      method, which is non-standard but implemented by classes defined in this
+      module.
+
+   .. versionchanged:: 3.3
+      As of Python 3.3, the import system provides loaders by default, but they
+      do not include the ``iter_modules()`` method required by this function.
 
 
 .. function:: walk_packages(path=None, prefix='', onerror=None)
@@ -171,8 +176,12 @@
       walk_packages(ctypes.__path__, ctypes.__name__ + '.')
 
    .. note::
-      Only works for importers which define a ``iter_modules()`` method, which
-      is non-standard but implemented by classes defined in this module.
+      Only works for a :term:`loader` which define a ``iter_modules()`` method,
+      which is non-standard but implemented by classes defined in this module.
+
+   .. versionchanged:: 3.3
+      As of Python 3.3, the import system provides loaders by default, but they
+      do not include the ``iter_modules()`` method required by this function.
 
 
 .. function:: get_data(package, resource)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -101,6 +101,11 @@
 Documentation
 -------------
 
+- Issue #15288: Link to the term "loader" in notes in pkgutil about how things
+  won't work as expected in Python 3.3 and mark the requisite functions as
+  "changed" since they will no longer work with modules directly imported by
+  import itself.
+
 - Issue #13557: Clarify effect of giving two different namespaces to exec or
   execfile().
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list