Update type hints to HTML4 writer

This commit is contained in:
Takeshi KOMIYA
2018-11-21 01:10:12 +09:00
parent e46d14d506
commit c0f52fddd0

View File

@@ -92,25 +92,25 @@ class HTMLTranslator(BaseTranslator):
self.required_params_left = 0
def visit_start_of_file(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.start_of_file) -> None
# only occurs in the single-file builder
self.docnames.append(node['docname'])
self.body.append('<span id="document-%s"></span>' % node['docname'])
def depart_start_of_file(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.start_of_file) -> None
self.docnames.pop()
def visit_desc(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc) -> None
self.body.append(self.starttag(node, 'dl', CLASS=node['objtype']))
def depart_desc(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc) -> None
self.body.append('</dl>\n\n')
def visit_desc_signature(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_signature) -> None
# the id is set automatically
self.body.append(self.starttag(node, 'dt'))
# anchor for per-desc interactive data
@@ -119,56 +119,56 @@ class HTMLTranslator(BaseTranslator):
self.body.append('<!--[%s]-->' % node['ids'][0])
def depart_desc_signature(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_signature) -> None
if not node.get('is_multiline'):
self.add_permalink_ref(node, _('Permalink to this definition'))
self.body.append('</dt>\n')
def visit_desc_signature_line(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_signature_line) -> None
pass
def depart_desc_signature_line(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_signature_line) -> None
if node.get('add_permalink'):
# the permalink info is on the parent desc_signature node
self.add_permalink_ref(node.parent, _('Permalink to this definition'))
self.body.append('<br />')
def visit_desc_addname(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_addname) -> None
self.body.append(self.starttag(node, 'code', '', CLASS='descclassname'))
def depart_desc_addname(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_addname) -> None
self.body.append('</code>')
def visit_desc_type(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_type) -> None
pass
def depart_desc_type(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_type) -> None
pass
def visit_desc_returns(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_returns) -> None
self.body.append(' &#x2192; ')
def depart_desc_returns(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_returns) -> None
pass
def visit_desc_name(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_name) -> None
self.body.append(self.starttag(node, 'code', '', CLASS='descname'))
def depart_desc_name(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_name) -> None
self.body.append('</code>')
def visit_desc_parameterlist(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_parameterlist) -> None
self.body.append('<span class="sig-paren">(</span>')
self.first_param = 1
self.optional_param_level = 0
@@ -178,7 +178,7 @@ class HTMLTranslator(BaseTranslator):
self.param_separator = node.child_text_separator
def depart_desc_parameterlist(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_parameterlist) -> None
self.body.append('<span class="sig-paren">)</span>')
# If required parameters are still to come, then put the comma after
@@ -188,7 +188,7 @@ class HTMLTranslator(BaseTranslator):
# foo([a, ]b, c[, d])
#
def visit_desc_parameter(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_parameter) -> None
if self.first_param:
self.first_param = 0
elif not self.required_params_left:
@@ -199,49 +199,49 @@ class HTMLTranslator(BaseTranslator):
self.body.append('<em>')
def depart_desc_parameter(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_parameter) -> None
if not node.hasattr('noemph'):
self.body.append('</em>')
if self.required_params_left:
self.body.append(self.param_separator)
def visit_desc_optional(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_optional) -> None
self.optional_param_level += 1
self.body.append('<span class="optional">[</span>')
def depart_desc_optional(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_optional) -> None
self.optional_param_level -= 1
self.body.append('<span class="optional">]</span>')
def visit_desc_annotation(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_annotation) -> None
self.body.append(self.starttag(node, 'em', '', CLASS='property'))
def depart_desc_annotation(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_annotation) -> None
self.body.append('</em>')
def visit_desc_content(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_content) -> None
self.body.append(self.starttag(node, 'dd', ''))
def depart_desc_content(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.desc_content) -> None
self.body.append('</dd>')
def visit_versionmodified(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.versionmodified) -> None
self.body.append(self.starttag(node, 'div', CLASS=node['type']))
def depart_versionmodified(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.versionmodified) -> None
self.body.append('</div>\n')
# overwritten
def visit_reference(self, node):
# type: (nodes.Node) -> None
# type: (nodes.reference) -> None
atts = {'class': 'reference'}
if node.get('internal') or 'refuri' not in node:
atts['class'] += ' internal'
@@ -271,21 +271,21 @@ class HTMLTranslator(BaseTranslator):
'.'.join(map(str, node['secnumber'])))
def visit_number_reference(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.number_reference) -> None
self.visit_reference(node)
def depart_number_reference(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.number_reference) -> None
self.depart_reference(node)
# overwritten -- we don't want source comments to show up in the HTML
def visit_comment(self, node):
# type: (nodes.Node) -> None
# type: (nodes.comment) -> None
raise nodes.SkipNode
# overwritten
def visit_admonition(self, node, name=''):
# type: (nodes.Node, unicode) -> None
# type: (nodes.admonition, unicode) -> None
self.body.append(self.starttag(
node, 'div', CLASS=('admonition ' + name)))
if name:
@@ -293,11 +293,11 @@ class HTMLTranslator(BaseTranslator):
self.set_first_last(node)
def visit_seealso(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.seealso) -> None
self.visit_admonition(node, 'seealso')
def depart_seealso(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.seealso) -> None
self.depart_admonition(node)
def add_secnumber(self, node):
@@ -371,7 +371,7 @@ class HTMLTranslator(BaseTranslator):
# overwritten
def visit_bullet_list(self, node):
# type: (nodes.Node) -> None
# type: (nodes.bullet_list) -> None
if len(node) == 1 and node[0].tagname == 'toctree':
# avoid emitting empty <ul></ul>
raise nodes.SkipNode
@@ -380,13 +380,13 @@ class HTMLTranslator(BaseTranslator):
# overwritten
def visit_enumerated_list(self, node):
# type: (nodes.Node) -> None
# type: (nodes.enumerated_list) -> None
self.generate_targets_for_listing(node)
BaseTranslator.visit_enumerated_list(self, node)
# overwritten
def visit_title(self, node):
# type: (nodes.Node) -> None
# type: (nodes.title) -> None
BaseTranslator.visit_title(self, node)
self.add_secnumber(node)
self.add_fignumber(node.parent)
@@ -394,7 +394,7 @@ class HTMLTranslator(BaseTranslator):
self.body.append('<span class="caption-text">')
def depart_title(self, node):
# type: (nodes.Node) -> None
# type: (nodes.title) -> None
close_tag = self.context[-1]
if (self.permalink_text and self.builder.add_permalinks and
node.parent.hasattr('ids') and node.parent['ids']):
@@ -417,7 +417,7 @@ class HTMLTranslator(BaseTranslator):
# overwritten
def visit_literal_block(self, node):
# type: (nodes.Node) -> None
# type: (nodes.literal_block) -> None
if node.rawsource != node.astext():
# most probably a parsed-literal block -- don't highlight
return BaseTranslator.visit_literal_block(self, node)
@@ -442,7 +442,7 @@ class HTMLTranslator(BaseTranslator):
raise nodes.SkipNode
def visit_caption(self, node):
# type: (nodes.Node) -> None
# type: (nodes.caption) -> None
if isinstance(node.parent, nodes.container) and node.parent.get('literal_block'):
self.body.append('<div class="code-block-caption">')
else:
@@ -451,7 +451,7 @@ class HTMLTranslator(BaseTranslator):
self.body.append(self.starttag(node, 'span', '', CLASS='caption-text'))
def depart_caption(self, node):
# type: (nodes.Node) -> None
# type: (nodes.caption) -> None
self.body.append('</span>')
# append permalink if available
@@ -470,21 +470,21 @@ class HTMLTranslator(BaseTranslator):
BaseTranslator.depart_caption(self, node)
def visit_doctest_block(self, node):
# type: (nodes.Node) -> None
# type: (nodes.doctest_block) -> None
self.visit_literal_block(node)
# overwritten to add the <div> (for XHTML compliance)
def visit_block_quote(self, node):
# type: (nodes.Node) -> None
# type: (nodes.block_quote) -> None
self.body.append(self.starttag(node, 'blockquote') + '<div>')
def depart_block_quote(self, node):
# type: (nodes.Node) -> None
# type: (nodes.block_quote) -> None
self.body.append('</div></blockquote>\n')
# overwritten
def visit_literal(self, node):
# type: (nodes.Node) -> None
# type: (nodes.literal) -> None
if 'kbd' in node['classes']:
self.body.append(self.starttag(node, 'kbd', '',
CLASS='docutils literal notranslate'))
@@ -494,7 +494,7 @@ class HTMLTranslator(BaseTranslator):
self.protect_literal_text += 1
def depart_literal(self, node):
# type: (nodes.Node) -> None
# type: (nodes.literal) -> None
if 'kbd' in node['classes']:
self.body.append('</kbd>')
else:
@@ -502,7 +502,7 @@ class HTMLTranslator(BaseTranslator):
self.body.append('</code>')
def visit_productionlist(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.productionlist) -> None
self.body.append(self.starttag(node, 'pre'))
names = []
for production in node:
@@ -522,24 +522,24 @@ class HTMLTranslator(BaseTranslator):
raise nodes.SkipNode
def depart_productionlist(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.productionlist) -> None
pass
def visit_production(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.production) -> None
pass
def depart_production(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.production) -> None
pass
def visit_centered(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.centered) -> None
self.body.append(self.starttag(node, 'p', CLASS="centered") +
'<strong>')
def depart_centered(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.centered) -> None
self.body.append('</strong></p>')
# overwritten
@@ -555,15 +555,15 @@ class HTMLTranslator(BaseTranslator):
return BaseTranslator.should_be_compact_paragraph(self, node)
def visit_compact_paragraph(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.compact_paragraph) -> None
pass
def depart_compact_paragraph(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.compact_paragraph) -> None
pass
def visit_download_reference(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.download_reference) -> None
atts = {'class': 'reference download',
'download': ''}
@@ -583,12 +583,12 @@ class HTMLTranslator(BaseTranslator):
self.context.append('')
def depart_download_reference(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.download_reference) -> None
self.body.append(self.context.pop())
# overwritten
def visit_image(self, node):
# type: (nodes.Node) -> None
# type: (nodes.image) -> None
olduri = node['uri']
# rewrite the URI if the environment knows about it
if olduri in self.builder.images:
@@ -630,66 +630,66 @@ class HTMLTranslator(BaseTranslator):
# overwritten
def depart_image(self, node):
# type: (nodes.Node) -> None
# type: (nodes.image) -> None
if node['uri'].lower().endswith(('svg', 'svgz')):
self.body.append(self.context.pop())
else:
BaseTranslator.depart_image(self, node)
def visit_toctree(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.toctree) -> None
# this only happens when formatting a toc from env.tocs -- in this
# case we don't want to include the subtree
raise nodes.SkipNode
def visit_index(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.index) -> None
raise nodes.SkipNode
def visit_tabular_col_spec(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.tabular_col_spec) -> None
raise nodes.SkipNode
def visit_glossary(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.glossary) -> None
pass
def depart_glossary(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.glossary) -> None
pass
def visit_acks(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.acks) -> None
pass
def depart_acks(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.acks) -> None
pass
def visit_hlist(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.hlist) -> None
self.body.append('<table class="hlist"><tr>')
def depart_hlist(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.hlist) -> None
self.body.append('</tr></table>\n')
def visit_hlistcol(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.hlistcol) -> None
self.body.append('<td>')
def depart_hlistcol(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.hlistcol) -> None
self.body.append('</td>')
def visit_option_group(self, node):
# type: (nodes.Node) -> None
# type: (nodes.option_group) -> None
BaseTranslator.visit_option_group(self, node)
self.context[-2] = self.context[-2].replace('&nbsp;', '&#160;')
# overwritten
def visit_Text(self, node):
# type: (nodes.Node) -> None
# type: (nodes.Text) -> None
text = node.astext()
encoded = self.encode(text)
if self.protect_literal_text:
@@ -711,113 +711,113 @@ class HTMLTranslator(BaseTranslator):
self.body.append(encoded)
def visit_note(self, node):
# type: (nodes.Node) -> None
# type: (nodes.note) -> None
self.visit_admonition(node, 'note')
def depart_note(self, node):
# type: (nodes.Node) -> None
# type: (nodes.note) -> None
self.depart_admonition(node)
def visit_warning(self, node):
# type: (nodes.Node) -> None
# type: (nodes.warning) -> None
self.visit_admonition(node, 'warning')
def depart_warning(self, node):
# type: (nodes.Node) -> None
# type: (nodes.warning) -> None
self.depart_admonition(node)
def visit_attention(self, node):
# type: (nodes.Node) -> None
# type: (nodes.attention) -> None
self.visit_admonition(node, 'attention')
def depart_attention(self, node):
# type: (nodes.Node) -> None
# type: (nodes.attention) -> None
self.depart_admonition(node)
def visit_caution(self, node):
# type: (nodes.Node) -> None
# type: (nodes.caution) -> None
self.visit_admonition(node, 'caution')
def depart_caution(self, node):
# type: (nodes.Node) -> None
# type: (nodes.caution) -> None
self.depart_admonition(node)
def visit_danger(self, node):
# type: (nodes.Node) -> None
# type: (nodes.danger) -> None
self.visit_admonition(node, 'danger')
def depart_danger(self, node):
# type: (nodes.Node) -> None
# type: (nodes.danger) -> None
self.depart_admonition(node)
def visit_error(self, node):
# type: (nodes.Node) -> None
# type: (nodes.error) -> None
self.visit_admonition(node, 'error')
def depart_error(self, node):
# type: (nodes.Node) -> None
# type: (nodes.error) -> None
self.depart_admonition(node)
def visit_hint(self, node):
# type: (nodes.Node) -> None
# type: (nodes.hint) -> None
self.visit_admonition(node, 'hint')
def depart_hint(self, node):
# type: (nodes.Node) -> None
# type: (nodes.hint) -> None
self.depart_admonition(node)
def visit_important(self, node):
# type: (nodes.Node) -> None
# type: (nodes.important) -> None
self.visit_admonition(node, 'important')
def depart_important(self, node):
# type: (nodes.Node) -> None
# type: (nodes.important) -> None
self.depart_admonition(node)
def visit_tip(self, node):
# type: (nodes.Node) -> None
# type: (nodes.tip) -> None
self.visit_admonition(node, 'tip')
def depart_tip(self, node):
# type: (nodes.Node) -> None
# type: (nodes.tip) -> None
self.depart_admonition(node)
def visit_literal_emphasis(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.literal_emphasis) -> None
return self.visit_emphasis(node)
def depart_literal_emphasis(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.literal_emphasis) -> None
return self.depart_emphasis(node)
def visit_literal_strong(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.literal_strong) -> None
return self.visit_strong(node)
def depart_literal_strong(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.literal_strong) -> None
return self.depart_strong(node)
def visit_abbreviation(self, node):
# type: (nodes.Node) -> None
# type: (nodes.abbreviation) -> None
attrs = {}
if node.hasattr('explanation'):
attrs['title'] = node['explanation']
self.body.append(self.starttag(node, 'abbr', '', **attrs))
def depart_abbreviation(self, node):
# type: (nodes.Node) -> None
# type: (nodes.abbreviation) -> None
self.body.append('</abbr>')
def visit_manpage(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.manpage) -> None
self.visit_literal_emphasis(node)
if self.manpages_url:
node['refuri'] = self.manpages_url.format(**node.attributes)
self.visit_reference(node)
def depart_manpage(self, node):
# type: (nodes.Node) -> None
# type: (addnodes.manpage) -> None
if self.manpages_url:
self.depart_reference(node)
self.depart_literal_emphasis(node)
@@ -825,12 +825,12 @@ class HTMLTranslator(BaseTranslator):
# overwritten to add even/odd classes
def visit_table(self, node):
# type: (nodes.Node) -> None
# type: (nodes.table) -> None
self._table_row_index = 0
return BaseTranslator.visit_table(self, node)
def visit_row(self, node):
# type: (nodes.Node) -> None
# type: (nodes.row) -> None
self._table_row_index += 1
if self._table_row_index % 2 == 0:
node['classes'].append('row-even')
@@ -840,18 +840,18 @@ class HTMLTranslator(BaseTranslator):
node.column = 0
def visit_entry(self, node):
# type: (nodes.Node) -> None
# type: (nodes.entry) -> None
BaseTranslator.visit_entry(self, node)
if self.body[-1] == '&nbsp;':
self.body[-1] = '&#160;'
def visit_field_list(self, node):
# type: (nodes.Node) -> None
# type: (nodes.field_list) -> None
self._fieldlist_row_index = 0
return BaseTranslator.visit_field_list(self, node)
def visit_field(self, node):
# type: (nodes.Node) -> None
# type: (nodes.field) -> None
self._fieldlist_row_index += 1
if self._fieldlist_row_index % 2 == 0:
node['classes'].append('field-even')
@@ -860,33 +860,33 @@ class HTMLTranslator(BaseTranslator):
self.body.append(self.starttag(node, 'tr', '', CLASS='field'))
def visit_field_name(self, node):
# type: (nodes.Node) -> None
# type: (nodes.field_name) -> None
context_count = len(self.context)
BaseTranslator.visit_field_name(self, node)
if context_count != len(self.context):
self.context[-1] = self.context[-1].replace('&nbsp;', '&#160;')
def visit_math(self, node, math_env=''):
# type: (nodes.Node, unicode) -> None
# type: (nodes.math, unicode) -> None
name = self.builder.math_renderer_name
visit, _ = self.builder.app.registry.html_inline_math_renderers[name]
visit(self, node)
def depart_math(self, node, math_env=''):
# type: (nodes.Node, unicode) -> None
# type: (nodes.math, unicode) -> None
name = self.builder.math_renderer_name
_, depart = self.builder.app.registry.html_inline_math_renderers[name]
if depart:
depart(self, node)
def visit_math_block(self, node, math_env=''):
# type: (nodes.Node, unicode) -> None
# type: (nodes.math_block, unicode) -> None
name = self.builder.math_renderer_name
visit, _ = self.builder.app.registry.html_block_math_renderers[name]
visit(self, node)
def depart_math_block(self, node, math_env=''):
# type: (nodes.Node, unicode) -> None
# type: (nodes.math_block, unicode) -> None
name = self.builder.math_renderer_name
_, depart = self.builder.app.registry.html_block_math_renderers[name]
if depart: