# coding: utf-8

"""
    external/v1/auth_service.proto

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

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

    NOTE
    ----
    standard swagger-codegen-cli for this python client has been modified
    by custom templates. The purpose of these templates is to include
    typing information in the API and Model code. Please refer to the
    main grid repository for more info
"""

import pprint
import re  # noqa: F401

from typing import TYPE_CHECKING

import six

if TYPE_CHECKING:
    from datetime import datetime
    from lightning_cloud.openapi.models import *

class V1CloudSpace(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 = {
        'can_download_source_code': 'bool',
        'cluster_id': 'str',
        'code_config': 'V1CloudSpaceInstanceConfig',
        'code_status': 'V1GetCloudSpaceInstanceStatusResponse',
        'created_at': 'datetime',
        'data_connection_mounts': 'list[V1DataConnectionMount]',
        'description': 'str',
        'display_name': 'str',
        'engagement_counts': 'dict(str, str)',
        'env': 'list[V1EnvVar]',
        'id': 'str',
        'image_status': 'V1ImageState',
        'is_cloudspace_private': 'bool',
        'is_code_private': 'bool',
        'is_published': 'bool',
        'message': 'str',
        'name': 'str',
        'number_of_files': 'str',
        'project_id': 'str',
        'published_at': 'datetime',
        'state': 'V1CloudSpaceState',
        'tags': 'list[V1CloudSpaceTag]',
        'thumbnail_file_type': 'str',
        'thumbnail_url': 'str',
        'total_size_bytes': 'str',
        'updated_at': 'datetime',
        'user_id': 'str',
        'user_metadata': 'str',
        'web_path': 'str'
    }

    attribute_map = {
        'can_download_source_code': 'canDownloadSourceCode',
        'cluster_id': 'clusterId',
        'code_config': 'codeConfig',
        'code_status': 'codeStatus',
        'created_at': 'createdAt',
        'data_connection_mounts': 'dataConnectionMounts',
        'description': 'description',
        'display_name': 'displayName',
        'engagement_counts': 'engagementCounts',
        'env': 'env',
        'id': 'id',
        'image_status': 'imageStatus',
        'is_cloudspace_private': 'isCloudspacePrivate',
        'is_code_private': 'isCodePrivate',
        'is_published': 'isPublished',
        'message': 'message',
        'name': 'name',
        'number_of_files': 'numberOfFiles',
        'project_id': 'projectId',
        'published_at': 'publishedAt',
        'state': 'state',
        'tags': 'tags',
        'thumbnail_file_type': 'thumbnailFileType',
        'thumbnail_url': 'thumbnailUrl',
        'total_size_bytes': 'totalSizeBytes',
        'updated_at': 'updatedAt',
        'user_id': 'userId',
        'user_metadata': 'userMetadata',
        'web_path': 'webPath'
    }

    def __init__(self, can_download_source_code: 'bool' =None, cluster_id: 'str' =None, code_config: 'V1CloudSpaceInstanceConfig' =None, code_status: 'V1GetCloudSpaceInstanceStatusResponse' =None, created_at: 'datetime' =None, data_connection_mounts: 'list[V1DataConnectionMount]' =None, description: 'str' =None, display_name: 'str' =None, engagement_counts: 'dict(str, str)' =None, env: 'list[V1EnvVar]' =None, id: 'str' =None, image_status: 'V1ImageState' =None, is_cloudspace_private: 'bool' =None, is_code_private: 'bool' =None, is_published: 'bool' =None, message: 'str' =None, name: 'str' =None, number_of_files: 'str' =None, project_id: 'str' =None, published_at: 'datetime' =None, state: 'V1CloudSpaceState' =None, tags: 'list[V1CloudSpaceTag]' =None, thumbnail_file_type: 'str' =None, thumbnail_url: 'str' =None, total_size_bytes: 'str' =None, updated_at: 'datetime' =None, user_id: 'str' =None, user_metadata: 'str' =None, web_path: 'str' =None):  # noqa: E501
        """V1CloudSpace - a model defined in Swagger"""  # noqa: E501
        self._can_download_source_code = None
        self._cluster_id = None
        self._code_config = None
        self._code_status = None
        self._created_at = None
        self._data_connection_mounts = None
        self._description = None
        self._display_name = None
        self._engagement_counts = None
        self._env = None
        self._id = None
        self._image_status = None
        self._is_cloudspace_private = None
        self._is_code_private = None
        self._is_published = None
        self._message = None
        self._name = None
        self._number_of_files = None
        self._project_id = None
        self._published_at = None
        self._state = None
        self._tags = None
        self._thumbnail_file_type = None
        self._thumbnail_url = None
        self._total_size_bytes = None
        self._updated_at = None
        self._user_id = None
        self._user_metadata = None
        self._web_path = None
        self.discriminator = None
        if can_download_source_code is not None:
            self.can_download_source_code = can_download_source_code
        if cluster_id is not None:
            self.cluster_id = cluster_id
        if code_config is not None:
            self.code_config = code_config
        if code_status is not None:
            self.code_status = code_status
        if created_at is not None:
            self.created_at = created_at
        if data_connection_mounts is not None:
            self.data_connection_mounts = data_connection_mounts
        if description is not None:
            self.description = description
        if display_name is not None:
            self.display_name = display_name
        if engagement_counts is not None:
            self.engagement_counts = engagement_counts
        if env is not None:
            self.env = env
        if id is not None:
            self.id = id
        if image_status is not None:
            self.image_status = image_status
        if is_cloudspace_private is not None:
            self.is_cloudspace_private = is_cloudspace_private
        if is_code_private is not None:
            self.is_code_private = is_code_private
        if is_published is not None:
            self.is_published = is_published
        if message is not None:
            self.message = message
        if name is not None:
            self.name = name
        if number_of_files is not None:
            self.number_of_files = number_of_files
        if project_id is not None:
            self.project_id = project_id
        if published_at is not None:
            self.published_at = published_at
        if state is not None:
            self.state = state
        if tags is not None:
            self.tags = tags
        if thumbnail_file_type is not None:
            self.thumbnail_file_type = thumbnail_file_type
        if thumbnail_url is not None:
            self.thumbnail_url = thumbnail_url
        if total_size_bytes is not None:
            self.total_size_bytes = total_size_bytes
        if updated_at is not None:
            self.updated_at = updated_at
        if user_id is not None:
            self.user_id = user_id
        if user_metadata is not None:
            self.user_metadata = user_metadata
        if web_path is not None:
            self.web_path = web_path

    @property
    def can_download_source_code(self) -> 'bool':
        """Gets the can_download_source_code of this V1CloudSpace.  # noqa: E501


        :return: The can_download_source_code of this V1CloudSpace.  # noqa: E501
        :rtype: bool
        """
        return self._can_download_source_code

    @can_download_source_code.setter
    def can_download_source_code(self, can_download_source_code: 'bool'):
        """Sets the can_download_source_code of this V1CloudSpace.


        :param can_download_source_code: The can_download_source_code of this V1CloudSpace.  # noqa: E501
        :type: bool
        """

        self._can_download_source_code = can_download_source_code

    @property
    def cluster_id(self) -> 'str':
        """Gets the cluster_id of this V1CloudSpace.  # noqa: E501


        :return: The cluster_id of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._cluster_id

    @cluster_id.setter
    def cluster_id(self, cluster_id: 'str'):
        """Sets the cluster_id of this V1CloudSpace.


        :param cluster_id: The cluster_id of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._cluster_id = cluster_id

    @property
    def code_config(self) -> 'V1CloudSpaceInstanceConfig':
        """Gets the code_config of this V1CloudSpace.  # noqa: E501


        :return: The code_config of this V1CloudSpace.  # noqa: E501
        :rtype: V1CloudSpaceInstanceConfig
        """
        return self._code_config

    @code_config.setter
    def code_config(self, code_config: 'V1CloudSpaceInstanceConfig'):
        """Sets the code_config of this V1CloudSpace.


        :param code_config: The code_config of this V1CloudSpace.  # noqa: E501
        :type: V1CloudSpaceInstanceConfig
        """

        self._code_config = code_config

    @property
    def code_status(self) -> 'V1GetCloudSpaceInstanceStatusResponse':
        """Gets the code_status of this V1CloudSpace.  # noqa: E501


        :return: The code_status of this V1CloudSpace.  # noqa: E501
        :rtype: V1GetCloudSpaceInstanceStatusResponse
        """
        return self._code_status

    @code_status.setter
    def code_status(self, code_status: 'V1GetCloudSpaceInstanceStatusResponse'):
        """Sets the code_status of this V1CloudSpace.


        :param code_status: The code_status of this V1CloudSpace.  # noqa: E501
        :type: V1GetCloudSpaceInstanceStatusResponse
        """

        self._code_status = code_status

    @property
    def created_at(self) -> 'datetime':
        """Gets the created_at of this V1CloudSpace.  # noqa: E501


        :return: The created_at of this V1CloudSpace.  # noqa: E501
        :rtype: datetime
        """
        return self._created_at

    @created_at.setter
    def created_at(self, created_at: 'datetime'):
        """Sets the created_at of this V1CloudSpace.


        :param created_at: The created_at of this V1CloudSpace.  # noqa: E501
        :type: datetime
        """

        self._created_at = created_at

    @property
    def data_connection_mounts(self) -> 'list[V1DataConnectionMount]':
        """Gets the data_connection_mounts of this V1CloudSpace.  # noqa: E501


        :return: The data_connection_mounts of this V1CloudSpace.  # noqa: E501
        :rtype: list[V1DataConnectionMount]
        """
        return self._data_connection_mounts

    @data_connection_mounts.setter
    def data_connection_mounts(self, data_connection_mounts: 'list[V1DataConnectionMount]'):
        """Sets the data_connection_mounts of this V1CloudSpace.


        :param data_connection_mounts: The data_connection_mounts of this V1CloudSpace.  # noqa: E501
        :type: list[V1DataConnectionMount]
        """

        self._data_connection_mounts = data_connection_mounts

    @property
    def description(self) -> 'str':
        """Gets the description of this V1CloudSpace.  # noqa: E501


        :return: The description of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description: 'str'):
        """Sets the description of this V1CloudSpace.


        :param description: The description of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._description = description

    @property
    def display_name(self) -> 'str':
        """Gets the display_name of this V1CloudSpace.  # noqa: E501


        :return: The display_name of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._display_name

    @display_name.setter
    def display_name(self, display_name: 'str'):
        """Sets the display_name of this V1CloudSpace.


        :param display_name: The display_name of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._display_name = display_name

    @property
    def engagement_counts(self) -> 'dict(str, str)':
        """Gets the engagement_counts of this V1CloudSpace.  # noqa: E501


        :return: The engagement_counts of this V1CloudSpace.  # noqa: E501
        :rtype: dict(str, str)
        """
        return self._engagement_counts

    @engagement_counts.setter
    def engagement_counts(self, engagement_counts: 'dict(str, str)'):
        """Sets the engagement_counts of this V1CloudSpace.


        :param engagement_counts: The engagement_counts of this V1CloudSpace.  # noqa: E501
        :type: dict(str, str)
        """

        self._engagement_counts = engagement_counts

    @property
    def env(self) -> 'list[V1EnvVar]':
        """Gets the env of this V1CloudSpace.  # noqa: E501


        :return: The env of this V1CloudSpace.  # noqa: E501
        :rtype: list[V1EnvVar]
        """
        return self._env

    @env.setter
    def env(self, env: 'list[V1EnvVar]'):
        """Sets the env of this V1CloudSpace.


        :param env: The env of this V1CloudSpace.  # noqa: E501
        :type: list[V1EnvVar]
        """

        self._env = env

    @property
    def id(self) -> 'str':
        """Gets the id of this V1CloudSpace.  # noqa: E501


        :return: The id of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id: 'str'):
        """Sets the id of this V1CloudSpace.


        :param id: The id of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._id = id

    @property
    def image_status(self) -> 'V1ImageState':
        """Gets the image_status of this V1CloudSpace.  # noqa: E501


        :return: The image_status of this V1CloudSpace.  # noqa: E501
        :rtype: V1ImageState
        """
        return self._image_status

    @image_status.setter
    def image_status(self, image_status: 'V1ImageState'):
        """Sets the image_status of this V1CloudSpace.


        :param image_status: The image_status of this V1CloudSpace.  # noqa: E501
        :type: V1ImageState
        """

        self._image_status = image_status

    @property
    def is_cloudspace_private(self) -> 'bool':
        """Gets the is_cloudspace_private of this V1CloudSpace.  # noqa: E501


        :return: The is_cloudspace_private of this V1CloudSpace.  # noqa: E501
        :rtype: bool
        """
        return self._is_cloudspace_private

    @is_cloudspace_private.setter
    def is_cloudspace_private(self, is_cloudspace_private: 'bool'):
        """Sets the is_cloudspace_private of this V1CloudSpace.


        :param is_cloudspace_private: The is_cloudspace_private of this V1CloudSpace.  # noqa: E501
        :type: bool
        """

        self._is_cloudspace_private = is_cloudspace_private

    @property
    def is_code_private(self) -> 'bool':
        """Gets the is_code_private of this V1CloudSpace.  # noqa: E501


        :return: The is_code_private of this V1CloudSpace.  # noqa: E501
        :rtype: bool
        """
        return self._is_code_private

    @is_code_private.setter
    def is_code_private(self, is_code_private: 'bool'):
        """Sets the is_code_private of this V1CloudSpace.


        :param is_code_private: The is_code_private of this V1CloudSpace.  # noqa: E501
        :type: bool
        """

        self._is_code_private = is_code_private

    @property
    def is_published(self) -> 'bool':
        """Gets the is_published of this V1CloudSpace.  # noqa: E501


        :return: The is_published of this V1CloudSpace.  # noqa: E501
        :rtype: bool
        """
        return self._is_published

    @is_published.setter
    def is_published(self, is_published: 'bool'):
        """Sets the is_published of this V1CloudSpace.


        :param is_published: The is_published of this V1CloudSpace.  # noqa: E501
        :type: bool
        """

        self._is_published = is_published

    @property
    def message(self) -> 'str':
        """Gets the message of this V1CloudSpace.  # noqa: E501


        :return: The message of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._message

    @message.setter
    def message(self, message: 'str'):
        """Sets the message of this V1CloudSpace.


        :param message: The message of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._message = message

    @property
    def name(self) -> 'str':
        """Gets the name of this V1CloudSpace.  # noqa: E501


        :return: The name of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._name

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


        :param name: The name of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._name = name

    @property
    def number_of_files(self) -> 'str':
        """Gets the number_of_files of this V1CloudSpace.  # noqa: E501


        :return: The number_of_files of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._number_of_files

    @number_of_files.setter
    def number_of_files(self, number_of_files: 'str'):
        """Sets the number_of_files of this V1CloudSpace.


        :param number_of_files: The number_of_files of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._number_of_files = number_of_files

    @property
    def project_id(self) -> 'str':
        """Gets the project_id of this V1CloudSpace.  # noqa: E501


        :return: The project_id of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._project_id

    @project_id.setter
    def project_id(self, project_id: 'str'):
        """Sets the project_id of this V1CloudSpace.


        :param project_id: The project_id of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._project_id = project_id

    @property
    def published_at(self) -> 'datetime':
        """Gets the published_at of this V1CloudSpace.  # noqa: E501


        :return: The published_at of this V1CloudSpace.  # noqa: E501
        :rtype: datetime
        """
        return self._published_at

    @published_at.setter
    def published_at(self, published_at: 'datetime'):
        """Sets the published_at of this V1CloudSpace.


        :param published_at: The published_at of this V1CloudSpace.  # noqa: E501
        :type: datetime
        """

        self._published_at = published_at

    @property
    def state(self) -> 'V1CloudSpaceState':
        """Gets the state of this V1CloudSpace.  # noqa: E501


        :return: The state of this V1CloudSpace.  # noqa: E501
        :rtype: V1CloudSpaceState
        """
        return self._state

    @state.setter
    def state(self, state: 'V1CloudSpaceState'):
        """Sets the state of this V1CloudSpace.


        :param state: The state of this V1CloudSpace.  # noqa: E501
        :type: V1CloudSpaceState
        """

        self._state = state

    @property
    def tags(self) -> 'list[V1CloudSpaceTag]':
        """Gets the tags of this V1CloudSpace.  # noqa: E501


        :return: The tags of this V1CloudSpace.  # noqa: E501
        :rtype: list[V1CloudSpaceTag]
        """
        return self._tags

    @tags.setter
    def tags(self, tags: 'list[V1CloudSpaceTag]'):
        """Sets the tags of this V1CloudSpace.


        :param tags: The tags of this V1CloudSpace.  # noqa: E501
        :type: list[V1CloudSpaceTag]
        """

        self._tags = tags

    @property
    def thumbnail_file_type(self) -> 'str':
        """Gets the thumbnail_file_type of this V1CloudSpace.  # noqa: E501


        :return: The thumbnail_file_type of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._thumbnail_file_type

    @thumbnail_file_type.setter
    def thumbnail_file_type(self, thumbnail_file_type: 'str'):
        """Sets the thumbnail_file_type of this V1CloudSpace.


        :param thumbnail_file_type: The thumbnail_file_type of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._thumbnail_file_type = thumbnail_file_type

    @property
    def thumbnail_url(self) -> 'str':
        """Gets the thumbnail_url of this V1CloudSpace.  # noqa: E501


        :return: The thumbnail_url of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._thumbnail_url

    @thumbnail_url.setter
    def thumbnail_url(self, thumbnail_url: 'str'):
        """Sets the thumbnail_url of this V1CloudSpace.


        :param thumbnail_url: The thumbnail_url of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._thumbnail_url = thumbnail_url

    @property
    def total_size_bytes(self) -> 'str':
        """Gets the total_size_bytes of this V1CloudSpace.  # noqa: E501


        :return: The total_size_bytes of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._total_size_bytes

    @total_size_bytes.setter
    def total_size_bytes(self, total_size_bytes: 'str'):
        """Sets the total_size_bytes of this V1CloudSpace.


        :param total_size_bytes: The total_size_bytes of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._total_size_bytes = total_size_bytes

    @property
    def updated_at(self) -> 'datetime':
        """Gets the updated_at of this V1CloudSpace.  # noqa: E501


        :return: The updated_at of this V1CloudSpace.  # noqa: E501
        :rtype: datetime
        """
        return self._updated_at

    @updated_at.setter
    def updated_at(self, updated_at: 'datetime'):
        """Sets the updated_at of this V1CloudSpace.


        :param updated_at: The updated_at of this V1CloudSpace.  # noqa: E501
        :type: datetime
        """

        self._updated_at = updated_at

    @property
    def user_id(self) -> 'str':
        """Gets the user_id of this V1CloudSpace.  # noqa: E501


        :return: The user_id of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._user_id

    @user_id.setter
    def user_id(self, user_id: 'str'):
        """Sets the user_id of this V1CloudSpace.


        :param user_id: The user_id of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._user_id = user_id

    @property
    def user_metadata(self) -> 'str':
        """Gets the user_metadata of this V1CloudSpace.  # noqa: E501


        :return: The user_metadata of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._user_metadata

    @user_metadata.setter
    def user_metadata(self, user_metadata: 'str'):
        """Sets the user_metadata of this V1CloudSpace.


        :param user_metadata: The user_metadata of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._user_metadata = user_metadata

    @property
    def web_path(self) -> 'str':
        """Gets the web_path of this V1CloudSpace.  # noqa: E501


        :return: The web_path of this V1CloudSpace.  # noqa: E501
        :rtype: str
        """
        return self._web_path

    @web_path.setter
    def web_path(self, web_path: 'str'):
        """Sets the web_path of this V1CloudSpace.


        :param web_path: The web_path of this V1CloudSpace.  # noqa: E501
        :type: str
        """

        self._web_path = web_path

    def to_dict(self) -> dict:
        """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(V1CloudSpace, dict):
            for key, value in self.items():
                result[key] = value

        return result

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

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

    def __eq__(self, other: 'V1CloudSpace') -> bool:
        """Returns true if both objects are equal"""
        if not isinstance(other, V1CloudSpace):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other: 'V1CloudSpace') -> bool:
        """Returns true if both objects are not equal"""
        return not self == other
