# coding: utf-8

"""
    Vidispine API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 5.x
    Contact: info@vidispine.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six
from . import *

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

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'audio_channel_map_input': 'list[ComplexJobAudioChannelMapInputType]',
        'audio_output': 'ComplexJobAudioOutputType',
        'video_output': 'ComplexJobVideoOutputType',
        'pid': 'int',
        'audio_mix_input': 'list[ComplexJobMixInputType]',
        'input': 'list[ComplexJobInputType]',
        'subtitle_output': 'ComplexJobSubtitleOutputType',
        'audio_channel_sequence_input': 'list[ComplexJobAudioChannelSequenceInputType]'
    }

    attribute_map = {
        'audio_channel_map_input': 'audioChannelMapInput',
        'audio_output': 'audioOutput',
        'video_output': 'videoOutput',
        'pid': 'pid',
        'audio_mix_input': 'audioMixInput',
        'input': 'input',
        'subtitle_output': 'subtitleOutput',
        'audio_channel_sequence_input': 'audioChannelSequenceInput'
    }

    def __init__(self, audio_channel_map_input=None, audio_output=None, video_output=None, pid=None, audio_mix_input=None, input=None, subtitle_output=None, audio_channel_sequence_input=None):  # noqa: E501
        """ComplexJobTypeConnection - a model defined in OpenAPI"""  # noqa: E501

        self._audio_channel_map_input = None
        self._audio_output = None
        self._video_output = None
        self._pid = None
        self._audio_mix_input = None
        self._input = None
        self._subtitle_output = None
        self._audio_channel_sequence_input = None
        self.discriminator = None

        if audio_channel_map_input is not None:
            self.audio_channel_map_input = audio_channel_map_input
        if audio_output is not None:
            self.audio_output = audio_output
        if video_output is not None:
            self.video_output = video_output
        if pid is not None:
            self.pid = pid
        if audio_mix_input is not None:
            self.audio_mix_input = audio_mix_input
        if input is not None:
            self.input = input
        if subtitle_output is not None:
            self.subtitle_output = subtitle_output
        if audio_channel_sequence_input is not None:
            self.audio_channel_sequence_input = audio_channel_sequence_input

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


        :return: The audio_channel_map_input of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: list[ComplexJobAudioChannelMapInputType]
        """
        return self._audio_channel_map_input

    @audio_channel_map_input.setter
    def audio_channel_map_input(self, audio_channel_map_input):
        """Sets the audio_channel_map_input of this ComplexJobTypeConnection.


        :param audio_channel_map_input: The audio_channel_map_input of this ComplexJobTypeConnection.  # noqa: E501
        :type: list[ComplexJobAudioChannelMapInputType]
        """

        self._audio_channel_map_input = audio_channel_map_input

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


        :return: The audio_output of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: ComplexJobAudioOutputType
        """
        return self._audio_output

    @audio_output.setter
    def audio_output(self, audio_output):
        """Sets the audio_output of this ComplexJobTypeConnection.


        :param audio_output: The audio_output of this ComplexJobTypeConnection.  # noqa: E501
        :type: ComplexJobAudioOutputType
        """

        self._audio_output = audio_output

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


        :return: The video_output of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: ComplexJobVideoOutputType
        """
        return self._video_output

    @video_output.setter
    def video_output(self, video_output):
        """Sets the video_output of this ComplexJobTypeConnection.


        :param video_output: The video_output of this ComplexJobTypeConnection.  # noqa: E501
        :type: ComplexJobVideoOutputType
        """

        self._video_output = video_output

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


        :return: The pid of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: int
        """
        return self._pid

    @pid.setter
    def pid(self, pid):
        """Sets the pid of this ComplexJobTypeConnection.


        :param pid: The pid of this ComplexJobTypeConnection.  # noqa: E501
        :type: int
        """

        self._pid = pid

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


        :return: The audio_mix_input of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: list[ComplexJobMixInputType]
        """
        return self._audio_mix_input

    @audio_mix_input.setter
    def audio_mix_input(self, audio_mix_input):
        """Sets the audio_mix_input of this ComplexJobTypeConnection.


        :param audio_mix_input: The audio_mix_input of this ComplexJobTypeConnection.  # noqa: E501
        :type: list[ComplexJobMixInputType]
        """

        self._audio_mix_input = audio_mix_input

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


        :return: The input of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: list[ComplexJobInputType]
        """
        return self._input

    @input.setter
    def input(self, input):
        """Sets the input of this ComplexJobTypeConnection.


        :param input: The input of this ComplexJobTypeConnection.  # noqa: E501
        :type: list[ComplexJobInputType]
        """

        self._input = input

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


        :return: The subtitle_output of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: ComplexJobSubtitleOutputType
        """
        return self._subtitle_output

    @subtitle_output.setter
    def subtitle_output(self, subtitle_output):
        """Sets the subtitle_output of this ComplexJobTypeConnection.


        :param subtitle_output: The subtitle_output of this ComplexJobTypeConnection.  # noqa: E501
        :type: ComplexJobSubtitleOutputType
        """

        self._subtitle_output = subtitle_output

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


        :return: The audio_channel_sequence_input of this ComplexJobTypeConnection.  # noqa: E501
        :rtype: list[ComplexJobAudioChannelSequenceInputType]
        """
        return self._audio_channel_sequence_input

    @audio_channel_sequence_input.setter
    def audio_channel_sequence_input(self, audio_channel_sequence_input):
        """Sets the audio_channel_sequence_input of this ComplexJobTypeConnection.


        :param audio_channel_sequence_input: The audio_channel_sequence_input of this ComplexJobTypeConnection.  # noqa: E501
        :type: list[ComplexJobAudioChannelSequenceInputType]
        """

        self._audio_channel_sequence_input = audio_channel_sequence_input

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

        for attr, _ in six.iteritems(self.openapi_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

        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, ComplexJobTypeConnection):
            return False

        return self.__dict__ == other.__dict__

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