<reponame>HealthML/StyleGAN2-Hypotheses-Explorer
# coding: utf-8

from __future__ import absolute_import

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

from ..util import deserialize_model
from .base_model_ import Base_Model
from .generator_settings import \
    GeneratorSettings  # noqa: F401,E501 noqa: F401,E501


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

    Do not edit the class manually.
    """

    def __init__(self, id: int = None, name: str = None, number_of_layers: int = None, settings: GeneratorSettings = None, step_size: float = None, offline_mode: bool = None):  # noqa: E501
        """Generator - a model defined in Swagger

        :param id: The id of this Generator.  # noqa: E501
        :type id: int
        :param name: The name of this Generator.  # noqa: E501
        :type name: str
        :param number_of_layers: The number_of_layers of this Generator.  # noqa: E501
        :type number_of_layers: int
        :param settings: The settings of this Generator.  # noqa: E501
        :type settings: GeneratorSettings
        :param step_size: The step_size of this Generator.  # noqa: E501
        :type step_size: float
        :param offline_mode: The offline_mode of this Generator.  # noqa: E501
        :type offline_mode: bool
        """
        self.swagger_types = {
            'id': int,
            'name': str,
            'number_of_layers': int,
            'settings': GeneratorSettings,
            'step_size': float,
            'offline_mode': bool
        }

        self.attribute_map = {
            'id': 'id',
            'name': 'name',
            'number_of_layers': 'numberOfLayers',
            'settings': 'settings',
            'step_size': 'stepSize',
            'offline_mode': 'offlineMode'
        }
        self._id = id
        self._name = name
        self._number_of_layers = number_of_layers
        self._settings = settings
        self._step_size = step_size
        self._offline_mode = offline_mode

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

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

    @property
    def id(self) -> int:
        """Gets the id of this Generator.

        Unique id of this model  # noqa: E501

        :return: The id of this Generator.
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id: int):
        """Sets the id of this Generator.

        Unique id of this model  # noqa: E501

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

        self._id = id

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

        Human readable name of the model  # noqa: E501

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

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

        Human readable name of the model  # noqa: E501

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

        self._name = name

    @property
    def number_of_layers(self) -> int:
        """Gets the number_of_layers of this Generator.

        The number of layers of this model. (not affected by reduceNumberOfLayersBy)  # noqa: E501

        :return: The number_of_layers of this Generator.
        :rtype: int
        """
        return self._number_of_layers

    @number_of_layers.setter
    def number_of_layers(self, number_of_layers: int):
        """Sets the number_of_layers of this Generator.

        The number of layers of this model. (not affected by reduceNumberOfLayersBy)  # noqa: E501

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

        self._number_of_layers = number_of_layers

    @property
    def settings(self) -> GeneratorSettings:
        """Gets the settings of this Generator.


        :return: The settings of this Generator.
        :rtype: GeneratorSettings
        """
        return self._settings

    @settings.setter
    def settings(self, settings: GeneratorSettings):
        """Sets the settings of this Generator.


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

        self._settings = settings

    @property
    def step_size(self) -> float:
        """Gets the step_size of this Generator.

        All styles have to be rounded to this step size.  # noqa: E501

        :return: The step_size of this Generator.
        :rtype: float
        """
        return self._step_size

    @step_size.setter
    def step_size(self, step_size: float):
        """Sets the step_size of this Generator.

        All styles have to be rounded to this step size.  # noqa: E501

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

        self._step_size = step_size

    @property
    def offline_mode(self) -> bool:
        """Gets the offline_mode of this Generator.

        Use only get functions if this is true.  # noqa: E501

        :return: The offline_mode of this Generator.
        :rtype: bool
        """
        return self._offline_mode

    @offline_mode.setter
    def offline_mode(self, offline_mode: bool):
        """Sets the offline_mode of this Generator.

        Use only get functions if this is true.  # noqa: E501

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

        self._offline_mode = offline_mode
