"""Validation helpers for DDEX generation across supported versions.""" from soundrecording_utils.constants.ddex.constants import RuleService from soundrecording_utils.ddex.utils.control_chars import remove_control_chars from soundrecording_utils.ddex.v38.track import generate_track_display_artists as generate_track_display_artists_38 from soundrecording_utils.ddex.v43.track import generate_track_display_artists as generate_track_display_artists_43 from soundrecording_utils.metadata.types import Track def base_validation( primary_track_metadata: Track, rule_service: RuleService, selected_version: str = '3.8' ): """Perform base validation for DDEX generation across versions and services. Args: primary_track_metadata (Track): Primary track metadata. rule_service: The RuleService (TIKTOK, YOUTUBE, etc.). selected_version (str): DDEX version to generate (e.g., '3.8' or '4.3') Raises: ValueError: If any required metadata is missing or invalid. """ if rule_service == RuleService.TIKTOK: primary_track_name = remove_control_chars(primary_track_metadata.name) if (primary_track_name is None) or (primary_track_name == ''): raise ValueError('The primary track name cannot be an empty string or missing.') display_artists_generator = generate_track_display_artists_38 \ if selected_version == '3.8' else generate_track_display_artists_43 artists = display_artists_generator(primary_track_metadata) if len(artists) == 0: raise ValueError('The artists are missing.')