Split some long type-checking annotation lines

This commit is contained in:
jfbu 2017-03-12 13:20:55 +01:00
parent bc0682af0e
commit 9d58a0b96c
2 changed files with 57 additions and 18 deletions

View File

@ -96,9 +96,15 @@ def _pseudo_parse_arglist(signode, arglist):
# This override allows our inline type specifiers to behave like :class: link # This override allows our inline type specifiers to behave like :class: link
# when it comes to handling "." and "~" prefixes. # when it comes to handling "." and "~" prefixes.
class PyXrefMixin(object): class PyXrefMixin(object):
def make_xref(self, rolename, domain, target, innernode=nodes.emphasis, def make_xref(self,
contnode=None, env=None): rolename, # type: unicode
# type: (unicode, unicode, unicode, nodes.Node, nodes.Node, BuildEnvironment) -> nodes.Node domain, # type: unicode
target, # type: unicode
innernode=nodes.emphasis, # type: nodes.Node
contnode=None, # type: nodes.Node
env=None, # type: BuildEnvironment
):
# type: (...) -> nodes.Node
result = super(PyXrefMixin, self).make_xref(rolename, domain, target, # type: ignore result = super(PyXrefMixin, self).make_xref(rolename, domain, target, # type: ignore
innernode, contnode, env) innernode, contnode, env)
result['refspecific'] = True result['refspecific'] = True
@ -113,9 +119,15 @@ class PyXrefMixin(object):
break break
return result return result
def make_xrefs(self, rolename, domain, target, innernode=nodes.emphasis, def make_xrefs(self,
contnode=None, env=None): rolename, # type: unicode
# type: (unicode, unicode, unicode, nodes.Node, nodes.Node, BuildEnvironment) -> List[nodes.Node] domain, # type: unicode
target, # type: unicode
innernode=nodes.emphasis, # type: nodes.Node
contnode=None, # type: nodes.Node
env=None, # type: BuildEnvironment
):
# type: (...) -> List[nodes.Node]
delims = r'(\s*[\[\]\(\),](?:\s*or\s)?\s*|\s+or\s+)' delims = r'(\s*[\[\]\(\),](?:\s*or\s)?\s*|\s+or\s+)'
delims_re = re.compile(delims) delims_re = re.compile(delims)
sub_targets = re.split(delims, target) sub_targets = re.split(delims, target)

View File

@ -62,9 +62,15 @@ class Field(object):
self.rolename = rolename self.rolename = rolename
self.bodyrolename = bodyrolename self.bodyrolename = bodyrolename
def make_xref(self, rolename, domain, target, def make_xref(self,
innernode=addnodes.literal_emphasis, contnode=None, env=None): rolename, # type: unicode
# type: (unicode, unicode, unicode, nodes.Node, nodes.Node, BuildEnvironment) -> nodes.Node domain, # type: unicode
target, # type: unicode
innernode=addnodes.literal_emphasis, # type: nodes.Node
contnode=None, # type: nodes.Node
env=None, # type: BuildEnvironment
):
# type: (...) -> nodes.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,17 +80,28 @@ class Field(object):
env.domains[domain].process_field_xref(refnode) env.domains[domain].process_field_xref(refnode)
return refnode return refnode
def make_xrefs(self, rolename, domain, target, def make_xrefs(self,
innernode=addnodes.literal_emphasis, contnode=None, env=None): rolename, # type: unicode
# type: (unicode, unicode, unicode, nodes.Node, nodes.Node, BuildEnvironment) -> List[nodes.Node] domain, # type: unicode
target, # type: unicode
innernode=addnodes.literal_emphasis, # type: nodes.Node
contnode=None, # type: nodes.Node
env=None, # type: BuildEnvironment
):
# type: (...) -> List[nodes.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, content): def make_entry(self, fieldarg, content):
# type: (List, unicode) -> Tuple[List, unicode] # type: (List, unicode) -> Tuple[List, unicode]
return (fieldarg, content) return (fieldarg, content)
def make_field(self, types, domain, item, env=None): def make_field(self,
# type: (Dict[unicode, List[nodes.Node]], unicode, Tuple, BuildEnvironment) -> nodes.field types, # type: Dict[unicode, List[nodes.Node]]
domain, # type: unicode
item, # type: Tuple
env=None, # type: BuildEnvironment
):
# type: (...) -> nodes.field
fieldarg, content = item fieldarg, content = item
fieldname = nodes.field_name('', self.label) fieldname = nodes.field_name('', self.label)
if fieldarg: if fieldarg:
@ -124,8 +141,13 @@ class GroupedField(Field):
Field.__init__(self, name, names, label, True, rolename) Field.__init__(self, name, names, label, True, rolename)
self.can_collapse = can_collapse self.can_collapse = can_collapse
def make_field(self, types, domain, items, env=None): def make_field(self,
# type: (Dict[unicode, List[nodes.Node]], unicode, Tuple, BuildEnvironment) -> nodes.field types, # type: Dict[unicode, List[nodes.Node]]
domain, # type: unicode
items, # type: Tuple
env=None, # type: BuildEnvironment
):
# type: (...) -> 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:
@ -172,8 +194,13 @@ class TypedField(GroupedField):
self.typenames = typenames self.typenames = typenames
self.typerolename = typerolename self.typerolename = typerolename
def make_field(self, types, domain, items, env=None): def make_field(self,
# type: (Dict[unicode, List[nodes.Node]], unicode, Tuple, BuildEnvironment) -> nodes.field types, # type: Dict[unicode, List[nodes.Node]]
domain, # type: unicode
items, # type: Tuple
env=None, # type: BuildEnvironment
):
# type: (...) -> nodes.field
def handle_item(fieldarg, content): def handle_item(fieldarg, content):
# type: (unicode, unicode) -> nodes.paragraph # type: (unicode, unicode) -> nodes.paragraph
par = nodes.paragraph() par = nodes.paragraph()