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 ChatCompletionMessageToolCallFunction(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, name=None, arguments=None):  # noqa: E501
        """ChatCompletionMessageToolCallFunction - a model defined in OpenAPI

        :param name: The name of this ChatCompletionMessageToolCallFunction.  # noqa: E501
        :type name: str
        :param arguments: The arguments of this ChatCompletionMessageToolCallFunction.  # noqa: E501
        :type arguments: str
        """
        self.openapi_types = {
            'name': str,
            'arguments': str
        }

        self.attribute_map = {
            'name': 'name',
            'arguments': 'arguments'
        }

        self._name = name
        self._arguments = arguments

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

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

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

        The name of the function to call.  # noqa: E501

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

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

        The name of the function to call.  # noqa: E501

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

        self._name = name

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

        The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function.  # noqa: E501

        :return: The arguments of this ChatCompletionMessageToolCallFunction.
        :rtype: str
        """
        return self._arguments

    @arguments.setter
    def arguments(self, arguments: str):
        """Sets the arguments of this ChatCompletionMessageToolCallFunction.

        The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function.  # noqa: E501

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

        self._arguments = arguments
