refactor: use raw Type for type annotations

This commit is contained in:
Takeshi KOMIYA 2021-04-04 14:37:15 +09:00
parent f7a2e081c8
commit 1b0d4672a4
20 changed files with 68 additions and 69 deletions

View File

@ -443,7 +443,7 @@ class Sphinx:
self.events.disconnect(listener_id) self.events.disconnect(listener_id)
def emit(self, event: str, *args: Any, def emit(self, event: str, *args: Any,
allowed_exceptions: Tuple["Type[Exception]", ...] = ()) -> List: allowed_exceptions: Tuple[Type[Exception], ...] = ()) -> List:
"""Emit *event* and pass *arguments* to the callback functions. """Emit *event* and pass *arguments* to the callback functions.
Return the return values of all callbacks as a list. Do not emit core Return the return values of all callbacks as a list. Do not emit core
@ -460,7 +460,7 @@ class Sphinx:
return self.events.emit(event, *args, allowed_exceptions=allowed_exceptions) return self.events.emit(event, *args, allowed_exceptions=allowed_exceptions)
def emit_firstresult(self, event: str, *args: Any, def emit_firstresult(self, event: str, *args: Any,
allowed_exceptions: Tuple["Type[Exception]", ...] = ()) -> Any: allowed_exceptions: Tuple[Type[Exception], ...] = ()) -> Any:
"""Emit *event* and pass *arguments* to the callback functions. """Emit *event* and pass *arguments* to the callback functions.
Return the result of the first callback that doesn't return ``None``. Return the result of the first callback that doesn't return ``None``.
@ -479,7 +479,7 @@ class Sphinx:
# registering addon parts # registering addon parts
def add_builder(self, builder: "Type[Builder]", override: bool = False) -> None: def add_builder(self, builder: Type["Builder"], override: bool = False) -> None:
"""Register a new builder. """Register a new builder.
:param builder: A builder class :param builder: A builder class
@ -542,7 +542,7 @@ class Sphinx:
logger.debug('[app] adding event: %r', name) logger.debug('[app] adding event: %r', name)
self.events.add(name) self.events.add(name)
def set_translator(self, name: str, translator_class: "Type[nodes.NodeVisitor]", def set_translator(self, name: str, translator_class: Type[nodes.NodeVisitor],
override: bool = False) -> None: override: bool = False) -> None:
"""Register or override a Docutils translator class. """Register or override a Docutils translator class.
@ -561,7 +561,7 @@ class Sphinx:
""" """
self.registry.add_translator(name, translator_class, override=override) self.registry.add_translator(name, translator_class, override=override)
def add_node(self, node: "Type[Element]", override: bool = False, def add_node(self, node: Type[Element], override: bool = False,
**kwargs: Tuple[Callable, Callable]) -> None: **kwargs: Tuple[Callable, Callable]) -> None:
"""Register a Docutils node class. """Register a Docutils node class.
@ -605,7 +605,7 @@ class Sphinx:
docutils.register_node(node) docutils.register_node(node)
self.registry.add_translation_handlers(node, **kwargs) self.registry.add_translation_handlers(node, **kwargs)
def add_enumerable_node(self, node: "Type[Element]", figtype: str, def add_enumerable_node(self, node: Type[Element], figtype: str,
title_getter: TitleGetter = None, override: bool = False, title_getter: TitleGetter = None, override: bool = False,
**kwargs: Tuple[Callable, Callable]) -> None: **kwargs: Tuple[Callable, Callable]) -> None:
"""Register a Docutils node class as a numfig target. """Register a Docutils node class as a numfig target.
@ -634,7 +634,7 @@ class Sphinx:
self.registry.add_enumerable_node(node, figtype, title_getter, override=override) self.registry.add_enumerable_node(node, figtype, title_getter, override=override)
self.add_node(node, override=override, **kwargs) self.add_node(node, override=override, **kwargs)
def add_directive(self, name: str, cls: "Type[Directive]", override: bool = False) -> None: def add_directive(self, name: str, cls: Type[Directive], override: bool = False) -> None:
"""Register a Docutils directive. """Register a Docutils directive.
:param name: The name of directive :param name: The name of directive
@ -724,7 +724,7 @@ class Sphinx:
role = roles.GenericRole(name, nodeclass) role = roles.GenericRole(name, nodeclass)
docutils.register_role(name, role) docutils.register_role(name, role)
def add_domain(self, domain: "Type[Domain]", override: bool = False) -> None: def add_domain(self, domain: Type[Domain], override: bool = False) -> None:
"""Register a domain. """Register a domain.
:param domain: A domain class :param domain: A domain class
@ -738,7 +738,7 @@ class Sphinx:
self.registry.add_domain(domain, override=override) self.registry.add_domain(domain, override=override)
def add_directive_to_domain(self, domain: str, name: str, def add_directive_to_domain(self, domain: str, name: str,
cls: "Type[Directive]", override: bool = False) -> None: cls: Type[Directive], override: bool = False) -> None:
"""Register a Docutils directive in a domain. """Register a Docutils directive in a domain.
Like :meth:`add_directive`, but the directive is added to the domain Like :meth:`add_directive`, but the directive is added to the domain
@ -775,7 +775,7 @@ class Sphinx:
""" """
self.registry.add_role_to_domain(domain, name, role, override=override) self.registry.add_role_to_domain(domain, name, role, override=override)
def add_index_to_domain(self, domain: str, index: "Type[Index]", override: bool = False def add_index_to_domain(self, domain: str, index: Type[Index], override: bool = False
) -> None: ) -> None:
"""Register a custom index for a domain. """Register a custom index for a domain.
@ -793,7 +793,7 @@ class Sphinx:
self.registry.add_index_to_domain(domain, index) self.registry.add_index_to_domain(domain, index)
def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '', def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '',
parse_node: Callable = None, ref_nodeclass: "Type[TextElement]" = None, parse_node: Callable = None, ref_nodeclass: Type[TextElement] = None,
objname: str = '', doc_field_types: List = [], override: bool = False objname: str = '', doc_field_types: List = [], override: bool = False
) -> None: ) -> None:
"""Register a new object type. """Register a new object type.
@ -860,7 +860,7 @@ class Sphinx:
override=override) override=override)
def add_crossref_type(self, directivename: str, rolename: str, indextemplate: str = '', def add_crossref_type(self, directivename: str, rolename: str, indextemplate: str = '',
ref_nodeclass: "Type[TextElement]" = None, objname: str = '', ref_nodeclass: Type[TextElement] = None, objname: str = '',
override: bool = False) -> None: override: bool = False) -> None:
"""Register a new crossref object type. """Register a new crossref object type.
@ -898,7 +898,7 @@ class Sphinx:
indextemplate, ref_nodeclass, objname, indextemplate, ref_nodeclass, objname,
override=override) override=override)
def add_transform(self, transform: "Type[Transform]") -> None: def add_transform(self, transform: Type[Transform]) -> None:
"""Register a Docutils transform to be applied after parsing. """Register a Docutils transform to be applied after parsing.
Add the standard docutils :class:`Transform` subclass *transform* to Add the standard docutils :class:`Transform` subclass *transform* to
@ -933,7 +933,7 @@ class Sphinx:
""" # NOQA """ # NOQA
self.registry.add_transform(transform) self.registry.add_transform(transform)
def add_post_transform(self, transform: "Type[Transform]") -> None: def add_post_transform(self, transform: Type[Transform]) -> None:
"""Register a Docutils transform to be applied before writing. """Register a Docutils transform to be applied before writing.
Add the standard docutils :class:`Transform` subclass *transform* to Add the standard docutils :class:`Transform` subclass *transform* to
@ -1113,7 +1113,7 @@ class Sphinx:
self.registry.add_documenter(cls.objtype, cls) self.registry.add_documenter(cls.objtype, cls)
self.add_directive('auto' + cls.objtype, AutodocDirective, override=override) self.add_directive('auto' + cls.objtype, AutodocDirective, override=override)
def add_autodoc_attrgetter(self, typ: "Type", getter: Callable[[Any, str, Any], Any] def add_autodoc_attrgetter(self, typ: Type, getter: Callable[[Any, str, Any], Any]
) -> None: ) -> None:
"""Register a new ``getattr``-like function for the autodoc extension. """Register a new ``getattr``-like function for the autodoc extension.
@ -1157,7 +1157,7 @@ class Sphinx:
""" """
self.registry.add_source_suffix(suffix, filetype, override=override) self.registry.add_source_suffix(suffix, filetype, override=override)
def add_source_parser(self, parser: "Type[Parser]", override: bool = False) -> None: def add_source_parser(self, parser: Type[Parser], override: bool = False) -> None:
"""Register a parser class. """Register a parser class.
If *override* is True, the given *parser* is forcedly installed even if If *override* is True, the given *parser* is forcedly installed even if
@ -1172,7 +1172,7 @@ class Sphinx:
""" """
self.registry.add_source_parser(parser, override=override) self.registry.add_source_parser(parser, override=override)
def add_env_collector(self, collector: "Type[EnvironmentCollector]") -> None: def add_env_collector(self, collector: Type[EnvironmentCollector]) -> None:
"""Register an environment collector class. """Register an environment collector class.
Refer to :ref:`collector-api`. Refer to :ref:`collector-api`.

