from typing import Mapping, Tuple from app_types import S3Path from ..base import SearchTransformBase from ..constants import NO_IMPACT_RELEASE_DATE_TRACK, TRACK_DSP_SEARCH_INDEX_PROPS, TRACK_DSP_TO_EXTEND, \ TRACK_DSP_TO_INTERPOLATE, TRACK_SEARCH_DATA_PATH, TRACK_SEARCH_INDEX_DATA_PATH, TRACK_SEARCH_INDEX_PROPS, \ TRACK_SEARCH_TOP_PROPS, TRACK_SOUNDCLOUD_RAW_DATA, TRACK_SPOTIFY_RAW_DATA, TRACK_TIKTOK_RAW_DATA, \ TRACK_TRENDS_AND_CHANGES_CHARTS, TRACK_YOUTUBE_RAW_DATA from .soundcloud import ExtractSoundcloudTrackSearch from .spotify import ExtractSpotifyTrackSearch from .tiktok import ExtractTicktokTrackSearch from .youtube import ExtractYoutubeTrackSearch __all__ = ["Transform"] class Transform(SearchTransformBase): depends_on = { ExtractTicktokTrackSearch, ExtractYoutubeTrackSearch, ExtractSpotifyTrackSearch, ExtractSoundcloudTrackSearch, } # ordered by priority raw_data_prefixes: Tuple[S3Path, ...] = ( TRACK_SPOTIFY_RAW_DATA, TRACK_TIKTOK_RAW_DATA, TRACK_YOUTUBE_RAW_DATA, TRACK_SOUNDCLOUD_RAW_DATA, ) data_path: S3Path = TRACK_SEARCH_DATA_PATH index_data_path: S3Path = TRACK_SEARCH_INDEX_DATA_PATH dsp_to_interpolate: Tuple[str, ...] = TRACK_DSP_TO_INTERPOLATE dsp_to_extend: Tuple[str, ...] = TRACK_DSP_TO_EXTEND dsp_change_trends_props_map: Mapping[str, Tuple[str, ...]] = TRACK_TRENDS_AND_CHANGES_CHARTS top_props: Tuple[str, ...] = TRACK_SEARCH_TOP_PROPS dsp_index_props_map: Mapping[str, Tuple[str, ...]] = TRACK_DSP_SEARCH_INDEX_PROPS index_props: Tuple[str, ...] = TRACK_SEARCH_INDEX_PROPS skip_release_date: dict = NO_IMPACT_RELEASE_DATE_TRACK