Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def convert_del_stmt(config: ParserConfig, children: Sequence[Any]) -> Any:
(del_name, exprlist) = children
return WithLeadingWhitespace(
Del(
target=exprlist.value,
whitespace_after_del=parse_simple_whitespace(
config, del_name.whitespace_after
),
),
del_name.whitespace_before,
)
elif parameters.params:
if parameters.params[-1].comma == MaybeSentinel.DEFAULT:
parameters = parameters.with_changes(
params=(
*parameters.params[:-1],
parameters.params[-1].with_changes(
whitespace_after_param=colon.whitespace_before
),
)
)
# Colon doesn't own its own pre-whitespace now.
colon = colon.with_changes(whitespace_before=SimpleWhitespace(""))
# Return a lambda
return WithLeadingWhitespace(
Lambda(
whitespace_after_lambda=whitespace_after_lambda,
params=parameters,
body=test.value,
colon=colon,
),
lambdatoken.whitespace_before,
)
# So, walk the children moving the equals ownership back one and constructing a
# list of AssignTargets.
targets = []
for i in range(len(children) - 1):
target = children[i].value
equal = children[i + 1].equal
targets.append(
AssignTarget(
target=target,
whitespace_before_equal=equal.whitespace_before,
whitespace_after_equal=equal.whitespace_after,
)
)
return WithLeadingWhitespace(
Assign(targets=tuple(targets), value=children[-1].value),
children[0].whitespace_before,
)
*else_block,
) = children
if len(else_block) > 0:
(else_token, else_colon_token, else_suite) = else_block
orelse = Else(
leading_lines=parse_empty_lines(config, else_token.whitespace_before),
whitespace_before_colon=parse_simple_whitespace(
config, else_colon_token.whitespace_before
),
body=else_suite,
)
else:
orelse = None
return WithLeadingWhitespace(
For(
whitespace_after_for=parse_simple_whitespace(
config, for_token.whitespace_after
),
target=expr.value,
whitespace_before_in=parse_simple_whitespace(
config, in_token.whitespace_before
),
whitespace_after_in=parse_simple_whitespace(
config, in_token.whitespace_after
),
iter=test.value,
whitespace_before_colon=parse_simple_whitespace(
config, for_colon_token.whitespace_before
),
body=for_suite,
whitespace_before=parse_parenthesizable_whitespace(
config, rpar_tok.whitespace_before
)
)
if len(atoms) == 1:
# inner_atom is a _BaseParenthesizedNode
inner_atom = atoms[0].value
return WithLeadingWhitespace(
inner_atom.with_changes(
lpar=(lpar, *inner_atom.lpar), rpar=(*inner_atom.rpar, rpar)
),
lpar_tok.whitespace_before,
)
else:
return WithLeadingWhitespace(
Tuple((), lpar=(lpar,), rpar=(rpar,)), lpar_tok.whitespace_before
)
item_nodes.append(
with_item.with_changes(
comma=Comma(
whitespace_before=parse_parenthesizable_whitespace(
config, maybe_comma.whitespace_before
),
whitespace_after=parse_parenthesizable_whitespace(
config, maybe_comma.whitespace_after
),
)
)
)
else:
item_nodes.append(with_item)
return WithLeadingWhitespace(
With(
whitespace_after_with=parse_simple_whitespace(
config, with_token.whitespace_after
),
items=tuple(item_nodes),
whitespace_before_colon=parse_simple_whitespace(
config, colon_token.whitespace_before
),
body=suite,
),
with_token.whitespace_before,
)
config, comma_token.whitespace_after
)
if comma_token is not children[-1]
else SimpleWhitespace("")
),
)
if isinstance(expr_or_starred_element, StarredElement):
starred_element = expr_or_starred_element
elements.append(starred_element.with_changes(comma=comma))
else:
expr = expr_or_starred_element
elements.append(Element(value=expr, comma=comma))
# lpar/rpar are the responsibility of our parent
return WithLeadingWhitespace(
# pyre-ignore[29]: `Union[Type[List], Type[Set], Type[Tuple]]` is not a function.
sequence_type(elements, lpar=(), rpar=()),
children[0].whitespace_before,
)
def convert_nonlocal_stmt(config: ParserConfig, children: Sequence[Any]) -> Any:
(nonlocal_token, *names) = children
return WithLeadingWhitespace(
Nonlocal(
names=tuple(_construct_nameitems(config, names)),
whitespace_after_nonlocal=parse_simple_whitespace(
config, names[0].whitespace_before
),
),
nonlocal_token.whitespace_before,
)
def convert_yield_arg(
config: ParserConfig, children: typing.Sequence[typing.Any]
) -> typing.Any:
if len(children) == 1:
# Just a regular testlist, pass it up
(child,) = children
return child
else:
# Its a yield from
(from_token, test) = children
return WithLeadingWhitespace(
From(
item=test.value,
whitespace_after_from=parse_parenthesizable_whitespace(
config, test.whitespace_before
),
),
from_token.whitespace_before,
)
# after the final dot to be owned by the import token.
if len(import_relative.relative) > 0 and import_relative.module is None:
whitespace_before_import = import_relative.relative[-1].whitespace_after
relative = (
*import_relative.relative[:-1],
import_relative.relative[-1].with_changes(
whitespace_after=SimpleWhitespace("")
),
)
else:
whitespace_before_import = parse_simple_whitespace(
config, importtoken.whitespace_before
)
relative = import_relative.relative
return WithLeadingWhitespace(
ImportFrom(
whitespace_after_from=parse_simple_whitespace(
config, fromtoken.whitespace_after
),
relative=relative,
module=import_relative.module,
whitespace_before_import=whitespace_before_import,
whitespace_after_import=parse_simple_whitespace(
config, importtoken.whitespace_after
),
lpar=lpar,
names=names,
rpar=rpar,
),
fromtoken.whitespace_before,
)