View File

@ -114,7 +114,7 @@ class Builder:
self.env.set_versioning_method(self.versioning_method, self.env.set_versioning_method(self.versioning_method,
self.versioning_compare) self.versioning_compare)
def get_translator_class(self, *args: Any) -> "Type[nodes.NodeVisitor]": def get_translator_class(self, *args: Any) -> Type[nodes.NodeVisitor]:
"""Return a class of translator.""" """Return a class of translator."""
return self.app.registry.get_translator_class(self) return self.app.registry.get_translator_class(self)

View File

@ -333,7 +333,7 @@ class StandaloneHTMLBuilder(Builder):
self.script_files.append(JavaScript(filename, **kwargs)) self.script_files.append(JavaScript(filename, **kwargs))
@property @property
def default_translator_class(self) -> "Type[nodes.NodeVisitor]": # type: ignore def default_translator_class(self) -> Type[nodes.NodeVisitor]: # type: ignore
if not html5_ready or self.config.html4_writer: if not html5_ready or self.config.html4_writer:
return HTMLTranslator return HTMLTranslator
else: else:

View File

@ -30,7 +30,7 @@ RemovedInNextVersionWarning = RemovedInSphinx50Warning
def deprecated_alias(modname: str, objects: Dict[str, object], def deprecated_alias(modname: str, objects: Dict[str, object],
warning: "Type[Warning]", names: Dict[str, str] = {}) -> None: warning: Type[Warning], names: Dict[str, str] = {}) -> None:
module = import_module(modname) module = import_module(modname)
sys.modules[modname] = _ModuleWrapper( # type: ignore sys.modules[modname] = _ModuleWrapper( # type: ignore
module, modname, objects, warning, names) module, modname, objects, warning, names)
@ -39,7 +39,7 @@ def deprecated_alias(modname: str, objects: Dict[str, object],
class _ModuleWrapper: class _ModuleWrapper:
def __init__(self, module: Any, modname: str, def __init__(self, module: Any, modname: str,
objects: Dict[str, object], objects: Dict[str, object],
warning: "Type[Warning]", warning: Type[Warning],
names: Dict[str, str]) -> None: names: Dict[str, str]) -> None:
self._module = module self._module = module
self._modname = modname self._modname = modname
@ -67,7 +67,7 @@ class _ModuleWrapper:
class DeprecatedDict(dict): class DeprecatedDict(dict):
"""A deprecated dict which warns on each access.""" """A deprecated dict which warns on each access."""
def __init__(self, data: Dict, message: str, warning: "Type[Warning]") -> None: def __init__(self, data: Dict, message: str, warning: Type[Warning]) -> None:
self.message = message self.message = message
self.warning = warning self.warning = warning
super().__init__(data) super().__init__(data)

View File

@ -1057,7 +1057,7 @@ class StandardDomain(Domain):
def get_enumerable_node_type(self, node: Node) -> str: def get_enumerable_node_type(self, node: Node) -> str:
"""Get type of enumerable nodes.""" """Get type of enumerable nodes."""
def has_child(node: Element, cls: "Type") -> bool: def has_child(node: Element, cls: Type) -> bool:
return any(isinstance(child, cls) for child in node) return any(isinstance(child, cls) for child in node)
if isinstance(node, nodes.section): if isinstance(node, nodes.section):

View File

@ -62,7 +62,7 @@ class TocTreeCollector(EnvironmentCollector):
docname = app.env.docname docname = app.env.docname
numentries = [0] # nonlocal again... numentries = [0] # nonlocal again...
def traverse_in_section(node: Element, cls: "Type[N]") -> List[N]: def traverse_in_section(node: Element, cls: Type[N]) -> List[N]:
"""Like traverse(), but stay within the same section.""" """Like traverse(), but stay within the same section."""
result: List[N] = [] result: List[N] = []
if isinstance(node, cls): if isinstance(node, cls):

View File

@ -79,7 +79,7 @@ class DocumenterBridge:
return self._reporter return self._reporter
def process_documenter_options(documenter: "Type[Documenter]", config: Config, options: Dict def process_documenter_options(documenter: Type[Documenter], config: Config, options: Dict
) -> Options: ) -> Options:
"""Recognize options of Documenter from user input.""" """Recognize options of Documenter from user input."""
for name in AUTODOC_DEFAULT_OPTIONS: for name in AUTODOC_DEFAULT_OPTIONS:

View File

@ -178,7 +178,7 @@ class FakeDirective(DocumenterBridge):
super().__init__(env, None, Options(), 0, state) super().__init__(env, None, Options(), 0, state)
def get_documenter(app: Sphinx, obj: Any, parent: Any) -> "Type[Documenter]": def get_documenter(app: Sphinx, obj: Any, parent: Any) -> Type[Documenter]:
"""Get an autodoc.Documenter class suitable for documenting the given """Get an autodoc.Documenter class suitable for documenting the given
object. object.

View File

@ -826,7 +826,7 @@ class GoogleDocstring:
colon, colon,
"".join(after_colon).strip()) "".join(after_colon).strip())
def _qualify_name(self, attr_name: str, klass: "Type") -> str: def _qualify_name(self, attr_name: str, klass: Type) -> str:
if klass and '.' not in attr_name: if klass and '.' not in attr_name:
if attr_name.startswith('~'): if attr_name.startswith('~'):
attr_name = attr_name[1:] attr_name = attr_name[1:]

