diff options
-rw-r--r-- | setup.py | 1 | ||||
-rw-r--r-- | sphinx/builders/gettext.py | 2 | ||||
-rw-r--r-- | sphinx/directives/patches.py | 4 | ||||
-rw-r--r-- | sphinx/domains/python.py | 2 | ||||
-rw-r--r-- | sphinx/environment/adapters/toctree.py | 4 | ||||
-rw-r--r-- | sphinx/ext/autodoc/directive.py | 2 | ||||
-rw-r--r-- | sphinx/io.py | 6 | ||||
-rw-r--r-- | sphinx/parsers.py | 2 | ||||
-rw-r--r-- | sphinx/testing/util.py | 8 | ||||
-rw-r--r-- | sphinx/transforms/i18n.py | 2 | ||||
-rw-r--r-- | sphinx/util/docutils.py | 29 | ||||
-rw-r--r-- | sphinx/util/nodes.py | 4 | ||||
-rw-r--r-- | sphinx/writers/html.py | 4 | ||||
-rw-r--r-- | sphinx/writers/html5.py | 4 | ||||
-rw-r--r-- | sphinx/writers/manpage.py | 6 | ||||
-rw-r--r-- | tox.ini | 1 |
16 files changed, 42 insertions, 39 deletions
@@ -46,6 +46,7 @@ extras_require = { 'flake8>=3.5.0', 'flake8-import-order', 'mypy>=0.470', + 'docutils-stubs', ], } diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index 6e7dd4d90..684013d11 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -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: diff --git a/sphinx/directives/patches.py b/sphinx/directives/patches.py index e4088af07..1b9d52ac7 100644 --- a/sphinx/directives/patches.py +++ b/sphinx/directives/patches.py @@ -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 diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 91e975a96..8c5c6f999 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -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): diff --git a/sphinx/environment/adapters/toctree.py b/sphinx/environment/adapters/toctree.py index 5d5a9b940..6a435f9ae 100644 --- a/sphinx/environment/adapters/toctree.py +++ b/sphinx/environment/adapters/toctree.py @@ -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 diff --git a/sphinx/ext/autodoc/directive.py b/sphinx/ext/autodoc/directive.py index 3761d26d2..bb6e05751 100644 --- a/sphinx/ext/autodoc/directive.py +++ b/sphinx/ext/autodoc/directive.py @@ -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) diff --git a/sphinx/io.py b/sphinx/io.py index 6609d0e72..b4a99fe41 100644 --- a/sphinx/io.py +++ b/sphinx/io.py @@ -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, diff --git a/sphinx/parsers.py b/sphinx/parsers.py index ac95c1d4d..c3fb2f1da 100644 --- a/sphinx/parsers.py +++ b/sphinx/parsers.py @@ -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, diff --git a/sphinx/testing/util.py b/sphinx/testing/util.py index b34fd504b..f4d44ecde 100644 --- a/sphinx/testing/util.py +++ b/sphinx/testing/util.py @@ -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: diff --git a/sphinx/transforms/i18n.py b/sphinx/transforms/i18n.py index 236d733b7..8e6605824 100644 --- a/sphinx/transforms/i18n.py +++ b/sphinx/transforms/i18n.py @@ -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 diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index 8dfac4835..1ec01ddc4 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -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): diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index 81050a558..39b7cbbe0 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -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 diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index 47414a1eb..e2e0797c6 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -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 diff --git a/sphinx/writers/html5.py b/sphinx/writers/html5.py index b014bc045..3c1f54965 100644 --- a/sphinx/writers/html5.py +++ b/sphinx/writers/html5.py @@ -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 diff --git a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py index d611fe220..2ac2cab7b 100644 --- a/sphinx/writers/manpage.py +++ b/sphinx/writers/manpage.py @@ -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', '') @@ -55,6 +55,7 @@ description = Run type checks. deps = mypy + docutils-stubs commands= mypy sphinx/ |