Source code for projectreport.license.parsing

from typing import Optional

from projectreport.license.model import License, LicenseType
from projectreport.tools.text import get_first_non_empty_line_of_text


[docs]def license_text_to_license(license_text: str) -> Optional[License]: """Convert a license text to a License object.""" license_type = _license_text_to_license_type(license_text) if license_type is None: return None license = License(license_type, license_text) return license
def _license_text_to_license_type(license_text: str) -> Optional[LicenseType]: """ Convert a license text to a LicenseType object. TODO: This is very much a hack that will not work with license variations """ first_line_raw = get_first_non_empty_line_of_text(license_text) if first_line_raw is None: return None first_line = first_line_raw.casefold() if "mit" in first_line: return LicenseType.MIT if "bsd" in first_line: return LicenseType.BSD if "lgpl" in first_line or "lesser general public license" in first_line: return LicenseType.LGPL if "agpl" in first_line or "affero general public license" in first_line: return LicenseType.AGPL if "gpl" in first_line or "general public license" in first_line: return LicenseType.GPL if "mpl" in first_line or "mozilla public license" in first_line: return LicenseType.MPL if "apache" in first_line: return LicenseType.APACHE return None