flict
Advanced tools
| Metadata-Version: 2.1 | ||
| Name: flict | ||
| Version: 1.2.8 | ||
| Version: 1.2.9 | ||
| Summary: FOSS License Compatibility Tool | ||
@@ -8,3 +8,3 @@ Home-page: https://github.com/vinland-technology/flict | ||
| Author-email: hesa@sandklef.com | ||
| License: UNKNOWN | ||
| License: GPL-3.0-or-later | ||
| Platform: UNKNOWN | ||
@@ -11,0 +11,0 @@ Classifier: Development Status :: 4 - Beta |
@@ -30,3 +30,3 @@ foss-flame~=0.19 | ||
| flake8-quotes~=3.4 | ||
| flake8-requirements~=2.0 | ||
| flake8-requirements~=2.1 | ||
| flake8-string-format~=0.3 | ||
@@ -33,0 +33,0 @@ flake8-variables-names==0.0.6 |
@@ -81,2 +81,4 @@ # SPDX-FileCopyrightText: 2021 Henrik Sandklef | ||
| commmon_defaults_group.add_argument('--licenses-allowed-file', '-laf', type=str, dest='licenses_allowed_file', help='', default=None) | ||
| commmon_defaults_group.add_argument('--licenses-preference-file', '-lpf', type=str, dest='licenses_preference_file', help='', default=None) | ||
@@ -83,0 +85,0 @@ |
@@ -19,3 +19,3 @@ # SPDX-FileCopyrightText: 2022 Henrik Sandklef | ||
| def __init__(self, license_db=None, licenses_preferences=None, denied_licenses=None, update_dual=True): | ||
| def __init__(self, license_db=None, licenses_preferences=None, denied_licenses=None, allowed_licenses=None, update_dual=True): | ||
| """Initializes Arbiter objects | ||
@@ -26,6 +26,7 @@ Parameters: | ||
| denied_licenses: licenses that cannot be used | ||
| allowed_licenses: licenses that are the only ones to be used | ||
| """ | ||
| self.update_dual = update_dual | ||
| self.license_compatibility = LicenseCompatibilty( | ||
| license_db=license_db, licenses_preferences=licenses_preferences, denied_licenses=denied_licenses, update_dual=update_dual) | ||
| license_db=license_db, licenses_preferences=licenses_preferences, denied_licenses=denied_licenses, allowed_licenses=allowed_licenses, update_dual=update_dual) | ||
@@ -36,2 +37,6 @@ def supported_licenses(self): | ||
| def license_allowed(self, lic): | ||
| """Return whether or not a license is allowed""" | ||
| return self.license_compatibility.license.license_allowed(lic) | ||
| def _verify_package(self, package, licenses): | ||
@@ -38,0 +43,0 @@ """Verifies a package's license to a list of outbounds and returns the |
@@ -32,3 +32,3 @@ ################################################################### | ||
| flict_version = "1.2.8" | ||
| flict_version = "1.2.9" | ||
@@ -35,0 +35,0 @@ SCRIPT_DIR = os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../")) |
@@ -21,4 +21,4 @@ # SPDX-FileCopyrightText: 2022 Henrik Sandklef | ||
| def __init__(self, license_db=None, licenses_preferences=None, denied_licenses=None, update_dual=True): | ||
| self.license = License(denied_licenses, update_dual) | ||
| def __init__(self, license_db=None, licenses_preferences=None, denied_licenses=None, allowed_licenses=None, update_dual=True): | ||
| self.license = License(denied_licenses, allowed_licenses, update_dual) | ||
@@ -25,0 +25,0 @@ self.compatibility = CompatibilityFactory.get_compatibility(license_db) |
@@ -26,4 +26,10 @@ # SPDX-FileCopyrightText: 2022 Henrik Sandklef | ||
| def __init__(self, denied_licenses, update_dual=True): | ||
| def __init__(self, denied_licenses, allowed_licenses, update_dual=True): | ||
| self._denied_licenses = denied_licenses | ||
| self._allowed_licenses = allowed_licenses | ||
| # Either denied or allower or none: OK | ||
| # Both: not OK, raise exception | ||
| if self._denied_licenses and self._allowed_licenses: | ||
| raise FlictError(ReturnCodes.RET_CONFLICT_LICENSE_LIST, 'You can only supply either of denied or allowed licenses, not both.') | ||
| self.parser = LicenseParserFactory.get_parser() | ||
@@ -50,5 +56,10 @@ self.update_dual = update_dual | ||
| def allowed_licenses(self): | ||
| return self._allowed_licenses | ||
| def license_denied(self, license_): | ||
| if self._denied_licenses: | ||
| return license_ in self._denied_licenses | ||
| if self._allowed_licenses: | ||
| return license_ not in self._allowed_licenses | ||
| return False | ||
@@ -55,0 +66,0 @@ |
@@ -33,2 +33,3 @@ ################################################################### | ||
| RET_INVALID_MATRIX = (14, "Invalid matrix or matrix extension") | ||
| RET_CONFLICT_LICENSE_LIST = (15, "Conflicting allowed/denied license lists") | ||
@@ -35,0 +36,0 @@ @classmethod |
+14
-7
@@ -44,15 +44,19 @@ ################################################################### | ||
| def suggest_outbound_candidate(self): | ||
| license_expression = self._args.license_expression | ||
| if self._args.extended_licenses: | ||
| licenses = self.arbiter.supported_licenses() | ||
| else: | ||
| licenses = self.arbiter.licenses(" ".join(self._args.license_expression)) | ||
| license_expression = self.arbiter.simplify_license(" ".join(self._args.license_expression))['simplified'] | ||
| licenses = self.arbiter.licenses(license_expression) | ||
| allowed_licenses = [x for x in licenses if self.arbiter.license_allowed(x)] | ||
| outbounds = [] | ||
| try: | ||
| for outbound in licenses: | ||
| compats = self.arbiter.inbounds_outbound_check(outbound, self._args.license_expression) | ||
| compat_status = compats['compatibility'] | ||
| if compat_status == "Yes": | ||
| for outbound in allowed_licenses: | ||
| compats = self.arbiter.inbounds_outbound_check(outbound, [license_expression]) | ||
| compat = compats['compatibility'] == 'Yes' | ||
| if compat: | ||
| outbounds.append(outbound) | ||
| elif compat_status == "No": | ||
| pass | ||
@@ -85,2 +89,3 @@ outbounds.sort() | ||
| licenses_denied_file = self._args.licenses_denied_file | ||
| licenses_allowed_file = self._args.licenses_allowed_file | ||
| licenses_preference_file = self._args.licenses_preference_file | ||
@@ -93,2 +98,3 @@ | ||
| licenses_denied = self._read_json_object(licenses_denied_file, "licenses_denied", []) | ||
| licenses_allowed = self._read_json_object(licenses_allowed_file, "licenses_allowed", []) | ||
| licenses_preferences = self._read_json_object(licenses_preference_file, "license_preferences", []) | ||
@@ -98,2 +104,3 @@ arbiter = Arbiter(license_db=self._args.license_matrix_file, | ||
| denied_licenses=licenses_denied, | ||
| allowed_licenses=licenses_allowed, | ||
| update_dual=not self._args.no_relicense) | ||
@@ -100,0 +107,0 @@ |
+2
-2
| Metadata-Version: 2.1 | ||
| Name: flict | ||
| Version: 1.2.8 | ||
| Version: 1.2.9 | ||
| Summary: FOSS License Compatibility Tool | ||
@@ -8,3 +8,3 @@ Home-page: https://github.com/vinland-technology/flict | ||
| Author-email: hesa@sandklef.com | ||
| License: UNKNOWN | ||
| License: GPL-3.0-or-later | ||
| Platform: UNKNOWN | ||
@@ -11,0 +11,0 @@ Classifier: Development Status :: 4 - Beta |
@@ -25,3 +25,3 @@ bump2version ~= 1.0 | ||
| flake8-quotes ~= 3.4 | ||
| flake8-requirements ~= 2.0 | ||
| flake8-requirements ~= 2.1 | ||
| flake8-string-format ~= 0.3 | ||
@@ -28,0 +28,0 @@ flake8-variables-names == 0.0.6 |
+2
-0
@@ -28,3 +28,5 @@ # SPDX-FileCopyrightText: 2021 Konrad Weihmann | ||
| license_files=('LICENSE',), | ||
| license='GPL-3.0-or-later', | ||
| url="https://github.com/vinland-technology/flict", | ||
| bugtrack_url="https://github.com/vinland-technology/flict/issues", | ||
| packages=['flict', 'flict.flictlib', 'flict.flictlib.format', 'flict.flictlib.project'], | ||
@@ -31,0 +33,0 @@ entry_points={ |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
639959
0.25%16343
0.13%