Parse package names from functions in setup.py

- Upstream update to parse package names from unresolveable function
  calls in `setup.py`
- Fixes #4292

Signed-off-by: Dan Ryan <dan.ryan@canonical.com>
This commit is contained in:
Dan Ryan
2020-06-01 15:22:42 -04:00
parent 193a692ff1
commit d58f578781
5 changed files with 24 additions and 2 deletions
+1
View File
@@ -0,0 +1 @@
Fixed an issue with resolving packages with names defined by function calls in ``setup.py``.
+1
View File
@@ -0,0 +1 @@
Updated requirementslib to version ``1.5.11``.
+1 -1
View File
@@ -10,7 +10,7 @@ from .models.lockfile import Lockfile
from .models.pipfile import Pipfile
from .models.requirements import Requirement
__version__ = "1.5.10"
__version__ = "1.5.11"
logger = logging.getLogger(__name__)
+20
View File
@@ -974,6 +974,16 @@ class Analyzer(ast.NodeVisitor):
keys = list(setup.keys())
if len(keys) == 1 and keys[0] is None:
_, setup = setup.popitem()
keys = list(setup.keys())
for k in keys:
# XXX: Remove unresolved functions from the setup dictionary
if isinstance(setup[k], dict):
if not setup[k]:
continue
key = next(iter(setup[k].keys()))
val = setup[k][key]
if key in function_names and val is None or val == {}:
setup.pop(k)
return setup
@@ -1204,6 +1214,16 @@ def ast_parse_setup_py(path):
keys = list(setup.keys())
if len(keys) == 1 and keys[0] is None:
_, setup = setup.popitem()
keys = list(setup.keys())
for k in keys:
# XXX: Remove unresolved functions from the setup dictionary
if isinstance(setup[k], dict):
if not setup[k]:
continue
key = next(iter(setup[k].keys()))
val = setup[k][key]
if key in function_names and val is None or val == {}:
setup.pop(k)
return setup
+1 -1
View File
@@ -26,7 +26,7 @@ requests==2.23.0
idna==2.9
urllib3==1.25.9
certifi==2020.4.5.1
requirementslib==1.5.10
requirementslib==1.5.11
attrs==19.3.0
distlib==0.3.0
packaging==20.3