Skip to content

Commit 0d8fba9

Browse files
Modify license references to also effect clues
Signed-off-by: Ayan Sinha Mahapatra <ayansmahapatra@gmail.com>
1 parent 8edfb92 commit 0d8fba9

File tree

4 files changed

+1621
-21
lines changed

4 files changed

+1621
-21
lines changed

src/licensedcode/plugin_licenses_reference.py

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,12 @@ def process_codebase(self, codebase, licenses_reference, **kwargs):
105105
)
106106

107107
license_detections = getattr(resource, 'license_detections', []) or []
108+
license_clues = getattr(resource, 'license_clues', []) or []
108109
rules_data.extend(
109-
get_license_rules_reference_data(license_detections=license_detections)
110+
get_license_rules_reference_data(
111+
license_detections=license_detections,
112+
license_clues=license_clues,
113+
)
110114
)
111115

112116
codebase.save_resource(resource)
@@ -157,7 +161,7 @@ def get_unique_rule_references(rules_data):
157161
return rules_references
158162

159163

160-
def get_license_rules_reference_data(license_detections):
164+
def get_license_rules_reference_data(license_detections, license_clues=None):
161165
"""
162166
Get Rule data for references from a list of LicenseDetections.
163167
@@ -168,30 +172,27 @@ def get_license_rules_reference_data(license_detections):
168172
rule_identifiers = set()
169173
rules_reference_data = []
170174

171-
for detection in license_detections:
172-
if not detection:
173-
continue
175+
if license_detections:
174176

175-
for match in detection['matches']:
177+
for detection in license_detections:
178+
if not detection:
179+
continue
176180

177-
rule_identifier = match['rule_identifier']
181+
for match in detection['matches']:
178182

179-
ref_data = {}
180-
ref_data['license_expression'] = match['license_expression']
181-
ref_data['rule_identifier'] = rule_identifier
182-
ref_data['referenced_filenames'] = match.pop('referenced_filenames')
183-
ref_data['is_license_text'] = match.pop('is_license_text')
184-
ref_data['is_license_notice'] = match.pop('is_license_notice')
185-
ref_data['is_license_reference'] = match.pop('is_license_reference')
186-
ref_data['is_license_tag'] = match.pop('is_license_tag')
187-
ref_data['is_license_intro'] = match.pop('is_license_intro')
188-
ref_data['rule_length'] = match.pop('rule_length')
189-
ref_data['rule_relevance'] = match.pop('rule_relevance')
183+
rule_identifier = match['rule_identifier']
184+
ref_data = get_reference_data(match)
190185

191-
if 'matched_text' in match:
192-
ref_data['matched_text'] = match.pop('matched_text')
186+
if rule_identifier not in rule_identifiers:
187+
rule_identifiers.update(rule_identifier)
188+
rules_reference_data.append(ref_data)
189+
190+
if license_clues:
193191

194-
_ = match.pop('licenses')
192+
for match in license_clues:
193+
194+
rule_identifier = match['rule_identifier']
195+
ref_data = get_reference_data(match)
195196

196197
if rule_identifier not in rule_identifiers:
197198
rule_identifiers.update(rule_identifier)
@@ -200,6 +201,28 @@ def get_license_rules_reference_data(license_detections):
200201
return rules_reference_data
201202

202203

204+
def get_reference_data(match):
205+
206+
ref_data = {}
207+
ref_data['license_expression'] = match['license_expression']
208+
ref_data['rule_identifier'] = match['rule_identifier']
209+
ref_data['referenced_filenames'] = match.pop('referenced_filenames')
210+
ref_data['is_license_text'] = match.pop('is_license_text')
211+
ref_data['is_license_notice'] = match.pop('is_license_notice')
212+
ref_data['is_license_reference'] = match.pop('is_license_reference')
213+
ref_data['is_license_tag'] = match.pop('is_license_tag')
214+
ref_data['is_license_intro'] = match.pop('is_license_intro')
215+
ref_data['rule_length'] = match.pop('rule_length')
216+
ref_data['rule_relevance'] = match.pop('rule_relevance')
217+
218+
if 'matched_text' in match:
219+
ref_data['matched_text'] = match.pop('matched_text')
220+
221+
_ = match.pop('licenses')
222+
223+
return ref_data
224+
225+
203226
def get_license_detection_references(license_detections_by_path):
204227
"""
205228
Get LicenseDetection data for references from a mapping of path:[LicenseDetection],

0 commit comments

Comments
 (0)