forked from pool/rpmlint
58 lines
1.6 KiB
Diff
58 lines
1.6 KiB
Diff
|
--- Config.py
|
||
|
+++ Config.py
|
||
|
@@ -115,6 +115,8 @@
|
||
|
# List of filters
|
||
|
_filters = []
|
||
|
_filters_re = None
|
||
|
+_filters_except = []
|
||
|
+_filters_except_re = None
|
||
|
|
||
|
def addFilter(s):
|
||
|
global _filters
|
||
|
@@ -137,8 +139,14 @@
|
||
|
_scoring = {}
|
||
|
|
||
|
def setBadness(s, score):
|
||
|
+ global _scoring
|
||
|
_scoring[s] = score
|
||
|
|
||
|
+def setFilterException(s):
|
||
|
+ global _filters_except
|
||
|
+
|
||
|
+ _filters_except.append(s)
|
||
|
+
|
||
|
def badness(s):
|
||
|
return _scoring.get(s, 0)
|
||
|
|
||
|
@@ -146,6 +154,8 @@
|
||
|
def isFiltered(s):
|
||
|
global _filters
|
||
|
global _filters_re
|
||
|
+ global _filters_except
|
||
|
+ global _filters_except_re
|
||
|
|
||
|
if _filters_re == None:
|
||
|
# no filter
|
||
|
@@ -162,7 +172,21 @@
|
||
|
_filters_re = _filters_re + '|(?:' + _filters[idx] +')'
|
||
|
_filters_re = re.compile(_filters_re)
|
||
|
|
||
|
+ if _filters_except_re == None and len(_filters_except):
|
||
|
+ _filters_except_re = '(?:' + _filters_except[0] + ')'
|
||
|
+
|
||
|
+ for idx in range(1, len(_filters_except)):
|
||
|
+ # to prevent named group overflow that happen when there is too
|
||
|
+ # many () in a single regexp: AssertionError: sorry, but this
|
||
|
+ # version only supports 100 named groups
|
||
|
+ if '(' in _filters_except[idx]:
|
||
|
+ _non_named_group_re.subn('(:?', _filters_except[idx])
|
||
|
+ _filters_except_re = _filters_except_re + '|(?:' + _filters_except[idx] +')'
|
||
|
+ _filters_except_re = re.compile(_filters_except_re)
|
||
|
+
|
||
|
if not no_exception:
|
||
|
+ if _filters_except_re and _filters_except_re.search(s):
|
||
|
+ return False
|
||
|
if _filters_re.search(s):
|
||
|
return True
|
||
|
return False
|