Close #15387: inspect.getmodulename() now uses a new importlib.machinery.all_suffixes() API rather than the deprecated inspect.getmoduleinfo()

This commit is contained in:
Nick Coghlan 2012-07-18 23:14:57 +10:00
parent 90db661b43
commit 76e077001d
5 changed files with 40 additions and 6 deletions

View file

@ -533,12 +533,23 @@ find and load modules.
.. attribute:: EXTENSION_SUFFIXES
A list of strings representing the the recognized file suffixes for
A list of strings representing the recognized file suffixes for
extension modules.
.. versionadded:: 3.3
.. func:: all_suffixes()
Returns a combined list of strings representing all file suffixes for
Python modules recognized by the standard import machinery. This is a
helper for code which simply needs to know if a filesystem path
potentially represents a Python module (for example,
:func:`inspect.getmodulename`)
.. versionadded:: 3.3
.. class:: BuiltinImporter
An :term:`importer` for built-in modules. All known built-in modules are

View file

@ -198,9 +198,18 @@ attributes:
.. function:: getmodulename(path)
Return the name of the module named by the file *path*, without including the
names of enclosing packages. This uses the same algorithm as the interpreter
uses when searching for modules. If the name cannot be matched according to the
interpreter's rules, ``None`` is returned.
names of enclosing packages. The file extension is checked against all of
the entries in :func:`importlib.machinery.all_suffixes`. If it matches,
the final path component is returned with the extension removed.
Otherwise, ``None`` is returned.
Note that this function *only* returns a meaningful name for actual
Python modules - paths that potentially refer to Python packages will
still return ``None``.
.. versionchanged:: 3.3
This function is now based directly on :mod:`importlib` rather than the
deprecated :func:`getmoduleinfo`.
.. function:: ismodule(object)