View File

@ -61,7 +61,7 @@ class SphinxBaseReader(standalone.Reader):
self._app = app # hold application object only for compatibility self._app = app # hold application object only for compatibility
self._env = app.env self._env = app.env
def get_transforms(self) -> List["Type[Transform]"]: def get_transforms(self) -> List[Type[Transform]]:
transforms = super().get_transforms() + self.transforms transforms = super().get_transforms() + self.transforms
# remove transforms which is not needed for Sphinx # remove transforms which is not needed for Sphinx

View File

@ -16,14 +16,13 @@ import docutils.parsers.rst
from docutils import nodes from docutils import nodes
from docutils.parsers.rst import states from docutils.parsers.rst import states
from docutils.statemachine import StringList from docutils.statemachine import StringList
from docutils.transforms import Transform
from docutils.transforms.universal import SmartQuotes from docutils.transforms.universal import SmartQuotes
from sphinx.deprecation import RemovedInSphinx50Warning from sphinx.deprecation import RemovedInSphinx50Warning
from sphinx.util.rst import append_epilog, prepend_prolog from sphinx.util.rst import append_epilog, prepend_prolog
if TYPE_CHECKING: if TYPE_CHECKING:
from docutils.transforms import Transform # NOQA
from sphinx.application import Sphinx from sphinx.application import Sphinx
@ -70,7 +69,7 @@ class Parser(docutils.parsers.Parser):
class RSTParser(docutils.parsers.rst.Parser, Parser): class RSTParser(docutils.parsers.rst.Parser, Parser):
"""A reST parser for Sphinx.""" """A reST parser for Sphinx."""
def get_transforms(self) -> List[Type["Transform"]]: def get_transforms(self) -> List[Type[Transform]]:
"""Sphinx's reST parser replaces a transform class for smart-quotes by own's """Sphinx's reST parser replaces a transform class for smart-quotes by own's
refs: sphinx.io.SphinxStandaloneReader refs: sphinx.io.SphinxStandaloneReader

