Merge pull request #9054 from tk0miya/refactor_docfields2

refactor: Lazy loading is not needed for type annotations
This commit is contained in:
Takeshi KOMIYA 2021-04-08 00:47:20 +09:00 committed by GitHub
commit 6781c66976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -15,11 +15,11 @@ from docutils import nodes
from docutils.nodes import Node from docutils.nodes import Node
from sphinx import addnodes from sphinx import addnodes
from sphinx.environment import BuildEnvironment
from sphinx.util.typing import TextlikeNode from sphinx.util.typing import TextlikeNode
if TYPE_CHECKING: if TYPE_CHECKING:
from sphinx.directive import ObjectDescription from sphinx.directive import ObjectDescription
from sphinx.environment import BuildEnvironment
def _is_single_paragraph(node: nodes.field_body) -> bool: def _is_single_paragraph(node: nodes.field_body) -> bool:
@ -62,7 +62,7 @@ class Field:
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)
refnode = addnodes.pending_xref('', refdomain=domain, refexplicit=False, refnode = addnodes.pending_xref('', refdomain=domain, refexplicit=False,
@ -74,14 +74,14 @@ class Field:
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)]
def make_entry(self, fieldarg: str, content: List[Node]) -> Tuple[str, List[Node]]: def make_entry(self, fieldarg: str, content: List[Node]) -> Tuple[str, List[Node]]:
return (fieldarg, content) return (fieldarg, content)
def make_field(self, types: Dict[str, List[Node]], domain: str, def make_field(self, types: Dict[str, List[Node]], domain: str,
item: Tuple, env: "BuildEnvironment" = None) -> nodes.field: item: Tuple, env: BuildEnvironment = None) -> nodes.field:
fieldarg, content = item fieldarg, content = item
fieldname = nodes.field_name('', self.label) fieldname = nodes.field_name('', self.label)
if fieldarg: if fieldarg:
@ -121,7 +121,7 @@ class GroupedField(Field):
self.can_collapse = can_collapse self.can_collapse = can_collapse
def make_field(self, types: Dict[str, List[Node]], domain: str, def make_field(self, types: Dict[str, List[Node]], domain: str,
items: Tuple, env: "BuildEnvironment" = None) -> nodes.field: items: Tuple, env: BuildEnvironment = None) -> nodes.field:
fieldname = nodes.field_name('', self.label) fieldname = nodes.field_name('', self.label)
listnode = self.list_type() listnode = self.list_type()
for fieldarg, content in items: for fieldarg, content in items:
@ -170,7 +170,7 @@ class TypedField(GroupedField):
self.typerolename = typerolename self.typerolename = typerolename
def make_field(self, types: Dict[str, List[Node]], domain: str, def make_field(self, types: Dict[str, List[Node]], domain: str,
items: Tuple, env: "BuildEnvironment" = None) -> nodes.field: items: Tuple, env: BuildEnvironment = None) -> nodes.field:
def handle_item(fieldarg: str, content: str) -> nodes.paragraph: def handle_item(fieldarg: str, content: str) -> nodes.paragraph:
par = nodes.paragraph() par = nodes.paragraph()
par.extend(self.make_xrefs(self.rolename, domain, fieldarg, par.extend(self.make_xrefs(self.rolename, domain, fieldarg,