commit: 8b44b6914fe01ed042a7e725f7bf6ad3cfd036a8
Author: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 8 12:59:21 2022 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Sat Oct 8 19:06:28 2022 +0000
URL:
https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=8b44b691
PythonWrongUsageCheck: fix for `python_gen_cond_dep`
Classes inheriting python-single-r1 should use python_gen_cond_dep
instead of python_gen_any_dep. This commit fixes the issue. This also
fixes for distutils-r1 with single mode on.
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcheck/checks/python.py | 29 ++++++++++++++--------
.../expected.json | 10 ++++----
.../expected.json | 8 +++---
.../expected.json | 4 +--
4 files changed, 30 insertions(+), 21 deletions(-)
diff --git a/src/pkgcheck/checks/python.py b/src/pkgcheck/checks/python.py
index d96cb287..9bfa0bad 100644
--- a/src/pkgcheck/checks/python.py
+++ b/src/pkgcheck/checks/python.py
@@ -551,7 +551,7 @@ class
PythonAnyMismatchedDepHasVersionCheck(results.VersionResult, results.Warni
@property
def desc(self):
use_flags = ', '.join(map(str, self.use_flags))
- return f'{self.dep_category}: missing check for
{self.dep_atom}[{use_flags}] in {self.location}'
+ return f'{self.dep_category}: missing check for
{self.dep_atom}[{use_flags}] in {self.location!r}'
class PythonWrongUsageCheck(Check):
@@ -581,6 +581,12 @@ class PythonWrongUsageCheck(Check):
'python_has_version': 'BDEPEND',
}
+ eclass_any_dep_func = {
+ 'python-single-r1': 'python_gen_cond_dep',
+ 'python-any-r1': 'python_gen_any_dep',
+ 'python-r1': 'python_gen_any_dep',
+ }
+
@staticmethod
def _prepare_deps(deps: str):
try:
@@ -591,26 +597,26 @@ class PythonWrongUsageCheck(Check):
return ()
- def build_python_gen_any_dep_calls(self, pkg):
+ def build_python_gen_any_dep_calls(self, pkg, any_dep_func):
check_deps = defaultdict(set)
for var_node in pkg.global_query(bash.var_assign_query):
name = pkg.node_str(var_node.child_by_field_name('name'))
if name in {'DEPEND', 'BDEPEND'}:
for call_node, _ in bash.cmd_query.captures(var_node):
call_name =
pkg.node_str(call_node.child_by_field_name('name'))
- if call_name == "python_gen_any_dep" and
len(call_node.children) > 1:
+ if call_name == any_dep_func and len(call_node.children) >
1:
check_deps[name].update(self._prepare_deps(
pkg.node_str(call_node.children[1])))
return {dep: frozenset(atoms) for dep, atoms in check_deps.items()}
- def report_mismatch_check_deps(self, pkg, python_check_deps,
has_version_checked_deps):
+ def report_mismatch_check_deps(self, pkg, python_check_deps,
has_version_checked_deps, any_dep_func):
for dep_type in frozenset(python_check_deps.keys()).union(
has_version_checked_deps.keys()):
extra = has_version_checked_deps[dep_type] -
python_check_deps.get(dep_type, set())
missing = python_check_deps.get(dep_type, set()) -
has_version_checked_deps[dep_type]
for diff, other, location in (
- (extra, missing, "python_check_deps"),
- (missing, extra, "python_gen_any_dep"),
+ (extra, missing, any_dep_func),
+ (missing, extra, "python_check_deps"),
):
for dep in diff:
dep_atom = str(dep.versioned_atom)
@@ -634,7 +640,7 @@ class PythonWrongUsageCheck(Check):
return 'DEPEND'
return dep_type
- def check_python_check_deps(self, pkg, func_node, python_check_deps):
+ def check_python_check_deps(self, pkg, func_node, python_check_deps,
any_dep_func):
has_version_checked_deps = defaultdict(set)
has_version_lines = set()
for node, _ in bash.cmd_query.captures(func_node):
@@ -661,11 +667,14 @@ class PythonWrongUsageCheck(Check):
if has_version_lines:
yield PythonHasVersionUsage(lines=sorted(has_version_lines),
pkg=pkg)
- yield from self.report_mismatch_check_deps(pkg, python_check_deps,
has_version_checked_deps)
+ yield from self.report_mismatch_check_deps(pkg, python_check_deps,
has_version_checked_deps, any_dep_func)
def feed(self, pkg):
- python_check_deps = self.build_python_gen_any_dep_calls(pkg)
+ if (python_eclass := get_python_eclass(pkg)) is None:
+ return
+ any_dep_func = self.eclass_any_dep_func[python_eclass]
+ python_check_deps = self.build_python_gen_any_dep_calls(pkg,
any_dep_func)
for func_node, _ in bash.func_query.captures(pkg.tree.root_node):
func_name = pkg.node_str(func_node.child_by_field_name('name'))
if func_name == "python_check_deps":
- yield from self.check_python_check_deps(pkg, func_node,
python_check_deps)
+ yield from self.check_python_check_deps(pkg, func_node,
python_check_deps, any_dep_func)
diff --git
a/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedDepHasVersionCheck/expected.json
b/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedDepHasVersionCheck/expected.json
index b23abc43..5bb14866 100644
---
a/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedDepHasVersionCheck/expected.json
+++
b/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedDepHasVersionCheck/expected.json
@@ -1,6 +1,6 @@
{"__class__": "PythonHasVersionUsage", "category": "PythonWrongUsageCheck",
"package": "PythonAnyMismatchedDepHasVersionCheck", "version": "0", "lines":
[35, 36]}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/flit_core",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "DEPEND", "dep_atom": "dev-python/flit_core",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "DEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "RDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/flit_core",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "DEPEND", "dep_atom": "dev-python/flit_core",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "DEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedDepHasVersionCheck",
"version": "0", "dep_category": "RDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
diff --git
a/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedUseHasVersionCheck/expected.json
b/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedUseHasVersionCheck/expected.json
index e718bb83..1bc290bf 100644
---
a/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedUseHasVersionCheck/expected.json
+++
b/testdata/data/repos/python/PythonWrongUsageCheck/PythonAnyMismatchedUseHasVersionCheck/expected.json
@@ -1,4 +1,4 @@
-{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/gpep517",
"use_flags": ["xml"], "location": "python_gen_any_dep"}
-{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["threads"], "location": "python_check_deps"}
-{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "1", "dep_category": "BDEPEND", "dep_atom": "dev-python/flit",
"use_flags": ["threads"], "location": "python_gen_any_dep"}
-{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "1", "dep_category": "BDEPEND", "dep_atom": "dev-python/gpep517",
"use_flags": ["xml"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/gpep517",
"use_flags": ["xml"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["threads"], "location": "python_gen_any_dep"}
+{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "1", "dep_category": "BDEPEND", "dep_atom": "dev-python/flit",
"use_flags": ["threads"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedUseHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonAnyMismatchedUseHasVersionCheck",
"version": "1", "dep_category": "BDEPEND", "dep_atom": "dev-python/gpep517",
"use_flags": ["xml"], "location": "python_gen_any_dep"}
diff --git
a/testdata/data/repos/python/PythonWrongUsageCheck/PythonHasVersionMissingPythonUseDep/expected.json
b/testdata/data/repos/python/PythonWrongUsageCheck/PythonHasVersionMissingPythonUseDep/expected.json
index 130abd04..515ee14b 100644
---
a/testdata/data/repos/python/PythonWrongUsageCheck/PythonHasVersionMissingPythonUseDep/expected.json
+++
b/testdata/data/repos/python/PythonWrongUsageCheck/PythonHasVersionMissingPythonUseDep/expected.json
@@ -1,5 +1,5 @@
{"__class__": "PythonHasVersionMissingPythonUseDep", "category":
"PythonWrongUsageCheck", "package": "PythonHasVersionMissingPythonUseDep",
"version": "0", "line": "dev-python/lxml", "lineno": 25}
{"__class__": "PythonHasVersionMissingPythonUseDep", "category":
"PythonWrongUsageCheck", "package": "PythonHasVersionMissingPythonUseDep",
"version": "0", "line": "dev-python/gpep517", "lineno": 26}
{"__class__": "PythonHasVersionUsage", "category": "PythonWrongUsageCheck",
"package": "PythonHasVersionMissingPythonUseDep", "version": "0", "lines": [25]}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonHasVersionMissingPythonUseDep",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/gpep517",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
-{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonHasVersionMissingPythonUseDep",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_gen_any_dep"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonHasVersionMissingPythonUseDep",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/gpep517",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}
+{"__class__": "PythonAnyMismatchedDepHasVersionCheck", "category":
"PythonWrongUsageCheck", "package": "PythonHasVersionMissingPythonUseDep",
"version": "0", "dep_category": "BDEPEND", "dep_atom": "dev-python/lxml",
"use_flags": ["${PYTHON_USEDEP}"], "location": "python_check_deps"}