View File

@ -122,7 +122,7 @@ class SphinxComponentRegistry:
#: additional transforms; list of transforms #: additional transforms; list of transforms
self.transforms = [] # type: List[Type[Transform]] self.transforms = [] # type: List[Type[Transform]]
def add_builder(self, builder: "Type[Builder]", override: bool = False) -> None: def add_builder(self, builder: Type[Builder], override: bool = False) -> None:
logger.debug('[app] adding builder: %r', builder) logger.debug('[app] adding builder: %r', builder)
if not hasattr(builder, 'name'): if not hasattr(builder, 'name'):
raise ExtensionError(__('Builder class %s has no "name" attribute') % builder) raise ExtensionError(__('Builder class %s has no "name" attribute') % builder)
@ -151,7 +151,7 @@ class SphinxComponentRegistry:
return self.builders[name](app) return self.builders[name](app)
def add_domain(self, domain: "Type[Domain]", override: bool = False) -> None: def add_domain(self, domain: Type[Domain], override: bool = False) -> None:
logger.debug('[app] adding domain: %r', domain) logger.debug('[app] adding domain: %r', domain)
if domain.name in self.domains and not override: if domain.name in self.domains and not override:
raise ExtensionError(__('domain %s already registered') % domain.name) raise ExtensionError(__('domain %s already registered') % domain.name)
@ -174,7 +174,7 @@ class SphinxComponentRegistry:
yield domain yield domain
def add_directive_to_domain(self, domain: str, name: str, def add_directive_to_domain(self, domain: str, name: str,
cls: "Type[Directive]", override: bool = False) -> None: cls: Type[Directive], override: bool = False) -> None:
logger.debug('[app] adding directive to domain: %r', (domain, name, cls)) logger.debug('[app] adding directive to domain: %r', (domain, name, cls))
if domain not in self.domains: if domain not in self.domains:
raise ExtensionError(__('domain %s not yet registered') % domain) raise ExtensionError(__('domain %s not yet registered') % domain)
@ -197,7 +197,7 @@ class SphinxComponentRegistry:
(name, domain)) (name, domain))
roles[name] = role roles[name] = role
def add_index_to_domain(self, domain: str, index: "Type[Index]", def add_index_to_domain(self, domain: str, index: Type[Index],
override: bool = False) -> None: override: bool = False) -> None:
logger.debug('[app] adding index to domain: %r', (domain, index)) logger.debug('[app] adding index to domain: %r', (domain, index))
if domain not in self.domains: if domain not in self.domains:
@ -209,7 +209,7 @@ class SphinxComponentRegistry:
indices.append(index) indices.append(index)
def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '', def add_object_type(self, directivename: str, rolename: str, indextemplate: str = '',
parse_node: Callable = None, ref_nodeclass: "Type[TextElement]" = None, parse_node: Callable = None, ref_nodeclass: Type[TextElement] = None,
objname: str = '', doc_field_types: List = [], override: bool = False objname: str = '', doc_field_types: List = [], override: bool = False
) -> None: ) -> None:
logger.debug('[app] adding object type: %r', logger.debug('[app] adding object type: %r',
@ -233,7 +233,7 @@ class SphinxComponentRegistry:
object_types[directivename] = ObjType(objname or directivename, rolename) object_types[directivename] = ObjType(objname or directivename, rolename)
def add_crossref_type(self, directivename: str, rolename: str, indextemplate: str = '', def add_crossref_type(self, directivename: str, rolename: str, indextemplate: str = '',
ref_nodeclass: "Type[TextElement]" = None, objname: str = '', ref_nodeclass: Type[TextElement] = None, objname: str = '',
override: bool = False) -> None: override: bool = False) -> None:
logger.debug('[app] adding crossref type: %r', logger.debug('[app] adding crossref type: %r',
(directivename, rolename, indextemplate, ref_nodeclass, objname)) (directivename, rolename, indextemplate, ref_nodeclass, objname))
@ -259,7 +259,7 @@ class SphinxComponentRegistry:
else: else:
self.source_suffix[suffix] = filetype self.source_suffix[suffix] = filetype
def add_source_parser(self, parser: "Type[Parser]", override: bool = False) -> None: def add_source_parser(self, parser: Type[Parser], override: bool = False) -> None:
logger.debug('[app] adding search source_parser: %r', parser) logger.debug('[app] adding search source_parser: %r', parser)
# create a map from filetype to parser # create a map from filetype to parser
@ -270,13 +270,13 @@ class SphinxComponentRegistry:
else: else:
self.source_parsers[filetype] = parser self.source_parsers[filetype] = parser
def get_source_parser(self, filetype: str) -> "Type[Parser]": def get_source_parser(self, filetype: str) -> Type[Parser]:
try: try:
return self.source_parsers[filetype] return self.source_parsers[filetype]
except KeyError as exc: except KeyError as exc:
raise SphinxError(__('Source parser for %s not registered') % filetype) from exc raise SphinxError(__('Source parser for %s not registered') % filetype) from exc
def get_source_parsers(self) -> Dict[str, "Type[Parser]"]: def get_source_parsers(self) -> Dict[str, Type[Parser]]:
return self.source_parsers return self.source_parsers
def create_source_parser(self, app: "Sphinx", filename: str) -> Parser: def create_source_parser(self, app: "Sphinx", filename: str) -> Parser:
@ -286,7 +286,7 @@ class SphinxComponentRegistry:
parser.set_application(app) parser.set_application(app)
return parser return parser
def get_source_input(self, filetype: str) -> "Type[Input]": def get_source_input(self, filetype: str) -> Type[Input]:
warnings.warn('SphinxComponentRegistry.get_source_input() is deprecated.', warnings.warn('SphinxComponentRegistry.get_source_input() is deprecated.',
RemovedInSphinx60Warning) RemovedInSphinx60Warning)
@ -299,14 +299,14 @@ class SphinxComponentRegistry:
except KeyError: except KeyError:
return None return None
def add_translator(self, name: str, translator: "Type[nodes.NodeVisitor]", def add_translator(self, name: str, translator: Type[nodes.NodeVisitor],
override: bool = False) -> None: override: bool = False) -> None:
logger.debug('[app] Change of translator for the %s builder.', name) logger.debug('[app] Change of translator for the %s builder.', name)
if name in self.translators and not override: if name in self.translators and not override:
raise ExtensionError(__('Translator for %r already exists') % name) raise ExtensionError(__('Translator for %r already exists') % name)
self.translators[name] = translator self.translators[name] = translator
def add_translation_handlers(self, node: "Type[Element]", def add_translation_handlers(self, node: Type[Element],
**kwargs: Tuple[Callable, Callable]) -> None: **kwargs: Tuple[Callable, Callable]) -> None:
logger.debug('[app] adding translation_handlers: %r, %r', node, kwargs) logger.debug('[app] adding translation_handlers: %r, %r', node, kwargs)
for builder_name, handlers in kwargs.items(): for builder_name, handlers in kwargs.items():
@ -320,7 +320,7 @@ class SphinxComponentRegistry:
'function tuple: %r=%r') % (builder_name, handlers) 'function tuple: %r=%r') % (builder_name, handlers)
) from exc ) from exc
def get_translator_class(self, builder: Builder) -> "Type[nodes.NodeVisitor]": def get_translator_class(self, builder: Builder) -> Type[nodes.NodeVisitor]:
return self.translators.get(builder.name, return self.translators.get(builder.name,
builder.default_translator_class) builder.default_translator_class)
@ -342,24 +342,24 @@ class SphinxComponentRegistry:
return translator return translator
def add_transform(self, transform: "Type[Transform]") -> None: def add_transform(self, transform: Type[Transform]) -> None:
logger.debug('[app] adding transform: %r', transform) logger.debug('[app] adding transform: %r', transform)
self.transforms.append(transform) self.transforms.append(transform)
def get_transforms(self) -> List["Type[Transform]"]: def get_transforms(self) -> List[Type[Transform]]:
return self.transforms return self.transforms
def add_post_transform(self, transform: "Type[Transform]") -> None: def add_post_transform(self, transform: Type[Transform]) -> None:
logger.debug('[app] adding post transform: %r', transform) logger.debug('[app] adding post transform: %r', transform)
self.post_transforms.append(transform) self.post_transforms.append(transform)
def get_post_transforms(self) -> List["Type[Transform]"]: def get_post_transforms(self) -> List[Type[Transform]]:
return self.post_transforms return self.post_transforms
def add_documenter(self, objtype: str, documenter: "Type[Documenter]") -> None: def add_documenter(self, objtype: str, documenter: Type["Documenter"]) -> None:
self.documenters[objtype] = documenter self.documenters[objtype] = documenter
def add_autodoc_attrgetter(self, typ: "Type", def add_autodoc_attrgetter(self, typ: Type,
attrgetter: Callable[[Any, str, Any], Any]) -> None: attrgetter: Callable[[Any, str, Any], Any]) -> None:
self.autodoc_attrgettrs[typ] = attrgetter self.autodoc_attrgettrs[typ] = attrgetter
@ -384,7 +384,7 @@ class SphinxComponentRegistry:
else: else:
self.latex_packages.append((name, options)) self.latex_packages.append((name, options))
def add_enumerable_node(self, node: "Type[Node]", figtype: str, def add_enumerable_node(self, node: Type[Node], figtype: str,
title_getter: TitleGetter = None, override: bool = False) -> None: title_getter: TitleGetter = None, override: bool = False) -> None:
logger.debug('[app] adding enumerable node: (%r, %r, %r)', node, figtype, title_getter) logger.debug('[app] adding enumerable node: (%r, %r, %r)', node, figtype, title_getter)
if node in self.enumerable_nodes and not override: if node in self.enumerable_nodes and not override:

