78 lines · 2.1 KB · Python
RawDownload
# Generate custlib.tex, which is a site-specific library document. # Phase I: list all the things that can be imported import globimport os.pathimport 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.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] = 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 endprint """\\input{custlib.ind}                   % Index\\end{document}"""