Merge pull request #5680 from tk0miya/fix_typehints_for_builders

Fix annotations for builders
This commit is contained in:
Takeshi KOMIYA 2018-11-29 23:44:57 +09:00 committed by GitHub
commit d8b8ef559e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 88 additions and 83 deletions

View File

@ -69,7 +69,7 @@ class Builder:
#: default translator class for the builder. This can be overrided by #: default translator class for the builder. This can be overrided by
#: :py:meth:`app.set_translator()`. #: :py:meth:`app.set_translator()`.
default_translator_class = None # type: nodes.NodeVisitor default_translator_class = None # type: Type[nodes.NodeVisitor]
# doctree versioning method # doctree versioning method
versioning_method = 'none' # type: unicode versioning_method = 'none' # type: unicode
versioning_compare = False versioning_compare = False
@ -528,7 +528,7 @@ class Builder:
self.write_doctree(docname, doctree) self.write_doctree(docname, doctree)
def write_doctree(self, docname, doctree): def write_doctree(self, docname, doctree):
# type: (unicode, nodes.Node) -> None # type: (unicode, nodes.document) -> None
"""Write the doctree to a file.""" """Write the doctree to a file."""
# make it picklable # make it picklable
doctree.reporter = None doctree.reporter = None
@ -587,7 +587,7 @@ class Builder:
def _write_parallel(self, docnames, nproc): def _write_parallel(self, docnames, nproc):
# type: (Sequence[unicode], int) -> None # type: (Sequence[unicode], int) -> None
def write_process(docs): def write_process(docs):
# type: (List[Tuple[unicode, nodes.Node]]) -> None # type: (List[Tuple[unicode, nodes.document]]) -> None
self.app.phase = BuildPhase.WRITING self.app.phase = BuildPhase.WRITING
for docname, doctree in docs: for docname, doctree in docs:
self.write_doc(docname, doctree) self.write_doc(docname, doctree)
@ -623,12 +623,12 @@ class Builder:
raise NotImplementedError raise NotImplementedError
def write_doc(self, docname, doctree): def write_doc(self, docname, doctree):
# type: (unicode, nodes.Node) -> None # type: (unicode, nodes.document) -> None
"""Where you actually write something to the filesystem.""" """Where you actually write something to the filesystem."""
raise NotImplementedError raise NotImplementedError
def write_doc_serialized(self, docname, doctree): def write_doc_serialized(self, docname, doctree):
# type: (unicode, nodes.Node) -> None # type: (unicode, nodes.document) -> None
"""Handle parts of write_doc that must be called in the main process """Handle parts of write_doc that must be called in the main process
if parallel build is active. if parallel build is active.
""" """

View File

