# coding: utf-8

"""
    Lightly API

    Lightly.ai enables you to do self-supervised learning in an easy and intuitive way. The lightly.ai OpenAPI spec defines how one can interact with our REST API to unleash the full potential of lightly.ai  # noqa: E501

    OpenAPI spec version: 1.0.0
    Contact: support@lightly.ai
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from lightly.openapi_generated.swagger_client.configuration import Configuration


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

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'input_size': 'int',
        'cj_prob': 'float',
        'cj_bright': 'float',
        'cj_contrast': 'float',
        'cj_sat': 'float',
        'cj_hue': 'float',
        'min_scale': 'float',
        'random_gray_scale': 'float',
        'gaussian_blur': 'float',
        'kernel_size': 'float',
        'vf_prob': 'float',
        'hf_prob': 'float',
        'rr_prob': 'float'
    }

    attribute_map = {
        'input_size': 'inputSize',
        'cj_prob': 'cjProb',
        'cj_bright': 'cjBright',
        'cj_contrast': 'cjContrast',
        'cj_sat': 'cjSat',
        'cj_hue': 'cjHue',
        'min_scale': 'minScale',
        'random_gray_scale': 'randomGrayScale',
        'gaussian_blur': 'gaussianBlur',
        'kernel_size': 'kernelSize',
        'vf_prob': 'vfProb',
        'hf_prob': 'hfProb',
        'rr_prob': 'rrProb'
    }

    def __init__(self, input_size=None, cj_prob=None, cj_bright=None, cj_contrast=None, cj_sat=None, cj_hue=None, min_scale=None, random_gray_scale=None, gaussian_blur=None, kernel_size=None, vf_prob=None, hf_prob=None, rr_prob=None, _configuration=None):  # noqa: E501
        """DockerWorkerConfigV2LightlyCollate - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._input_size = None
        self._cj_prob = None
        self._cj_bright = None
        self._cj_contrast = None
        self._cj_sat = None
        self._cj_hue = None
        self._min_scale = None
        self._random_gray_scale = None
        self._gaussian_blur = None
        self._kernel_size = None
        self._vf_prob = None
        self._hf_prob = None
        self._rr_prob = None
        self.discriminator = None

        if input_size is not None:
            self.input_size = input_size
        if cj_prob is not None:
            self.cj_prob = cj_prob
        if cj_bright is not None:
            self.cj_bright = cj_bright
        if cj_contrast is not None:
            self.cj_contrast = cj_contrast
        if cj_sat is not None:
            self.cj_sat = cj_sat
        if cj_hue is not None:
            self.cj_hue = cj_hue
        if min_scale is not None:
            self.min_scale = min_scale
        if random_gray_scale is not None:
            self.random_gray_scale = random_gray_scale
        if gaussian_blur is not None:
            self.gaussian_blur = gaussian_blur
        if kernel_size is not None:
            self.kernel_size = kernel_size
        if vf_prob is not None:
            self.vf_prob = vf_prob
        if hf_prob is not None:
            self.hf_prob = hf_prob
        if rr_prob is not None:
            self.rr_prob = rr_prob

    @property
    def input_size(self):
        """Gets the input_size of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The input_size of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: int
        """
        return self._input_size

    @input_size.setter
    def input_size(self, input_size):
        """Sets the input_size of this DockerWorkerConfigV2LightlyCollate.


        :param input_size: The input_size of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: int
        """

        self._input_size = input_size

    @property
    def cj_prob(self):
        """Gets the cj_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The cj_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._cj_prob

    @cj_prob.setter
    def cj_prob(self, cj_prob):
        """Sets the cj_prob of this DockerWorkerConfigV2LightlyCollate.


        :param cj_prob: The cj_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._cj_prob = cj_prob

    @property
    def cj_bright(self):
        """Gets the cj_bright of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The cj_bright of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._cj_bright

    @cj_bright.setter
    def cj_bright(self, cj_bright):
        """Sets the cj_bright of this DockerWorkerConfigV2LightlyCollate.


        :param cj_bright: The cj_bright of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._cj_bright = cj_bright

    @property
    def cj_contrast(self):
        """Gets the cj_contrast of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The cj_contrast of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._cj_contrast

    @cj_contrast.setter
    def cj_contrast(self, cj_contrast):
        """Sets the cj_contrast of this DockerWorkerConfigV2LightlyCollate.


        :param cj_contrast: The cj_contrast of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._cj_contrast = cj_contrast

    @property
    def cj_sat(self):
        """Gets the cj_sat of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The cj_sat of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._cj_sat

    @cj_sat.setter
    def cj_sat(self, cj_sat):
        """Sets the cj_sat of this DockerWorkerConfigV2LightlyCollate.


        :param cj_sat: The cj_sat of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._cj_sat = cj_sat

    @property
    def cj_hue(self):
        """Gets the cj_hue of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The cj_hue of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._cj_hue

    @cj_hue.setter
    def cj_hue(self, cj_hue):
        """Sets the cj_hue of this DockerWorkerConfigV2LightlyCollate.


        :param cj_hue: The cj_hue of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._cj_hue = cj_hue

    @property
    def min_scale(self):
        """Gets the min_scale of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The min_scale of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._min_scale

    @min_scale.setter
    def min_scale(self, min_scale):
        """Sets the min_scale of this DockerWorkerConfigV2LightlyCollate.


        :param min_scale: The min_scale of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._min_scale = min_scale

    @property
    def random_gray_scale(self):
        """Gets the random_gray_scale of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The random_gray_scale of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._random_gray_scale

    @random_gray_scale.setter
    def random_gray_scale(self, random_gray_scale):
        """Sets the random_gray_scale of this DockerWorkerConfigV2LightlyCollate.


        :param random_gray_scale: The random_gray_scale of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._random_gray_scale = random_gray_scale

    @property
    def gaussian_blur(self):
        """Gets the gaussian_blur of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The gaussian_blur of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._gaussian_blur

    @gaussian_blur.setter
    def gaussian_blur(self, gaussian_blur):
        """Sets the gaussian_blur of this DockerWorkerConfigV2LightlyCollate.


        :param gaussian_blur: The gaussian_blur of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._gaussian_blur = gaussian_blur

    @property
    def kernel_size(self):
        """Gets the kernel_size of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The kernel_size of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._kernel_size

    @kernel_size.setter
    def kernel_size(self, kernel_size):
        """Sets the kernel_size of this DockerWorkerConfigV2LightlyCollate.


        :param kernel_size: The kernel_size of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._kernel_size = kernel_size

    @property
    def vf_prob(self):
        """Gets the vf_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The vf_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._vf_prob

    @vf_prob.setter
    def vf_prob(self, vf_prob):
        """Sets the vf_prob of this DockerWorkerConfigV2LightlyCollate.


        :param vf_prob: The vf_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._vf_prob = vf_prob

    @property
    def hf_prob(self):
        """Gets the hf_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The hf_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._hf_prob

    @hf_prob.setter
    def hf_prob(self, hf_prob):
        """Sets the hf_prob of this DockerWorkerConfigV2LightlyCollate.


        :param hf_prob: The hf_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._hf_prob = hf_prob

    @property
    def rr_prob(self):
        """Gets the rr_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501


        :return: The rr_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :rtype: float
        """
        return self._rr_prob

    @rr_prob.setter
    def rr_prob(self, rr_prob):
        """Sets the rr_prob of this DockerWorkerConfigV2LightlyCollate.


        :param rr_prob: The rr_prob of this DockerWorkerConfigV2LightlyCollate.  # noqa: E501
        :type: float
        """

        self._rr_prob = rr_prob

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(DockerWorkerConfigV2LightlyCollate, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, DockerWorkerConfigV2LightlyCollate):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, DockerWorkerConfigV2LightlyCollate):
            return True

        return self.to_dict() != other.to_dict()
