aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.7.rst4
-rw-r--r--Lib/pkgutil.py3
-rw-r--r--Lib/test/test_pkgutil.py9
-rw-r--r--Misc/NEWS3
4 files changed, 19 insertions, 0 deletions
diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst
index 3cdc0091b39..83e1c615a8d 100644
--- a/Doc/whatsnew/3.7.rst
+++ b/Doc/whatsnew/3.7.rst
@@ -395,6 +395,10 @@ that may require changes to your code.
Changes in the Python API
-------------------------
+* :meth:`pkgutil.walk_packages` now raises ValueError if *path* is a string.
+ Previously an empty list was returned. (Contributed by Sanyam Khurana in
+ :issue:`24744`.)
+
* A format string argument for :meth:`string.Formatter.format`
is now :ref:`positional-only <positional-only_parameter>`.
Passing it as a keyword argument was deprecated in Python 3.5. (Contributed
diff --git a/Lib/pkgutil.py b/Lib/pkgutil.py
index e37ad451966..9180eaed84d 100644
--- a/Lib/pkgutil.py
+++ b/Lib/pkgutil.py
@@ -119,6 +119,9 @@ def iter_modules(path=None, prefix=''):
"""
if path is None:
importers = iter_importers()
+ elif isinstance(path, str):
+ raise ValueError("path must be None or list of paths to look for "
+ "modules in")
else:
importers = map(get_importer, path)
diff --git a/Lib/test/test_pkgutil.py b/Lib/test/test_pkgutil.py
index fc04dcfd7fc..2887ce6cc05 100644
--- a/Lib/test/test_pkgutil.py
+++ b/Lib/test/test_pkgutil.py
@@ -176,6 +176,15 @@ class PkgutilTests(unittest.TestCase):
continue
del sys.modules[pkg]
+ def test_walk_packages_raises_on_string_or_bytes_input(self):
+
+ str_input = 'test_dir'
+ with self.assertRaises((TypeError, ValueError)):
+ list(pkgutil.walk_packages(str_input))
+
+ bytes_input = b'test_dir'
+ with self.assertRaises((TypeError, ValueError)):
+ list(pkgutil.walk_packages(bytes_input))
class PkgutilPEP302Tests(unittest.TestCase):
diff --git a/Misc/NEWS b/Misc/NEWS
index f91695d3350..31e8ec07385 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -362,6 +362,9 @@ Extension Modules
Library
-------
+- bpo-24744: pkgutil.walk_packages function now raises ValueError if *path*
+ is a string. Patch by Sanyam Khurana.
+
- bpo-24484: Avoid race condition in multiprocessing cleanup.
- bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite