Add docutils-stubs to test deps

This commit is contained in:
Takeshi KOMIYA 2018-12-04 01:52:07 +09:00
parent 53917f228f
commit 9dfc5e7efe
16 changed files with 42 additions and 39 deletions

View File

@ -46,6 +46,7 @@ extras_require = {
'flake8>=3.5.0',
'flake8-import-order',
'mypy>=0.470',
'docutils-stubs',
],
}

View File

@ -83,7 +83,7 @@ class Catalog:
if msg not in self.metadata: # faster lookup in hash
self.messages.append(msg)
self.metadata[msg] = []
self.metadata[msg].append((origin.source, origin.line, origin.uid))
self.metadata[msg].append((origin.source, origin.line, origin.uid)) # type: ignore
class MsgOrigin:

View File

@ -62,10 +62,10 @@ class Meta(html.Meta, SphinxDirective):
meta = node.details['nodes'][0]
meta.source = self.env.doc2path(self.env.docname)
meta.line = self.lineno
meta.rawcontent = meta['content']
meta.rawcontent = meta['content'] # type: ignore
# docutils' meta nodes aren't picklable because the class is nested
meta.__class__ = addnodes.meta
meta.__class__ = addnodes.meta # type: ignore
return result

View File

@ -152,7 +152,7 @@ class PyXrefMixin:
delims_re = re.compile(delims)
sub_targets = re.split(delims, target)
split_contnode = bool(contnode and contnode.astext() == target)
split_contnode = bool(contnode and contnode.astext() == target) # type: ignore
results = []
for sub_target in filter(None, sub_targets):

View File

@ -246,8 +246,8 @@ class TocTree:
caption_node.rawsource = toctree['rawcaption']
if hasattr(toctree, 'uid'):
# move uid to caption_node to translate it
caption_node.uid = toctree.uid
del toctree.uid
caption_node.uid = toctree.uid # type: ignore
del toctree.uid # type: ignore
newnode += caption_node
newnode.extend(tocentries)
newnode['toctree'] = True

View File

@ -114,7 +114,7 @@ class AutodocDirective(SphinxDirective):
reporter = self.state.document.reporter
try:
source, lineno = reporter.get_source_and_line(self.lineno)
source, lineno = reporter.get_source_and_line(self.lineno) # type: ignore
except AttributeError:
source, lineno = (None, None)
logger.debug('[autodoc] %s:%s: input:\n%s', source, lineno, self.block_text)

View File

