1 |
commit: bb4bb0a4a56bbddbaee05bacb850011711f026f0 |
2 |
Author: Michael Mair-Keimberger <m.mairkeimberger <AT> gmail <DOT> com> |
3 |
AuthorDate: Sun Feb 9 16:56:54 2020 +0000 |
4 |
Commit: Aaron Bauman <bman <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu May 14 22:19:33 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb4bb0a4 |
7 |
|
8 |
dev-python/python-levenshtein: remove unused file |
9 |
|
10 |
Signed-off-by: Michael Mair-Keimberger <m.mairkeimberger <AT> gmail.com> |
11 |
Closes: https://github.com/gentoo/gentoo/pull/14606 |
12 |
Signed-off-by: Aaron Bauman <bman <AT> gentoo.org> |
13 |
|
14 |
dev-python/python-levenshtein/files/genextdoc.py | 214 ----------------------- |
15 |
1 file changed, 214 deletions(-) |
16 |
|
17 |
diff --git a/dev-python/python-levenshtein/files/genextdoc.py b/dev-python/python-levenshtein/files/genextdoc.py |
18 |
deleted file mode 100644 |
19 |
index 54ce008e88a..00000000000 |
20 |
--- a/dev-python/python-levenshtein/files/genextdoc.py |
21 |
+++ /dev/null |
22 |
@@ -1,214 +0,0 @@ |
23 |
-#!/usr/bin/python |
24 |
-# Simple Python extension module doc generator. |
25 |
-# @(#) $Id: genextdoc.py,v 1.4 2003/12/23 22:38:28 yeti Exp $ |
26 |
-# Written by Yeti <yeti@××××××××××××.cz> |
27 |
-# This program is in the public domain. |
28 |
-import re, sys, types, inspect |
29 |
-from cgi import escape as q |
30 |
- |
31 |
-args = sys.argv |
32 |
-args.pop(0) |
33 |
-if not args: sys.exit(0) |
34 |
- |
35 |
-selfcontained = False |
36 |
-if args[0].startswith('-') and 'selfcontained'.startswith(args[0].strip('-')): |
37 |
- selfcontained = True |
38 |
- args.pop(0) |
39 |
-if not args: sys.exit(0) |
40 |
-modname = args.pop(0) |
41 |
-plain_docs = args |
42 |
- |
43 |
-html_head = """\ |
44 |
-<?xml version="1.0" encoding="UTF-8"?> |
45 |
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
46 |
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
47 |
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> |
48 |
-<head><title>%s %s</title></head> |
49 |
-<body> |
50 |
-""" |
51 |
- |
52 |
-html_foot = """\ |
53 |
-</body> |
54 |
-</html> |
55 |
-""" |
56 |
- |
57 |
-def split_para(doc): |
58 |
- p = [] |
59 |
- for x in doc.split('\n\n'): |
60 |
- x = x.strip() |
61 |
- if x.find('\n>>>') > -1: |
62 |
- h, t = x.split('\n>>>', 1) |
63 |
- p.append(h) |
64 |
- p.append('>>>' + t) |
65 |
- else: |
66 |
- p.append(x) |
67 |
- return p |
68 |
- |
69 |
-def get_doc(members): |
70 |
- try: doc = members['__doc__'] |
71 |
- except KeyError: pass |
72 |
- if doc: return doc |
73 |
- try: doc = 'Python module %s' % members['__name__'] |
74 |
- except KeyError: pass |
75 |
- if doc: return doc |
76 |
- else: return 'A Python module' |
77 |
- |
78 |
-def format_synopsis(synopsis, link=False, classname=None): |
79 |
- lst = synopsis.split('\n') |
80 |
- for i, s in zip(range(len(lst)), lst): |
81 |
- m = re.match(r'(?P<func>\w+)(?P<args>.*)', s) |
82 |
- args = re.sub(r'([a-zA-Z]\w+)', r'<var>\1</var>', m.group('args')) |
83 |
- func = m.group('func') |
84 |
- if link: |
85 |
- if classname: |
86 |
- func = '<a href="#%s-%s">%s</a>' % (classname, func, func) |
87 |
- else: |
88 |
- func = '<a href="#%s">%s</a>' % (func, func) |
89 |
- lst[i] = func + args |
90 |
- return '<br/>\n'.join(lst) |
91 |
- |
92 |
-def format_para(p): |
93 |
- if not p: return '' |
94 |
- doc = '' |
95 |
- if p.startswith('>>>'): doc += '<pre>\n%s\n</pre>\n' % q(p) |
96 |
- else: |
97 |
- if not re.search('^- ', p, re.M): doc += '<p>%s</p>\n' % q(p) |
98 |
- else: |
99 |
- p = re.split('(?m)^- ', p) |
100 |
- if p[0]: doc += '<p>%s</p>\n' % q(p[0].strip()) |
101 |
- del p[0] |
102 |
- doc += ('<ul>%s</ul>\n' |
103 |
- % '\n'.join(['<li>%s</li>' % q(p.strip()) for p in p])) |
104 |
- return doc |
105 |
- |
106 |
-def preprocess_routine(name, doc): |
107 |
- parts = split_para(doc) |
108 |
- if parts: summary = parts.pop(0) |
109 |
- else: summary = 'FIXME' |
110 |
- if parts and re.match(r'\w+\(.*\)', parts[0]): synopsis = parts.pop(0) |
111 |
- else: synopsis = name + '()' |
112 |
- return {'synopsis': synopsis, 'summary': summary, 'details': parts} |
113 |
- |
114 |
-def analyse(obj): |
115 |
- members = obj.__dict__ |
116 |
- if inspect.isclass(obj): |
117 |
- main_doc = preprocess_routine(obj.__name__, get_doc(members)) |
118 |
- bases = [x.__name__ for x in obj.__bases__] |
119 |
- else: |
120 |
- main_doc = split_para(get_doc(members)) |
121 |
- bases = [] |
122 |
- routines = {} |
123 |
- classes = {} |
124 |
- data = {} |
125 |
- for name, m in members.items(): |
126 |
- if name.startswith('__'): continue |
127 |
- try: |
128 |
- mro = list(inspect.getmro(m)) |
129 |
- if mro[0] != m: continue |
130 |
- except AttributeError: pass |
131 |
- if inspect.isroutine(m): |
132 |
- try: doc = m.__doc__ |
133 |
- except KeyError: pass |
134 |
- if not doc: doc = 'FIXME' |
135 |
- routines[name] = preprocess_routine(name, doc) |
136 |
- continue |
137 |
- if inspect.isclass(m): |
138 |
- classes[name] = analyse(m) |
139 |
- continue |
140 |
- t = type(m) |
141 |
- if t == types.IntType or t == types.StringType: |
142 |
- data[name] = repr(m) |
143 |
- else: |
144 |
- data[name] = m.__doc__ |
145 |
- return {'name': obj.__name__, 'doc': main_doc, 'routines': routines, |
146 |
- 'classes': classes, 'data': data, 'bases': bases} |
147 |
- |
148 |
-def format(tree, level, prefix=''): |
149 |
- name = tree['name'] |
150 |
- if prefix: fullname = '%s-%s' % (prefix, name) |
151 |
- else: fullname = name |
152 |
- ##### Main doc |
153 |
- doc = [] |
154 |
- if level > 1: |
155 |
- doc = ['<h%d id="%s">' % (level, fullname)] |
156 |
- try: doc.append(format_synopsis(tree['doc']['synopsis'])) |
157 |
- except TypeError: |
158 |
- doc.append(name) |
159 |
- doc.append('</h%d>\n' % level) |
160 |
- if tree.has_key('bases'): |
161 |
- doc.append('<p>Bases: %s.</p>\n' % ', '.join(tree['bases'])) |
162 |
- try: lst = [tree['doc']['summary']] + tree['doc']['details'] |
163 |
- except TypeError: lst = tree['doc'] |
164 |
- for p in lst: doc.append(format_para(p)) |
165 |
- ##### Table of contents |
166 |
- routines = tree['routines'].keys() |
167 |
- classes = tree['classes'].keys() |
168 |
- data = tree['data'].keys() |
169 |
- if routines: |
170 |
- routines.sort() |
171 |
- if level == 1: doc.append('<p><b>Functions:</b></p>\n') |
172 |
- else: doc.append('<p><b>Methods:</b></p>\n') |
173 |
- doc.append('<ul class="ltoc">\n') |
174 |
- for r in routines: |
175 |
- synopsis = tree['routines'][r]['synopsis'] |
176 |
- doc.append('<li>%s</li>\n' % format_synopsis(synopsis, True, |
177 |
- fullname)) |
178 |
- doc.append('</ul>\n') |
179 |
- if classes: |
180 |
- classes.sort() |
181 |
- doc.append('<p><b>Classes:</b></p>\n') |
182 |
- doc.append('<ul class="ltoc">\n') |
183 |
- for r in classes: |
184 |
- synopsis = tree['classes'][r]['doc']['synopsis'] |
185 |
- doc.append('<li>%s</li>\n' % format_synopsis(synopsis, True, |
186 |
- fullname)) |
187 |
- doc.append('</ul>\n') |
188 |
- if data: |
189 |
- data.sort() |
190 |
- doc.append('<p><b>Data:</b></p>\n') |
191 |
- doc.append('<ul class="ltoc">\n') |
192 |
- for r in data: |
193 |
- doc.append('<li>%s = %s</li>\n' % (r, q(tree['data'][r]))) |
194 |
- doc.append('</ul>\n') |
195 |
- ##### Functions |
196 |
- if routines: |
197 |
- if level == 1: doc.append('<hr/>\n') |
198 |
- doc.append('<dl>\n') |
199 |
- for r in routines: |
200 |
- doc.append('<dt id="%s-%s">' % (fullname, r)) |
201 |
- rt = tree['routines'][r] |
202 |
- doc.append('%s</dt>\n<dd>' % format_synopsis(rt['synopsis'])) |
203 |
- for p in [rt['summary']] + rt['details']: |
204 |
- doc.append(format_para(p)) |
205 |
- doc.append('</dd>\n') |
206 |
- doc.append('</dl>\n') |
207 |
- ##### Classes |
208 |
- if classes: |
209 |
- for r in classes: |
210 |
- doc.append('<hr/>\n') |
211 |
- doc.append(format(tree['classes'][r], level+1, fullname)) |
212 |
- return ''.join(doc) |
213 |
- |
214 |
-exec 'import %s as __test__' % modname |
215 |
-doctree = analyse(__test__) |
216 |
-document = format(doctree, 1) |
217 |
-print modname + '.html' |
218 |
-fh = file(modname + '.html', 'w') |
219 |
-if selfcontained: fh.write(html_head % (modname, 'module API')) |
220 |
-fh.write(document) |
221 |
-if selfcontained: fh.write(html_foot) |
222 |
-fh.close() |
223 |
-for f in plain_docs: |
224 |
- try: fh = file(f, 'r') |
225 |
- except: continue |
226 |
- document = fh.read() |
227 |
- fh.close() |
228 |
- print f + '.xhtml' |
229 |
- fh = file(f + '.xhtml', 'w') |
230 |
- if selfcontained: fh.write(html_head % (modname, f)) |
231 |
- fh.write('<h1>%s %s</h1>\n\n' % (modname, f)) |
232 |
- fh.write('<pre class="main">\n') |
233 |
- fh.write(document) |
234 |
- fh.write('</pre>\n') |
235 |
- if selfcontained: fh.write(html_foot) |
236 |
- fh.close() |