mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			78 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
 | 
						|
import os.path
 | 
						|
import 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.tex
 | 
						|
if 'types' in modules:
 | 
						|
    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 = list(modules.keys())
 | 
						|
mlist = filter(lambda x, docs=docs: x in docs, 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}""")
 |