# coding: utf-8

"""
    vei_api

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: common-version
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from volcenginesdkcore.configuration import Configuration


class CreateVideoAnalysisTaskRequest(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 = {
        'api_base': 'str',
        'api_key': 'str',
        'crop_configs': 'list[CropConfigForCreateVideoAnalysisTaskInput]',
        'crop_enabled': 'bool',
        'dedup_enabled': 'bool',
        'dedup_ratio': 'float',
        'detect_enabled': 'bool',
        'detect_objects': 'list[str]',
        'extract_mode': 'str',
        'max_task_round': 'int',
        'model_name': 'str',
        'roi_enabled': 'bool',
        'roi_polygons': 'list[RoiPolygonForCreateVideoAnalysisTaskInput]',
        'stream_analysis_enabled': 'bool',
        'stream_path': 'str',
        'task_description': 'str',
        'task_id': 'str',
        'task_name': 'str',
        'task_prompt': 'str',
        'time_window_in_sec': 'float',
        'uniform_fps': 'float',
        'video_path': 'str'
    }

    attribute_map = {
        'api_base': 'api_base',
        'api_key': 'api_key',
        'crop_configs': 'crop_configs',
        'crop_enabled': 'crop_enabled',
        'dedup_enabled': 'dedup_enabled',
        'dedup_ratio': 'dedup_ratio',
        'detect_enabled': 'detect_enabled',
        'detect_objects': 'detect_objects',
        'extract_mode': 'extract_mode',
        'max_task_round': 'max_task_round',
        'model_name': 'model_name',
        'roi_enabled': 'roi_enabled',
        'roi_polygons': 'roi_polygons',
        'stream_analysis_enabled': 'stream_analysis_enabled',
        'stream_path': 'stream_path',
        'task_description': 'task_description',
        'task_id': 'task_id',
        'task_name': 'task_name',
        'task_prompt': 'task_prompt',
        'time_window_in_sec': 'time_window_in_sec',
        'uniform_fps': 'uniform_fps',
        'video_path': 'video_path'
    }

    def __init__(self, api_base=None, api_key=None, crop_configs=None, crop_enabled=None, dedup_enabled=None, dedup_ratio=None, detect_enabled=None, detect_objects=None, extract_mode=None, max_task_round=None, model_name=None, roi_enabled=None, roi_polygons=None, stream_analysis_enabled=None, stream_path=None, task_description=None, task_id=None, task_name=None, task_prompt=None, time_window_in_sec=None, uniform_fps=None, video_path=None, _configuration=None):  # noqa: E501
        """CreateVideoAnalysisTaskRequest - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._api_base = None
        self._api_key = None
        self._crop_configs = None
        self._crop_enabled = None
        self._dedup_enabled = None
        self._dedup_ratio = None
        self._detect_enabled = None
        self._detect_objects = None
        self._extract_mode = None
        self._max_task_round = None
        self._model_name = None
        self._roi_enabled = None
        self._roi_polygons = None
        self._stream_analysis_enabled = None
        self._stream_path = None
        self._task_description = None
        self._task_id = None
        self._task_name = None
        self._task_prompt = None
        self._time_window_in_sec = None
        self._uniform_fps = None
        self._video_path = None
        self.discriminator = None

        self.api_base = api_base
        self.api_key = api_key
        if crop_configs is not None:
            self.crop_configs = crop_configs
        if crop_enabled is not None:
            self.crop_enabled = crop_enabled
        if dedup_enabled is not None:
            self.dedup_enabled = dedup_enabled
        if dedup_ratio is not None:
            self.dedup_ratio = dedup_ratio
        if detect_enabled is not None:
            self.detect_enabled = detect_enabled
        if detect_objects is not None:
            self.detect_objects = detect_objects
        if extract_mode is not None:
            self.extract_mode = extract_mode
        if max_task_round is not None:
            self.max_task_round = max_task_round
        if model_name is not None:
            self.model_name = model_name
        if roi_enabled is not None:
            self.roi_enabled = roi_enabled
        if roi_polygons is not None:
            self.roi_polygons = roi_polygons
        if stream_analysis_enabled is not None:
            self.stream_analysis_enabled = stream_analysis_enabled
        if stream_path is not None:
            self.stream_path = stream_path
        if task_description is not None:
            self.task_description = task_description
        if task_id is not None:
            self.task_id = task_id
        self.task_name = task_name
        self.task_prompt = task_prompt
        if time_window_in_sec is not None:
            self.time_window_in_sec = time_window_in_sec
        if uniform_fps is not None:
            self.uniform_fps = uniform_fps
        if video_path is not None:
            self.video_path = video_path

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


        :return: The api_base of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._api_base

    @api_base.setter
    def api_base(self, api_base):
        """Sets the api_base of this CreateVideoAnalysisTaskRequest.


        :param api_base: The api_base of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and api_base is None:
            raise ValueError("Invalid value for `api_base`, must not be `None`")  # noqa: E501

        self._api_base = api_base

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


        :return: The api_key of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._api_key

    @api_key.setter
    def api_key(self, api_key):
        """Sets the api_key of this CreateVideoAnalysisTaskRequest.


        :param api_key: The api_key of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and api_key is None:
            raise ValueError("Invalid value for `api_key`, must not be `None`")  # noqa: E501

        self._api_key = api_key

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


        :return: The crop_configs of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: list[CropConfigForCreateVideoAnalysisTaskInput]
        """
        return self._crop_configs

    @crop_configs.setter
    def crop_configs(self, crop_configs):
        """Sets the crop_configs of this CreateVideoAnalysisTaskRequest.


        :param crop_configs: The crop_configs of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: list[CropConfigForCreateVideoAnalysisTaskInput]
        """

        self._crop_configs = crop_configs

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


        :return: The crop_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: bool
        """
        return self._crop_enabled

    @crop_enabled.setter
    def crop_enabled(self, crop_enabled):
        """Sets the crop_enabled of this CreateVideoAnalysisTaskRequest.


        :param crop_enabled: The crop_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: bool
        """

        self._crop_enabled = crop_enabled

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


        :return: The dedup_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: bool
        """
        return self._dedup_enabled

    @dedup_enabled.setter
    def dedup_enabled(self, dedup_enabled):
        """Sets the dedup_enabled of this CreateVideoAnalysisTaskRequest.


        :param dedup_enabled: The dedup_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: bool
        """

        self._dedup_enabled = dedup_enabled

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


        :return: The dedup_ratio of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: float
        """
        return self._dedup_ratio

    @dedup_ratio.setter
    def dedup_ratio(self, dedup_ratio):
        """Sets the dedup_ratio of this CreateVideoAnalysisTaskRequest.


        :param dedup_ratio: The dedup_ratio of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: float
        """

        self._dedup_ratio = dedup_ratio

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


        :return: The detect_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: bool
        """
        return self._detect_enabled

    @detect_enabled.setter
    def detect_enabled(self, detect_enabled):
        """Sets the detect_enabled of this CreateVideoAnalysisTaskRequest.


        :param detect_enabled: The detect_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: bool
        """

        self._detect_enabled = detect_enabled

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


        :return: The detect_objects of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._detect_objects

    @detect_objects.setter
    def detect_objects(self, detect_objects):
        """Sets the detect_objects of this CreateVideoAnalysisTaskRequest.


        :param detect_objects: The detect_objects of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: list[str]
        """

        self._detect_objects = detect_objects

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


        :return: The extract_mode of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._extract_mode

    @extract_mode.setter
    def extract_mode(self, extract_mode):
        """Sets the extract_mode of this CreateVideoAnalysisTaskRequest.


        :param extract_mode: The extract_mode of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """

        self._extract_mode = extract_mode

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


        :return: The max_task_round of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: int
        """
        return self._max_task_round

    @max_task_round.setter
    def max_task_round(self, max_task_round):
        """Sets the max_task_round of this CreateVideoAnalysisTaskRequest.


        :param max_task_round: The max_task_round of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: int
        """

        self._max_task_round = max_task_round

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


        :return: The model_name of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._model_name

    @model_name.setter
    def model_name(self, model_name):
        """Sets the model_name of this CreateVideoAnalysisTaskRequest.


        :param model_name: The model_name of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """

        self._model_name = model_name

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


        :return: The roi_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: bool
        """
        return self._roi_enabled

    @roi_enabled.setter
    def roi_enabled(self, roi_enabled):
        """Sets the roi_enabled of this CreateVideoAnalysisTaskRequest.


        :param roi_enabled: The roi_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: bool
        """

        self._roi_enabled = roi_enabled

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


        :return: The roi_polygons of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: list[RoiPolygonForCreateVideoAnalysisTaskInput]
        """
        return self._roi_polygons

    @roi_polygons.setter
    def roi_polygons(self, roi_polygons):
        """Sets the roi_polygons of this CreateVideoAnalysisTaskRequest.


        :param roi_polygons: The roi_polygons of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: list[RoiPolygonForCreateVideoAnalysisTaskInput]
        """

        self._roi_polygons = roi_polygons

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


        :return: The stream_analysis_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: bool
        """
        return self._stream_analysis_enabled

    @stream_analysis_enabled.setter
    def stream_analysis_enabled(self, stream_analysis_enabled):
        """Sets the stream_analysis_enabled of this CreateVideoAnalysisTaskRequest.


        :param stream_analysis_enabled: The stream_analysis_enabled of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: bool
        """

        self._stream_analysis_enabled = stream_analysis_enabled

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


        :return: The stream_path of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._stream_path

    @stream_path.setter
    def stream_path(self, stream_path):
        """Sets the stream_path of this CreateVideoAnalysisTaskRequest.


        :param stream_path: The stream_path of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """

        self._stream_path = stream_path

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


        :return: The task_description of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._task_description

    @task_description.setter
    def task_description(self, task_description):
        """Sets the task_description of this CreateVideoAnalysisTaskRequest.


        :param task_description: The task_description of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """

        self._task_description = task_description

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


        :return: The task_id of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._task_id

    @task_id.setter
    def task_id(self, task_id):
        """Sets the task_id of this CreateVideoAnalysisTaskRequest.


        :param task_id: The task_id of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """

        self._task_id = task_id

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


        :return: The task_name of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._task_name

    @task_name.setter
    def task_name(self, task_name):
        """Sets the task_name of this CreateVideoAnalysisTaskRequest.


        :param task_name: The task_name of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and task_name is None:
            raise ValueError("Invalid value for `task_name`, must not be `None`")  # noqa: E501

        self._task_name = task_name

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


        :return: The task_prompt of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._task_prompt

    @task_prompt.setter
    def task_prompt(self, task_prompt):
        """Sets the task_prompt of this CreateVideoAnalysisTaskRequest.


        :param task_prompt: The task_prompt of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and task_prompt is None:
            raise ValueError("Invalid value for `task_prompt`, must not be `None`")  # noqa: E501

        self._task_prompt = task_prompt

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


        :return: The time_window_in_sec of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: float
        """
        return self._time_window_in_sec

    @time_window_in_sec.setter
    def time_window_in_sec(self, time_window_in_sec):
        """Sets the time_window_in_sec of this CreateVideoAnalysisTaskRequest.


        :param time_window_in_sec: The time_window_in_sec of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: float
        """

        self._time_window_in_sec = time_window_in_sec

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


        :return: The uniform_fps of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: float
        """
        return self._uniform_fps

    @uniform_fps.setter
    def uniform_fps(self, uniform_fps):
        """Sets the uniform_fps of this CreateVideoAnalysisTaskRequest.


        :param uniform_fps: The uniform_fps of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: float
        """

        self._uniform_fps = uniform_fps

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


        :return: The video_path of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :rtype: str
        """
        return self._video_path

    @video_path.setter
    def video_path(self, video_path):
        """Sets the video_path of this CreateVideoAnalysisTaskRequest.


        :param video_path: The video_path of this CreateVideoAnalysisTaskRequest.  # noqa: E501
        :type: str
        """

        self._video_path = video_path

    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(CreateVideoAnalysisTaskRequest, 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, CreateVideoAnalysisTaskRequest):
            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, CreateVideoAnalysisTaskRequest):
            return True

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