Module continuous_delivery_scripts.spdx_report.spdx_summary
Summary generators.
Functions
def generate_file_based_on_template(output_dir: pathlib.Path,
template_name: str,
template_args: dict,
suffix: str | None = None) ‑> None-
Expand source code
def generate_file_based_on_template( output_dir: Path, template_name: str, template_args: dict, suffix: Optional[str] = None, ) -> None: """Write file based on template and arguments.""" logger.info("Loading template '%s'.", template_name) template = _get_jinja2_env().get_template(template_name) filename = Path(template_name.rsplit(".", 1)[0]) if suffix: filename = Path( "{0}_{2}{1}".format( *( str(filename.name), str(filename.suffix), str(suffix.replace(".", "_").replace("-", "_")), ) ) ) output_filename = output_dir.joinpath(filename) rendered = template.render(**template_args) logger.info("Writing to '%s'.", output_filename) output_filename.write_text(rendered, encoding="utf8")Write file based on template and arguments.
Classes
class SummaryGenerator (project_package: SpdxPackage,
dependencies_documents: List[SpdxPackage])-
Expand source code
class SummaryGenerator: """Licensing summary generator.""" def __init__(self, project_package: SpdxPackage, dependencies_documents: List[SpdxPackage]) -> None: """Initialiser.""" self.project = project_package self.all_packages = list(dependencies_documents) self.all_packages.append(self.project) self._template_arguments: Optional[dict] = None def _generate_template_arguments(self) -> Dict[str, Any]: arguments: Dict[str, Any] = dict() global_compliance, description_list = self._generate_packages_description() arguments["project"] = { "name": self.project.name, "compliance": global_compliance, "compliance_details": ( ( f"Project [{self.project.name}]'s licence is compliant: {self.project.licence}." "All its dependencies are also compliant licence-wise." ) if global_compliance else f"Project [{self.project.name}] or one, at least, of its dependencies has a non compliant licence" ), } arguments["packages"] = description_list arguments["render_time"] = datetime.datetime.now() return arguments def _generate_packages_description(self) -> Tuple[bool, dict]: description_list = dict() global_compliance = True for p in self.all_packages: main_licence_valid = p.is_main_licence_accepted actual_licence_valid = p.is_licence_accepted package_manually_checked, manual_check_details = get_package_manual_check(p.name) is_licence_compliant = main_licence_valid and actual_licence_valid is_compliant = is_licence_compliant or package_manually_checked if not is_compliant: global_compliance = False description_list[p.name] = self._generate_description_for_one_package( is_compliant, is_licence_compliant, package_manually_checked, manual_check_details, p, ) return global_compliance, description_list def _generate_description_for_one_package( self, is_compliant: bool, is_licence_compliant: bool, package_manually_checked: bool, manual_check_details: Optional[str], p: SpdxPackage, ) -> dict: return { "name": p.name, "is_dependency": p.is_dependency, "url": p.url, "licence": p.licence, "is_compliant": is_compliant, "mark_as_problematic": not is_licence_compliant, "licence_compliance_details": ( "Licence is compliant." if is_licence_compliant else ( f"Package's licence manually checked: {manual_check_details}" if package_manually_checked else "Licence is not compliant according to project's configuration." ) ), } @property def template_arguments(self) -> dict: """Gets template arguments.""" if not self._template_arguments: self._template_arguments = self._generate_template_arguments() return self._template_arguments def generate_summary(self, dir: Path) -> None: """Generates a licensing summary into the specified directory. Args: dir: output directory """ for t in JINJA_TEMPLATES: generate_file_based_on_template(dir, t, self.template_arguments)Licensing summary generator.
Initialiser.
Instance variables
prop template_arguments : dict-
Expand source code
@property def template_arguments(self) -> dict: """Gets template arguments.""" if not self._template_arguments: self._template_arguments = self._generate_template_arguments() return self._template_argumentsGets template arguments.
Methods
def generate_summary(self, dir: pathlib.Path) ‑> None-
Expand source code
def generate_summary(self, dir: Path) -> None: """Generates a licensing summary into the specified directory. Args: dir: output directory """ for t in JINJA_TEMPLATES: generate_file_based_on_template(dir, t, self.template_arguments)Generates a licensing summary into the specified directory.
- Args
- -----=
dir- output directory