"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from enum import Enum
from honeyhive.types import BaseModel
from typing import Any, Dict, List, Optional, TypedDict
from typing_extensions import NotRequired


class CreateDatasetRequestType(str, Enum):
    r"""What the dataset is to be used for - \"evaluation\" (default) or \"fine-tuning\" """

    EVALUATION = "evaluation"
    FINE_TUNING = "fine-tuning"


class CreateDatasetRequestPipelineType(str, Enum):
    r"""The type of data included in the dataset - \"event\" (default) or \"session\" """

    EVENT = "event"
    SESSION = "session"


class CreateDatasetRequestTypedDict(TypedDict):
    project: str
    r"""Name of the project associated with this dataset like `New Project`"""
    name: str
    r"""Name of the dataset"""
    description: NotRequired[str]
    r"""A description for the dataset"""
    type: NotRequired[CreateDatasetRequestType]
    r"""What the dataset is to be used for - \"evaluation\" (default) or \"fine-tuning\" """
    datapoints: NotRequired[List[str]]
    r"""List of unique datapoint ids to be included in this dataset"""
    linked_evals: NotRequired[List[str]]
    r"""List of unique evaluation run ids to be associated with this dataset"""
    saved: NotRequired[bool]
    pipeline_type: NotRequired[CreateDatasetRequestPipelineType]
    r"""The type of data included in the dataset - \"event\" (default) or \"session\" """
    metadata: NotRequired[Dict[str, Any]]
    r"""Any helpful metadata to track for the dataset"""


class CreateDatasetRequest(BaseModel):
    project: str
    r"""Name of the project associated with this dataset like `New Project`"""

    name: str
    r"""Name of the dataset"""

    description: Optional[str] = None
    r"""A description for the dataset"""

    type: Optional[CreateDatasetRequestType] = None
    r"""What the dataset is to be used for - \"evaluation\" (default) or \"fine-tuning\" """

    datapoints: Optional[List[str]] = None
    r"""List of unique datapoint ids to be included in this dataset"""

    linked_evals: Optional[List[str]] = None
    r"""List of unique evaluation run ids to be associated with this dataset"""

    saved: Optional[bool] = None

    pipeline_type: Optional[CreateDatasetRequestPipelineType] = None
    r"""The type of data included in the dataset - \"event\" (default) or \"session\" """

    metadata: Optional[Dict[str, Any]] = None
    r"""Any helpful metadata to track for the dataset"""
