mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.1 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}"""
 | 
