"""Base Model Classes.""" from typing import NamedTuple class ProductFieldsModel(NamedTuple): """Represents common product fields.""" vendor_id: str = None subaccount_name: str = None project_code: str = None project_id: int = 0 project_artist: str = None project_artist_id: str = None product_id: int = 0 artist_country: str = None artist_country_id: int = 0 product_code: str = None release_name: str = None metadata_language: str = None metadata_language_id: int = 0 artist_url: str = None upc: str = None manufacturer_upc: str = None c_line: str = None p_line: str = None product_version: str = None original_release_date: str = None sale_start_date: str = None itunes_preorder: str = None itunes_preorder_date: str = None preorder_preview: str = None album_pricing: str = None release_type: str = None imprint: str = None genre: str = None subgenre: str = None primary_artists: str = None featurings: str = None remixers: str = None producers: str = None composers: str = None orchestras: str = None ensembles: str = None conductors: str = None only_include: str = None territory_iso_codes: str = None tracks: dict = {} subaccount_id: str = None participants: list = [] # --- genre_id: int = 0 subgenre_id: int = 0 # notForDistribution is hardcoded and used to store ingestion operation state # noqa: E501 # status = str = None - this contains release status like "label_processing" # noqa: E501 class TrackFieldsModel(NamedTuple): """Represents a track on a bulk release object.""" file_name: str = None volume: str = None track_no: str = None track_name: str = None track_audio_language: str = None track_audio_language_id: int = 0 track_version: str = None tuid: int = 0 artist: str = None featurings: str = None remixers: str = None producers: str = None composers: str = None orchestras: str = None ensembles: str = None conductors: str = None track_pricing: str = None explicit: str = None isrc: str = None third_party_publisher: str = None track_p_info: str = None ownership_for_this_sound_recording: str = None country_of_recording: str = None country_of_recording_id: int = 0 # originalRightsHolderCountry = nationality_of_original_copyright_owner ? nationality_of_original_copyright_owner: str = None nationality_of_original_copyright_owner_id: int = 0 us_publishing_obligation: str = None track_lyrics: str = None songwriters: str = None publishers: str = None performer_1_type: str = None performer_1_legal_name: str = None performer_1_main_role: str = None performer_2_type: str = None performer_2_legal_name: str = None performer_2_main_role: str = None performer_3_type: str = None performer_3_legal_name: str = None performer_3_main_role: str = None performer_4_type: str = None performer_4_legal_name: str = None performer_4_main_role: str = None performer_5_type: str = None performer_5_legal_name: str = None performer_5_main_role: str = None # offer_type: str = None - This has items like: # 'ALBUM_AND_TRACK_DOWNLOAD_ONLY', # 'FULL_ALBUM_DOWNLOAD_AND_STREAMING'