annotate Doc/tools/listmodules @ 25838:8540887bcec6 2.2

Backport of 2.183: Fix memory leak in add_subclass() found by NealN with valgrind.
author Guido van Rossum <guido@python.org>
date Fri, 18 Oct 2002 13:42:21 +0000
parents 0f00b6c7b9b9
children 92eb5ae4c18f 6b18a095c2e7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
1 #! /usr/bin/env python
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
2 # -*- Python -*-
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
3 #
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
4 # This script can be used to identify undocumented modules in the Python
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
5 # standard library. Use it like this:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
6 #
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
7 # .../Doc/tools/listmodules --ignore-from .../Doc/paper-<paper>/modlib.idx
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
8
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
9 """%(program)s - list modules in the Python standard library
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
10
15415
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
11 -a, --annotate Annotate the module names with the subdirectory they
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
12 live in
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
13 -c, --categorize Group the modules by subdirectory
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
14 -i <file>,
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
15
15415
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
16 --ignore-from <file> Ignore the modules listed in <file>. <file> may
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
17 contain a list of module names or a module index file
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
18 as produced when formatting the Python documentation
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
19 (.idx or .html flavor).
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
20
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
21 If neither -a nor -c are given, the modules are listed in alphabetical
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
22 order.
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
23
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
24 Note that -a and -c are mutually exclusive.
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
25
15415
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
26 Limitation: Modules loadable as shared objects may not be listed,
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
27 though this script attempts to locate such modules.
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
28
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
29 """
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
30
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
31 __version__ = '$Revision$'
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
32
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
33 import getopt
11008
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
34 import glob
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
35 import os
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
36 import re
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
37 import string
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
38 import sys
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
39
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
40
15415
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
41 REMOVE_DIRS = ["dos-8x3", "encodings", "distutils",
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
42 "lib-old", "lib-stdwin", "test"]
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
43
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
44
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
45 def main():
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
46 args = sys.argv[1:]
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
47 annotate = 0
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
48 builtin = 0
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
49 categorize = 0
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
50 ignore_dict = {}
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
51 ignore = ignore_dict.has_key
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
52 try:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
53 opts, args = getopt.getopt(
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
54 args, "abchi:",
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
55 ["annotate", "built-in", "categorize", "help", "ignore-from="])
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
56 except getopt.error, msg:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
57 sys.stdout = sys.stderr
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
58 print msg
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
59 print
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
60 usage()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
61 sys.exit(2)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
62 for opt, arg in opts:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
63 if opt in ("-a", "--annotate"):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
64 annotate = 1
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
65 elif opt in ("-b", "--built-in"):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
66 builtin = 1
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
67 elif opt in ("-c", "--categorize"):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
68 categorize = 1
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
69 elif opt in ("-h", "--help"):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
70 usage()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
71 sys.exit()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
72 elif opt in ("-i", "--ignore-from"):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
73 data = open(arg).read()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
74 if data[:1] == "\\":
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
75 ignore_from_idx(data, ignore_dict)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
76 else:
10298
cc0c906c2415 ignore_from_idx(): Fixed bug in regular expression.
Fred Drake <fdrake@acm.org>
parents: 10288
diff changeset
77 ignore_from_modulelist(data, ignore_dict)
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
78 if args or (annotate and categorize):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
79 usage()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
80 sys.exit(2)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
81 #
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
82 # Populate the database:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
83 #
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
84 srcdir = os.path.normpath(os.path.join(
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
85 os.path.dirname(sys.argv[0]), os.pardir, os.pardir))
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
86 os.chdir(srcdir)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
87 modules_by_name = {}
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
88 modules_by_dir = {}
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
89 if builtin:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
90 l = []
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
91 modules_by_dir["<builtin>"] = l
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
92 for name in sys.builtin_module_names:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
93 if not ignore(name):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
94 modules_by_name[name] = "<built-in>"
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
95 l.append(name)
15415
0f00b6c7b9b9 Note that readframes() returns data in linear format, even if the original
Fred Drake <fdrake@acm.org>
parents: 11008
diff changeset
96 rx = re.compile("Lib/plat-[a-zA-Z0-9]*/")
11008
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
97 fp = os.popen("find Lib -name \*.py -print", "r")
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
98 while 1:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
99 line = fp.readline()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
100 if not line:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
101 break
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
102 m = rx.match(line)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
103 if m:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
104 line = "Lib/plat-*/" + line[m.end():]
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
105 line = line[4:-4] # strip off 'Lib/' and '.py\n'
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
106 dir, name = os.path.split(line)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
107 dir = dir or "<standard>"
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
108 if ignore(name):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
109 continue
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
110 if dir not in REMOVE_DIRS:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
111 modules_by_name[name] = dir
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
112 l = modules_by_dir.get(dir, [])
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
113 modules_by_dir[dir] = l
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
114 if name not in l:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
115 l.append(name)
11008
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
116 # load up extension modules:
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
117 pwd = os.getcwd()
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
118 try:
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
119 os.chdir("Modules")
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
120 dir = "<extension>"
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
121 for line in glob.glob("*module.c"):
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
122 name = line[:-8]
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
123 if ignore(name) or modules_by_name.has_key(name) or name == "xx":
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
124 continue
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
125 modules_by_name[name] = dir
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
126 l = modules_by_dir.get(dir, [])
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
127 modules_by_dir[dir] = l
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
128 if name not in l:
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
129 l.append(name)
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
130 finally:
4818cb8e1110 When looking for things that might be modules, include *module.c from
Fred Drake <fdrake@acm.org>
parents: 10298
diff changeset
131 os.chdir(pwd)
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
132 #
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
133 # Dump the results:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
134 #
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
135 if annotate:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
136 modules = modules_by_name.items()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
137 modules.sort()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
138 width = max(map(len, modules_by_name.keys()))
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
139 format = "%%-%ds %%s" % width
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
140 for name, dir in modules:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
141 if dir and dir[0] != "<":
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
142 print format % (name, dir)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
143 else:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
144 print name
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
145 elif categorize:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
146 modules = modules_by_dir.items()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
147 modules.sort()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
148 width = max(map(len, modules_by_dir.keys()))
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
149 format = "%%-%ds %%s" % width
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
150 for dir, names in modules:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
151 names.sort()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
152 print format % (dir, names[0])
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
153 for name in names[1:]:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
154 print format % ('', name)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
155 print
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
156 else:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
157 modules = modules_by_name.keys()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
158 modules.sort()
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
159 print string.join(modules, "\n")
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
160
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
161
10298
cc0c906c2415 ignore_from_idx(): Fixed bug in regular expression.
Fred Drake <fdrake@acm.org>
parents: 10288
diff changeset
162 def ignore_from_modulelist(data, ignore_dict):
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
163 for name in string.split(data):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
164 ignore_dict[name] = name
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
165
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
166 def ignore_from_idx(data, ignore_dict):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
167 data = string.replace(data, r"\hackscore {}", "_")
10298
cc0c906c2415 ignore_from_idx(): Fixed bug in regular expression.
Fred Drake <fdrake@acm.org>
parents: 10288
diff changeset
168 rx = re.compile(r"\\indexentry\s*{([^@]*)@")
10288
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
169 for line in string.split(data, "\n"):
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
170 m = rx.match(line)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
171 if m:
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
172 name = m.group(1)
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
173 ignore_dict[name] = name
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
174
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
175
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
176 def usage():
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
177 vars = {}
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
178 vars["program"] = os.path.basename(sys.argv[0])
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
179 print __doc__ % vars
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
180
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
181
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
182 if __name__ == "__main__":
5c0c061de2ae Script to help identify undocumented modules. Use -h or --help for
Fred Drake <fdrake@acm.org>
parents:
diff changeset
183 main()