@ -233,7 +233,7 @@ class SphinxRSTFileInput(SphinxBaseFileInput):
for lineno, line in enumerate(epilog.splitlines()):
text.append(line, '<rst_epilog>', lineno)
def read(self):
def read(self): # type: ignore
# type: () -> StringList
warnings.warn('SphinxRSTFileInput is deprecated.',
RemovedInSphinx30Warning, stacklevel=2)
@ -284,7 +284,7 @@ def read_doc(app, env, filename):
filetype = get_filetype(app.config.source_suffix, filename)
input_class = app.registry.get_source_input(filetype)
reader = SphinxStandaloneReader(app)
source = input_class(app, env, source=None, source_path=filename,
source = input_class(app, env, source=None, source_path=filename, # type: ignore
encoding=env.config.source_encoding)
parser = app.registry.create_source_parser(app, filetype)
if parser.__class__.__name__ == 'CommonMarkParser' and parser.settings_spec == ():
@ -295,7 +295,7 @@ def read_doc(app, env, filename):
# CommonMarkParser.
parser.settings_spec = RSTParser.settings_spec
pub = Publisher(reader=reader,
pub = Publisher(reader=reader, # type: ignore
parser=parser,
writer=SphinxDummyWriter(),
source_class=SphinxDummySourceClass,

View File

@ -76,7 +76,7 @@ class RSTParser(docutils.parsers.rst.Parser, Parser):
def parse(self, inputstring, document):
# type: (Union[str, StringList], nodes.document) -> None
"""Parse text and generate a document tree."""
self.setup_parse(inputstring, document)
self.setup_parse(inputstring, document) # type: ignore
self.statemachine = states.RSTStateMachine(
state_classes=self.state_classes,
initial_state=self.initial_state,

View File

@ -133,8 +133,8 @@ class SphinxTestApp(application.Sphinx):
warningiserror = False
self._saved_path = sys.path[:]
self._saved_directives = directives._directives.copy()
self._saved_roles = roles._roles.copy()
self._saved_directives = directives._directives.copy() # type: ignore
self._saved_roles = roles._roles.copy() # type: ignore
self._saved_nodeclasses = set(v for v in dir(nodes.GenericNodeVisitor)
if v.startswith('visit_'))
@ -154,8 +154,8 @@ class SphinxTestApp(application.Sphinx):
locale.translators.clear()
sys.path[:] = self._saved_path
sys.modules.pop('autodoc_fodder', None)
directives._directives = self._saved_directives
roles._roles = self._saved_roles
directives._directives = self._saved_directives # type: ignore
roles._roles = self._saved_roles # type: ignore
for method in dir(nodes.GenericNodeVisitor):
if method.startswith('visit_') and \
method not in self._saved_nodeclasses:

View File

@ -63,7 +63,7 @@ def publish_msgstr(app, source, source_path, source_line, config, settings):
settings=settings,
)
try:
doc = doc[0]
doc = doc[0] # type: ignore
except IndexError: # empty node
pass
return doc

View File

@ -18,6 +18,7 @@ from contextlib import contextmanager
from copy import copy
from distutils.version import LooseVersion
from os import path
from typing import IO, cast
import docutils
from docutils import nodes
@ -55,13 +56,13 @@ def docutils_namespace():
# type: () -> Generator[None, None, None]
"""Create namespace for reST parsers."""
try:
_directives = copy(directives._directives)
_roles = copy(roles._roles)
_directives = copy(directives._directives) # type: ignore
_roles = copy(roles._roles) # type: ignore
yield
finally:
directives._directives = _directives
roles._roles = _roles
directives._directives = _directives # type: ignore
roles._roles = _roles # type: ignore
for node in list(additional_nodes):
unregister_node(node)
@ -71,7 +72,7 @@ def docutils_namespace():
def is_directive_registered(name):
# type: (unicode) -> bool
"""Check the *name* directive is already registered."""
return name in directives._directives
return name in directives._directives # type: ignore
def register_directive(name, directive):
@ -87,7 +88,7 @@ def register_directive(name, directive):
def is_role_registered(name):
# type: (unicode) -> bool
"""Check the *name* role is already registered."""
return name in roles._roles
return name in roles._roles # type: ignore
def register_role(name, role):
@ -103,7 +104,7 @@ def register_role(name, role):
def unregister_role(name):
# type: (unicode) -> None
"""Unregister a role from docutils."""
roles._roles.pop(name, None)
roles._roles.pop(name, None) # type: ignore
def is_node_registered(node):
@ -120,7 +121,7 @@ def register_node(node):
inside ``docutils_namespace()`` to prevent side-effects.
"""
if not hasattr(nodes.GenericNodeVisitor, 'visit_' + node.__name__):
nodes._add_node_class_names([node.__name__])
nodes._add_node_class_names([node.__name__]) # type: ignore
additional_nodes.add(node)
@ -211,8 +212,8 @@ class sphinx_domains:
self.directive_func = directives.directive
self.role_func = roles.role
directives.directive = self.lookup_directive
roles.role = self.lookup_role
directives.directive = self.lookup_directive # type: ignore
roles.role = self.lookup_role # type: ignore
def disable(self):
# type: () -> None
@ -287,7 +288,7 @@ class LoggingReporter(Reporter):
halt_level=Reporter.SEVERE_LEVEL, debug=False,
error_handler='backslashreplace'):
# type: (unicode, int, int, bool, unicode) -> None
stream = WarningStream()
stream = cast(IO, WarningStream())
super(LoggingReporter, self).__init__(source, report_level, halt_level,
stream, debug, error_handler=error_handler)
@ -329,17 +330,17 @@ def switch_source_input(state, content):
"""Switch current source input of state temporarily."""
try:
# remember the original ``get_source_and_line()`` method
get_source_and_line = state.memo.reporter.get_source_and_line
get_source_and_line = state.memo.reporter.get_source_and_line # type: ignore
# replace it by new one
state_machine = StateMachine([], None)
state_machine.input_lines = content
state.memo.reporter.get_source_and_line = state_machine.get_source_and_line
state.memo.reporter.get_source_and_line = state_machine.get_source_and_line # type: ignore # NOQA
yield
finally:
# restore the method
state.memo.reporter.get_source_and_line = get_source_and_line
state.memo.reporter.get_source_and_line = get_source_and_line # type: ignore
class SphinxFileOutput(FileOutput):

View File

@ -451,7 +451,7 @@ def set_source_info(directive, node):
def set_role_source_info(inliner, lineno, node):
# type: (Inliner, int, nodes.Node) -> None
node.source, node.line = inliner.reporter.get_source_and_line(lineno)
node.source, node.line = inliner.reporter.get_source_and_line(lineno) # type: ignore
NON_SMARTQUOTABLE_PARENT_NODES = (
@ -510,4 +510,4 @@ def _new_copy(self):
return newnode
nodes.Element.copy = _new_copy
nodes.Element.copy = _new_copy # type: ignore

View File

@ -281,7 +281,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
self.depart_reference(node)
# overwritten -- we don't want source comments to show up in the HTML
def visit_comment(self, node):
def visit_comment(self, node): # type: ignore
# type: (nodes.Element) -> None
raise nodes.SkipNode
@ -840,7 +840,7 @@ class HTMLTranslator(SphinxTranslator, BaseTranslator):
else:
node['classes'].append('row-odd')
self.body.append(self.starttag(node, 'tr', ''))
node.column = 0
node.column = 0 # type: ignore
def visit_entry(self, node):
# type: (nodes.Element) -> None

View File

@ -250,7 +250,7 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
self.depart_reference(node)
# overwritten -- we don't want source comments to show up in the HTML
def visit_comment(self, node):
def visit_comment(self, node): # type: ignore
# type: (nodes.Element) -> None
raise nodes.SkipNode
@ -791,7 +791,7 @@ class HTML5Translator(SphinxTranslator, BaseTranslator):
else:
node['classes'].append('row-odd')
self.body.append(self.starttag(node, 'tr', ''))
node.column = 0
node.column = 0 # type: ignore
def visit_field_list(self, node):
# type: (nodes.Element) -> None

View File

@ -116,7 +116,7 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
# Overwrite admonition label translations with our own
for label, translation in admonitionlabels.items():
self.language.labels[label] = self.deunicode(translation)
self.language.labels[label] = self.deunicode(translation) # type: ignore
# overwritten -- added quotes around all .TH arguments
def header(self):
@ -253,7 +253,7 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
super(ManualPageTranslator, self).visit_term(node)
# overwritten -- we don't want source comments to show up
def visit_comment(self, node):
def visit_comment(self, node): # type: ignore
# type: (nodes.Element) -> None
raise nodes.SkipNode
@ -333,7 +333,7 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
self.body.append(self.defs['reference'][0])
# avoid repeating escaping code... fine since
# visit_Text calls astext() and only works on that afterwards
self.visit_Text(node)
self.visit_Text(node) # type: ignore
self.body.append(self.defs['reference'][1])
uri = node.get('refuri', '')

View File

@ -55,6 +55,7 @@ description =
Run type checks.
deps =
mypy
docutils-stubs
commands=
mypy sphinx/