# coding: utf-8

"""
    hrm-api

    Hiring Manager can view all the pending tasks and evaluate the interview if any pending interviews.  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: phenom
"""

import pprint
import re  # noqa: F401

import six

class GetCandidatesResponseDataCandidates(object):
    """
    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 = {
        'ats_id': 'str',
        'application_id': 'str',
        'last_name': 'str',
        'parent': 'str',
        'pending_tasks': 'list[str]',
        'job_skills_count': 'float',
        'internal': 'bool',
        'attachments': 'list[GetCandidatesResponseDataAttachments]',
        'email_list': 'list[GetCandidatesResponseDataEmailList]',
        'skills_info': 'str',
        'rating': 'float',
        'current_company': 'GetCandidatesResponseDataCurrentCompany',
        'hiring_manager_review_status': 'GetCandidatesResponseDataHiringManagerReviewStatus',
        'matched_skills': 'float',
        'is_unread': 'bool',
        'first_name': 'str',
        'is_applicant': 'bool',
        'recruiter_forward_info': 'GetCandidatesResponseDataRecruiterForwardInfo',
        'hiring_status': 'GetCandidatesResponseDataHiringStatus',
        'primary_pending_task': 'str',
        'fit_score': 'str',
        'social_profile': 'list[GetCandidatesResponseDataSocialProfile]',
        'candidate_id': 'str',
        'interviews_completed_count': 'float',
        'on_demand_interview_screening': 'GetCandidatesResponseDataOnDemandInterviewScreening',
        'status': 'str'
    }

    attribute_map = {
        'ats_id': 'atsId',
        'application_id': 'applicationId',
        'last_name': 'lastName',
        'parent': 'parent',
        'pending_tasks': 'pendingTasks',
        'job_skills_count': 'jobSkillsCount',
        'internal': 'internal',
        'attachments': 'attachments',
        'email_list': 'emailList',
        'skills_info': 'skillsInfo',
        'rating': 'rating',
        'current_company': 'currentCompany',
        'hiring_manager_review_status': 'hiringManagerReviewStatus',
        'matched_skills': 'matchedSkills',
        'is_unread': 'isUnread',
        'first_name': 'firstName',
        'is_applicant': 'isApplicant',
        'recruiter_forward_info': 'recruiterForwardInfo',
        'hiring_status': 'hiringStatus',
        'primary_pending_task': 'primary_pendingTask',
        'fit_score': 'fitScore',
        'social_profile': 'socialProfile',
        'candidate_id': 'candidateId',
        'interviews_completed_count': 'interviewsCompletedCount',
        'on_demand_interview_screening': 'onDemandInterviewScreening',
        'status': 'status'
    }

    def __init__(self, ats_id=None, application_id=None, last_name=None, parent=None, pending_tasks=None, job_skills_count=None, internal=None, attachments=None, email_list=None, skills_info=None, rating=None, current_company=None, hiring_manager_review_status=None, matched_skills=None, is_unread=None, first_name=None, is_applicant=None, recruiter_forward_info=None, hiring_status=None, primary_pending_task=None, fit_score=None, social_profile=None, candidate_id=None, interviews_completed_count=None, on_demand_interview_screening=None, status=None):  # noqa: E501
        """GetCandidatesResponseDataCandidates - a model defined in Swagger"""  # noqa: E501
        self._ats_id = None
        self._application_id = None
        self._last_name = None
        self._parent = None
        self._pending_tasks = None
        self._job_skills_count = None
        self._internal = None
        self._attachments = None
        self._email_list = None
        self._skills_info = None
        self._rating = None
        self._current_company = None
        self._hiring_manager_review_status = None
        self._matched_skills = None
        self._is_unread = None
        self._first_name = None
        self._is_applicant = None
        self._recruiter_forward_info = None
        self._hiring_status = None
        self._primary_pending_task = None
        self._fit_score = None
        self._social_profile = None
        self._candidate_id = None
        self._interviews_completed_count = None
        self._on_demand_interview_screening = None
        self._status = None
        self.discriminator = None
        if ats_id is not None:
            self.ats_id = ats_id
        if application_id is not None:
            self.application_id = application_id
        if last_name is not None:
            self.last_name = last_name
        if parent is not None:
            self.parent = parent
        if pending_tasks is not None:
            self.pending_tasks = pending_tasks
        if job_skills_count is not None:
            self.job_skills_count = job_skills_count
        if internal is not None:
            self.internal = internal
        if attachments is not None:
            self.attachments = attachments
        if email_list is not None:
            self.email_list = email_list
        if skills_info is not None:
            self.skills_info = skills_info
        if rating is not None:
            self.rating = rating
        if current_company is not None:
            self.current_company = current_company
        if hiring_manager_review_status is not None:
            self.hiring_manager_review_status = hiring_manager_review_status
        if matched_skills is not None:
            self.matched_skills = matched_skills
        if is_unread is not None:
            self.is_unread = is_unread
        if first_name is not None:
            self.first_name = first_name
        if is_applicant is not None:
            self.is_applicant = is_applicant
        if recruiter_forward_info is not None:
            self.recruiter_forward_info = recruiter_forward_info
        if hiring_status is not None:
            self.hiring_status = hiring_status
        if primary_pending_task is not None:
            self.primary_pending_task = primary_pending_task
        if fit_score is not None:
            self.fit_score = fit_score
        if social_profile is not None:
            self.social_profile = social_profile
        if candidate_id is not None:
            self.candidate_id = candidate_id
        if interviews_completed_count is not None:
            self.interviews_completed_count = interviews_completed_count
        if on_demand_interview_screening is not None:
            self.on_demand_interview_screening = on_demand_interview_screening
        if status is not None:
            self.status = status

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

        Unique identifier for the candidate in the Applicant Tracking System.  # noqa: E501

        :return: The ats_id of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._ats_id

    @ats_id.setter
    def ats_id(self, ats_id):
        """Sets the ats_id of this GetCandidatesResponseDataCandidates.

        Unique identifier for the candidate in the Applicant Tracking System.  # noqa: E501

        :param ats_id: The ats_id of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._ats_id = ats_id

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

        Identifier for the application submitted by the candidate.  # noqa: E501

        :return: The application_id of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._application_id

    @application_id.setter
    def application_id(self, application_id):
        """Sets the application_id of this GetCandidatesResponseDataCandidates.

        Identifier for the application submitted by the candidate.  # noqa: E501

        :param application_id: The application_id of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._application_id = application_id

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

        Last name of the candidate.  # noqa: E501

        :return: The last_name of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._last_name

    @last_name.setter
    def last_name(self, last_name):
        """Sets the last_name of this GetCandidatesResponseDataCandidates.

        Last name of the candidate.  # noqa: E501

        :param last_name: The last_name of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._last_name = last_name

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

        Parent collection's database document object id.  # noqa: E501

        :return: The parent of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._parent

    @parent.setter
    def parent(self, parent):
        """Sets the parent of this GetCandidatesResponseDataCandidates.

        Parent collection's database document object id.  # noqa: E501

        :param parent: The parent of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._parent = parent

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

        List of tasks a user can perform on the candidate.  # noqa: E501

        :return: The pending_tasks of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: list[str]
        """
        return self._pending_tasks

    @pending_tasks.setter
    def pending_tasks(self, pending_tasks):
        """Sets the pending_tasks of this GetCandidatesResponseDataCandidates.

        List of tasks a user can perform on the candidate.  # noqa: E501

        :param pending_tasks: The pending_tasks of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: list[str]
        """

        self._pending_tasks = pending_tasks

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

        Number of skills required for the job.  # noqa: E501

        :return: The job_skills_count of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: float
        """
        return self._job_skills_count

    @job_skills_count.setter
    def job_skills_count(self, job_skills_count):
        """Sets the job_skills_count of this GetCandidatesResponseDataCandidates.

        Number of skills required for the job.  # noqa: E501

        :param job_skills_count: The job_skills_count of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: float
        """

        self._job_skills_count = job_skills_count

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

        Indicates whether the candidate is internal or external.  # noqa: E501

        :return: The internal of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: bool
        """
        return self._internal

    @internal.setter
    def internal(self, internal):
        """Sets the internal of this GetCandidatesResponseDataCandidates.

        Indicates whether the candidate is internal or external.  # noqa: E501

        :param internal: The internal of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: bool
        """

        self._internal = internal

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

        List of attachments to details.  # noqa: E501

        :return: The attachments of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: list[GetCandidatesResponseDataAttachments]
        """
        return self._attachments

    @attachments.setter
    def attachments(self, attachments):
        """Sets the attachments of this GetCandidatesResponseDataCandidates.

        List of attachments to details.  # noqa: E501

        :param attachments: The attachments of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: list[GetCandidatesResponseDataAttachments]
        """

        self._attachments = attachments

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

        Array of email addresses details.  # noqa: E501

        :return: The email_list of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: list[GetCandidatesResponseDataEmailList]
        """
        return self._email_list

    @email_list.setter
    def email_list(self, email_list):
        """Sets the email_list of this GetCandidatesResponseDataCandidates.

        Array of email addresses details.  # noqa: E501

        :param email_list: The email_list of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: list[GetCandidatesResponseDataEmailList]
        """

        self._email_list = email_list

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

        Matched skills count or job skills count.  # noqa: E501

        :return: The skills_info of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._skills_info

    @skills_info.setter
    def skills_info(self, skills_info):
        """Sets the skills_info of this GetCandidatesResponseDataCandidates.

        Matched skills count or job skills count.  # noqa: E501

        :param skills_info: The skills_info of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._skills_info = skills_info

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

        Overall rating of the candidate.  # noqa: E501

        :return: The rating of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: float
        """
        return self._rating

    @rating.setter
    def rating(self, rating):
        """Sets the rating of this GetCandidatesResponseDataCandidates.

        Overall rating of the candidate.  # noqa: E501

        :param rating: The rating of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: float
        """

        self._rating = rating

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


        :return: The current_company of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: GetCandidatesResponseDataCurrentCompany
        """
        return self._current_company

    @current_company.setter
    def current_company(self, current_company):
        """Sets the current_company of this GetCandidatesResponseDataCandidates.


        :param current_company: The current_company of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: GetCandidatesResponseDataCurrentCompany
        """

        self._current_company = current_company

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


        :return: The hiring_manager_review_status of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: GetCandidatesResponseDataHiringManagerReviewStatus
        """
        return self._hiring_manager_review_status

    @hiring_manager_review_status.setter
    def hiring_manager_review_status(self, hiring_manager_review_status):
        """Sets the hiring_manager_review_status of this GetCandidatesResponseDataCandidates.


        :param hiring_manager_review_status: The hiring_manager_review_status of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: GetCandidatesResponseDataHiringManagerReviewStatus
        """

        self._hiring_manager_review_status = hiring_manager_review_status

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

        Number of candidate's skills that match with job skills.  # noqa: E501

        :return: The matched_skills of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: float
        """
        return self._matched_skills

    @matched_skills.setter
    def matched_skills(self, matched_skills):
        """Sets the matched_skills of this GetCandidatesResponseDataCandidates.

        Number of candidate's skills that match with job skills.  # noqa: E501

        :param matched_skills: The matched_skills of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: float
        """

        self._matched_skills = matched_skills

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

        Indicates whether the candidate has been read by the user.  # noqa: E501

        :return: The is_unread of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: bool
        """
        return self._is_unread

    @is_unread.setter
    def is_unread(self, is_unread):
        """Sets the is_unread of this GetCandidatesResponseDataCandidates.

        Indicates whether the candidate has been read by the user.  # noqa: E501

        :param is_unread: The is_unread of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: bool
        """

        self._is_unread = is_unread

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

        First name of the candidate.  # noqa: E501

        :return: The first_name of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._first_name

    @first_name.setter
    def first_name(self, first_name):
        """Sets the first_name of this GetCandidatesResponseDataCandidates.

        First name of the candidate.  # noqa: E501

        :param first_name: The first_name of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._first_name = first_name

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

        Indicates whether the candidate is an applicant or not.  # noqa: E501

        :return: The is_applicant of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: bool
        """
        return self._is_applicant

    @is_applicant.setter
    def is_applicant(self, is_applicant):
        """Sets the is_applicant of this GetCandidatesResponseDataCandidates.

        Indicates whether the candidate is an applicant or not.  # noqa: E501

        :param is_applicant: The is_applicant of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: bool
        """

        self._is_applicant = is_applicant

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


        :return: The recruiter_forward_info of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: GetCandidatesResponseDataRecruiterForwardInfo
        """
        return self._recruiter_forward_info

    @recruiter_forward_info.setter
    def recruiter_forward_info(self, recruiter_forward_info):
        """Sets the recruiter_forward_info of this GetCandidatesResponseDataCandidates.


        :param recruiter_forward_info: The recruiter_forward_info of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: GetCandidatesResponseDataRecruiterForwardInfo
        """

        self._recruiter_forward_info = recruiter_forward_info

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


        :return: The hiring_status of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: GetCandidatesResponseDataHiringStatus
        """
        return self._hiring_status

    @hiring_status.setter
    def hiring_status(self, hiring_status):
        """Sets the hiring_status of this GetCandidatesResponseDataCandidates.


        :param hiring_status: The hiring_status of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: GetCandidatesResponseDataHiringStatus
        """

        self._hiring_status = hiring_status

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

        Primary pending task on the candidate for the user to do with respect to the job.  # noqa: E501

        :return: The primary_pending_task of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._primary_pending_task

    @primary_pending_task.setter
    def primary_pending_task(self, primary_pending_task):
        """Sets the primary_pending_task of this GetCandidatesResponseDataCandidates.

        Primary pending task on the candidate for the user to do with respect to the job.  # noqa: E501

        :param primary_pending_task: The primary_pending_task of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """
        allowed_values = ["INITIAL_REVIEW", "EVALUATE_INTERVIEW", "FINAL_OFFER"]  # noqa: E501
        if primary_pending_task not in allowed_values:
            raise ValueError(
                "Invalid value for `primary_pending_task` ({0}), must be one of {1}"  # noqa: E501
                .format(primary_pending_task, allowed_values)
            )

        self._primary_pending_task = primary_pending_task

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

        Fit score of the candidate for this job.  # noqa: E501

        :return: The fit_score of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._fit_score

    @fit_score.setter
    def fit_score(self, fit_score):
        """Sets the fit_score of this GetCandidatesResponseDataCandidates.

        Fit score of the candidate for this job.  # noqa: E501

        :param fit_score: The fit_score of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._fit_score = fit_score

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

        List of social profiles of the candidate.  # noqa: E501

        :return: The social_profile of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: list[GetCandidatesResponseDataSocialProfile]
        """
        return self._social_profile

    @social_profile.setter
    def social_profile(self, social_profile):
        """Sets the social_profile of this GetCandidatesResponseDataCandidates.

        List of social profiles of the candidate.  # noqa: E501

        :param social_profile: The social_profile of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: list[GetCandidatesResponseDataSocialProfile]
        """

        self._social_profile = social_profile

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

        Unique identifier for the candidate.  # noqa: E501

        :return: The candidate_id of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._candidate_id

    @candidate_id.setter
    def candidate_id(self, candidate_id):
        """Sets the candidate_id of this GetCandidatesResponseDataCandidates.

        Unique identifier for the candidate.  # noqa: E501

        :param candidate_id: The candidate_id of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._candidate_id = candidate_id

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

        Number of interviews completed with the candidate with respect to this job.  # noqa: E501

        :return: The interviews_completed_count of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: float
        """
        return self._interviews_completed_count

    @interviews_completed_count.setter
    def interviews_completed_count(self, interviews_completed_count):
        """Sets the interviews_completed_count of this GetCandidatesResponseDataCandidates.

        Number of interviews completed with the candidate with respect to this job.  # noqa: E501

        :param interviews_completed_count: The interviews_completed_count of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: float
        """

        self._interviews_completed_count = interviews_completed_count

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


        :return: The on_demand_interview_screening of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: GetCandidatesResponseDataOnDemandInterviewScreening
        """
        return self._on_demand_interview_screening

    @on_demand_interview_screening.setter
    def on_demand_interview_screening(self, on_demand_interview_screening):
        """Sets the on_demand_interview_screening of this GetCandidatesResponseDataCandidates.


        :param on_demand_interview_screening: The on_demand_interview_screening of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: GetCandidatesResponseDataOnDemandInterviewScreening
        """

        self._on_demand_interview_screening = on_demand_interview_screening

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

        Status of the job.  # noqa: E501

        :return: The status of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this GetCandidatesResponseDataCandidates.

        Status of the job.  # noqa: E501

        :param status: The status of this GetCandidatesResponseDataCandidates.  # noqa: E501
        :type: str
        """

        self._status = status

    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(GetCandidatesResponseDataCandidates, 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, GetCandidatesResponseDataCandidates):
            return False

        return self.__dict__ == other.__dict__

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