in atr/tasks/checks/license.py [0:0]
def _headers_validate(content: bytes, filename: str) -> tuple[bool, str | None]:
"""Validate that the content contains the Apache License header after removing comments."""
# Get the file extension from the filename
file_ext = _get_file_extension(filename)
if not file_ext or file_ext not in COMMENT_STYLES:
return False, "Could not determine file type from extension"
# Strip comments, removing empty lines in the process
cleaned_header = strip_comments(content, file_ext)
# Normalise the expected header in the same way as directly above
expected_lines = [line.strip() for line in APACHE_LICENSE_HEADER.split(b"\n")]
expected_lines = [line for line in expected_lines if line]
expected_header = b"\n".join(expected_lines)
# Check if the cleaned header contains the expected text
if expected_header not in cleaned_header:
# # Find the first difference for debugging
# cleaned_lines = cleaned_header.split(b"\n")
# expected_lines = expected_header.split(b"\n")
# for i, (c, e) in enumerate(zip(cleaned_lines, expected_lines)):
# if c != e:
# _LOGGER.debug("\nFirst difference at line %d:", i + 1)
# _LOGGER.debug("Expected: '%s'", e.decode(errors="replace"))
# _LOGGER.debug("Got: '%s'", c.decode(errors="replace"))
# break
return False, "License header does not match the required Apache License header text"
return True, None