| # Generate custlib.tex, which is a site-specific library document. |
| |
| # Phase I: list all the things that can be imported |
| |
| import glob, os, sys, string |
| 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[string.lower(base)]=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[string.lower(base)]=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}""" |