|
5 | 5 |
|
6 | 6 | Sphinx extension with Python doc-specific markup.
|
7 | 7 |
|
8 |
| - :copyright: 2008-2013 by Georg Brandl. |
| 8 | + :copyright: 2008-2014 by Georg Brandl. |
9 | 9 | :license: Python license.
|
10 | 10 | """
|
11 | 11 |
|
|
14 | 14 |
|
15 | 15 | from docutils import nodes, utils
|
16 | 16 |
|
17 |
| -import sphinx |
18 | 17 | from sphinx.util.nodes import split_explicit_title
|
| 18 | +from sphinx.util.compat import Directive |
19 | 19 | from sphinx.writers.html import HTMLTranslator
|
20 | 20 | from sphinx.writers.latex import LaTeXTranslator
|
21 |
| -from sphinx.locale import versionlabels |
22 | 21 |
|
23 | 22 | # monkey-patch reST parser to disable alphabetic and roman enumerated lists
|
24 | 23 | from docutils.parsers.rst.states import Body
|
|
27 | 26 | Body.enum.converters['lowerroman'] = \
|
28 | 27 | Body.enum.converters['upperroman'] = lambda x: None
|
29 | 28 |
|
30 |
| -if sphinx.__version__[:3] < '1.2': |
31 |
| - # monkey-patch HTML translator to give versionmodified paragraphs a class |
32 |
| - def new_visit_versionmodified(self, node): |
33 |
| - self.body.append(self.starttag(node, 'p', CLASS=node['type'])) |
34 |
| - text = versionlabels[node['type']] % node['version'] |
35 |
| - if len(node): |
36 |
| - text += ': ' |
37 |
| - else: |
38 |
| - text += '.' |
39 |
| - self.body.append('<span class="versionmodified">%s</span>' % text) |
40 |
| - HTMLTranslator.visit_versionmodified = new_visit_versionmodified |
41 |
| - |
42 | 29 | # monkey-patch HTML and LaTeX translators to keep doctest blocks in the
|
43 | 30 | # doctest docs themselves
|
44 | 31 | orig_visit_literal_block = HTMLTranslator.visit_literal_block
|
@@ -88,8 +75,6 @@ def source_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
|
88 | 75 |
|
89 | 76 | # Support for marking up implementation details
|
90 | 77 |
|
91 |
| -from sphinx.util.compat import Directive |
92 |
| - |
93 | 78 | class ImplementationDetail(Directive):
|
94 | 79 |
|
95 | 80 | has_content = True
|
@@ -140,41 +125,6 @@ def run(self):
|
140 | 125 | return PyClassmember.run(self)
|
141 | 126 |
|
142 | 127 |
|
143 |
| -# Support for documenting version of removal in deprecations |
144 |
| - |
145 |
| -from sphinx.locale import versionlabels |
146 |
| -from sphinx.util.compat import Directive |
147 |
| - |
148 |
| -versionlabels['deprecated-removed'] = \ |
149 |
| - 'Deprecated since version %s, will be removed in version %s' |
150 |
| - |
151 |
| -class DeprecatedRemoved(Directive): |
152 |
| - has_content = True |
153 |
| - required_arguments = 2 |
154 |
| - optional_arguments = 1 |
155 |
| - final_argument_whitespace = True |
156 |
| - option_spec = {} |
157 |
| - |
158 |
| - def run(self): |
159 |
| - node = addnodes.versionmodified() |
160 |
| - node.document = self.state.document |
161 |
| - node['type'] = 'deprecated-removed' |
162 |
| - version = (self.arguments[0], self.arguments[1]) |
163 |
| - node['version'] = version |
164 |
| - if len(self.arguments) == 3: |
165 |
| - inodes, messages = self.state.inline_text(self.arguments[2], |
166 |
| - self.lineno+1) |
167 |
| - node.extend(inodes) |
168 |
| - if self.content: |
169 |
| - self.state.nested_parse(self.content, self.content_offset, node) |
170 |
| - ret = [node] + messages |
171 |
| - else: |
172 |
| - ret = [node] |
173 |
| - env = self.state.document.settings.env |
174 |
| - env.note_versionchange('deprecated', version[0], node, self.lineno) |
175 |
| - return ret |
176 |
| - |
177 |
| - |
178 | 128 | # Support for building "topic help" for pydoc
|
179 | 129 |
|
180 | 130 | pydoc_topic_labels = [
|
@@ -231,13 +181,14 @@ def write(self, *ignored):
|
231 | 181 | document.append(doctree.ids[labelid])
|
232 | 182 | destination = StringOutput(encoding='utf-8')
|
233 | 183 | writer.write(document, destination)
|
234 |
| - self.topics[label] = str(writer.output) |
| 184 | + self.topics[label] = writer.output |
235 | 185 |
|
236 | 186 | def finish(self):
|
237 |
| - f = open(path.join(self.outdir, 'topics.py'), 'w') |
| 187 | + f = open(path.join(self.outdir, 'topics.py'), 'wb') |
238 | 188 | try:
|
239 |
| - f.write('# Autogenerated by Sphinx on %s\n' % asctime()) |
240 |
| - f.write('topics = ' + pformat(self.topics) + '\n') |
| 189 | + f.write('# -*- coding: utf-8 -*-\n'.encode('utf-8')) |
| 190 | + f.write(('# Autogenerated by Sphinx on %s\n' % asctime()).encode('utf-8')) |
| 191 | + f.write(('topics = ' + pformat(self.topics) + '\n').encode('utf-8')) |
241 | 192 | finally:
|
242 | 193 | f.close()
|
243 | 194 |
|
@@ -295,7 +246,6 @@ def setup(app):
|
295 | 246 | app.add_role('issue', issue_role)
|
296 | 247 | app.add_role('source', source_role)
|
297 | 248 | app.add_directive('impl-detail', ImplementationDetail)
|
298 |
| - app.add_directive('deprecated-removed', DeprecatedRemoved) |
299 | 249 | app.add_builder(PydocTopicsBuilder)
|
300 | 250 | app.add_builder(suspicious.CheckSuspiciousMarkupBuilder)
|
301 | 251 | app.add_description_unit('opcode', 'opcode', '%s (opcode)',
|
|
0 commit comments