Source code for src.xmlChecks.copyrightCheck

# SPDX-FileCopyrightText: Copyright © 2026 BBC
#
# SPDX-License-Identifier: BSD-3-Clause

from src.validationLogging.validationCodes import ValidationCode
from src.validationLogging.validationResult import ValidationResult, \
    ERROR, WARN
from src.validationLogging.validationLogger import ValidationLogger
from xml.etree.ElementTree import Element
from src.xmlUtils import make_qname
from .xmlCheck import XmlCheck
from .ttmlUtils import ns_ttml


[docs] class copyrightCheck(XmlCheck): """ Checks presence of copyright element in head """ def __init__(self, copyright_required: bool = False) -> None: super().__init__() self._copyright_required = copyright_required
[docs] def run( self, input: Element, context: dict, validation_results: ValidationLogger) -> bool: tt_ns = \ context.get('root_ns', ns_ttml) ttm_ns = tt_ns + '#metadata' copyright_el_tag = make_qname(ttm_ns, 'copyright') copyright_els = [el for el in input if el.tag == copyright_el_tag] valid = True if len(copyright_els) == 0: valid = not self._copyright_required validation_results.append(ValidationResult( status=ERROR if self._copyright_required else WARN, location='{}/{}'.format(input.tag, copyright_el_tag), message='{}copyright element absent'.format( 'Required ' if self._copyright_required else ''), code=ValidationCode.ttml_metadata_copyright )) elif len(copyright_els) > 1: validation_results.warn( location='{}/{}'.format(input.tag, copyright_el_tag), message='{} copyright elements found, expected 1'.format( len(copyright_els)), code=ValidationCode.ttml_metadata_copyright ) else: # 1 copyright element validation_results.good( location='{}/{}'.format(input.tag, copyright_el_tag), message='Copyright element found', code=ValidationCode.ttml_metadata_copyright ) return valid