@ -232,7 +232,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
self.toc_add_files(self.refnodes) self.toc_add_files(self.refnodes)
def toc_add_files(self, refnodes): def toc_add_files(self, refnodes):
# type: (List[nodes.Node]) -> None # type: (List[Dict[unicode, Any]]) -> None
"""Add the master_doc, pre and post files to a list of refnodes. """Add the master_doc, pre and post files to a list of refnodes.
""" """
refnodes.insert(0, { refnodes.insert(0, {
@ -260,42 +260,44 @@ class EpubBuilder(StandaloneHTMLBuilder):
return prefix + fragment.replace(':', '-') return prefix + fragment.replace(':', '-')
def fix_ids(self, tree): def fix_ids(self, tree):
# type: (nodes.Node) -> None # type: (nodes.document) -> None
"""Replace colons with hyphens in href and id attributes. """Replace colons with hyphens in href and id attributes.
Some readers crash because they interpret the part as a Some readers crash because they interpret the part as a
transport protocol specification. transport protocol specification.
""" """
for node in tree.traverse(nodes.reference): for reference in tree.traverse(nodes.reference):
if 'refuri' in node: if 'refuri' in reference:
m = self.refuri_re.match(node['refuri']) m = self.refuri_re.match(reference['refuri'])
if m: if m:
node['refuri'] = self.fix_fragment(m.group(1), m.group(2)) reference['refuri'] = self.fix_fragment(m.group(1), m.group(2))
if 'refid' in node: if 'refid' in reference:
node['refid'] = self.fix_fragment('', node['refid']) reference['refid'] = self.fix_fragment('', reference['refid'])
for node in tree.traverse(nodes.target):
for i, node_id in enumerate(node['ids']):
if ':' in node_id:
node['ids'][i] = self.fix_fragment('', node_id)
next_node = node.next_node(siblings=True) for target in tree.traverse(nodes.target):
for i, node_id in enumerate(target['ids']):
if ':' in node_id:
target['ids'][i] = self.fix_fragment('', node_id)
next_node = target.next_node(siblings=True)
if next_node and isinstance(next_node, nodes.Element): if next_node and isinstance(next_node, nodes.Element):
for i, node_id in enumerate(next_node['ids']): for i, node_id in enumerate(next_node['ids']):
if ':' in node_id: if ':' in node_id:
next_node['ids'][i] = self.fix_fragment('', node_id) next_node['ids'][i] = self.fix_fragment('', node_id)
for node in tree.traverse(addnodes.desc_signature):
ids = node.attributes['ids'] for desc_signature in tree.traverse(addnodes.desc_signature):
ids = desc_signature.attributes['ids']
newids = [] newids = []
for id in ids: for id in ids:
newids.append(self.fix_fragment('', id)) newids.append(self.fix_fragment('', id))
node.attributes['ids'] = newids desc_signature.attributes['ids'] = newids
def add_visible_links(self, tree, show_urls='inline'): def add_visible_links(self, tree, show_urls='inline'):
# type: (nodes.Node, unicode) -> None # type: (nodes.document, unicode) -> None
"""Add visible link targets for external links""" """Add visible link targets for external links"""
def make_footnote_ref(doc, label): def make_footnote_ref(doc, label):
# type: (nodes.Node, unicode) -> nodes.footnote_reference # type: (nodes.document, unicode) -> nodes.footnote_reference
"""Create a footnote_reference node with children""" """Create a footnote_reference node with children"""
footnote_ref = nodes.footnote_reference('[#]_') footnote_ref = nodes.footnote_reference('[#]_')
footnote_ref.append(nodes.Text(label)) footnote_ref.append(nodes.Text(label))
@ -303,7 +305,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
return footnote_ref return footnote_ref
def make_footnote(doc, label, uri): def make_footnote(doc, label, uri):
# type: (nodes.Node, unicode, unicode) -> nodes.footnote # type: (nodes.document, unicode, unicode) -> nodes.footnote
"""Create a footnote node with children""" """Create a footnote node with children"""
footnote = nodes.footnote(uri) footnote = nodes.footnote(uri)
para = nodes.paragraph() para = nodes.paragraph()
@ -314,7 +316,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
return footnote return footnote
def footnote_spot(tree): def footnote_spot(tree):
# type: (nodes.Node) -> Tuple[nodes.Node, int] # type: (nodes.document) -> Tuple[nodes.Node, int]
"""Find or create a spot to place footnotes. """Find or create a spot to place footnotes.
The function returns the tuple (parent, index).""" The function returns the tuple (parent, index)."""
@ -364,7 +366,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
fn_idx += 1 fn_idx += 1
def write_doc(self, docname, doctree): def write_doc(self, docname, doctree):
# type: (unicode, nodes.Node) -> None # type: (unicode, nodes.document) -> None
"""Write one document file. """Write one document file.
This method is overwritten in order to fix fragment identifiers This method is overwritten in order to fix fragment identifiers

View File

@ -24,7 +24,7 @@ from sphinx.util.osutil import make_filename
if False: if False:
# For type annotation # For type annotation
from typing import Any, Dict, Iterable, List, Tuple # NOQA from typing import Any, Dict, Iterable, List, Set, Tuple # NOQA
from docutils import nodes # NOQA from docutils import nodes # NOQA
from sphinx.application import Sphinx # NOQA from sphinx.application import Sphinx # NOQA
from sphinx.config import Config # NOQA from sphinx.config import Config # NOQA
@ -141,7 +141,7 @@ class Epub3Builder(_epub_base.EpubBuilder):
return metadata return metadata
def prepare_writing(self, docnames): def prepare_writing(self, docnames):
# type: (Iterable[unicode]) -> None # type: (Set[unicode]) -> None
super(Epub3Builder, self).prepare_writing(docnames) super(Epub3Builder, self).prepare_writing(docnames)
writing_mode = self.config.epub_writing_mode writing_mode = self.config.epub_writing_mode

View File

@ -55,7 +55,7 @@ from sphinx.writers.html import HTMLWriter, HTMLTranslator
if False: if False:
# For type annotation # For type annotation
from typing import Any, Dict, IO, Iterable, Iterator, List, Type, Tuple, Union # NOQA from typing import Any, Dict, IO, Iterable, Iterator, List, Set, Type, Tuple, Union # NOQA
from sphinx.application import Sphinx # NOQA from sphinx.application import Sphinx # NOQA
from sphinx.config import Config # NOQA from sphinx.config import Config # NOQA
from sphinx.domains import Domain, Index, IndexEntry # NOQA from sphinx.domains import Domain, Index, IndexEntry # NOQA
@ -379,8 +379,8 @@ class StandaloneHTMLBuilder(Builder):
self.script_files.append(JavaScript(filename, **kwargs)) self.script_files.append(JavaScript(filename, **kwargs))
@property @property
def default_translator_class(self): def default_translator_class(self): # type: ignore
# type: () -> nodes.NodeVisitor # type: () -> Type[nodes.NodeVisitor]
use_html5_writer = self.config.html_experimental_html5_writer use_html5_writer = self.config.html_experimental_html5_writer
if use_html5_writer is None: if use_html5_writer is None:
use_html5_writer = self.default_html5_translator use_html5_writer = self.default_html5_translator
@ -454,7 +454,7 @@ class StandaloneHTMLBuilder(Builder):
return self.config.html_extra_path + self.config.html_static_path return self.config.html_extra_path + self.config.html_static_path
def render_partial(self, node): def render_partial(self, node):
# type: (nodes.Nodes) -> Dict[unicode, unicode] # type: (nodes.Node) -> Dict[unicode, unicode]
"""Utility: Render a lone doctree node.""" """Utility: Render a lone doctree node."""
if node is None: if node is None:
return {'fragment': ''} return {'fragment': ''}
@ -480,7 +480,7 @@ class StandaloneHTMLBuilder(Builder):
return pub.writer.parts return pub.writer.parts
def prepare_writing(self, docnames): def prepare_writing(self, docnames):
# type: (Iterable[unicode]) -> nodes.Node # type: (Set[unicode]) -> None
# create the search indexer # create the search indexer
self.indexer = None self.indexer = None
if self.search: if self.search:
@ -497,7 +497,7 @@ class StandaloneHTMLBuilder(Builder):
self.docsettings = OptionParser( self.docsettings = OptionParser(
defaults=self.env.settings, defaults=self.env.settings,
components=(self.docwriter,), components=(self.docwriter,),
read_config_files=True).get_default_values() read_config_files=True).get_default_values() # type: Any
self.docsettings.compact_lists = bool(self.config.html_compact_lists) self.docsettings.compact_lists = bool(self.config.html_compact_lists)
# determine the additional indices to include # determine the additional indices to include
@ -671,7 +671,7 @@ class StandaloneHTMLBuilder(Builder):
} }
def write_doc(self, docname, doctree): def write_doc(self, docname, doctree):
# type: (unicode, nodes.Node) -> None # type: (unicode, nodes.document) -> None
destination = StringOutput(encoding='utf-8') destination = StringOutput(encoding='utf-8')
doctree.settings = self.docsettings doctree.settings = self.docsettings
@ -1212,7 +1212,7 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder):
return outfilename return outfilename
def prepare_writing(self, docnames): def prepare_writing(self, docnames):
# type: (Iterable[unicode]) -> None # type: (Set[unicode]) -> None
super(DirectoryHTMLBuilder, self).prepare_writing(docnames) super(DirectoryHTMLBuilder, self).prepare_writing(docnames)
self.globalcontext['no_search_suffix'] = True self.globalcontext['no_search_suffix'] = True
@ -1271,7 +1271,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
return self.render_partial(toctree)['fragment'] return self.render_partial(toctree)['fragment']
def assemble_doctree(self): def assemble_doctree(self):
# type: () -> nodes.Node # type: () -> nodes.document
master = self.config.master_doc master = self.config.master_doc
tree = self.env.get_doctree(master) tree = self.env.get_doctree(master)
tree = inline_all_toctrees(self, set(), master, tree, darkgreen, [master]) tree = inline_all_toctrees(self, set(), master, tree, darkgreen, [master])
@ -1354,7 +1354,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
docnames = self.env.all_docs docnames = self.env.all_docs
logger.info(bold(__('preparing documents... ')), nonl=True) logger.info(bold(__('preparing documents... ')), nonl=True)
self.prepare_writing(docnames) self.prepare_writing(docnames) # type: ignore
logger.info(__('done')) logger.info(__('done'))
logger.info(bold(__('assembling single document... ')), nonl=True) logger.info(bold(__('assembling single document... ')), nonl=True)

View File

@ -221,7 +221,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
self.build_hhx(self.outdir, self.config.htmlhelp_basename) self.build_hhx(self.outdir, self.config.htmlhelp_basename)
def write_doc(self, docname, doctree): def write_doc(self, docname, doctree):
# type: (unicode, nodes.Node) -> None # type: (unicode, nodes.document) -> None
for node in doctree.traverse(nodes.reference): for node in doctree.traverse(nodes.reference):
# add ``target=_blank`` attributes to external links # add ``target=_blank`` attributes to external links
if node.get('internal') is None and 'refuri' in node: if node.get('internal') is None and 'refuri' in node:

View File

@ -215,7 +215,7 @@ class LaTeXBuilder(Builder):
docsettings = OptionParser( docsettings = OptionParser(
defaults=self.env.settings, defaults=self.env.settings,
components=(docwriter,), components=(docwriter,),
read_config_files=True).get_default_values() read_config_files=True).get_default_values() # type: Any
self.init_document_data() self.init_document_data()
self.write_stylesheet() self.write_stylesheet()
@ -245,12 +245,13 @@ class LaTeXBuilder(Builder):
self.update_doc_context(title, author) self.update_doc_context(title, author)
logger.info(__("writing... "), nonl=1) logger.info(__("writing... "), nonl=1)
docsettings.author = author
docsettings.title = title
docsettings.contentsname = self.get_contentsname(docname)
docsettings.docname = docname
docsettings.docclass = docclass
doctree.settings = docsettings doctree.settings = docsettings
doctree.settings.author = author
doctree.settings.title = title
doctree.settings.contentsname = self.get_contentsname(docname)
doctree.settings.docname = docname
doctree.settings.docclass = docclass
docwriter.write(doctree, destination) docwriter.write(doctree, destination)
logger.info("done") logger.info("done")
@ -271,7 +272,7 @@ class LaTeXBuilder(Builder):
self.context['author'] = author self.context['author'] = author
def assemble_doctree(self, indexfile, toctree_only, appendices): def assemble_doctree(self, indexfile, toctree_only, appendices):
# type: (unicode, bool, List[unicode]) -> nodes.Node # type: (unicode, bool, List[unicode]) -> nodes.document
from docutils import nodes # NOQA from docutils import nodes # NOQA
self.docnames = set([indexfile] + appendices) self.docnames = set([indexfile] + appendices)
logger.info(darkgreen(indexfile) + " ", nonl=1) logger.info(darkgreen(indexfile) + " ", nonl=1)
@ -303,7 +304,7 @@ class LaTeXBuilder(Builder):
for pendingnode in largetree.traverse(addnodes.pending_xref): for pendingnode in largetree.traverse(addnodes.pending_xref):
docname = pendingnode['refdocname'] docname = pendingnode['refdocname']
sectname = pendingnode['refsectname'] sectname = pendingnode['refsectname']
newnodes = [nodes.emphasis(sectname, sectname)] newnodes = [nodes.emphasis(sectname, sectname)] # type: List[nodes.Node]
for subdir, title in self.titles: for subdir, title in self.titles:
if docname.startswith(subdir): if docname.startswith(subdir):
newnodes.append(nodes.Text(_(' (in '), _(' (in '))) newnodes.append(nodes.Text(_(' (in '), _(' (in ')))

View File

@ -9,6 +9,8 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
from typing import cast
from docutils import nodes from docutils import nodes
from sphinx import addnodes from sphinx import addnodes
@ -100,17 +102,17 @@ class ShowUrlsTransform(SphinxTransform):
return None # never reached here. only for type hinting return None # never reached here. only for type hinting
def create_footnote(self, uri, docname): def create_footnote(self, uri, docname):
# type: (unicode, unicode) -> Tuple[nodes.footnote, nodes.footnote_ref] # type: (unicode, unicode) -> Tuple[nodes.footnote, nodes.footnote_reference]
label = nodes.label('', '#') reference = nodes.reference('', nodes.Text(uri), refuri=uri, nolinkurl=True)
para = nodes.paragraph() footnote = nodes.footnote(uri, auto=1, docname=docname)
para.append(nodes.reference('', nodes.Text(uri), refuri=uri, nolinkurl=True))
footnote = nodes.footnote(uri, label, para, auto=1, docname=docname)
footnote['names'].append('#') footnote['names'].append('#')
footnote += nodes.label('', '#')
footnote += nodes.paragraph('', '', reference)
self.document.note_autofootnote(footnote) self.document.note_autofootnote(footnote)
label = nodes.Text('#') footnote_ref = nodes.footnote_reference('[#]_', auto=1,
footnote_ref = nodes.footnote_reference('[#]_', label, auto=1,
refid=footnote['ids'][0], docname=docname) refid=footnote['ids'][0], docname=docname)
footnote_ref += nodes.Text('#')
self.document.note_autofootnote_ref(footnote_ref) self.document.note_autofootnote_ref(footnote_ref)
footnote.add_backref(footnote_ref['ids'][0]) footnote.add_backref(footnote_ref['ids'][0])
@ -130,10 +132,10 @@ class ShowUrlsTransform(SphinxTransform):
break break
# assign new footnote number # assign new footnote number
old_label = footnote[0].astext() old_label = cast(nodes.label, footnote[0])
footnote[0].replace_self(nodes.label('', str(num))) old_label.replace_self(nodes.label('', str(num)))
if old_label in footnote['names']: if old_label in footnote['names']:
footnote['names'].remove(old_label) footnote['names'].remove(old_label.astext())
footnote['names'].append(str(num)) footnote['names'].append(str(num))
# update footnote_references by new footnote number # update footnote_references by new footnote number
@ -357,11 +359,11 @@ class LaTeXFootnoteTransform(SphinxTransform):
class LaTeXFootnoteVisitor(nodes.NodeVisitor): class LaTeXFootnoteVisitor(nodes.NodeVisitor):
def __init__(self, document, footnotes): def __init__(self, document, footnotes):
# type: (nodes.document, List[nodes.footnote]) -> None # type: (nodes.document, List[nodes.footnote]) -> None
self.appeared = set() # type: Set[Tuple[unicode, nodes.footnote]] self.appeared = set() # type: Set[Tuple[unicode, unicode]]
self.footnotes = footnotes # type: List[nodes.footnote] self.footnotes = footnotes # type: List[nodes.footnote]
self.pendings = [] # type: List[nodes.Node] self.pendings = [] # type: List[nodes.footnote]
self.table_footnotes = [] # type: List[nodes.Node] self.table_footnotes = [] # type: List[nodes.footnote]
self.restricted = None # type: nodes.Node self.restricted = None # type: nodes.Element
super(LaTeXFootnoteVisitor, self).__init__(document) super(LaTeXFootnoteVisitor, self).__init__(document)
def unknown_visit(self, node): def unknown_visit(self, node):
@ -373,12 +375,12 @@ class LaTeXFootnoteVisitor(nodes.NodeVisitor):
pass pass
def restrict(self, node): def restrict(self, node):
# type: (nodes.Node) -> None # type: (nodes.Element) -> None
if self.restricted is None: if self.restricted is None:
self.restricted = node self.restricted = node
def unrestrict(self, node): def unrestrict(self, node):
# type: (nodes.Node) -> None # type: (nodes.Element) -> None
if self.restricted == node: if self.restricted == node:
self.restricted = None self.restricted = None
pos = node.parent.index(node) pos = node.parent.index(node)
@ -388,36 +390,36 @@ class LaTeXFootnoteVisitor(nodes.NodeVisitor):
self.pendings = [] self.pendings = []
def visit_figure(self, node): def visit_figure(self, node):
# type: (nodes.Node) -> None # type: (nodes.figure) -> None
self.restrict(node) self.restrict(node)
def depart_figure(self, node): def depart_figure(self, node):
# type: (nodes.Node) -> None # type: (nodes.figure) -> None
self.unrestrict(node) self.unrestrict(node)
def visit_term(self, node): def visit_term(self, node):
# type: (nodes.Node) -> None # type: (nodes.term) -> None
self.restrict(node) self.restrict(node)
def depart_term(self, node): def depart_term(self, node):
# type: (nodes.Node) -> None # type: (nodes.term) -> None
self.unrestrict(node) self.unrestrict(node)
def visit_caption(self, node): def visit_caption(self, node):
# type: (nodes.Node) -> None # type: (nodes.caption) -> None
self.restrict(node) self.restrict(node)
def depart_caption(self, node): def depart_caption(self, node):
# type: (nodes.Node) -> None # type: (nodes.caption) -> None
self.unrestrict(node) self.unrestrict(node)
def visit_title(self, node): def visit_title(self, node):
# type: (nodes.Node) -> None # type: (nodes.title) -> None
if isinstance(node.parent, (nodes.section, nodes.table)): if isinstance(node.parent, (nodes.section, nodes.table)):
self.restrict(node) self.restrict(node)
def depart_title(self, node): def depart_title(self, node):
# type: (nodes.Node) -> None # type: (nodes.title) -> None
if isinstance(node.parent, nodes.section): if isinstance(node.parent, nodes.section):
self.unrestrict(node) self.unrestrict(node)
elif isinstance(node.parent, nodes.table): elif isinstance(node.parent, nodes.table):
@ -426,17 +428,17 @@ class LaTeXFootnoteVisitor(nodes.NodeVisitor):
self.unrestrict(node) self.unrestrict(node)
def visit_thead(self, node): def visit_thead(self, node):
# type: (nodes.Node) -> None # type: (nodes.thead) -> None
self.restrict(node) self.restrict(node)
def depart_thead(self, node): def depart_thead(self, node):
# type: (nodes.Node) -> None # type: (nodes.thead) -> None
self.table_footnotes += self.pendings self.table_footnotes += self.pendings
self.pendings = [] self.pendings = []
self.unrestrict(node) self.unrestrict(node)
def depart_table(self, node): def depart_table(self, node):
# type: (nodes.Node) -> None # type: (nodes.table) -> None
tbody = list(node.traverse(nodes.tbody))[0] tbody = list(node.traverse(nodes.tbody))[0]
for footnote in reversed(self.table_footnotes): for footnote in reversed(self.table_footnotes):
fntext = footnotetext('', *footnote.children) fntext = footnotetext('', *footnote.children)
@ -445,15 +447,15 @@ class LaTeXFootnoteVisitor(nodes.NodeVisitor):
self.table_footnotes = [] self.table_footnotes = []
def visit_footnote(self, node): def visit_footnote(self, node):
# type: (nodes.Node) -> None # type: (nodes.footnote) -> None
self.restrict(node) self.restrict(node)
def depart_footnote(self, node): def depart_footnote(self, node):
# type: (nodes.Node) -> None # type: (nodes.footnote) -> None
self.unrestrict(node) self.unrestrict(node)
def visit_footnote_reference(self, node): def visit_footnote_reference(self, node):
# type: (nodes.Node) -> None # type: (nodes.footnote_reference) -> None
number = node.astext().strip() number = node.astext().strip()
docname = node['docname'] docname = node['docname']
if self.restricted: if self.restricted:
@ -475,7 +477,7 @@ class LaTeXFootnoteVisitor(nodes.NodeVisitor):
raise nodes.SkipNode raise nodes.SkipNode
def get_footnote_by_reference(self, node): def get_footnote_by_reference(self, node):
# type: (nodes.Node) -> nodes.Node # type: (nodes.footnote_reference) -> nodes.footnote
docname = node['docname'] docname = node['docname']
for footnote in self.footnotes: for footnote in self.footnotes:
if docname == footnote['docname'] and footnote['ids'][0] == node['refid']: if docname == footnote['docname'] and footnote['ids'][0] == node['refid']:

View File

@ -265,7 +265,7 @@ class CheckExternalLinksBuilder(Builder):
return self.env.found_docs return self.env.found_docs
def prepare_writing(self, docnames): def prepare_writing(self, docnames):
# type: (nodes.Node) -> None # type: (Set[unicode]) -> None
return return
def write_doc(self, docname, doctree): def write_doc(self, docname, doctree):

View File

@ -67,7 +67,7 @@ class ManualPageBuilder(Builder):
docsettings = OptionParser( docsettings = OptionParser(
defaults=self.env.settings, defaults=self.env.settings,
components=(docwriter,), components=(docwriter,),
read_config_files=True).get_default_values() read_config_files=True).get_default_values() # type: Any
logger.info(bold(__('writing... ')), nonl=True) logger.info(bold(__('writing... ')), nonl=True)

View File

@ -124,7 +124,7 @@ class TexinfoBuilder(Builder):
settings = OptionParser( settings = OptionParser(
defaults=self.env.settings, defaults=self.env.settings,
components=(docwriter,), components=(docwriter,),
read_config_files=True).get_default_values() read_config_files=True).get_default_values() # type: Any
settings.author = author settings.author = author
settings.title = title settings.title = title
settings.texinfo_filename = targetname[:-5] + '.info' settings.texinfo_filename = targetname[:-5] + '.info'
@ -138,7 +138,7 @@ class TexinfoBuilder(Builder):
logger.info(__("done")) logger.info(__("done"))
def assemble_doctree(self, indexfile, toctree_only, appendices): def assemble_doctree(self, indexfile, toctree_only, appendices):
# type: (unicode, bool, List[unicode]) -> nodes.Node # type: (unicode, bool, List[unicode]) -> nodes.document
self.docnames = set([indexfile] + appendices) self.docnames = set([indexfile] + appendices)
logger.info(darkgreen(indexfile) + " ", nonl=1) logger.info(darkgreen(indexfile) + " ", nonl=1)
tree = self.env.get_doctree(indexfile) tree = self.env.get_doctree(indexfile)
@ -168,7 +168,7 @@ class TexinfoBuilder(Builder):
for pendingnode in largetree.traverse(addnodes.pending_xref): for pendingnode in largetree.traverse(addnodes.pending_xref):
docname = pendingnode['refdocname'] docname = pendingnode['refdocname']
sectname = pendingnode['refsectname'] sectname = pendingnode['refsectname']
newnodes = [nodes.emphasis(sectname, sectname)] newnodes = [nodes.emphasis(sectname, sectname)] # type: List[nodes.Node]
for subdir, title in self.titles: for subdir, title in self.titles:
if docname.startswith(subdir): if docname.startswith(subdir):
newnodes.append(nodes.Text(_(' (in '), _(' (in '))) newnodes.append(nodes.Text(_(' (in '), _(' (in ')))