@@ -90,7 +90,7 @@ def filter_ignorable_resource_clues(resource, rules_by_id):
9090 if hasattr (resource , 'holders' ):
9191 resource .holders = filtered .holders
9292 if hasattr (resource , 'copyrights' ):
93- resource .copyrights = filtered .copyrights
93+ resource .copyrights = filtered .copyrights
9494 return resource
9595
9696
@@ -191,6 +191,10 @@ def is_empty(clues):
191191 if clues :
192192 return not any ([
193193 clues .copyrights , clues .holders , clues .authors , clues .urls , clues .emails ])
194+ else :
195+ # The logic is reversed, so a false or None "clues" object returns None, which
196+ # is interpreted as False (i.e., the object is *not* empty).
197+ return True
194198
195199
196200def filter_ignorable_clues (detections , rules_by_id ):
@@ -205,7 +209,7 @@ def filter_ignorable_clues(detections, rules_by_id):
205209 no_detected_ignorables = not detections .copyrights and not detections .authors
206210
207211 ignorables = collect_ignorables (detections .licenses , rules_by_id )
208-
212+
209213 no_ignorables = not detections .licenses or is_empty (ignorables )
210214
211215 if TRACE :
@@ -220,36 +224,45 @@ def filter_ignorable_clues(detections, rules_by_id):
220224 attributes = detections .emails ,
221225 ignorables = ignorables .emails .union (
222226 detections .copyrights_as_ignorable ,
223- detections .authors_as_ignorable ),
224- value_key = 'email' ))
227+ detections .authors_as_ignorable ,
228+ ),
229+ value_key = 'email' ,
230+ ))
225231
226232 # discard redundant urls if ignorable or in a detected copyright or author
227233 urls = list (filter_values (
228234 attributes = detections .urls ,
229235 ignorables = ignorables .urls .union (
230236 detections .copyrights_as_ignorable ,
231- detections .authors_as_ignorable ),
232- value_key = 'url' , strip = '/' ))
237+ detections .authors_as_ignorable ,
238+ ),
239+ value_key = 'url' ,
240+ strip = '/' ,
241+ ))
233242
234243 # discard redundant authors if ignorable or in detected holders or copyrights
235244 authors = list (filter_values (
236245 attributes = detections .authors ,
237246 ignorables = ignorables .authors .union (
238247 detections .copyrights_as_ignorable ,
239- detections .holders_as_ignorable ),
240- value_key = 'value' ))
248+ detections .holders_as_ignorable ,
249+ ),
250+ value_key = 'value' ,
251+ ))
241252
242253 # discard redundant holders if ignorable
243254 holders = list (filter_values (
244255 attributes = detections .holders ,
245256 ignorables = ignorables .holders ,
246- value_key = 'value' ))
257+ value_key = 'value' ,
258+ ))
247259
248260 # discard redundant copyrights if ignorable
249261 copyrights = list (filter_values (
250262 attributes = detections .copyrights ,
251263 ignorables = ignorables .copyrights ,
252- value_key = 'value' ))
264+ value_key = 'value' ,
265+ ))
253266
254267 return Detections (
255268 copyrights = copyrights ,
@@ -277,22 +290,26 @@ def filter_values(attributes, ignorables, value_key='value', strip=''):
277290 el = item ['end_line' ]
278291 val = item [value_key ].strip (strip )
279292 ignored = False
293+
280294 if TRACE :
281295 logger_debug (' filter_values: ignorables:' , ignorables )
296+
282297 for ign in ignorables :
283298 if TRACE : logger_debug (' filter_values: ign:' , ign )
284299 if (ls in ign .lines_range or el in ign .lines_range ) and val in ign .value :
285300 ignored = True
286301 if TRACE : logger_debug (' filter_values: skipped' )
287302 break
303+
288304 if not ignored :
289305 yield item
290306
291307
292308def collect_ignorables (license_matches , rules_by_id ):
293309 """
294- Collect and return an ignorable Clues object built from `license_matches` matched licenses
295- which is the list of "licenses" objects returned in JSON results.
310+ Collect and return an ignorable Clues object built from `license_matches`
311+ matched licenses which is the list of "licenses" objects returned in JSON
312+ results.
296313
297314 The value of each ignorable list of clues is a set of (set of
298315 lines number, set of ignorable values). The return values is a mapping
@@ -356,6 +373,9 @@ def collect_ignorables(license_matches, rules_by_id):
356373 if ign_urls :
357374 urls .add (Ignorable (lines_range = lines_range , value = ign_urls ))
358375
376+ if TRACE :
377+ logger_debug (' collect_ignorables: rule:' , rule )
378+
359379 ignorables = Ignorables (
360380 copyrights = frozenset (copyrights ),
361381 holders = frozenset (holders ),
@@ -365,7 +385,6 @@ def collect_ignorables(license_matches, rules_by_id):
365385 )
366386
367387 if TRACE :
368- logger_debug (' collect_ignorables: rule:' , rule )
369388 logger_debug (' collect_ignorables: ignorables:' , ignorables )
370389
371390 return ignorables
0 commit comments