mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Add docutils-stubs to test deps
This commit is contained in:
parent
53917f228f
commit
9dfc5e7efe
1
setup.py
1
setup.py
@ -46,6 +46,7 @@ extras_require = {
|
||||
'flake8>=3.5.0',
|
||||
'flake8-import-order',
|
||||
'mypy>=0.470',
|
||||
'docutils-stubs',
|
||||
],
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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', '')
|
||||
|
Loading…
Reference in New Issue
Block a user