View File

@ -69,7 +69,7 @@ class XRefRole(ReferenceRole):
innernodeclass = nodes.literal # type: Type[TextElement] innernodeclass = nodes.literal # type: Type[TextElement]
def __init__(self, fix_parens: bool = False, lowercase: bool = False, def __init__(self, fix_parens: bool = False, lowercase: bool = False,
nodeclass: "Type[Element]" = None, innernodeclass: "Type[TextElement]" = None, nodeclass: Type[Element] = None, innernodeclass: Type[TextElement] = None,
warn_dangling: bool = False) -> None: warn_dangling: bool = False) -> None:
self.fix_parens = fix_parens self.fix_parens = fix_parens
self.lowercase = lowercase self.lowercase = lowercase

View File

@ -510,7 +510,7 @@ class progress_message:
def __enter__(self) -> None: def __enter__(self) -> None:
logger.info(bold(self.message + '... '), nonl=True) logger.info(bold(self.message + '... '), nonl=True)
def __exit__(self, exc_type: "Type[Exception]", exc_value: Exception, traceback: Any) -> bool: # NOQA def __exit__(self, exc_type: Type[Exception], exc_value: Exception, traceback: Any) -> bool: # NOQA
if isinstance(exc_value, SkipProgressMessage): if isinstance(exc_value, SkipProgressMessage):
logger.info(__('skipped')) logger.info(__('skipped'))
if exc_value.args: if exc_value.args:

