From 09fc9f0bf29f7c2455c1d162c7f9dc41833e18c9 Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 26 Feb 2026 14:42:40 +0000 Subject: [PATCH] Python: Port UnintentionalImport.ql No test changes. --- python/ql/src/Imports/UnintentionalImport.ql | 22 ++++++++------------ 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/python/ql/src/Imports/UnintentionalImport.ql b/python/ql/src/Imports/UnintentionalImport.ql index db1775a0d41..077d2688ea2 100644 --- a/python/ql/src/Imports/UnintentionalImport.ql +++ b/python/ql/src/Imports/UnintentionalImport.ql @@ -13,23 +13,19 @@ */ import python -private import LegacyPointsTo +private import semmle.python.dataflow.new.internal.ImportResolution private import semmle.python.types.ImportTime -predicate import_star(ImportStar imp, ModuleValue exporter) { - exporter.importedAs(imp.getImportedModuleName()) +predicate all_defined(Module exporter) { + exporter.(ImportTimeScope).definesName("__all__") + or + exporter.getInitModule().(ImportTimeScope).definesName("__all__") } -predicate all_defined(ModuleValue exporter) { - exporter.isBuiltin() - or - exporter.getScope().(ImportTimeScope).definesName("__all__") - or - exporter.getScope().getInitModule().(ImportTimeScope).definesName("__all__") -} - -from ImportStar imp, ModuleValue exporter -where import_star(imp, exporter) and not all_defined(exporter) and not exporter.isAbsent() +from ImportStar imp, Module exporter +where + exporter = ImportResolution::getModuleImportedByImportStar(imp) and + not all_defined(exporter) select imp, "Import pollutes the enclosing namespace, as the imported module $@ does not define '__all__'.", exporter, exporter.getName()