# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from pygfe.models.base_model_ import Model
from seqann import util


class Error(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, message: str=None, pygfe_version: str=None, gfedb_version: str=None, imgtdb_version: str=None, log: List[str]=None, type: str=None):  # noqa: E501
        """Error - a model defined in Swagger

        :param message: The message of this Error.  # noqa: E501
        :type message: str
        :param pygfe_version: The pygfe_version of this Error.  # noqa: E501
        :type pygfe_version: str
        :param gfedb_version: The gfedb_version of this Error.  # noqa: E501
        :type gfedb_version: str
        :param imgtdb_version: The imgtdb_version of this Error.  # noqa: E501
        :type imgtdb_version: str
        :param log: The log of this Error.  # noqa: E501
        :type log: List[str]
        :param type: The type of this Error.  # noqa: E501
        :type type: str
        """
        self.swagger_types = {
            'message': str,
            'pygfe_version': str,
            'gfedb_version': str,
            'imgtdb_version': str,
            'log': List[str],
            'type': str
        }

        self.attribute_map = {
            'message': 'Message',
            'pygfe_version': 'pygfe_version',
            'gfedb_version': 'gfedb_version',
            'imgtdb_version': 'imgtdb_version',
            'log': 'log',
            'type': 'type'
        }

        self._message = message
        self._pygfe_version = pygfe_version
        self._gfedb_version = gfedb_version
        self._imgtdb_version = imgtdb_version
        self._log = log
        self._type = type

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

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

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


        :return: The message of this Error.
        :rtype: str
        """
        return self._message

    @message.setter
    def message(self, message: str):
        """Sets the message of this Error.


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

        self._message = message

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


        :return: The pygfe_version of this Error.
        :rtype: str
        """
        return self._pygfe_version

    @pygfe_version.setter
    def pygfe_version(self, pygfe_version: str):
        """Sets the pygfe_version of this Error.


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

        self._pygfe_version = pygfe_version

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


        :return: The gfedb_version of this Error.
        :rtype: str
        """
        return self._gfedb_version

    @gfedb_version.setter
    def gfedb_version(self, gfedb_version: str):
        """Sets the gfedb_version of this Error.


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

        self._gfedb_version = gfedb_version

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


        :return: The imgtdb_version of this Error.
        :rtype: str
        """
        return self._imgtdb_version

    @imgtdb_version.setter
    def imgtdb_version(self, imgtdb_version: str):
        """Sets the imgtdb_version of this Error.


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

        self._imgtdb_version = imgtdb_version

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


        :return: The log of this Error.
        :rtype: List[str]
        """
        return self._log

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


        :param log: The log of this Error.
        :type log: List[str]
        """

        self._log = log

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


        :return: The type of this Error.
        :rtype: str
        """
        return self._type

    @type.setter
    def type(self, type: str):
        """Sets the type of this Error.


        :param type: The type of this Error.
        :type type: str
        """

        self._type = type
