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

from timestep.api.openai.v1 import util
from timestep.api.openai.v1.models.base_model import Model


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

    Do not edit the class manually.
    """

    def __init__(self, in_progress=None, completed=None, failed=None, cancelled=None, total=None):  # noqa: E501
        """VectorStoreFileBatchObjectFileCounts - a model defined in OpenAPI

        :param in_progress: The in_progress of this VectorStoreFileBatchObjectFileCounts.  # noqa: E501
        :type in_progress: int
        :param completed: The completed of this VectorStoreFileBatchObjectFileCounts.  # noqa: E501
        :type completed: int
        :param failed: The failed of this VectorStoreFileBatchObjectFileCounts.  # noqa: E501
        :type failed: int
        :param cancelled: The cancelled of this VectorStoreFileBatchObjectFileCounts.  # noqa: E501
        :type cancelled: int
        :param total: The total of this VectorStoreFileBatchObjectFileCounts.  # noqa: E501
        :type total: int
        """
        self.openapi_types = {
            'in_progress': int,
            'completed': int,
            'failed': int,
            'cancelled': int,
            'total': int
        }

        self.attribute_map = {
            'in_progress': 'in_progress',
            'completed': 'completed',
            'failed': 'failed',
            'cancelled': 'cancelled',
            'total': 'total'
        }

        self._in_progress = in_progress
        self._completed = completed
        self._failed = failed
        self._cancelled = cancelled
        self._total = total

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

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

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

        The number of files that are currently being processed.  # noqa: E501

        :return: The in_progress of this VectorStoreFileBatchObjectFileCounts.
        :rtype: int
        """
        return self._in_progress

    @in_progress.setter
    def in_progress(self, in_progress: int):
        """Sets the in_progress of this VectorStoreFileBatchObjectFileCounts.

        The number of files that are currently being processed.  # noqa: E501

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

        self._in_progress = in_progress

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

        The number of files that have been processed.  # noqa: E501

        :return: The completed of this VectorStoreFileBatchObjectFileCounts.
        :rtype: int
        """
        return self._completed

    @completed.setter
    def completed(self, completed: int):
        """Sets the completed of this VectorStoreFileBatchObjectFileCounts.

        The number of files that have been processed.  # noqa: E501

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

        self._completed = completed

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

        The number of files that have failed to process.  # noqa: E501

        :return: The failed of this VectorStoreFileBatchObjectFileCounts.
        :rtype: int
        """
        return self._failed

    @failed.setter
    def failed(self, failed: int):
        """Sets the failed of this VectorStoreFileBatchObjectFileCounts.

        The number of files that have failed to process.  # noqa: E501

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

        self._failed = failed

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

        The number of files that where cancelled.  # noqa: E501

        :return: The cancelled of this VectorStoreFileBatchObjectFileCounts.
        :rtype: int
        """
        return self._cancelled

    @cancelled.setter
    def cancelled(self, cancelled: int):
        """Sets the cancelled of this VectorStoreFileBatchObjectFileCounts.

        The number of files that where cancelled.  # noqa: E501

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

        self._cancelled = cancelled

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

        The total number of files.  # noqa: E501

        :return: The total of this VectorStoreFileBatchObjectFileCounts.
        :rtype: int
        """
        return self._total

    @total.setter
    def total(self, total: int):
        """Sets the total of this VectorStoreFileBatchObjectFileCounts.

        The total number of files.  # noqa: E501

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

        self._total = total