View File

@ -61,7 +61,7 @@ class Field:
self.bodyrolename = bodyrolename self.bodyrolename = bodyrolename
def make_xref(self, rolename: str, domain: str, target: str, def make_xref(self, rolename: str, domain: str, target: str,
innernode: "Type[TextlikeNode]" = addnodes.literal_emphasis, innernode: Type[TextlikeNode] = addnodes.literal_emphasis,
contnode: Node = None, env: "BuildEnvironment" = None) -> Node: contnode: Node = None, env: "BuildEnvironment" = None) -> Node:
if not rolename: if not rolename:
return contnode or innernode(target, target) return contnode or innernode(target, target)
@ -73,7 +73,7 @@ class Field:
return refnode return refnode
def make_xrefs(self, rolename: str, domain: str, target: str, def make_xrefs(self, rolename: str, domain: str, target: str,
innernode: "Type[TextlikeNode]" = addnodes.literal_emphasis, innernode: Type[TextlikeNode] = addnodes.literal_emphasis,
contnode: Node = None, env: "BuildEnvironment" = None) -> List[Node]: contnode: Node = None, env: "BuildEnvironment" = None) -> List[Node]:
return [self.make_xref(rolename, domain, target, innernode, contnode, env)] return [self.make_xref(rolename, domain, target, innernode, contnode, env)]

