mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix annotations for writers
This commit is contained in:
parent
94c6a5fa2b
commit
670c8a6173
2
Makefile
2
Makefile
@ -57,7 +57,7 @@ style-check:
|
||||
|
||||
.PHONY: type-check
|
||||
type-check:
|
||||
mypy sphinx/
|
||||
mypy sphinx/writers
|
||||
|
||||
.PHONY: pylint
|
||||
pylint:
|
||||
|
@ -301,7 +301,7 @@ class HTMLTranslator(BaseTranslator):
|
||||
self.depart_admonition(node)
|
||||
|
||||
def add_secnumber(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
if node.get('secnumber'):
|
||||
self.body.append('.'.join(map(str, node['secnumber'])) +
|
||||
self.secnumber_suffix)
|
||||
@ -321,7 +321,7 @@ class HTMLTranslator(BaseTranslator):
|
||||
self.secnumber_suffix)
|
||||
|
||||
def add_fignumber(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
def append_fignumber(figtype, figure_id):
|
||||
# type: (unicode, unicode) -> None
|
||||
if self.builder.name == 'singlehtml':
|
||||
@ -349,13 +349,13 @@ class HTMLTranslator(BaseTranslator):
|
||||
append_fignumber(figtype, node['ids'][0])
|
||||
|
||||
def add_permalink_ref(self, node, title):
|
||||
# type: (nodes.Node, unicode) -> None
|
||||
# type: (nodes.Element, unicode) -> None
|
||||
if node['ids'] and self.permalink_text and self.builder.add_permalinks:
|
||||
format = u'<a class="headerlink" href="#%s" title="%s">%s</a>'
|
||||
self.body.append(format % (node['ids'][0], title, self.permalink_text))
|
||||
|
||||
def generate_targets_for_listing(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
"""Generate hyperlink targets for listings.
|
||||
|
||||
Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list()
|
||||
|
@ -269,7 +269,7 @@ class HTML5Translator(BaseTranslator):
|
||||
self.depart_admonition(node)
|
||||
|
||||
def add_secnumber(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
if node.get('secnumber'):
|
||||
self.body.append('.'.join(map(str, node['secnumber'])) +
|
||||
self.secnumber_suffix)
|
||||
@ -289,7 +289,7 @@ class HTML5Translator(BaseTranslator):
|
||||
self.secnumber_suffix)
|
||||
|
||||
def add_fignumber(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
def append_fignumber(figtype, figure_id):
|
||||
# type: (unicode, unicode) -> None
|
||||
if self.builder.name == 'singlehtml':
|
||||
@ -317,7 +317,7 @@ class HTML5Translator(BaseTranslator):
|
||||
append_fignumber(figtype, node['ids'][0])
|
||||
|
||||
def add_permalink_ref(self, node, title):
|
||||
# type: (nodes.Node, unicode) -> None
|
||||
# type: (nodes.Element, unicode) -> None
|
||||
if node['ids'] and self.permalink_text and self.builder.add_permalinks:
|
||||
format = u'<a class="headerlink" href="#%s" title="%s">%s</a>'
|
||||
self.body.append(format % (node['ids'][0], title, self.permalink_text))
|
||||
@ -766,7 +766,7 @@ class HTML5Translator(BaseTranslator):
|
||||
# overwritten to add even/odd classes
|
||||
|
||||
def generate_targets_for_table(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
"""Generate hyperlink targets for tables.
|
||||
|
||||
Original visit_table() generates hyperlink targets inside table tags
|
||||
@ -815,7 +815,6 @@ class HTML5Translator(BaseTranslator):
|
||||
node['classes'].append('field-even')
|
||||
else:
|
||||
node['classes'].append('field-odd')
|
||||
return node
|
||||
|
||||
def visit_math(self, node, math_env=''):
|
||||
# type: (nodes.math, unicode) -> None
|
||||
|
@ -504,7 +504,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
docclasses = ('howto', 'manual')
|
||||
|
||||
def __init__(self, document, builder):
|
||||
# type: (nodes.Node, LaTeXBuilder) -> None
|
||||
# type: (nodes.document, LaTeXBuilder) -> None
|
||||
super(LaTeXTranslator, self).__init__(document)
|
||||
self.builder = builder
|
||||
self.body = [] # type: List[unicode]
|
||||
@ -699,15 +699,15 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.elements['numfig_format'] = self.generate_numfig_format(builder)
|
||||
|
||||
self.highlighter = highlighting.PygmentsBridge('latex', builder.config.pygments_style)
|
||||
self.context = [] # type: List[Any]
|
||||
self.descstack = [] # type: List[unicode]
|
||||
self.table = None # type: Table
|
||||
self.next_table_colspec = None # type: unicode
|
||||
self.bodystack = [] # type: List[List[unicode]]
|
||||
self.footnote_restricted = False
|
||||
self.pending_footnotes = [] # type: List[nodes.footnote_reference]
|
||||
self.curfilestack = [] # type: List[unicode]
|
||||
self.handled_abbrs = set() # type: Set[unicode]
|
||||
self.context = [] # type: List[Any]
|
||||
self.descstack = [] # type: List[unicode]
|
||||
self.table = None # type: Table
|
||||
self.next_table_colspec = None # type: unicode
|
||||
self.bodystack = [] # type: List[List[unicode]]
|
||||
self.footnote_restricted = None # type: nodes.Element
|
||||
self.pending_footnotes = [] # type: List[nodes.footnote_reference]
|
||||
self.curfilestack = [] # type: List[unicode]
|
||||
self.handled_abbrs = set() # type: Set[unicode]
|
||||
|
||||
def pushbody(self, newbody):
|
||||
# type: (List[unicode]) -> None
|
||||
@ -721,21 +721,21 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
return body
|
||||
|
||||
def restrict_footnote(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
warnings.warn('LaTeXWriter.restrict_footnote() is deprecated.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
|
||||
if self.footnote_restricted is False:
|
||||
if self.footnote_restricted is None:
|
||||
self.footnote_restricted = node
|
||||
self.pending_footnotes = []
|
||||
|
||||
def unrestrict_footnote(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
warnings.warn('LaTeXWriter.unrestrict_footnote() is deprecated.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
|
||||
if self.footnote_restricted == node:
|
||||
self.footnote_restricted = False
|
||||
self.footnote_restricted = None
|
||||
for footnode in self.pending_footnotes:
|
||||
footnode['footnotetext'] = True
|
||||
footnode.walkabout(self)
|
||||
@ -765,7 +765,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
'\\label{%s}' % self.idescape(id)
|
||||
|
||||
def hypertarget_to(self, node, anchor=False):
|
||||
# type: (nodes.Node, bool) -> unicode
|
||||
# type: (nodes.Element, bool) -> unicode
|
||||
labels = ''.join(self.hypertarget(node_id, anchor=False) for node_id in node['ids'])
|
||||
if anchor:
|
||||
return r'\phantomsection' + labels
|
||||
@ -914,9 +914,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.curfilestack.append(node['docname'])
|
||||
|
||||
def collect_footnotes(self, node):
|
||||
# type: (nodes.Node) -> Dict[unicode, List[Union[collected_footnote, bool]]]
|
||||
# type: (nodes.Element) -> Dict[unicode, List[Union[collected_footnote, bool]]]
|
||||
def footnotes_under(n):
|
||||
# type: (nodes.Node) -> Iterator[nodes.Node]
|
||||
# type: (nodes.Element) -> Iterator[nodes.footnote]
|
||||
if isinstance(n, nodes.footnote):
|
||||
yield n
|
||||
else:
|
||||
@ -1088,7 +1088,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.body.append('\n\\end{fulllineitems}\n\n')
|
||||
|
||||
def _visit_signature_line(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
for child in node:
|
||||
if isinstance(child, addnodes.desc_parameterlist):
|
||||
self.body.append(r'\pysiglinewithargsret{')
|
||||
@ -1464,7 +1464,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
def visit_enumerated_list(self, node):
|
||||
# type: (nodes.enumerated_list) -> None
|
||||
def get_enumtype(node):
|
||||
# type: (nodes.Node) -> unicode
|
||||
# type: (nodes.enumerated_list) -> unicode
|
||||
enumtype = node.get('enumtype', 'arabic')
|
||||
if 'alpha' in enumtype and 26 < node.get('start', 0) + len(node):
|
||||
# fallback to arabic if alphabet counter overflows
|
||||
@ -1807,9 +1807,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.body.append('\\end{sphinxadmonition}\n')
|
||||
|
||||
def _make_visit_admonition(name):
|
||||
# type: (unicode) -> Callable[[LaTeXTranslator, nodes.Node], None]
|
||||
# type: (unicode) -> Callable[[LaTeXTranslator, nodes.Element], None]
|
||||
def visit_admonition(self, node):
|
||||
# type: (nodes.admonition) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
self.body.append(u'\n\\begin{sphinxadmonition}{%s}{%s:}' %
|
||||
(name, admonitionlabels[name]))
|
||||
return visit_admonition
|
||||
@ -1869,7 +1869,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
||||
self.body.append(self.hypertarget(id, anchor=anchor))
|
||||
|
||||
# skip if visitor for next node supports hyperlink
|
||||
next_node = node
|
||||
next_node = node # type: nodes.Node
|
||||
while isinstance(next_node, nodes.target):
|
||||
next_node = next_node.next_node(ascend=True)
|
||||
|
||||
|
@ -23,7 +23,7 @@ from sphinx.util.nodes import NodeMatcher
|
||||
|
||||
if False:
|
||||
# For type annotation
|
||||
from typing import Any # NOQA
|
||||
from typing import Any, Dict # NOQA
|
||||
from sphinx.builders import Builder # NOQA
|
||||
from sphinx.util.typing import unicode # NOQA
|
||||
|
||||
@ -81,6 +81,8 @@ class ManualPageTranslator(BaseTranslator):
|
||||
Custom translator.
|
||||
"""
|
||||
|
||||
_docinfo = {} # type: Dict[unicode, Any]
|
||||
|
||||
def __init__(self, builder, *args, **kwds):
|
||||
# type: (Builder, Any, Any) -> None
|
||||
super(ManualPageTranslator, self).__init__(*args, **kwds)
|
||||
|
@ -88,7 +88,7 @@ TEMPLATE = """\
|
||||
|
||||
|
||||
def find_subsections(section):
|
||||
# type: (nodes.Node) -> List[nodes.Node]
|
||||
# type: (nodes.Element) -> List[nodes.section]
|
||||
"""Return a list of subsections for the given ``section``."""
|
||||
result = []
|
||||
for child in section.children:
|
||||
@ -162,7 +162,7 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
}
|
||||
|
||||
def __init__(self, document, builder):
|
||||
# type: (nodes.Node, TexinfoBuilder) -> None
|
||||
# type: (nodes.document, TexinfoBuilder) -> None
|
||||
super(TexinfoTranslator, self).__init__(document)
|
||||
self.builder = builder
|
||||
self.init_settings()
|
||||
@ -520,9 +520,9 @@ class TexinfoTranslator(nodes.NodeVisitor):
|
||||
# TODO: move this to sphinx.util
|
||||
|
||||
def collect_footnotes(self, node):
|
||||
# type: (nodes.Node) -> Dict[unicode, List[Union[collected_footnote, bool]]]
|
||||
# type: (nodes.Element) -> Dict[unicode, List[Union[collected_footnote, bool]]]
|
||||
def footnotes_under(n):
|
||||
# type: (nodes.Node) -> Iterator[nodes.footnote]
|
||||
# type: (nodes.Element) -> Iterator[nodes.footnote]
|
||||
if isinstance(n, nodes.footnote):
|
||||
yield n
|
||||
else:
|
||||
|
@ -393,7 +393,7 @@ class TextWriter(writers.Writer):
|
||||
class TextTranslator(nodes.NodeVisitor):
|
||||
|
||||
def __init__(self, document, builder):
|
||||
# type: (nodes.Node, TextBuilder) -> None
|
||||
# type: (nodes.document, TextBuilder) -> None
|
||||
super(TextTranslator, self).__init__(document)
|
||||
self.builder = builder
|
||||
|
||||
@ -1039,16 +1039,16 @@ class TextTranslator(nodes.NodeVisitor):
|
||||
self.end_state()
|
||||
|
||||
def _visit_admonition(self, node):
|
||||
# type: (nodes.Node) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
self.new_state(2)
|
||||
|
||||
if isinstance(node.children[0], nodes.Sequential):
|
||||
self.add_text(self.nl)
|
||||
|
||||
def _make_depart_admonition(name):
|
||||
# type: (unicode) -> Callable[[TextTranslator, nodes.Node], None]
|
||||
# type: (unicode) -> Callable[[TextTranslator, nodes.Element], None]
|
||||
def depart_admonition(self, node):
|
||||
# type: (nodes.admonition) -> None
|
||||
# type: (nodes.Element) -> None
|
||||
self.end_state(first=admonitionlabels[name] + ': ')
|
||||
return depart_admonition
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user