diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2012-07-18 13:14:57 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2012-07-18 13:14:57 (GMT) |
commit | 76e077001d9c593faaec1aa5187dd7870cb4481c (patch) | |
tree | 8ac59cf5a5321a0cef8cdf56a4681cf46969cb73 /Lib | |
parent | 90db661b4335eaf7a3cb5e9a4524ae9707eeaf76 (diff) | |
download | cpython-76e077001d9c593faaec1aa5187dd7870cb4481c.zip cpython-76e077001d9c593faaec1aa5187dd7870cb4481c.tar.gz cpython-76e077001d9c593faaec1aa5187dd7870cb4481c.tar.bz2 |
Close #15387: inspect.getmodulename() now uses a new importlib.machinery.all_suffixes() API rather than the deprecated inspect.getmoduleinfo()
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/importlib/machinery.py | 4 | ||||
-rw-r--r-- | Lib/inspect.py | 11 |
2 files changed, 13 insertions, 2 deletions
diff --git a/Lib/importlib/machinery.py b/Lib/importlib/machinery.py index d5e7250..3fe0b11 100644 --- a/Lib/importlib/machinery.py +++ b/Lib/importlib/machinery.py @@ -13,3 +13,7 @@ from ._bootstrap import SourcelessFileLoader from ._bootstrap import ExtensionFileLoader EXTENSION_SUFFIXES = _imp.extension_suffixes() + +def all_suffixes(): + """Returns a list of all recognized module suffixes for this process""" + return SOURCE_SUFFIXES + BYTECODE_SUFFIXES + EXTENSION_SUFFIXES diff --git a/Lib/inspect.py b/Lib/inspect.py index 074e1b4..40e4454 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -450,8 +450,15 @@ def getmoduleinfo(path): def getmodulename(path): """Return the module name for a given file, or None.""" - info = getmoduleinfo(path) - if info: return info[0] + fname = os.path.basename(path) + # Check for paths that look like an actual module file + suffixes = [(-len(suffix), suffix) + for suffix in importlib.machinery.all_suffixes()] + suffixes.sort() # try longest suffixes first, in case they overlap + for neglen, suffix in suffixes: + if fname.endswith(suffix): + return fname[:neglen] + return None def getsourcefile(object): """Return the filename that can be used to locate an object's source. |