View File

@ -67,7 +67,7 @@ def is_directive_registered(name: str) -> bool:
return name in directives._directives # type: ignore return name in directives._directives # type: ignore
def register_directive(name: str, directive: "Type[Directive]") -> None: def register_directive(name: str, directive: Type[Directive]) -> None:
"""Register a directive to docutils. """Register a directive to docutils.
This modifies global state of docutils. So it is better to use this This modifies global state of docutils. So it is better to use this
@ -95,12 +95,12 @@ def unregister_role(name: str) -> None:
roles._roles.pop(name, None) # type: ignore roles._roles.pop(name, None) # type: ignore
def is_node_registered(node: "Type[Element]") -> bool: def is_node_registered(node: Type[Element]) -> bool:
"""Check the *node* is already registered.""" """Check the *node* is already registered."""
return hasattr(nodes.GenericNodeVisitor, 'visit_' + node.__name__) return hasattr(nodes.GenericNodeVisitor, 'visit_' + node.__name__)
def register_node(node: "Type[Element]") -> None: def register_node(node: Type[Element]) -> None:
"""Register a node to docutils. """Register a node to docutils.
This modifies global state of some visitors. So it is better to use this This modifies global state of some visitors. So it is better to use this
@ -111,7 +111,7 @@ def register_node(node: "Type[Element]") -> None:
additional_nodes.add(node) additional_nodes.add(node)
def unregister_node(node: "Type[Element]") -> None: def unregister_node(node: Type[Element]) -> None:
"""Unregister a node from docutils. """Unregister a node from docutils.
This is inverse of ``nodes._add_nodes_class_names()``. This is inverse of ``nodes._add_nodes_class_names()``.
@ -182,7 +182,7 @@ class sphinx_domains:
def __enter__(self) -> None: def __enter__(self) -> None:
self.enable() self.enable()
def __exit__(self, exc_type: "Type[Exception]", exc_value: Exception, traceback: Any) -> None: # NOQA def __exit__(self, exc_type: Type[Exception], exc_value: Exception, traceback: Any) -> None: # NOQA
self.disable() self.disable()
def enable(self) -> None: def enable(self) -> None:
@ -226,7 +226,7 @@ class sphinx_domains:
raise ElementLookupError raise ElementLookupError
def lookup_directive(self, directive_name: str, language_module: ModuleType, document: nodes.document) -> Tuple[Optional["Type[Directive]"], List[system_message]]: # NOQA def lookup_directive(self, directive_name: str, language_module: ModuleType, document: nodes.document) -> Tuple[Optional[Type[Directive]], List[system_message]]: # NOQA
try: try:
return self.lookup_domain_element('directive', directive_name) return self.lookup_domain_element('directive', directive_name)
except ElementLookupError: except ElementLookupError:

