# coding: utf-8

"""
    Aron API

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

    The version of the OpenAPI document: 1.0.0
    Generated by: https://openapi-generator.tech
"""


try:
    from inspect import getfullargspec
except ImportError:
    from inspect import getargspec as getfullargspec
import pprint
import re  # noqa: F401
import six

from vessl.openapi_client.configuration import Configuration


class ProtoLLMWorkloadConnectionConfiguration(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 = {
        'knowledge_permission_configs': 'dict[str, V1LLMPermissionConfig]',
        'model_connection_configs': 'dict[str, ProtoLLMModelConnection]',
        'model_secrets': 'dict[str, ProtoRevealedSecret]',
        'vector_db_collections': 'dict[str, str]',
        'vector_db_connection_configs': 'dict[str, ProtoLLMVectorDBConnConfig]',
        'workflow_permission_config': 'V1LLMPermissionConfig'
    }

    attribute_map = {
        'knowledge_permission_configs': 'knowledge_permission_configs',
        'model_connection_configs': 'model_connection_configs',
        'model_secrets': 'model_secrets',
        'vector_db_collections': 'vector_db_collections',
        'vector_db_connection_configs': 'vector_db_connection_configs',
        'workflow_permission_config': 'workflow_permission_config'
    }

    def __init__(self, knowledge_permission_configs=None, model_connection_configs=None, model_secrets=None, vector_db_collections=None, vector_db_connection_configs=None, workflow_permission_config=None, local_vars_configuration=None):  # noqa: E501
        """ProtoLLMWorkloadConnectionConfiguration - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration.get_default_copy()
        self.local_vars_configuration = local_vars_configuration

        self._knowledge_permission_configs = None
        self._model_connection_configs = None
        self._model_secrets = None
        self._vector_db_collections = None
        self._vector_db_connection_configs = None
        self._workflow_permission_config = None
        self.discriminator = None

        if knowledge_permission_configs is not None:
            self.knowledge_permission_configs = knowledge_permission_configs
        if model_connection_configs is not None:
            self.model_connection_configs = model_connection_configs
        if model_secrets is not None:
            self.model_secrets = model_secrets
        if vector_db_collections is not None:
            self.vector_db_collections = vector_db_collections
        if vector_db_connection_configs is not None:
            self.vector_db_connection_configs = vector_db_connection_configs
        if workflow_permission_config is not None:
            self.workflow_permission_config = workflow_permission_config

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


        :return: The knowledge_permission_configs of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :rtype: dict[str, V1LLMPermissionConfig]
        """
        return self._knowledge_permission_configs

    @knowledge_permission_configs.setter
    def knowledge_permission_configs(self, knowledge_permission_configs):
        """Sets the knowledge_permission_configs of this ProtoLLMWorkloadConnectionConfiguration.


        :param knowledge_permission_configs: The knowledge_permission_configs of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :type knowledge_permission_configs: dict[str, V1LLMPermissionConfig]
        """

        self._knowledge_permission_configs = knowledge_permission_configs

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


        :return: The model_connection_configs of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :rtype: dict[str, ProtoLLMModelConnection]
        """
        return self._model_connection_configs

    @model_connection_configs.setter
    def model_connection_configs(self, model_connection_configs):
        """Sets the model_connection_configs of this ProtoLLMWorkloadConnectionConfiguration.


        :param model_connection_configs: The model_connection_configs of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :type model_connection_configs: dict[str, ProtoLLMModelConnection]
        """

        self._model_connection_configs = model_connection_configs

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


        :return: The model_secrets of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :rtype: dict[str, ProtoRevealedSecret]
        """
        return self._model_secrets

    @model_secrets.setter
    def model_secrets(self, model_secrets):
        """Sets the model_secrets of this ProtoLLMWorkloadConnectionConfiguration.


        :param model_secrets: The model_secrets of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :type model_secrets: dict[str, ProtoRevealedSecret]
        """

        self._model_secrets = model_secrets

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


        :return: The vector_db_collections of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :rtype: dict[str, str]
        """
        return self._vector_db_collections

    @vector_db_collections.setter
    def vector_db_collections(self, vector_db_collections):
        """Sets the vector_db_collections of this ProtoLLMWorkloadConnectionConfiguration.


        :param vector_db_collections: The vector_db_collections of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :type vector_db_collections: dict[str, str]
        """

        self._vector_db_collections = vector_db_collections

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


        :return: The vector_db_connection_configs of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :rtype: dict[str, ProtoLLMVectorDBConnConfig]
        """
        return self._vector_db_connection_configs

    @vector_db_connection_configs.setter
    def vector_db_connection_configs(self, vector_db_connection_configs):
        """Sets the vector_db_connection_configs of this ProtoLLMWorkloadConnectionConfiguration.


        :param vector_db_connection_configs: The vector_db_connection_configs of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :type vector_db_connection_configs: dict[str, ProtoLLMVectorDBConnConfig]
        """

        self._vector_db_connection_configs = vector_db_connection_configs

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


        :return: The workflow_permission_config of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :rtype: V1LLMPermissionConfig
        """
        return self._workflow_permission_config

    @workflow_permission_config.setter
    def workflow_permission_config(self, workflow_permission_config):
        """Sets the workflow_permission_config of this ProtoLLMWorkloadConnectionConfiguration.


        :param workflow_permission_config: The workflow_permission_config of this ProtoLLMWorkloadConnectionConfiguration.  # noqa: E501
        :type workflow_permission_config: V1LLMPermissionConfig
        """

        self._workflow_permission_config = workflow_permission_config

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

        def convert(x):
            if hasattr(x, "to_dict"):
                args = getfullargspec(x.to_dict).args
                if len(args) == 1:
                    return x.to_dict()
                else:
                    return x.to_dict(serialize)
            else:
                return x

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            attr = self.attribute_map.get(attr, attr) if serialize else attr
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: convert(x),
                    value
                ))
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], convert(item[1])),
                    value.items()
                ))
            else:
                result[attr] = convert(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, ProtoLLMWorkloadConnectionConfiguration):
            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, ProtoLLMWorkloadConnectionConfiguration):
            return True

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