from abc import abstractmethod, ABC
from os import PathLike
from typing import Dict, Union, Optional, Iterable


class base_peft(ABC):
    def __init__(self, base_model_name: Union[str, PathLike[str]], mask_token_id: int):
        self.base_model_name = base_model_name
        self.mask_token_id = mask_token_id

    def save_peft(self, peft_name: str):
        pass

    @abstractmethod
    def finetune_peft(self, peft_name: str, train_dataset, validation_dataset):
        pass