Skip to content

Commit

Permalink
Add new license rule model attributes
Browse files Browse the repository at this point in the history
To the license Rule class:

- Adds is_license_clue attribute
- Adds is_deprecated attribute

Also implements related processing.

Signed-off-by: Ayan Sinha Mahapatra <[email protected]>
  • Loading branch information
AyanSinhaMahapatra committed Jul 20, 2023
1 parent b1ad02f commit 84831f3
Show file tree
Hide file tree
Showing 9 changed files with 164 additions and 45 deletions.
126 changes: 84 additions & 42 deletions etc/scripts/licenses/buildrules-template.txt

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions etc/scripts/licenses/buildrules.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ def cli(licenses_file):
base_name = "false-positive"
elif rule.is_license_intro:
base_name = "license-intro"
elif rule.is_license_clue:
base_name = "license-clue"
else:
base_name = rule.license_expression

Expand Down
2 changes: 2 additions & 0 deletions etc/scripts/licenses/report_license_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@
"is_license_tag",
"is_license_reference",
"is_license_intro",
"is_license_clue",
"is_deprecated",
"has_unknown",
"only_known_words",
"notes",
Expand Down
48 changes: 46 additions & 2 deletions src/licensedcode/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1189,7 +1189,12 @@ def get_license_tokens():
yield 'licensed'


