# Generate custlib.tex, which is a site-specific library document.# Phase I: list all the things that can be importedimport globimport os.pathimport sysmodules = {}for modname in sys.builtin_module_names: modules[modname] = modnamefor dir in sys.path: # Look for *.py files filelist = glob.glob(os.path.join(dir, '*.py')) for file in filelist: path, file = os.path.split(file) base, ext = os.path.splitext(file) modules[base.lower()] = base # Look for shared library files filelist = (glob.glob(os.path.join(dir, '*.so')) + glob.glob(os.path.join(dir, '*.sl')) + glob.glob(os.path.join(dir, '*.o')) ) for file in filelist: path, file = os.path.split(file) base, ext = os.path.splitext(file) if base[-6:] == 'module': base = base[:-6] modules[base.lower()] = base# Minor oddity: the types module is documented in libtypes2.texif modules.has_key('types'): del modules['types'] modules['types2'] = None# Phase II: find all documentation files (lib*.tex)# and eliminate modules that don't have one.docs = {}filelist = glob.glob('lib*.tex')for file in filelist: modname = file[3:-4] docs[modname] = modnamemlist = modules.keys()mlist = filter(lambda x, docs=docs: docs.has_key(x), mlist)mlist.sort()mlist = map(lambda x, docs=docs: docs[x], mlist)modules = mlist# Phase III: write custlib.tex# Write the boilerplate# XXX should be fancied up.print """\documentstyle[twoside,11pt,myformat]{report}\\title{Python Library Reference}\\input{boilerplate}\\makeindex % tell \\index to actually write the .idx file\\begin{document}\\pagenumbering{roman}\\maketitle\\input{copyright}\\begin{abstract}\\noindent This is a customized version of the Python Library Reference.\\end{abstract}\\pagebreak{\\parskip = 0mm \\tableofcontents}\\pagebreak\\pagenumbering{arabic}"""for modname in mlist: print "\\input{lib%s}" % (modname,)# Write the endprint """\\input{custlib.ind} % Index\\end{document}"""
# Generate custlib.tex, which is a site-specific library document.
# Phase I: list all the things that can be imported
import glob
import os.path
import sys
modules = {}
for modname in sys.builtin_module_names:
modules[modname] = modname
for dir in sys.path:
# Look for *.py files
filelist = glob.glob(os.path.join(dir, '*.py'))
for file in filelist:
path, file = os.path.split(file)
base, ext = os.path.splitext(file)
modules[base.lower()] = base
# Look for shared library files
filelist = (glob.glob(os.path.join(dir, '*.so')) +
glob.glob(os.path.join(dir, '*.sl')) +
glob.glob(os.path.join(dir, '*.o')) )
for file in filelist:
path, file = os.path.split(file)
base, ext = os.path.splitext(file)
if base[-6:] == 'module':
base = base[:-6]
modules[base.lower()] = base
# Minor oddity: the types module is documented in libtypes2.tex
if modules.has_key('types'):
del modules['types']
modules['types2'] = None
# Phase II: find all documentation files (lib*.tex)
# and eliminate modules that don't have one.
docs = {}
filelist = glob.glob('lib*.tex')
for file in filelist:
modname = file[3:-4]
docs[modname] = modname
mlist = modules.keys()
mlist = filter(lambda x, docs=docs: docs.has_key(x), mlist)
mlist.sort()
mlist = map(lambda x, docs=docs: docs[x], mlist)
modules = mlist
# Phase III: write custlib.tex
# Write the boilerplate
# XXX should be fancied up.
print """\documentstyle[twoside,11pt,myformat]{report}
\\title{Python Library Reference}
\\input{boilerplate}
\\makeindex % tell \\index to actually write the .idx file
\\begin{document}
\\pagenumbering{roman}
\\maketitle
\\input{copyright}
\\begin{abstract}
\\noindent This is a customized version of the Python Library Reference.
\\end{abstract}
\\pagebreak
{\\parskip = 0mm \\tableofcontents}
\\pagebreak\\pagenumbering{arabic}"""
for modname in mlist:
print "\\input{lib%s}" % (modname,)
# Write the end
print """\\input{custlib.ind} % Index
\\end{document}"""