Fix annotations for writers

This commit is contained in:
Takeshi KOMIYA 2018-11-27 21:47:15 +09:00
parent 94c6a5fa2b
commit 670c8a6173
7 changed files with 42 additions and 41 deletions

View File

@ -57,7 +57,7 @@ style-check:
.PHONY: type-check
type-check:
mypy sphinx/
mypy sphinx/writers
.PHONY: pylint
pylint:

View File

@ -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()

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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:

View File

@ -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