diff -r ebae81b31cf6 Tools/i18n/pygettext.py --- a/Tools/i18n/pygettext.py Fri Mar 25 10:28:23 2016 +0100 +++ b/Tools/i18n/pygettext.py Fri Mar 25 11:48:25 2016 +0100 @@ -156,7 +156,8 @@ If `inputfile' is -, standard input is r """) import os -import imp +import importlib.machinery +import importlib.util import sys import glob import time @@ -258,13 +259,15 @@ def containsAny(str, set): return 1 in [c in str for c in set] +def imp_get_suffixes(): + return + def _visit_pyfiles(list, dirname, names): """Helper for getFilesForName().""" # get extension for python source files if '_py_ext' not in globals(): global _py_ext - _py_ext = [triple[0] for triple in imp.get_suffixes() - if triple[2] == imp.PY_SOURCE][0] + _py_ext = importlib.machinery.SOURCE_SUFFIXES[0] # don't recurse into CVS directories if 'CVS' in names: @@ -277,45 +280,6 @@ def _visit_pyfiles(list, dirname, names) ) -def _get_modpkg_path(dotted_name, pathlist=None): - """Get the filesystem path for a module or a package. - - Return the file system path to a file for a module, and to a directory for - a package. Return None if the name is not found, or is a builtin or - extension module. - """ - # split off top-most name - parts = dotted_name.split('.', 1) - - if len(parts) > 1: - # we have a dotted path, import top-level package - try: - file, pathname, description = imp.find_module(parts[0], pathlist) - if file: file.close() - except ImportError: - return None - - # check if it's indeed a package - if description[2] == imp.PKG_DIRECTORY: - # recursively handle the remaining name parts - pathname = _get_modpkg_path(parts[1], [pathname]) - else: - pathname = None - else: - # plain name - try: - file, pathname, description = imp.find_module( - dotted_name, pathlist) - if file: - file.close() - if description[2] not in [imp.PY_SOURCE, imp.PKG_DIRECTORY]: - pathname = None - except ImportError: - pathname = None - - return pathname - - def getFilesForName(name): """Get a list of module files for a filename, a module or package name, or a directory. @@ -330,7 +294,11 @@ def getFilesForName(name): return list # try to find module or package - name = _get_modpkg_path(name) + try: + spec = importlib.util.find_spec(name) + name = spec.origin + except ImportError: + name = None if not name: return []