in kernel-abi-check/src/main.rs [108:137]
fn print_python_abi_violations(violations: &BTreeSet<PythonAbiViolation>, python_abi: &Version) {
if !violations.is_empty() {
let newer_abi3_symbols = violations
.iter()
.filter(|v| matches!(v, PythonAbiViolation::IncompatibleAbi3Symbol { .. }))
.collect::<BTreeSet<_>>();
let non_abi3_symbols = violations
.iter()
.filter(|v| matches!(v, PythonAbiViolation::NonAbi3Symbol { .. }))
.collect::<BTreeSet<_>>();
if !newer_abi3_symbols.is_empty() {
eprintln!("\n⛔ Symbols >= Python ABI {python_abi} found:\n",);
for violation in newer_abi3_symbols {
if let PythonAbiViolation::IncompatibleAbi3Symbol { name, added } = violation {
eprintln!("{name}: {added}");
}
}
}
if !non_abi3_symbols.is_empty() {
eprintln!("\n⛔ Non-ABI3 symbols found:\n");
for violation in &non_abi3_symbols {
if let PythonAbiViolation::NonAbi3Symbol { name } = violation {
eprintln!("{name}");
}
}
}
}
}