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
from timestep.api.openai.v1.models.message_object_attachments_inner_tools_inner import \
    MessageObjectAttachmentsInnerToolsInner  # noqa: E501


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

    Do not edit the class manually.
    """

    def __init__(self, file_id=None, tools=None):  # noqa: E501
        """MessageObjectAttachmentsInner - a model defined in OpenAPI

        :param file_id: The file_id of this MessageObjectAttachmentsInner.  # noqa: E501
        :type file_id: str
        :param tools: The tools of this MessageObjectAttachmentsInner.  # noqa: E501
        :type tools: List[MessageObjectAttachmentsInnerToolsInner]
        """
        self.openapi_types = {
            'file_id': str,
            'tools': List[MessageObjectAttachmentsInnerToolsInner]
        }

        self.attribute_map = {
            'file_id': 'file_id',
            'tools': 'tools'
        }

        self._file_id = file_id
        self._tools = tools

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

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

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

        The ID of the file to attach to the message.  # noqa: E501

        :return: The file_id of this MessageObjectAttachmentsInner.
        :rtype: str
        """
        return self._file_id

    @file_id.setter
    def file_id(self, file_id: str):
        """Sets the file_id of this MessageObjectAttachmentsInner.

        The ID of the file to attach to the message.  # noqa: E501

        :param file_id: The file_id of this MessageObjectAttachmentsInner.
        :type file_id: str
        """

        self._file_id = file_id

    @property
    def tools(self) -> List[MessageObjectAttachmentsInnerToolsInner]:
        """Gets the tools of this MessageObjectAttachmentsInner.

        The tools to add this file to.  # noqa: E501

        :return: The tools of this MessageObjectAttachmentsInner.
        :rtype: List[MessageObjectAttachmentsInnerToolsInner]
        """
        return self._tools

    @tools.setter
    def tools(self, tools: List[MessageObjectAttachmentsInnerToolsInner]):
        """Sets the tools of this MessageObjectAttachmentsInner.

        The tools to add this file to.  # noqa: E501

        :param tools: The tools of this MessageObjectAttachmentsInner.
        :type tools: List[MessageObjectAttachmentsInnerToolsInner]
        """

        self._tools = tools
