in bowler/imr.py [0:0]
def explode(self, is_def: bool, prefix: str = "") -> List[LN]:
result: List[LN] = []
prefix = self.prefix if self.prefix else prefix
if is_def:
if self.star:
self.star.prefix = prefix
result.append(self.star)
prefix = ""
if self.annotation:
result.append(
Node(
SYMBOL.tname,
[
Name(self.name, prefix=prefix),
Leaf(TOKEN.COLON, ":", prefix=""),
Name(self.annotation, prefix=" "),
],
prefix=prefix,
)
)
else:
result.append(Name(self.name, prefix=prefix))
if self.value:
space = " " if self.annotation else ""
result.append(Leaf(TOKEN.EQUAL, "=", prefix=space))
result.append(self.value)
else:
if self.star:
if self.star.type == TOKEN.STAR:
node = Node(SYMBOL.star_expr, [self.star], prefix=prefix)
elif self.star.type == TOKEN.DOUBLESTAR:
node = Node(SYMBOL.argument, [self.star], prefix=prefix)
if self.value:
self.value.prefix = ""
node.append_child(self.value)
result.append(node)
return result
if self.name:
self.value.prefix = ""
result.append(
Node(
SYMBOL.argument,
[
Name(self.name, prefix=prefix),
Leaf(TOKEN.EQUAL, value="=", prefix=""),
self.value,
],
prefix=prefix,
)
)
else:
self.value.prefix = prefix
result.append(self.value)
return result