# coding: utf-8

"""
    

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

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


from pprint import pformat

from six import iteritems


class BatchEntityReport(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 = {
        'projects': 'list[BatchProject]',
        'processes': 'list[BatchProcess]',
        'process_runs': 'list[BatchProcessRun]',
        'process_run_stats': 'list[BatchProcessRunStats]',
        'process_lineages': 'list[BatchProcessLineage]',
        'lineage_runs': 'list[BatchLineageRun]',
        'schemas': 'list[BatchSchema]',
        'schema_field_tags': 'list[BatchSchemaFieldTag]',
        'physical_locations': 'list[BatchPhysicalLocation]',
        'data_sources': 'list[BatchDataSource]',
        'code_versions': 'list[BatchCodeVersion]',
        'code_bases': 'list[BatchCodeBase]',
        'users': 'list[BatchUser]',
        'data_stats': 'list[BatchDataStats]',
        'models': 'list[BatchModel]',
        'model_trainings': 'list[BatchModelTraining]',
        'model_metrics': 'list[BatchModelMetrics]'
    }

    attribute_map = {
        'projects': 'projects',
        'processes': 'processes',
        'process_runs': 'processRuns',
        'process_run_stats': 'processRunStats',
        'process_lineages': 'processLineages',
        'lineage_runs': 'lineageRuns',
        'schemas': 'schemas',
        'schema_field_tags': 'schemaFieldTags',
        'physical_locations': 'physicalLocations',
        'data_sources': 'dataSources',
        'code_versions': 'codeVersions',
        'code_bases': 'codeBases',
        'users': 'users',
        'data_stats': 'dataStats',
        'models': 'models',
        'model_trainings': 'modelTrainings',
        'model_metrics': 'modelMetrics'
    }

    def __init__(self, projects=None, processes=None, process_runs=None, process_run_stats=None, process_lineages=None, lineage_runs=None, schemas=None, schema_field_tags=None, physical_locations=None, data_sources=None, code_versions=None, code_bases=None, users=None, data_stats=None, models=None, model_trainings=None, model_metrics=None):
        """
        BatchEntityReport - a model defined in Swagger
        """

        self._projects = None
        self._processes = None
        self._process_runs = None
        self._process_run_stats = None
        self._process_lineages = None
        self._lineage_runs = None
        self._schemas = None
        self._schema_field_tags = None
        self._physical_locations = None
        self._data_sources = None
        self._code_versions = None
        self._code_bases = None
        self._users = None
        self._data_stats = None
        self._models = None
        self._model_trainings = None
        self._model_metrics = None

        if projects is not None:
          self.projects = projects
        if processes is not None:
          self.processes = processes
        if process_runs is not None:
          self.process_runs = process_runs
        if process_run_stats is not None:
          self.process_run_stats = process_run_stats
        if process_lineages is not None:
          self.process_lineages = process_lineages
        if lineage_runs is not None:
          self.lineage_runs = lineage_runs
        if schemas is not None:
          self.schemas = schemas
        if schema_field_tags is not None:
          self.schema_field_tags = schema_field_tags
        if physical_locations is not None:
          self.physical_locations = physical_locations
        if data_sources is not None:
          self.data_sources = data_sources
        if code_versions is not None:
          self.code_versions = code_versions
        if code_bases is not None:
          self.code_bases = code_bases
        if users is not None:
          self.users = users
        if data_stats is not None:
          self.data_stats = data_stats
        if models is not None:
          self.models = models
        if model_trainings is not None:
          self.model_trainings = model_trainings
        if model_metrics is not None:
          self.model_metrics = model_metrics

    @property
    def projects(self):
        """
        Gets the projects of this BatchEntityReport.

        :return: The projects of this BatchEntityReport.
        :rtype: list[BatchProject]
        """
        return self._projects

    @projects.setter
    def projects(self, projects):
        """
        Sets the projects of this BatchEntityReport.

        :param projects: The projects of this BatchEntityReport.
        :type: list[BatchProject]
        """

        self._projects = projects

    @property
    def processes(self):
        """
        Gets the processes of this BatchEntityReport.

        :return: The processes of this BatchEntityReport.
        :rtype: list[BatchProcess]
        """
        return self._processes

    @processes.setter
    def processes(self, processes):
        """
        Sets the processes of this BatchEntityReport.

        :param processes: The processes of this BatchEntityReport.
        :type: list[BatchProcess]
        """

        self._processes = processes

    @property
    def process_runs(self):
        """
        Gets the process_runs of this BatchEntityReport.

        :return: The process_runs of this BatchEntityReport.
        :rtype: list[BatchProcessRun]
        """
        return self._process_runs

    @process_runs.setter
    def process_runs(self, process_runs):
        """
        Sets the process_runs of this BatchEntityReport.

        :param process_runs: The process_runs of this BatchEntityReport.
        :type: list[BatchProcessRun]
        """

        self._process_runs = process_runs

    @property
    def process_run_stats(self):
        """
        Gets the process_run_stats of this BatchEntityReport.

        :return: The process_run_stats of this BatchEntityReport.
        :rtype: list[BatchProcessRunStats]
        """
        return self._process_run_stats

    @process_run_stats.setter
    def process_run_stats(self, process_run_stats):
        """
        Sets the process_run_stats of this BatchEntityReport.

        :param process_run_stats: The process_run_stats of this BatchEntityReport.
        :type: list[BatchProcessRunStats]
        """

        self._process_run_stats = process_run_stats

    @property
    def process_lineages(self):
        """
        Gets the process_lineages of this BatchEntityReport.

        :return: The process_lineages of this BatchEntityReport.
        :rtype: list[BatchProcessLineage]
        """
        return self._process_lineages

    @process_lineages.setter
    def process_lineages(self, process_lineages):
        """
        Sets the process_lineages of this BatchEntityReport.

        :param process_lineages: The process_lineages of this BatchEntityReport.
        :type: list[BatchProcessLineage]
        """

        self._process_lineages = process_lineages

    @property
    def lineage_runs(self):
        """
        Gets the lineage_runs of this BatchEntityReport.

        :return: The lineage_runs of this BatchEntityReport.
        :rtype: list[BatchLineageRun]
        """
        return self._lineage_runs

    @lineage_runs.setter
    def lineage_runs(self, lineage_runs):
        """
        Sets the lineage_runs of this BatchEntityReport.

        :param lineage_runs: The lineage_runs of this BatchEntityReport.
        :type: list[BatchLineageRun]
        """

        self._lineage_runs = lineage_runs

    @property
    def schemas(self):
        """
        Gets the schemas of this BatchEntityReport.

        :return: The schemas of this BatchEntityReport.
        :rtype: list[BatchSchema]
        """
        return self._schemas

    @schemas.setter
    def schemas(self, schemas):
        """
        Sets the schemas of this BatchEntityReport.

        :param schemas: The schemas of this BatchEntityReport.
        :type: list[BatchSchema]
        """

        self._schemas = schemas

    @property
    def schema_field_tags(self):
        """
        Gets the schema_field_tags of this BatchEntityReport.

        :return: The schema_field_tags of this BatchEntityReport.
        :rtype: list[BatchSchemaFieldTag]
        """
        return self._schema_field_tags

    @schema_field_tags.setter
    def schema_field_tags(self, schema_field_tags):
        """
        Sets the schema_field_tags of this BatchEntityReport.

        :param schema_field_tags: The schema_field_tags of this BatchEntityReport.
        :type: list[BatchSchemaFieldTag]
        """

        self._schema_field_tags = schema_field_tags

    @property
    def physical_locations(self):
        """
        Gets the physical_locations of this BatchEntityReport.

        :return: The physical_locations of this BatchEntityReport.
        :rtype: list[BatchPhysicalLocation]
        """
        return self._physical_locations

    @physical_locations.setter
    def physical_locations(self, physical_locations):
        """
        Sets the physical_locations of this BatchEntityReport.

        :param physical_locations: The physical_locations of this BatchEntityReport.
        :type: list[BatchPhysicalLocation]
        """

        self._physical_locations = physical_locations

    @property
    def data_sources(self):
        """
        Gets the data_sources of this BatchEntityReport.

        :return: The data_sources of this BatchEntityReport.
        :rtype: list[BatchDataSource]
        """
        return self._data_sources

    @data_sources.setter
    def data_sources(self, data_sources):
        """
        Sets the data_sources of this BatchEntityReport.

        :param data_sources: The data_sources of this BatchEntityReport.
        :type: list[BatchDataSource]
        """

        self._data_sources = data_sources

    @property
    def code_versions(self):
        """
        Gets the code_versions of this BatchEntityReport.

        :return: The code_versions of this BatchEntityReport.
        :rtype: list[BatchCodeVersion]
        """
        return self._code_versions

    @code_versions.setter
    def code_versions(self, code_versions):
        """
        Sets the code_versions of this BatchEntityReport.

        :param code_versions: The code_versions of this BatchEntityReport.
        :type: list[BatchCodeVersion]
        """

        self._code_versions = code_versions

    @property
    def code_bases(self):
        """
        Gets the code_bases of this BatchEntityReport.

        :return: The code_bases of this BatchEntityReport.
        :rtype: list[BatchCodeBase]
        """
        return self._code_bases

    @code_bases.setter
    def code_bases(self, code_bases):
        """
        Sets the code_bases of this BatchEntityReport.

        :param code_bases: The code_bases of this BatchEntityReport.
        :type: list[BatchCodeBase]
        """

        self._code_bases = code_bases

    @property
    def users(self):
        """
        Gets the users of this BatchEntityReport.

        :return: The users of this BatchEntityReport.
        :rtype: list[BatchUser]
        """
        return self._users

    @users.setter
    def users(self, users):
        """
        Sets the users of this BatchEntityReport.

        :param users: The users of this BatchEntityReport.
        :type: list[BatchUser]
        """

        self._users = users

    @property
    def data_stats(self):
        """
        Gets the data_stats of this BatchEntityReport.

        :return: The data_stats of this BatchEntityReport.
        :rtype: list[BatchDataStats]
        """
        return self._data_stats

    @data_stats.setter
    def data_stats(self, data_stats):
        """
        Sets the data_stats of this BatchEntityReport.

        :param data_stats: The data_stats of this BatchEntityReport.
        :type: list[BatchDataStats]
        """

        self._data_stats = data_stats

    @property
    def models(self):
        """
        Gets the models of this BatchEntityReport.

        :return: The models of this BatchEntityReport.
        :rtype: list[BatchModel]
        """
        return self._models

    @models.setter
    def models(self, models):
        """
        Sets the models of this BatchEntityReport.

        :param models: The models of this BatchEntityReport.
        :type: list[BatchModel]
        """

        self._models = models

    @property
    def model_trainings(self):
        """
        Gets the model_trainings of this BatchEntityReport.

        :return: The model_trainings of this BatchEntityReport.
        :rtype: list[BatchModelTraining]
        """
        return self._model_trainings

    @model_trainings.setter
    def model_trainings(self, model_trainings):
        """
        Sets the model_trainings of this BatchEntityReport.

        :param model_trainings: The model_trainings of this BatchEntityReport.
        :type: list[BatchModelTraining]
        """

        self._model_trainings = model_trainings

    @property
    def model_metrics(self):
        """
        Gets the model_metrics of this BatchEntityReport.

        :return: The model_metrics of this BatchEntityReport.
        :rtype: list[BatchModelMetrics]
        """
        return self._model_metrics

    @model_metrics.setter
    def model_metrics(self, model_metrics):
        """
        Sets the model_metrics of this BatchEntityReport.

        :param model_metrics: The model_metrics of this BatchEntityReport.
        :type: list[BatchModelMetrics]
        """

        self._model_metrics = model_metrics

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

        for attr, _ in 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

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return 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, BatchEntityReport):
            return False

        return self.__dict__ == other.__dict__

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