import os from datetime import datetime from anime_recommender.constant import * class TrainingPipelineConfig: """ Configuration for the training pipeline, including artifact directory and timestamp. """ def __init__(self, timestamp=datetime.now()): """ Initialize the configuration with a unique timestamp. """ timestamp = timestamp.strftime("%m_%d_%Y_%H_%M_%S") self.pipeline_name = PIPELINE_NAME self.artifact_dir = os.path.join(ARTIFACT_DIR, timestamp) self.model_dir=os.path.join("final_model") self.timestamp: str = timestamp class DataIngestionConfig: """ Configuration for data ingestion, including paths for feature store, train, test, and validation files. """ def __init__(self, training_pipeline_config: TrainingPipelineConfig): """ Initialize data ingestion paths and parameters. """ self.data_ingestion_dir: str = os.path.join(training_pipeline_config.artifact_dir, DATA_INGESTION_DIR_NAME) self.feature_store_anime_file_path: str = os.path.join(self.data_ingestion_dir, DATA_INGESTION_FEATURE_STORE_DIR, ANIME_FILE_NAME) self.feature_store_userrating_file_path: str = os.path.join(self.data_ingestion_dir, DATA_INGESTION_FEATURE_STORE_DIR, RATING_FILE_NAME) self.anime_filepath: str = ANIME_FILE_PATH self.rating_filepath: str = RATING_FILE_PATH class DataTransformationConfig: """ Configuration for data transformation, including paths for transformed data and preprocessing objects. """ def __init__(self,training_pipeline_config:TrainingPipelineConfig): """ Initialize data transformation paths. """ self.data_transformation_dir:str = os.path.join(training_pipeline_config.artifact_dir,DATA_TRANSFORMATION_DIR) self.merged_file_path:str = os.path.join(self.data_transformation_dir,DATA_TRANSFORMATION_TRANSFORMED_DATA_DIR,MERGED_FILE_NAME) class CollaborativeModelConfig: """ Configuration for model training, including paths for trained models. """ def __init__(self,training_pipeline_config:TrainingPipelineConfig): """ Initialize model trainer paths. """ self.model_trainer_dir:str = os.path.join(training_pipeline_config.artifact_dir,MODEL_TRAINER_DIR_NAME) self.svd_trained_model_file_path:str = os.path.join(self.model_trainer_dir,MODEL_TRAINER_COL_TRAINED_MODEL_DIR,MODEL_TRAINER_SVD_TRAINED_MODEL_NAME) self.user_knn_trained_model_file_path:str = os.path.join(self.model_trainer_dir,MODEL_TRAINER_COL_TRAINED_MODEL_DIR,MODEL_TRAINER_USER_KNN_TRAINED_MODEL_NAME) self.item_knn_trained_model_file_path:str = os.path.join(self.model_trainer_dir,MODEL_TRAINER_COL_TRAINED_MODEL_DIR,MODEL_TRAINER_ITEM_KNN_TRAINED_MODEL_NAME) class ContentBasedModelConfig: """ Configuration for model training, including paths for trained models. """ def __init__(self,training_pipeline_config:TrainingPipelineConfig): """ Initialize model trainer paths. """ self.model_trainer_dir:str = os.path.join(training_pipeline_config.artifact_dir,MODEL_TRAINER_DIR_NAME) self.cosine_similarity_model_file_path:str = os.path.join(self.model_trainer_dir,MODEL_TRAINER_CON_TRAINED_MODEL_DIR,MODEL_TRAINER_COSINESIMILARITY_MODEL_NAME)