mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			74 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			74 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}"""
							 |