summaryrefslogtreecommitdiffstats
path: root/Doc/tools/custlib.py
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/tools/custlib.py')
-rw-r--r--Doc/tools/custlib.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/Doc/tools/custlib.py b/Doc/tools/custlib.py
new file mode 100644
index 0000000..32cb3d2
--- /dev/null
+++ b/Doc/tools/custlib.py
@@ -0,0 +1,73 @@
+# 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}"""