summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2012-07-18 13:14:57 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2012-07-18 13:14:57 (GMT)
commit76e077001d9c593faaec1aa5187dd7870cb4481c (patch)
tree8ac59cf5a5321a0cef8cdf56a4681cf46969cb73 /Lib
parent90db661b4335eaf7a3cb5e9a4524ae9707eeaf76 (diff)
downloadcpython-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.py4
-rw-r--r--Lib/inspect.py11
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.