from .base_dataset import BaseDataset


class CocoCaptionKarpathyDataset(BaseDataset):
    def __init__(self, *args, split="", **kwargs):
        assert split in ["train", "val", "test"]
        self.split = split

        if split == "train":
            names = ["coco_caption_karpathy_train"]  # , "coco_caption_karpathy_restval"
        elif split == "val":
            names = ["coco_caption_karpathy_val"]
            # names = ["coco_caption_karpathy_test"]
            # names = []  # for fast train
        elif split == "test":
            names = ["coco_caption_karpathy_test"]
            # names = []

        super().__init__(*args, **kwargs, names=names, text_column_name="caption")

    def __getitem__(self, index):
        suite = self.get_suite(index)

        if "test" in self.split:
            _index, _question_index = self.index_mapper[index]
            iid = self.table["image_id"][_index].as_py()
            iid = int(iid.split(".")[0].split("_")[-1])
            suite.update({"iid": iid})

        return suite
