diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-04-12 16:46:10 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-04-12 16:46:10 (GMT) |
commit | 328cb1fed0c91f50f311cdc545fe0e9303d0dae7 (patch) | |
tree | 4ad4190291a6e67b520659e0aa1c6136a2b2ab68 | |
parent | a07614aa3156810a88404ad49b18ba7be9866f11 (diff) | |
download | cpython-328cb1fed0c91f50f311cdc545fe0e9303d0dae7.zip cpython-328cb1fed0c91f50f311cdc545fe0e9303d0dae7.tar.gz cpython-328cb1fed0c91f50f311cdc545fe0e9303d0dae7.tar.bz2 |
Update pygettext.py to get ride of imp
Issue #26639: Replace imp with importlib in Tools/i18n/pygettext.py.
Remove _get_modpkg_path(), replaced with importlib.util.find_spec().
-rwxr-xr-x | Tools/i18n/pygettext.py | 51 |
1 files changed, 8 insertions, 43 deletions
diff --git a/Tools/i18n/pygettext.py b/Tools/i18n/pygettext.py index 3c6c14c..be941c7 100755 --- a/Tools/i18n/pygettext.py +++ b/Tools/i18n/pygettext.py @@ -156,7 +156,8 @@ If `inputfile' is -, standard input is read. """) import os -import imp +import importlib.machinery +import importlib.util import sys import glob import time @@ -263,8 +264,7 @@ def _visit_pyfiles(list, dirname, names): # 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 +277,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 +291,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 [] |