from datetime import date, datetime  # noqa: F401
from typing import Dict, List  # noqa: F401

from timestep.api.openai.v1 import util
from timestep.api.openai.v1.models.base_model import Model


class CreateFineTuningJobRequestIntegrationsInnerWandb(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, project=None, name=None, entity=None, tags=None):  # noqa: E501
        """CreateFineTuningJobRequestIntegrationsInnerWandb - a model defined in OpenAPI

        :param project: The project of this CreateFineTuningJobRequestIntegrationsInnerWandb.  # noqa: E501
        :type project: str
        :param name: The name of this CreateFineTuningJobRequestIntegrationsInnerWandb.  # noqa: E501
        :type name: str
        :param entity: The entity of this CreateFineTuningJobRequestIntegrationsInnerWandb.  # noqa: E501
        :type entity: str
        :param tags: The tags of this CreateFineTuningJobRequestIntegrationsInnerWandb.  # noqa: E501
        :type tags: List[str]
        """
        self.openapi_types = {
            'project': str,
            'name': str,
            'entity': str,
            'tags': List[str]
        }

        self.attribute_map = {
            'project': 'project',
            'name': 'name',
            'entity': 'entity',
            'tags': 'tags'
        }

        self._project = project
        self._name = name
        self._entity = entity
        self._tags = tags

    @classmethod
    def from_dict(cls, dikt) -> 'CreateFineTuningJobRequestIntegrationsInnerWandb':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The CreateFineTuningJobRequest_integrations_inner_wandb of this CreateFineTuningJobRequestIntegrationsInnerWandb.  # noqa: E501
        :rtype: CreateFineTuningJobRequestIntegrationsInnerWandb
        """
        return util.deserialize_model(dikt, cls)

    @property
    def project(self) -> str:
        """Gets the project of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        The name of the project that the new run will be created under.   # noqa: E501

        :return: The project of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :rtype: str
        """
        return self._project

    @project.setter
    def project(self, project: str):
        """Sets the project of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        The name of the project that the new run will be created under.   # noqa: E501

        :param project: The project of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :type project: str
        """
        if project is None:
            raise ValueError("Invalid value for `project`, must not be `None`")  # noqa: E501

        self._project = project

    @property
    def name(self) -> str:
        """Gets the name of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        A display name to set for the run. If not set, we will use the Job ID as the name.   # noqa: E501

        :return: The name of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name: str):
        """Sets the name of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        A display name to set for the run. If not set, we will use the Job ID as the name.   # noqa: E501

        :param name: The name of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :type name: str
        """

        self._name = name

    @property
    def entity(self) -> str:
        """Gets the entity of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        The entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.   # noqa: E501

        :return: The entity of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :rtype: str
        """
        return self._entity

    @entity.setter
    def entity(self, entity: str):
        """Sets the entity of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        The entity to use for the run. This allows you to set the team or username of the WandB user that you would like associated with the run. If not set, the default entity for the registered WandB API key is used.   # noqa: E501

        :param entity: The entity of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :type entity: str
        """

        self._entity = entity

    @property
    def tags(self) -> List[str]:
        """Gets the tags of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: \"openai/finetune\", \"openai/{base-model}\", \"openai/{ftjob-abcdef}\".   # noqa: E501

        :return: The tags of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :rtype: List[str]
        """
        return self._tags

    @tags.setter
    def tags(self, tags: List[str]):
        """Sets the tags of this CreateFineTuningJobRequestIntegrationsInnerWandb.

        A list of tags to be attached to the newly created run. These tags are passed through directly to WandB. Some default tags are generated by OpenAI: \"openai/finetune\", \"openai/{base-model}\", \"openai/{ftjob-abcdef}\".   # noqa: E501

        :param tags: The tags of this CreateFineTuningJobRequestIntegrationsInnerWandb.
        :type tags: List[str]
        """

        self._tags = tags
