Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/packagedcode/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,14 +163,14 @@ def parse(cls, location, package_only=False):
args = {}
for kw in statement.value.keywords:
arg_name = kw.arg
if isinstance(kw.value, ast.Str):
args[arg_name] = kw.value.s
if isinstance(kw.value, ast.Constant) and isinstance(kw.value.value, str):
args[arg_name] = kw.value.value

if isinstance(kw.value, ast.List):
# We collect the elements of a list if the element is
# not a function call
args[arg_name] = [
elt.s for elt in kw.value.elts
elt.value for elt in kw.value.elts
if not isinstance(elt, ast.Call)
]
if args:
Expand Down Expand Up @@ -351,17 +351,17 @@ def parse(cls, location, package_only=True):
statement_keys = statement.value.keys
statement_values = statement.value.values
for statement_k, statement_v in zip(statement_keys, statement_values):
if isinstance(statement_k, ast.Str):
key_name = statement_k.s
if isinstance(statement_k, ast.Constant) and isinstance(statement_k.value, str):
key_name = statement_k.value
# The list values in a `METADATA.bzl` file seem to only contain strings
if isinstance(statement_v, ast.List):
value = []
for e in statement_v.elts:
if not isinstance(e, ast.Str):
if not (isinstance(e, ast.Constant) and isinstance(e.value, str)):
continue
value.append(e.s)
if isinstance(statement_v, (ast.Str, ast.Constant)):
value = statement_v.s
value.append(e.value)
if isinstance(statement_v, ast.Constant):
value = statement_v.value
metadata_fields[key_name] = value

parties = []
Expand Down
8 changes: 4 additions & 4 deletions src/packagedcode/pypi.py
Original file line number Diff line number Diff line change
Expand Up @@ -2157,8 +2157,8 @@ def get_setup_py_args_legacy(location, include_not_parsable=False):
]
values.append(val)

elif isinstance(val, (ast.Str, ast.Constant,)):
values.append(val.s)
elif isinstance(val, ast.Constant):
values.append(val.value)

else:
if include_not_parsable:
Expand All @@ -2183,8 +2183,8 @@ def get_setup_py_args_legacy(location, include_not_parsable=False):
mapping = dict(zip(keys, values))
setup_args[arg_name] = mapping

elif isinstance(arg_value, (ast.Str, ast.Constant,)):
setup_args[arg_name] = arg_value.s
elif isinstance(arg_value, ast.Constant):
setup_args[arg_name] = arg_value.value
else:
if include_not_parsable:
if isinstance(arg_value, ast.Attribute):
Expand Down
10 changes: 2 additions & 8 deletions src/packagedcode/pypi_setup_py.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,15 +119,9 @@ def node_to_value(node, body):
"""
if node is None:
return
if hasattr(ast, 'Constant'):
if isinstance(node, ast.Constant):
return node.value

if isinstance(node, ast.Str):
return node.s

if isinstance(node, ast.Num):
return node.n
if isinstance(node, ast.Constant):
return node.value

if isinstance(node, (ast.List, ast.Tuple, ast.Set,)):
return [node_to_value(subnode, body) for subnode in node.elts]
Expand Down