Skip to content

Commit

Permalink
Update pygettext.py to get ride of imp
Browse files Browse the repository at this point in the history
Issue #26639: Replace imp with importlib in Tools/i18n/pygettext.py.

Remove _get_modpkg_path(), replaced with importlib.util.find_spec().
  • Loading branch information
vstinner committed Apr 12, 2016
1 parent a07614a commit 328cb1f
Showing 1 changed file with 8 additions and 43 deletions.
51 changes: 8 additions & 43 deletions Tools/i18n/pygettext.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,8 @@
""")

import os
import imp
import importlib.machinery
import importlib.util
import sys
import glob
import time
Expand Down Expand Up @@ -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:
Expand All @@ -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.
Expand All @@ -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 []

Expand Down

0 comments on commit 328cb1f

Please sign in to comment.