#!/usr/bin/env python
#
# $Id: sysmodules.py,v 1.2 2006/12/05 13:10:45 doughellmann Exp $
#
# Copyright 2002 Doug Hellmann.
#
#
# All Rights Reserved
#
# Permission to use, copy, modify, and distribute this software and
# its documentation for any purpose and without fee is hereby
# granted, provided that the above copyright notice appear in all
# copies and that both that copyright notice and this permission
# notice appear in supporting documentation, and that the name of Doug
# Hellmann not be used in advertising or publicity pertaining to
# distribution of the software without specific, written prior
# permission.
#
# DOUG HELLMANN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
# NO EVENT SHALL DOUG HELLMANN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
"""Utilities for working with Python system modules.
"""
__rcs_info__ = {
#
# Creation Information
#
'module_name' : '$RCSfile: sysmodules.py,v $',
'rcs_id' : '$Id: sysmodules.py,v 1.2 2006/12/05 13:10:45 doughellmann Exp $',
'creator' : 'Doug Hellmann',
'project' : 'HappyDoc',
'created' : 'Fri, 27-Dec-2002 11:19:36 EST',
#
# Current Information
#
'author' : '$Author: doughellmann $',
'version' : '$Revision: 1.2 $',
'date' : '$Date: 2006/12/05 13:10:45 $',
}
try:
__version__ = __rcs_info__['version'].split(' ')[1]
except:
__version__ = '0.0'
#
# Import system modules
#
import glob
import os
import string
import sys
#
# Import Local modules
#
#
# Module
#
#
# Find a list of system modules for creating reference
# links to them.
#
_sysdirs = []
version_dir='python%d.%d' % (sys.version_info[0], sys.version_info[1])
for path in sys.path:
path_parts = string.split(path, os.sep)
if (version_dir in path_parts) and ('site-packages' not in path_parts):
# system directory
_sysdirs.append(path)
_sys_modules = []
for path in _sysdirs:
module_list = glob.glob( os.path.join( path, '*.py' ) )
module_file_names = map(os.path.basename, module_list)
for name in module_file_names:
name = name[:-3]
if name:
#print 'System module %s/%s.py' % (path, name)
_sys_modules.append(name)
shared_lib_list = glob.glob( os.path.join( path, '*.so' ) )
shared_lib_file_names = map(os.path.basename, shared_lib_list)
for name in shared_lib_file_names:
#print 'Shared library %s/%s' % (path, name)
name = name[:-3]
#print ' name="%s"' % name
if name:
_sys_modules.append(name)
_well_known_names = ( 'regex', 'sys', 'thread', 'threading', 'new' )
for _name in _well_known_names:
_sys_modules.append(_name)
#print _sys_modules
#sys.exit(1)
PYTHON_LIB_DOC_ROOT = 'http://www.python.org/doc/current/lib'
def getPythonSystemModuleURL(moduleName, root=PYTHON_LIB_DOC_ROOT):
"""Returns a URL pointing to the documentation for the named module.
"""
global _sys_modules
if moduleName in _sys_modules:
href = '%s/module-%s.html' % (root, moduleName)
else:
href = None
return href
|