Issue #12947: revert earlier workaround and use a monkey-patch to enable showing doctest directives only in the doctest docs.
This commit is contained in:
parent
4614cc4f7f
commit
3a2e101be5
|
@ -1,3 +1,5 @@
|
|||
:keepdoctest:
|
||||
|
||||
:mod:`doctest` --- Test interactive Python examples
|
||||
===================================================
|
||||
|
||||
|
@ -652,7 +654,7 @@ example. Use ``+`` to enable the named behavior, or ``-`` to disable it.
|
|||
|
||||
For example, this test passes::
|
||||
|
||||
>>> print(list(range(20))) #doctest: +NORMALIZE_WHITESPACE
|
||||
>>> print(list(range(20))) # doctest: +NORMALIZE_WHITESPACE
|
||||
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
|
||||
|
||||
|
@ -664,7 +666,8 @@ so::
|
|||
>>> print(list(range(20))) # doctest: +ELLIPSIS
|
||||
[0, 1, ..., 18, 19]
|
||||
|
||||
Multiple directives can be used on a single physical line, separated by commas::
|
||||
Multiple directives can be used on a single physical line, separated by
|
||||
commas::
|
||||
|
||||
>>> print(list(range(20))) # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
|
||||
[0, 1, ..., 18, 19]
|
||||
|
|
|
@ -33,9 +33,38 @@ def new_visit_versionmodified(self, node):
|
|||
self.body.append('<span class="versionmodified">%s</span> ' % text)
|
||||
|
||||
from sphinx.writers.html import HTMLTranslator
|
||||
from sphinx.writers.latex import LaTeXTranslator
|
||||
from sphinx.locale import versionlabels
|
||||
HTMLTranslator.visit_versionmodified = new_visit_versionmodified
|
||||
HTMLTranslator.visit_versionmodified = new_visit_versionmodified
|
||||
|
||||
# monkey-patch HTML and LaTeX translators to keep doctest blocks in the
|
||||
# doctest docs themselves
|
||||
orig_visit_literal_block = HTMLTranslator.visit_literal_block
|
||||
def new_visit_literal_block(self, node):
|
||||
meta = self.builder.env.metadata[self.builder.current_docname]
|
||||
old_trim_doctest_flags = self.highlighter.trim_doctest_flags
|
||||
if 'keepdoctest' in meta:
|
||||
self.highlighter.trim_doctest_flags = False
|
||||
try:
|
||||
orig_visit_literal_block(self, node)
|
||||
finally:
|
||||
self.highlighter.trim_doctest_flags = old_trim_doctest_flags
|
||||
|
||||
HTMLTranslator.visit_literal_block = new_visit_literal_block
|
||||
|
||||
orig_depart_literal_block = LaTeXTranslator.depart_literal_block
|
||||
def new_depart_literal_block(self, node):
|
||||
meta = self.builder.env.metadata[self.curfilestack[-1]]
|
||||
old_trim_doctest_flags = self.highlighter.trim_doctest_flags
|
||||
if 'keepdoctest' in meta:
|
||||
self.highlighter.trim_doctest_flags = False
|
||||
try:
|
||||
orig_depart_literal_block(self, node)
|
||||
finally:
|
||||
self.highlighter.trim_doctest_flags = old_trim_doctest_flags
|
||||
|
||||
LaTeXTranslator.depart_literal_block = new_depart_literal_block
|
||||
|
||||
# Support for marking up and linking to bugs.python.org issues
|
||||
|
||||
|
|
Loading…
Reference in New Issue