from typing import Mapping, Tuple from app_types import S3Path from ..base import SearchTransformBase from ..constants import ARTIST_DSP_SEARCH_INDEX_PROPS, ARTIST_DSP_TO_EXTEND, ARTIST_DSP_TO_INTERPOLATE, \ ARTIST_SEARCH_DATA_PATH, ARTIST_SEARCH_INDEX_DATA_PATH, ARTIST_SEARCH_INDEX_PROPS, ARTIST_SEARCH_TOP_PROPS, \ ARTIST_SOUNDCLOUD_RAW_DATA, ARTIST_SPOTIFY_RAW_DATA, ARTIST_TIKTOK_RAW_DATA, ARTIST_TRENDS_AND_CHANGES_CHARTS, \ ARTIST_YOUTUBE_RAW_DATA from .soundcloud import ExtractSoundCloudArtistSearch from .spotify import ExtractSpotifyArtistSearch from .tiktok import ExtractTicktokArtistSearch from .youtube import ExtractYoutubeArtistSearch __all__ = ["Transform"] class Transform(SearchTransformBase): depends_on = { ExtractTicktokArtistSearch, ExtractYoutubeArtistSearch, ExtractSpotifyArtistSearch, ExtractSoundCloudArtistSearch, } # ordered by priority raw_data_prefixes: Tuple[S3Path, ...] = ( ARTIST_SPOTIFY_RAW_DATA, ARTIST_TIKTOK_RAW_DATA, ARTIST_YOUTUBE_RAW_DATA, ARTIST_SOUNDCLOUD_RAW_DATA, ) data_path: S3Path = ARTIST_SEARCH_DATA_PATH index_data_path: S3Path = ARTIST_SEARCH_INDEX_DATA_PATH dsp_to_interpolate: Tuple[str, ...] = ARTIST_DSP_TO_INTERPOLATE dsp_to_extend: Tuple[str, ...] = ARTIST_DSP_TO_EXTEND dsp_change_trends_props_map: Mapping[str, Tuple[str, ...]] = ARTIST_TRENDS_AND_CHANGES_CHARTS top_props: Tuple[str, ...] = ARTIST_SEARCH_TOP_PROPS dsp_index_props_map: Mapping[str, Tuple[str, ...]] = ARTIST_DSP_SEARCH_INDEX_PROPS index_props: Tuple[str, ...] = ARTIST_SEARCH_INDEX_PROPS