Gentoo Archives: gentoo-commits

From: Aaron Bauman <bman@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/python-levenshtein/files/
Date: Thu, 14 May 2020 22:19:59
Message-Id: 1589494773.bb4bb0a4a56bbddbaee05bacb850011711f026f0.bman@gentoo
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()