in atr/tasks/checks/license.py [0:0]
def _files_check_core_logic(artifact_path: str) -> dict[str, Any]:
"""Verify that LICENSE and NOTICE files exist and are placed and formatted correctly."""
files_found = []
license_ok = False
notice_ok = False
notice_issues: list[str] = []
# First find and validate the root directory
try:
root_dir = targz.root_directory(artifact_path)
except ValueError as e:
return {
"files_checked": ["LICENSE", "NOTICE"],
"files_found": [],
"license_valid": False,
"notice_valid": False,
"warning": f"Could not determine root directory: {e!s}",
}
# Check for license files in the root directory
with tarfile.open(artifact_path, mode="r|gz") as tf:
for member in tf:
if member.name and member.name.split("/")[-1].startswith("._"):
# Metadata convention
continue
if member.name in [f"{root_dir}/LICENSE", f"{root_dir}/NOTICE"]:
filename = os.path.basename(member.name)
files_found.append(filename)
if filename == "LICENSE":
# TODO: Check length, should be 11,358 bytes
license_ok = _files_check_core_logic_license(tf, member)
elif filename == "NOTICE":
# TODO: Check length doesn't exceed some preset
notice_ok, notice_issues = _files_check_core_logic_notice(tf, member)
messages = _files_messages_build(root_dir, files_found, license_ok, notice_ok, notice_issues)
return {
"files_checked": ["LICENSE", "NOTICE"],
"files_found": files_found,
"license_valid": license_ok,
"notice_valid": notice_ok,
"notice_issues": notice_issues if notice_issues else None,
"message": "; ".join(messages) if messages else "All license files present and valid",
}