diff --git a/python/src/META-INF/python-plugin-common.xml b/python/src/META-INF/python-plugin-common.xml
index 729da5b1ad1f..7fd6a1edc452 100644
--- a/python/src/META-INF/python-plugin-common.xml
+++ b/python/src/META-INF/python-plugin-common.xml
@@ -282,6 +282,7 @@
+
@@ -298,6 +299,7 @@
+
diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java
index 15ea0fbc50ab..2b962b902d30 100644
--- a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java
+++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java
@@ -10,6 +10,7 @@ import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
+import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.ResolveResult;
@@ -219,8 +220,17 @@ class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor {
}
void registerProblems() {
+ final UnusedLocalFilter[] filters = Extensions.getExtensions(UnusedLocalFilter.EP_NAME);
// Register problems
for (PsiElement element : myUnusedElements) {
+ boolean ignoreUnused = false;
+ for (UnusedLocalFilter filter : filters) {
+ if (filter.ignoreUnused(element)) {
+ ignoreUnused = true;
+ }
+ }
+ if (ignoreUnused) continue;
+
// Local function
if (element instanceof PyFunction){
registerWarning(((PyFunction)element).getNameIdentifier(),
diff --git a/python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java b/python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java
new file mode 100644
index 000000000000..e977fac541d7
--- /dev/null
+++ b/python/src/com/jetbrains/python/inspections/UnusedLocalFilter.java
@@ -0,0 +1,13 @@
+package com.jetbrains.python.inspections;
+
+import com.intellij.openapi.extensions.ExtensionPointName;
+import com.intellij.psi.PsiElement;
+
+/**
+ * @author yole
+ */
+public interface UnusedLocalFilter {
+ ExtensionPointName EP_NAME = ExtensionPointName.create("Pythonid.unusedLocalFilter");
+
+ boolean ignoreUnused(PsiElement local);
+}