'inspect' was not listing the functions in a module properly if the module was

reached through a symlink (was comparing path of module to path to function and
were not matching because of the symlink).  os.path.realpath() is now used to
solve this discrepency.

Closes bug #570300.  Thanks Johannes Gijsbers for the fix.
This commit is contained in:
Brett Cannon 2004-08-13 18:46:24 +00:00
parent 08d786a608
commit b3de2e13ba
2 changed files with 7 additions and 1 deletions

View File

@ -380,7 +380,9 @@ def getmodule(object):
return sys.modules.get(modulesbyfile[file]) return sys.modules.get(modulesbyfile[file])
for module in sys.modules.values(): for module in sys.modules.values():
if hasattr(module, '__file__'): if hasattr(module, '__file__'):
modulesbyfile[getabsfile(module)] = module.__name__ modulesbyfile[
os.path.realpath(
getabsfile(module))] = module.__name__
if file in modulesbyfile: if file in modulesbyfile:
return sys.modules.get(modulesbyfile[file]) return sys.modules.get(modulesbyfile[file])
main = sys.modules['__main__'] main = sys.modules['__main__']

View File

@ -41,6 +41,10 @@ Extension modules
Library Library
------- -------
- bug #570300: Fix inspect to resolve file locations using os.path.realpath()
so as to properly list all functions in a module when the module itself is
reached through a symlink. Thanks Johannes Gijsbers.
- doctest refactoring continued. See the docs for details. As part of - doctest refactoring continued. See the docs for details. As part of
this effort, some old and little- (never?) used features are now this effort, some old and little- (never?) used features are now
deprecated: the Tester class, the module is_private() function, and the deprecated: the Tester class, the module is_private() function, and the