View File

@ -20,7 +20,7 @@ import warnings
from functools import partial, partialmethod from functools import partial, partialmethod
from inspect import Parameter, isclass, ismethod, ismethoddescriptor, ismodule # NOQA from inspect import Parameter, isclass, ismethod, ismethoddescriptor, ismodule # NOQA
from io import StringIO from io import StringIO
from typing import Any, Callable, Dict, Mapping, Optional, Sequence, Tuple, cast from typing import Any, Callable, Dict, Mapping, Optional, Sequence, Tuple, Type, cast
from sphinx.deprecation import RemovedInSphinx50Warning from sphinx.deprecation import RemovedInSphinx50Warning
from sphinx.pycode.ast import ast # for py36-37 from sphinx.pycode.ast import ast # for py36-37
@ -175,7 +175,7 @@ def getglobals(obj: Any) -> Mapping[str, Any]:
return {} return {}
def getmro(obj: Any) -> Tuple["Type", ...]: def getmro(obj: Any) -> Tuple[Type, ...]:
"""Get __mro__ from given *obj* safely.""" """Get __mro__ from given *obj* safely."""
__mro__ = safe_getattr(obj, '__mro__', None) __mro__ = safe_getattr(obj, '__mro__', None)
if isinstance(__mro__, tuple): if isinstance(__mro__, tuple):

View File

@ -58,7 +58,7 @@ class NodeMatcher:
# => [<reference ...>, <reference ...>, ...] # => [<reference ...>, <reference ...>, ...]
""" """
def __init__(self, *node_classes: "Type[Node]", **attrs: Any) -> None: def __init__(self, *node_classes: Type[Node], **attrs: Any) -> None:
self.classes = node_classes self.classes = node_classes
self.attrs = attrs self.attrs = attrs

View File

@ -214,7 +214,7 @@ class FileAvoidWrite:
def __enter__(self) -> "FileAvoidWrite": def __enter__(self) -> "FileAvoidWrite":
return self return self
def __exit__(self, exc_type: "Type[Exception]", exc_value: Exception, traceback: Any) -> bool: # NOQA def __exit__(self, exc_type: Type[Exception], exc_value: Exception, traceback: Any) -> bool: # NOQA
self.close() self.close()
return True return True

View File

@ -12,7 +12,7 @@ import sys
import typing import typing
from struct import Struct from struct import Struct
from types import TracebackType from types import TracebackType
from typing import Any, Callable, Dict, Generator, List, Optional, Tuple, TypeVar, Union from typing import Any, Callable, Dict, Generator, List, Optional, Tuple, Type, TypeVar, Union
from docutils import nodes from docutils import nodes
from docutils.parsers.rst.states import Inliner from docutils.parsers.rst.states import Inliner
@ -101,7 +101,7 @@ def is_system_TypeVar(typ: Any) -> bool:
return modname == 'typing' and isinstance(typ, TypeVar) return modname == 'typing' and isinstance(typ, TypeVar)
def restify(cls: Optional["Type"]) -> str: def restify(cls: Optional[Type]) -> str:
"""Convert python class to a reST reference.""" """Convert python class to a reST reference."""
from sphinx.util import inspect # lazy loading from sphinx.util import inspect # lazy loading
@ -128,7 +128,7 @@ def restify(cls: Optional["Type"]) -> str:
return _restify_py36(cls) return _restify_py36(cls)
def _restify_py37(cls: Optional["Type"]) -> str: def _restify_py37(cls: Optional[Type]) -> str:
"""Convert python class to a reST reference.""" """Convert python class to a reST reference."""
from sphinx.util import inspect # lazy loading from sphinx.util import inspect # lazy loading
@ -183,7 +183,7 @@ def _restify_py37(cls: Optional["Type"]) -> str:
return ':obj:`%s.%s`' % (cls.__module__, cls.__name__) return ':obj:`%s.%s`' % (cls.__module__, cls.__name__)
def _restify_py36(cls: Optional["Type"]) -> str: def _restify_py36(cls: Optional[Type]) -> str:
module = getattr(cls, '__module__', None) module = getattr(cls, '__module__', None)
if module == 'typing': if module == 'typing':
if getattr(cls, '_name', None): if getattr(cls, '_name', None):