def load_rules(rules_data_dir=rules_data_dir, with_checks=True, is_builtin=True):
def load_rules(
rules_data_dir=rules_data_dir,
with_checks=True,
is_builtin=True,
ignore_deprecated=True,
):
"""
Return an iterable of rules loaded from rule files in ``rules_data_dir``.
Optionally check for consistency if ``with_checks`` is True.
Expand All @@ -1211,7 +1216,12 @@ def load_rules(rules_data_dir=rules_data_dir, with_checks=True, is_builtin=True)
space_problems.append(rule_file)

try:
yield Rule.from_file(rule_file=rule_file)
rule = Rule.from_file(rule_file=rule_file)
if rule.is_deprecated and ignore_deprecated:
continue
else:
yield rule

except Exception as re:
if with_checks:
model_errors.append(str(re))
Expand Down Expand Up @@ -1387,6 +1397,22 @@ class BasicRule:
'after. Mutually exclusive from any other is_license_* flag')
)

is_license_clue = attr.ib(
default=False,
repr=False,
metadata=dict(
help='True if this is rule text is a clue to a license '
'but cannot be considered in a proper license detection '
'as a license text/notice/reference/tag/intro as it is'
'merely a clue and does not actually point to or refer to '
'the actual license directly. This is still valuable information '
'useful in determining the license/origin of a file, but this '
'should not be summarized/present in the license expression for '
'a package or a file, nor its list of license detections. '
'considered in the context of the detection that it precedes. '
'Mutually exclusive from any other is_license_* flag')
)

is_false_positive = attr.ib(
default=False,
repr=False,
Expand Down Expand Up @@ -1505,6 +1531,19 @@ class BasicRule:
'built at runtime, such as an SPDX license rule.')
)

is_deprecated = attr.ib(
default=False,
repr=False,
metadata=dict(
help='Flag set to True if this rule is deleted, '
'and not to be used anymore in license detection. '
'This happens usually when a rule is renamed/assigned '
'to a seperate license-expression, promoted to being a '
'license text or just plain retired. This is used to '
'preserve the link to the rule, and therefore make links '
'to rules as permanent.')
)

###########################################################################
# lists of clues that can be ignored when detected in this license as they
# are part of the license or rule text itself
Expand Down Expand Up @@ -1769,6 +1808,7 @@ def validate(self, licensing=None, thorough=False):
self.is_license_reference,
self.is_license_tag,
self.is_license_intro,
self.is_license_clue,
)

has_license_flags = any(license_flags)
Expand Down Expand Up @@ -1924,6 +1964,7 @@ def to_reference(self):
data['is_license_reference'] = self.is_license_reference
data['is_license_tag'] = self.is_license_tag
data['is_license_intro'] = self.is_license_intro
data['is_license_clue'] = self.is_license_clue
data['is_continuous'] = self.is_continuous
data['is_builtin'] = self.is_builtin
data['is_from_license'] = self.is_from_license
Expand Down Expand Up @@ -1961,6 +2002,7 @@ def to_dict(self, include_text=False):
'is_license_reference',
'is_license_tag',
'is_license_intro',
'is_license_clue',
'is_continuous',
)

Expand Down Expand Up @@ -2253,7 +2295,9 @@ def load(self, rule_file, with_checks=True):
self.is_license_tag = data.get('is_license_tag', False)
self.is_license_reference = data.get('is_license_reference', False)
self.is_license_intro = data.get('is_license_intro', False)
self.is_license_clue = data.get('is_license_clue', False)
self.is_continuous = data.get('is_continuous', False)
self.is_deprecated = data.get('is_deprecated', False)

self.referenced_filenames = data.get('referenced_filenames', []) or []

Expand Down
2 changes: 1 addition & 1 deletion src/packagedcode/jar_manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ def dget(s):
name = i_title or am_nm or ext_nm or nm
descriptions = [s_title, i_title, nm]

datasource_id =get_datasource_id(package_type=package_type)
datasource_id = get_datasource_id(package_type=package_type)

descriptions = unique(descriptions)
descriptions = [d for d in descriptions if d and d.strip() and d != name]
Expand Down
2 changes: 2 additions & 0 deletions src/summarycode/score.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ class LicenseFilter(object):
is_license_tag=LicenseFilter(min_coverage=100),
is_license_reference=LicenseFilter(min_score=50, min_coverage=100),
is_license_intro=LicenseFilter(min_score=100, min_coverage=100),
is_license_clue=LicenseFilter(min_score=100, min_coverage=100),
)


Expand All @@ -268,6 +269,7 @@ def is_good_license(license_match_object):
('is_license_reference', license_match_object.rule.is_license_reference),
('is_license_tag', license_match_object.rule.is_license_tag),
('is_license_intro', license_match_object.rule.is_license_intro),
('is_license_clue', license_match_object.rule.is_license_clue),
]
)
matched = False
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -669,6 +670,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -695,6 +697,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -721,6 +724,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": true,
Expand All @@ -747,6 +751,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -773,6 +778,7 @@
"is_license_reference": true,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -799,6 +805,7 @@
"is_license_reference": true,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -825,6 +832,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": true,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -851,6 +859,7 @@
"is_license_reference": true,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -877,6 +886,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down Expand Up @@ -905,6 +915,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down Expand Up @@ -941,6 +952,7 @@
"is_license_reference": true,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -967,6 +979,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": true,
Expand All @@ -993,6 +1006,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down Expand Up @@ -1030,6 +1044,7 @@
"is_license_reference": true,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down Expand Up @@ -1058,6 +1073,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -1084,6 +1100,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": true,
Expand Down Expand Up @@ -1120,6 +1137,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": true,
Expand Down Expand Up @@ -1150,6 +1168,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down Expand Up @@ -317,6 +318,7 @@
"is_license_reference": false,
"is_license_tag": true,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": true,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -343,6 +345,7 @@
"is_license_reference": false,
"is_license_tag": true,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -369,6 +372,7 @@
"is_license_reference": false,
"is_license_tag": true,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@
"is_license_reference": false,
"is_license_tag": false,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down Expand Up @@ -314,6 +315,7 @@
"is_license_reference": false,
"is_license_tag": true,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": true,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -340,6 +342,7 @@
"is_license_reference": false,
"is_license_tag": true,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand All @@ -366,6 +369,7 @@
"is_license_reference": false,
"is_license_tag": true,
"is_license_intro": false,
"is_license_clue": false,
"is_continuous": false,
"is_builtin": true,
"is_from_license": false,
Expand Down

0 comments on commit 84831f3

Please sign in to comment.