]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
closes bpo-37675: Use pkgutil.iter_modules to find fixers in a package rather than...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 24 Jul 2019 23:59:31 +0000 (16:59 -0700)
committerGitHub <noreply@github.com>
Wed, 24 Jul 2019 23:59:31 +0000 (16:59 -0700)
(cherry picked from commit 93e8aa62cfd0a61efed4a61a2ffc2283ae986ef2)

Co-authored-by: Benjamin Peterson <benjamin@python.org>
Lib/lib2to3/refactor.py
Misc/NEWS.d/next/Tools-Demos/2019-07-24-16-20-54.bpo-37675.951Cvf.rst [new file with mode: 0644]

index 98386c5f310d9f5ddf872b7c278dad3a35931a03..8a40deb8ac211fb300ed449da91e5542ebff30e3 100644 (file)
@@ -15,6 +15,7 @@ __author__ = "Guido van Rossum <guido@python.org>"
 
 # Python imports
 import os
+import pkgutil
 import sys
 import logging
 import operator
@@ -33,13 +34,12 @@ from . import btm_matcher as bm
 def get_all_fix_names(fixer_pkg, remove_prefix=True):
     """Return a sorted list of all available fix names in the given package."""
     pkg = __import__(fixer_pkg, [], [], ["*"])
-    fixer_dir = os.path.dirname(pkg.__file__)
     fix_names = []
-    for name in sorted(os.listdir(fixer_dir)):
-        if name.startswith("fix_") and name.endswith(".py"):
+    for finder, name, ispkg in pkgutil.iter_modules(pkg.__path__):
+        if name.startswith("fix_"):
             if remove_prefix:
                 name = name[4:]
-            fix_names.append(name[:-3])
+            fix_names.append(name)
     return fix_names
 
 
diff --git a/Misc/NEWS.d/next/Tools-Demos/2019-07-24-16-20-54.bpo-37675.951Cvf.rst b/Misc/NEWS.d/next/Tools-Demos/2019-07-24-16-20-54.bpo-37675.951Cvf.rst
new file mode 100644 (file)
index 0000000..e28fa20
--- /dev/null
@@ -0,0 +1 @@
+2to3 now works when run from a zipped standard library.