mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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}"""
 |