import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

class Config:


    def __init__(self):
        # Dataset parameters.
        self.lookback_window = 512
        self.predict_window = 48
        self.window_stride = 10
        self.val_ratio = 0.2
        self.time_feature_list = ['minute', 'hour', 'weekday', 'day', 'month']
        self.output_dir="ddb_pkl_dict_batch"
        self.dataset_path = os.path.join(BASE_DIR, self.output_dir)
        self.ddb_train_start_date = "2025-01-01"
        self.ddb_train_end_date = "2026-01-01"
        self.ddb_host = ""
        self.ddb_port = None
        self.ddb_user = ""
        self.ddb_password = ""
        self.ddb_table = 'loadTable("dfs://tushare_factor_minute_code", "factor_minute_1min")'
        self.ddb_code_count = 100
        self.ddb_fetch_code_batch_size = 5
        self.ddb_flush_every_chunks = 4

        # Training hyperparameters.
        self.clip = 5.0
        self.epochs = 2
        self.log_interval = 100
        self.predictor_batch_size = 50
        self.tokenizer_batch_size = 32
        self.num_workers = 2
        self.tokenizer_learning_rate = 2e-4
        self.predictor_learning_rate = 4e-5
        self.adam_beta1 = 0.9
        self.adam_beta2 = 0.95
        self.adam_weight_decay = 0.1
        self.seed = 100

        # Experiment logging and saving.
        self.use_comet = False # True
        self.comet_config = {
            "api_key": "",
            "project_name": "",
            "workspace": ""
        }
        self.comet_tag = 'finetune_demo'
        self.comet_name = 'finetune_demo'
        self.tokenizer_save_dir = "./outputs/models/finetune_tokenizer_demo"
        self.predictor_save_dir = "./outputs/models/finetune_predictor_demo"

        # Model paths.
        self.pretrained_tokenizer_path = os.path.join(self.tokenizer_save_dir, "checkpoints", "best_model")

        self.pretrained_predictor_path = "NeoQuasar/Kronos-small"

