# coding: utf-8

"""
    Ed-Fi Operational Data Store API

    The Ed-Fi ODS / API enables applications to read and write education data stored in an Ed-Fi ODS through a secure REST interface.  ***  > *Note: Consumers of ODS / API information should sanitize all data for display and storage. The ODS / API provides reasonable safeguards against cross-site scripting attacks and other malicious content, but the platform does not and cannot guarantee that the data it contains is free of all potentially harmful content.*  ***   # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from swagger_client.configuration import Configuration


class TpdmCandidate(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 = {
        'id': 'str',
        'candidate_identifier': 'str',
        'person_reference': 'EdFiPersonReference',
        'addresses': 'list[TpdmCandidateAddress]',
        'birth_city': 'str',
        'birth_country_descriptor': 'str',
        'birth_date': 'date',
        'birth_international_province': 'str',
        'birth_sex_descriptor': 'str',
        'birth_state_abbreviation_descriptor': 'str',
        'date_entered_us': 'date',
        'disabilities': 'list[TpdmCandidateDisability]',
        'displacement_status': 'str',
        'economic_disadvantaged': 'bool',
        'electronic_mails': 'list[TpdmCandidateElectronicMail]',
        'english_language_exam_descriptor': 'str',
        'first_generation_student': 'bool',
        'first_name': 'str',
        'gender_descriptor': 'str',
        'generation_code_suffix': 'str',
        'hispanic_latino_ethnicity': 'bool',
        'languages': 'list[TpdmCandidateLanguage]',
        'last_surname': 'str',
        'limited_english_proficiency_descriptor': 'str',
        'maiden_name': 'str',
        'middle_name': 'str',
        'multiple_birth_status': 'bool',
        'other_names': 'list[TpdmCandidateOtherName]',
        'personal_identification_documents': 'list[TpdmCandidatePersonalIdentificationDocument]',
        'personal_title_prefix': 'str',
        'races': 'list[TpdmCandidateRace]',
        'sex_descriptor': 'str',
        'telephones': 'list[TpdmCandidateTelephone]',
        'etag': 'str'
    }

    attribute_map = {
        'id': 'id',
        'candidate_identifier': 'candidateIdentifier',
        'person_reference': 'personReference',
        'addresses': 'addresses',
        'birth_city': 'birthCity',
        'birth_country_descriptor': 'birthCountryDescriptor',
        'birth_date': 'birthDate',
        'birth_international_province': 'birthInternationalProvince',
        'birth_sex_descriptor': 'birthSexDescriptor',
        'birth_state_abbreviation_descriptor': 'birthStateAbbreviationDescriptor',
        'date_entered_us': 'dateEnteredUS',
        'disabilities': 'disabilities',
        'displacement_status': 'displacementStatus',
        'economic_disadvantaged': 'economicDisadvantaged',
        'electronic_mails': 'electronicMails',
        'english_language_exam_descriptor': 'englishLanguageExamDescriptor',
        'first_generation_student': 'firstGenerationStudent',
        'first_name': 'firstName',
        'gender_descriptor': 'genderDescriptor',
        'generation_code_suffix': 'generationCodeSuffix',
        'hispanic_latino_ethnicity': 'hispanicLatinoEthnicity',
        'languages': 'languages',
        'last_surname': 'lastSurname',
        'limited_english_proficiency_descriptor': 'limitedEnglishProficiencyDescriptor',
        'maiden_name': 'maidenName',
        'middle_name': 'middleName',
        'multiple_birth_status': 'multipleBirthStatus',
        'other_names': 'otherNames',
        'personal_identification_documents': 'personalIdentificationDocuments',
        'personal_title_prefix': 'personalTitlePrefix',
        'races': 'races',
        'sex_descriptor': 'sexDescriptor',
        'telephones': 'telephones',
        'etag': '_etag'
    }

    def __init__(self, id=None, candidate_identifier=None, person_reference=None, addresses=None, birth_city=None, birth_country_descriptor=None, birth_date=None, birth_international_province=None, birth_sex_descriptor=None, birth_state_abbreviation_descriptor=None, date_entered_us=None, disabilities=None, displacement_status=None, economic_disadvantaged=None, electronic_mails=None, english_language_exam_descriptor=None, first_generation_student=None, first_name=None, gender_descriptor=None, generation_code_suffix=None, hispanic_latino_ethnicity=None, languages=None, last_surname=None, limited_english_proficiency_descriptor=None, maiden_name=None, middle_name=None, multiple_birth_status=None, other_names=None, personal_identification_documents=None, personal_title_prefix=None, races=None, sex_descriptor=None, telephones=None, etag=None, _configuration=None):  # noqa: E501
        """TpdmCandidate - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._id = None
        self._candidate_identifier = None
        self._person_reference = None
        self._addresses = None
        self._birth_city = None
        self._birth_country_descriptor = None
        self._birth_date = None
        self._birth_international_province = None
        self._birth_sex_descriptor = None
        self._birth_state_abbreviation_descriptor = None
        self._date_entered_us = None
        self._disabilities = None
        self._displacement_status = None
        self._economic_disadvantaged = None
        self._electronic_mails = None
        self._english_language_exam_descriptor = None
        self._first_generation_student = None
        self._first_name = None
        self._gender_descriptor = None
        self._generation_code_suffix = None
        self._hispanic_latino_ethnicity = None
        self._languages = None
        self._last_surname = None
        self._limited_english_proficiency_descriptor = None
        self._maiden_name = None
        self._middle_name = None
        self._multiple_birth_status = None
        self._other_names = None
        self._personal_identification_documents = None
        self._personal_title_prefix = None
        self._races = None
        self._sex_descriptor = None
        self._telephones = None
        self._etag = None
        self.discriminator = None

        if id is not None:
            self.id = id
        self.candidate_identifier = candidate_identifier
        if person_reference is not None:
            self.person_reference = person_reference
        if addresses is not None:
            self.addresses = addresses
        if birth_city is not None:
            self.birth_city = birth_city
        if birth_country_descriptor is not None:
            self.birth_country_descriptor = birth_country_descriptor
        self.birth_date = birth_date
        if birth_international_province is not None:
            self.birth_international_province = birth_international_province
        if birth_sex_descriptor is not None:
            self.birth_sex_descriptor = birth_sex_descriptor
        if birth_state_abbreviation_descriptor is not None:
            self.birth_state_abbreviation_descriptor = birth_state_abbreviation_descriptor
        if date_entered_us is not None:
            self.date_entered_us = date_entered_us
        if disabilities is not None:
            self.disabilities = disabilities
        if displacement_status is not None:
            self.displacement_status = displacement_status
        if economic_disadvantaged is not None:
            self.economic_disadvantaged = economic_disadvantaged
        if electronic_mails is not None:
            self.electronic_mails = electronic_mails
        if english_language_exam_descriptor is not None:
            self.english_language_exam_descriptor = english_language_exam_descriptor
        if first_generation_student is not None:
            self.first_generation_student = first_generation_student
        self.first_name = first_name
        if gender_descriptor is not None:
            self.gender_descriptor = gender_descriptor
        if generation_code_suffix is not None:
            self.generation_code_suffix = generation_code_suffix
        if hispanic_latino_ethnicity is not None:
            self.hispanic_latino_ethnicity = hispanic_latino_ethnicity
        if languages is not None:
            self.languages = languages
        self.last_surname = last_surname
        if limited_english_proficiency_descriptor is not None:
            self.limited_english_proficiency_descriptor = limited_english_proficiency_descriptor
        if maiden_name is not None:
            self.maiden_name = maiden_name
        if middle_name is not None:
            self.middle_name = middle_name
        if multiple_birth_status is not None:
            self.multiple_birth_status = multiple_birth_status
        if other_names is not None:
            self.other_names = other_names
        if personal_identification_documents is not None:
            self.personal_identification_documents = personal_identification_documents
        if personal_title_prefix is not None:
            self.personal_title_prefix = personal_title_prefix
        if races is not None:
            self.races = races
        self.sex_descriptor = sex_descriptor
        if telephones is not None:
            self.telephones = telephones
        if etag is not None:
            self.etag = etag

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

          # noqa: E501

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

    @id.setter
    def id(self, id):
        """Sets the id of this TpdmCandidate.

          # noqa: E501

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

        self._id = id

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

        A unique alphanumeric code assigned to a candidate.  # noqa: E501

        :return: The candidate_identifier of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._candidate_identifier

    @candidate_identifier.setter
    def candidate_identifier(self, candidate_identifier):
        """Sets the candidate_identifier of this TpdmCandidate.

        A unique alphanumeric code assigned to a candidate.  # noqa: E501

        :param candidate_identifier: The candidate_identifier of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and candidate_identifier is None:
            raise ValueError("Invalid value for `candidate_identifier`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                candidate_identifier is not None and len(candidate_identifier) > 32):
            raise ValueError("Invalid value for `candidate_identifier`, length must be less than or equal to `32`")  # noqa: E501

        self._candidate_identifier = candidate_identifier

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


        :return: The person_reference of this TpdmCandidate.  # noqa: E501
        :rtype: EdFiPersonReference
        """
        return self._person_reference

    @person_reference.setter
    def person_reference(self, person_reference):
        """Sets the person_reference of this TpdmCandidate.


        :param person_reference: The person_reference of this TpdmCandidate.  # noqa: E501
        :type: EdFiPersonReference
        """

        self._person_reference = person_reference

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

        An unordered collection of candidateAddresses. The set of elements that describes an address, including the street address, city, state, and ZIP code.  # noqa: E501

        :return: The addresses of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateAddress]
        """
        return self._addresses

    @addresses.setter
    def addresses(self, addresses):
        """Sets the addresses of this TpdmCandidate.

        An unordered collection of candidateAddresses. The set of elements that describes an address, including the street address, city, state, and ZIP code.  # noqa: E501

        :param addresses: The addresses of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateAddress]
        """

        self._addresses = addresses

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

        The city the student was born in.  # noqa: E501

        :return: The birth_city of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_city

    @birth_city.setter
    def birth_city(self, birth_city):
        """Sets the birth_city of this TpdmCandidate.

        The city the student was born in.  # noqa: E501

        :param birth_city: The birth_city of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_city is not None and len(birth_city) > 30):
            raise ValueError("Invalid value for `birth_city`, length must be less than or equal to `30`")  # noqa: E501

        self._birth_city = birth_city

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

        The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes.  # noqa: E501

        :return: The birth_country_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_country_descriptor

    @birth_country_descriptor.setter
    def birth_country_descriptor(self, birth_country_descriptor):
        """Sets the birth_country_descriptor of this TpdmCandidate.

        The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes.  # noqa: E501

        :param birth_country_descriptor: The birth_country_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_country_descriptor is not None and len(birth_country_descriptor) > 306):
            raise ValueError("Invalid value for `birth_country_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._birth_country_descriptor = birth_country_descriptor

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

        The month, day, and year on which an individual was born.  # noqa: E501

        :return: The birth_date of this TpdmCandidate.  # noqa: E501
        :rtype: date
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date):
        """Sets the birth_date of this TpdmCandidate.

        The month, day, and year on which an individual was born.  # noqa: E501

        :param birth_date: The birth_date of this TpdmCandidate.  # noqa: E501
        :type: date
        """
        if self._configuration.client_side_validation and birth_date is None:
            raise ValueError("Invalid value for `birth_date`, must not be `None`")  # noqa: E501

        self._birth_date = birth_date

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

        For students born outside of the U.S., the Province or jurisdiction in which an individual is born.  # noqa: E501

        :return: The birth_international_province of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_international_province

    @birth_international_province.setter
    def birth_international_province(self, birth_international_province):
        """Sets the birth_international_province of this TpdmCandidate.

        For students born outside of the U.S., the Province or jurisdiction in which an individual is born.  # noqa: E501

        :param birth_international_province: The birth_international_province of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_international_province is not None and len(birth_international_province) > 150):
            raise ValueError("Invalid value for `birth_international_province`, length must be less than or equal to `150`")  # noqa: E501

        self._birth_international_province = birth_international_province

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

        A person's gender at birth.  # noqa: E501

        :return: The birth_sex_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_sex_descriptor

    @birth_sex_descriptor.setter
    def birth_sex_descriptor(self, birth_sex_descriptor):
        """Sets the birth_sex_descriptor of this TpdmCandidate.

        A person's gender at birth.  # noqa: E501

        :param birth_sex_descriptor: The birth_sex_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_sex_descriptor is not None and len(birth_sex_descriptor) > 306):
            raise ValueError("Invalid value for `birth_sex_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._birth_sex_descriptor = birth_sex_descriptor

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

        The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born.  # noqa: E501

        :return: The birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_state_abbreviation_descriptor

    @birth_state_abbreviation_descriptor.setter
    def birth_state_abbreviation_descriptor(self, birth_state_abbreviation_descriptor):
        """Sets the birth_state_abbreviation_descriptor of this TpdmCandidate.

        The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born.  # noqa: E501

        :param birth_state_abbreviation_descriptor: The birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_state_abbreviation_descriptor is not None and len(birth_state_abbreviation_descriptor) > 306):
            raise ValueError("Invalid value for `birth_state_abbreviation_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._birth_state_abbreviation_descriptor = birth_state_abbreviation_descriptor

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

        For students born outside of the U.S., the date the student entered the U.S.  # noqa: E501

        :return: The date_entered_us of this TpdmCandidate.  # noqa: E501
        :rtype: date
        """
        return self._date_entered_us

    @date_entered_us.setter
    def date_entered_us(self, date_entered_us):
        """Sets the date_entered_us of this TpdmCandidate.

        For students born outside of the U.S., the date the student entered the U.S.  # noqa: E501

        :param date_entered_us: The date_entered_us of this TpdmCandidate.  # noqa: E501
        :type: date
        """

        self._date_entered_us = date_entered_us

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

        An unordered collection of candidateDisabilities. The disability condition(s) that best describes an individual's impairment.  # noqa: E501

        :return: The disabilities of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateDisability]
        """
        return self._disabilities

    @disabilities.setter
    def disabilities(self, disabilities):
        """Sets the disabilities of this TpdmCandidate.

        An unordered collection of candidateDisabilities. The disability condition(s) that best describes an individual's impairment.  # noqa: E501

        :param disabilities: The disabilities of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateDisability]
        """

        self._disabilities = disabilities

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

        Indicates a state health or weather related event that displaces a group of students, and may require additional funding, educational, or social services.  # noqa: E501

        :return: The displacement_status of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._displacement_status

    @displacement_status.setter
    def displacement_status(self, displacement_status):
        """Sets the displacement_status of this TpdmCandidate.

        Indicates a state health or weather related event that displaces a group of students, and may require additional funding, educational, or social services.  # noqa: E501

        :param displacement_status: The displacement_status of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                displacement_status is not None and len(displacement_status) > 30):
            raise ValueError("Invalid value for `displacement_status`, length must be less than or equal to `30`")  # noqa: E501

        self._displacement_status = displacement_status

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

        An indication of inadequate financial condition of an individual's family, as determined by family income, number of family members/dependents, participation in public assistance programs, and/or other characteristics considered relevant by federal, state, and local policy.  # noqa: E501

        :return: The economic_disadvantaged of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._economic_disadvantaged

    @economic_disadvantaged.setter
    def economic_disadvantaged(self, economic_disadvantaged):
        """Sets the economic_disadvantaged of this TpdmCandidate.

        An indication of inadequate financial condition of an individual's family, as determined by family income, number of family members/dependents, participation in public assistance programs, and/or other characteristics considered relevant by federal, state, and local policy.  # noqa: E501

        :param economic_disadvantaged: The economic_disadvantaged of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._economic_disadvantaged = economic_disadvantaged

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

        An unordered collection of candidateElectronicMails. The numbers, letters, and symbols used to identify an electronic mail (e-mail) user within the network to which the individual or organization belongs.  # noqa: E501

        :return: The electronic_mails of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateElectronicMail]
        """
        return self._electronic_mails

    @electronic_mails.setter
    def electronic_mails(self, electronic_mails):
        """Sets the electronic_mails of this TpdmCandidate.

        An unordered collection of candidateElectronicMails. The numbers, letters, and symbols used to identify an electronic mail (e-mail) user within the network to which the individual or organization belongs.  # noqa: E501

        :param electronic_mails: The electronic_mails of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateElectronicMail]
        """

        self._electronic_mails = electronic_mails

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

        Indicates that a person passed, failed, or did not take an English Language assessment (e.g., TOEFFL).  # noqa: E501

        :return: The english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._english_language_exam_descriptor

    @english_language_exam_descriptor.setter
    def english_language_exam_descriptor(self, english_language_exam_descriptor):
        """Sets the english_language_exam_descriptor of this TpdmCandidate.

        Indicates that a person passed, failed, or did not take an English Language assessment (e.g., TOEFFL).  # noqa: E501

        :param english_language_exam_descriptor: The english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                english_language_exam_descriptor is not None and len(english_language_exam_descriptor) > 306):
            raise ValueError("Invalid value for `english_language_exam_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._english_language_exam_descriptor = english_language_exam_descriptor

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

        Indicator of whether individual is a first generation college student.  # noqa: E501

        :return: The first_generation_student of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._first_generation_student

    @first_generation_student.setter
    def first_generation_student(self, first_generation_student):
        """Sets the first_generation_student of this TpdmCandidate.

        Indicator of whether individual is a first generation college student.  # noqa: E501

        :param first_generation_student: The first_generation_student of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._first_generation_student = first_generation_student

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

        A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.  # noqa: E501

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

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

        A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.  # noqa: E501

        :param first_name: The first_name of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and first_name is None:
            raise ValueError("Invalid value for `first_name`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                first_name is not None and len(first_name) > 75):
            raise ValueError("Invalid value for `first_name`, length must be less than or equal to `75`")  # noqa: E501

        self._first_name = first_name

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

        The gender of the candidate.  # noqa: E501

        :return: The gender_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._gender_descriptor

    @gender_descriptor.setter
    def gender_descriptor(self, gender_descriptor):
        """Sets the gender_descriptor of this TpdmCandidate.

        The gender of the candidate.  # noqa: E501

        :param gender_descriptor: The gender_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                gender_descriptor is not None and len(gender_descriptor) > 306):
            raise ValueError("Invalid value for `gender_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._gender_descriptor = gender_descriptor

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

        An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).  # noqa: E501

        :return: The generation_code_suffix of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._generation_code_suffix

    @generation_code_suffix.setter
    def generation_code_suffix(self, generation_code_suffix):
        """Sets the generation_code_suffix of this TpdmCandidate.

        An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).  # noqa: E501

        :param generation_code_suffix: The generation_code_suffix of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                generation_code_suffix is not None and len(generation_code_suffix) > 10):
            raise ValueError("Invalid value for `generation_code_suffix`, length must be less than or equal to `10`")  # noqa: E501

        self._generation_code_suffix = generation_code_suffix

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

        An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"  # noqa: E501

        :return: The hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._hispanic_latino_ethnicity

    @hispanic_latino_ethnicity.setter
    def hispanic_latino_ethnicity(self, hispanic_latino_ethnicity):
        """Sets the hispanic_latino_ethnicity of this TpdmCandidate.

        An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"  # noqa: E501

        :param hispanic_latino_ethnicity: The hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._hispanic_latino_ethnicity = hispanic_latino_ethnicity

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

        An unordered collection of candidateLanguages. The language(s) the individual uses to communicate.  # noqa: E501

        :return: The languages of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateLanguage]
        """
        return self._languages

    @languages.setter
    def languages(self, languages):
        """Sets the languages of this TpdmCandidate.

        An unordered collection of candidateLanguages. The language(s) the individual uses to communicate.  # noqa: E501

        :param languages: The languages of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateLanguage]
        """

        self._languages = languages

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

        The name borne in common by members of a family.  # noqa: E501

        :return: The last_surname of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._last_surname

    @last_surname.setter
    def last_surname(self, last_surname):
        """Sets the last_surname of this TpdmCandidate.

        The name borne in common by members of a family.  # noqa: E501

        :param last_surname: The last_surname of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and last_surname is None:
            raise ValueError("Invalid value for `last_surname`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                last_surname is not None and len(last_surname) > 75):
            raise ValueError("Invalid value for `last_surname`, length must be less than or equal to `75`")  # noqa: E501

        self._last_surname = last_surname

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

        An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient.  # noqa: E501

        :return: The limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._limited_english_proficiency_descriptor

    @limited_english_proficiency_descriptor.setter
    def limited_english_proficiency_descriptor(self, limited_english_proficiency_descriptor):
        """Sets the limited_english_proficiency_descriptor of this TpdmCandidate.

        An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient.  # noqa: E501

        :param limited_english_proficiency_descriptor: The limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                limited_english_proficiency_descriptor is not None and len(limited_english_proficiency_descriptor) > 306):
            raise ValueError("Invalid value for `limited_english_proficiency_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._limited_english_proficiency_descriptor = limited_english_proficiency_descriptor

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

        The person's maiden name.  # noqa: E501

        :return: The maiden_name of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._maiden_name

    @maiden_name.setter
    def maiden_name(self, maiden_name):
        """Sets the maiden_name of this TpdmCandidate.

        The person's maiden name.  # noqa: E501

        :param maiden_name: The maiden_name of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                maiden_name is not None and len(maiden_name) > 75):
            raise ValueError("Invalid value for `maiden_name`, length must be less than or equal to `75`")  # noqa: E501

        self._maiden_name = maiden_name

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

        A secondary name given to an individual at birth, baptism, or during another naming ceremony.  # noqa: E501

        :return: The middle_name of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._middle_name

    @middle_name.setter
    def middle_name(self, middle_name):
        """Sets the middle_name of this TpdmCandidate.

        A secondary name given to an individual at birth, baptism, or during another naming ceremony.  # noqa: E501

        :param middle_name: The middle_name of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                middle_name is not None and len(middle_name) > 75):
            raise ValueError("Invalid value for `middle_name`, length must be less than or equal to `75`")  # noqa: E501

        self._middle_name = middle_name

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

        Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)  # noqa: E501

        :return: The multiple_birth_status of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._multiple_birth_status

    @multiple_birth_status.setter
    def multiple_birth_status(self, multiple_birth_status):
        """Sets the multiple_birth_status of this TpdmCandidate.

        Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)  # noqa: E501

        :param multiple_birth_status: The multiple_birth_status of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._multiple_birth_status = multiple_birth_status

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

        An unordered collection of candidateOtherNames. Other names (e.g., alias, nickname, previous legal name) associated with a person.  # noqa: E501

        :return: The other_names of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateOtherName]
        """
        return self._other_names

    @other_names.setter
    def other_names(self, other_names):
        """Sets the other_names of this TpdmCandidate.

        An unordered collection of candidateOtherNames. Other names (e.g., alias, nickname, previous legal name) associated with a person.  # noqa: E501

        :param other_names: The other_names of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateOtherName]
        """

        self._other_names = other_names

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

        An unordered collection of candidatePersonalIdentificationDocuments. The documents presented as evident to verify one's personal identity; for example: drivers license, passport, birth certificate, etc.  # noqa: E501

        :return: The personal_identification_documents of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidatePersonalIdentificationDocument]
        """
        return self._personal_identification_documents

    @personal_identification_documents.setter
    def personal_identification_documents(self, personal_identification_documents):
        """Sets the personal_identification_documents of this TpdmCandidate.

        An unordered collection of candidatePersonalIdentificationDocuments. The documents presented as evident to verify one's personal identity; for example: drivers license, passport, birth certificate, etc.  # noqa: E501

        :param personal_identification_documents: The personal_identification_documents of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidatePersonalIdentificationDocument]
        """

        self._personal_identification_documents = personal_identification_documents

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

        A prefix used to denote the title, degree, position, or seniority of the person.  # noqa: E501

        :return: The personal_title_prefix of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._personal_title_prefix

    @personal_title_prefix.setter
    def personal_title_prefix(self, personal_title_prefix):
        """Sets the personal_title_prefix of this TpdmCandidate.

        A prefix used to denote the title, degree, position, or seniority of the person.  # noqa: E501

        :param personal_title_prefix: The personal_title_prefix of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                personal_title_prefix is not None and len(personal_title_prefix) > 30):
            raise ValueError("Invalid value for `personal_title_prefix`, length must be less than or equal to `30`")  # noqa: E501

        self._personal_title_prefix = personal_title_prefix

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

        An unordered collection of candidateRaces. The general racial category which most clearly reflects the individual's recognition of his or her community or with which the individual most identifies. The data model allows for multiple entries so that each individual can specify all appropriate races.  # noqa: E501

        :return: The races of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateRace]
        """
        return self._races

    @races.setter
    def races(self, races):
        """Sets the races of this TpdmCandidate.

        An unordered collection of candidateRaces. The general racial category which most clearly reflects the individual's recognition of his or her community or with which the individual most identifies. The data model allows for multiple entries so that each individual can specify all appropriate races.  # noqa: E501

        :param races: The races of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateRace]
        """

        self._races = races

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

        The sex of the candidate.  # noqa: E501

        :return: The sex_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._sex_descriptor

    @sex_descriptor.setter
    def sex_descriptor(self, sex_descriptor):
        """Sets the sex_descriptor of this TpdmCandidate.

        The sex of the candidate.  # noqa: E501

        :param sex_descriptor: The sex_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and sex_descriptor is None:
            raise ValueError("Invalid value for `sex_descriptor`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                sex_descriptor is not None and len(sex_descriptor) > 306):
            raise ValueError("Invalid value for `sex_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._sex_descriptor = sex_descriptor

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

        An unordered collection of candidateTelephones. The 10-digit telephone number, including the area code, for the person.  # noqa: E501

        :return: The telephones of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateTelephone]
        """
        return self._telephones

    @telephones.setter
    def telephones(self, telephones):
        """Sets the telephones of this TpdmCandidate.

        An unordered collection of candidateTelephones. The 10-digit telephone number, including the area code, for the person.  # noqa: E501

        :param telephones: The telephones of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateTelephone]
        """

        self._telephones = telephones

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

        A unique system-generated value that identifies the version of the resource.  # noqa: E501

        :return: The etag of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._etag

    @etag.setter
    def etag(self, etag):
        """Sets the etag of this TpdmCandidate.

        A unique system-generated value that identifies the version of the resource.  # noqa: E501

        :param etag: The etag of this TpdmCandidate.  # noqa: E501
        :type: str
        """

        self._etag = etag

    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(TpdmCandidate, 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, TpdmCandidate):
            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, TpdmCandidate):
            return True

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

# coding: utf-8

"""
    Ed-Fi Operational Data Store API

    The Ed-Fi ODS / API enables applications to read and write education data stored in an Ed-Fi ODS through a secure REST interface.  ***  > *Note: Consumers of ODS / API information should sanitize all data for display and storage. The ODS / API provides reasonable safeguards against cross-site scripting attacks and other malicious content, but the platform does not and cannot guarantee that the data it contains is free of all potentially harmful content.*  ***   # noqa: E501

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


import pprint
import re  # noqa: F401

import six

from swagger_client.configuration import Configuration


class TpdmCandidate(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 = {
        'id': 'str',
        'candidate_identifier': 'str',
        'person_reference': 'EdFiPersonReference',
        'addresses': 'list[TpdmCandidateAddress]',
        'birth_city': 'str',
        'birth_country_descriptor': 'str',
        'birth_date': 'date',
        'birth_international_province': 'str',
        'birth_sex_descriptor': 'str',
        'birth_state_abbreviation_descriptor': 'str',
        'date_entered_us': 'date',
        'disabilities': 'list[TpdmCandidateDisability]',
        'displacement_status': 'str',
        'economic_disadvantaged': 'bool',
        'electronic_mails': 'list[TpdmCandidateElectronicMail]',
        'english_language_exam_descriptor': 'str',
        'first_generation_student': 'bool',
        'first_name': 'str',
        'gender_descriptor': 'str',
        'generation_code_suffix': 'str',
        'hispanic_latino_ethnicity': 'bool',
        'languages': 'list[TpdmCandidateLanguage]',
        'last_surname': 'str',
        'limited_english_proficiency_descriptor': 'str',
        'maiden_name': 'str',
        'middle_name': 'str',
        'multiple_birth_status': 'bool',
        'other_names': 'list[TpdmCandidateOtherName]',
        'personal_identification_documents': 'list[TpdmCandidatePersonalIdentificationDocument]',
        'personal_title_prefix': 'str',
        'races': 'list[TpdmCandidateRace]',
        'sex_descriptor': 'str',
        'telephones': 'list[TpdmCandidateTelephone]',
        'etag': 'str'
    }

    attribute_map = {
        'id': 'id',
        'candidate_identifier': 'candidateIdentifier',
        'person_reference': 'personReference',
        'addresses': 'addresses',
        'birth_city': 'birthCity',
        'birth_country_descriptor': 'birthCountryDescriptor',
        'birth_date': 'birthDate',
        'birth_international_province': 'birthInternationalProvince',
        'birth_sex_descriptor': 'birthSexDescriptor',
        'birth_state_abbreviation_descriptor': 'birthStateAbbreviationDescriptor',
        'date_entered_us': 'dateEnteredUS',
        'disabilities': 'disabilities',
        'displacement_status': 'displacementStatus',
        'economic_disadvantaged': 'economicDisadvantaged',
        'electronic_mails': 'electronicMails',
        'english_language_exam_descriptor': 'englishLanguageExamDescriptor',
        'first_generation_student': 'firstGenerationStudent',
        'first_name': 'firstName',
        'gender_descriptor': 'genderDescriptor',
        'generation_code_suffix': 'generationCodeSuffix',
        'hispanic_latino_ethnicity': 'hispanicLatinoEthnicity',
        'languages': 'languages',
        'last_surname': 'lastSurname',
        'limited_english_proficiency_descriptor': 'limitedEnglishProficiencyDescriptor',
        'maiden_name': 'maidenName',
        'middle_name': 'middleName',
        'multiple_birth_status': 'multipleBirthStatus',
        'other_names': 'otherNames',
        'personal_identification_documents': 'personalIdentificationDocuments',
        'personal_title_prefix': 'personalTitlePrefix',
        'races': 'races',
        'sex_descriptor': 'sexDescriptor',
        'telephones': 'telephones',
        'etag': '_etag'
    }

    def __init__(self, id=None, candidate_identifier=None, person_reference=None, addresses=None, birth_city=None, birth_country_descriptor=None, birth_date=None, birth_international_province=None, birth_sex_descriptor=None, birth_state_abbreviation_descriptor=None, date_entered_us=None, disabilities=None, displacement_status=None, economic_disadvantaged=None, electronic_mails=None, english_language_exam_descriptor=None, first_generation_student=None, first_name=None, gender_descriptor=None, generation_code_suffix=None, hispanic_latino_ethnicity=None, languages=None, last_surname=None, limited_english_proficiency_descriptor=None, maiden_name=None, middle_name=None, multiple_birth_status=None, other_names=None, personal_identification_documents=None, personal_title_prefix=None, races=None, sex_descriptor=None, telephones=None, etag=None, _configuration=None):  # noqa: E501
        """TpdmCandidate - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._id = None
        self._candidate_identifier = None
        self._person_reference = None
        self._addresses = None
        self._birth_city = None
        self._birth_country_descriptor = None
        self._birth_date = None
        self._birth_international_province = None
        self._birth_sex_descriptor = None
        self._birth_state_abbreviation_descriptor = None
        self._date_entered_us = None
        self._disabilities = None
        self._displacement_status = None
        self._economic_disadvantaged = None
        self._electronic_mails = None
        self._english_language_exam_descriptor = None
        self._first_generation_student = None
        self._first_name = None
        self._gender_descriptor = None
        self._generation_code_suffix = None
        self._hispanic_latino_ethnicity = None
        self._languages = None
        self._last_surname = None
        self._limited_english_proficiency_descriptor = None
        self._maiden_name = None
        self._middle_name = None
        self._multiple_birth_status = None
        self._other_names = None
        self._personal_identification_documents = None
        self._personal_title_prefix = None
        self._races = None
        self._sex_descriptor = None
        self._telephones = None
        self._etag = None
        self.discriminator = None

        if id is not None:
            self.id = id
        self.candidate_identifier = candidate_identifier
        if person_reference is not None:
            self.person_reference = person_reference
        if addresses is not None:
            self.addresses = addresses
        if birth_city is not None:
            self.birth_city = birth_city
        if birth_country_descriptor is not None:
            self.birth_country_descriptor = birth_country_descriptor
        self.birth_date = birth_date
        if birth_international_province is not None:
            self.birth_international_province = birth_international_province
        if birth_sex_descriptor is not None:
            self.birth_sex_descriptor = birth_sex_descriptor
        if birth_state_abbreviation_descriptor is not None:
            self.birth_state_abbreviation_descriptor = birth_state_abbreviation_descriptor
        if date_entered_us is not None:
            self.date_entered_us = date_entered_us
        if disabilities is not None:
            self.disabilities = disabilities
        if displacement_status is not None:
            self.displacement_status = displacement_status
        if economic_disadvantaged is not None:
            self.economic_disadvantaged = economic_disadvantaged
        if electronic_mails is not None:
            self.electronic_mails = electronic_mails
        if english_language_exam_descriptor is not None:
            self.english_language_exam_descriptor = english_language_exam_descriptor
        if first_generation_student is not None:
            self.first_generation_student = first_generation_student
        self.first_name = first_name
        if gender_descriptor is not None:
            self.gender_descriptor = gender_descriptor
        if generation_code_suffix is not None:
            self.generation_code_suffix = generation_code_suffix
        if hispanic_latino_ethnicity is not None:
            self.hispanic_latino_ethnicity = hispanic_latino_ethnicity
        if languages is not None:
            self.languages = languages
        self.last_surname = last_surname
        if limited_english_proficiency_descriptor is not None:
            self.limited_english_proficiency_descriptor = limited_english_proficiency_descriptor
        if maiden_name is not None:
            self.maiden_name = maiden_name
        if middle_name is not None:
            self.middle_name = middle_name
        if multiple_birth_status is not None:
            self.multiple_birth_status = multiple_birth_status
        if other_names is not None:
            self.other_names = other_names
        if personal_identification_documents is not None:
            self.personal_identification_documents = personal_identification_documents
        if personal_title_prefix is not None:
            self.personal_title_prefix = personal_title_prefix
        if races is not None:
            self.races = races
        self.sex_descriptor = sex_descriptor
        if telephones is not None:
            self.telephones = telephones
        if etag is not None:
            self.etag = etag

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

          # noqa: E501

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

    @id.setter
    def id(self, id):
        """Sets the id of this TpdmCandidate.

          # noqa: E501

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

        self._id = id

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

        A unique alphanumeric code assigned to a candidate.  # noqa: E501

        :return: The candidate_identifier of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._candidate_identifier

    @candidate_identifier.setter
    def candidate_identifier(self, candidate_identifier):
        """Sets the candidate_identifier of this TpdmCandidate.

        A unique alphanumeric code assigned to a candidate.  # noqa: E501

        :param candidate_identifier: The candidate_identifier of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and candidate_identifier is None:
            raise ValueError("Invalid value for `candidate_identifier`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                candidate_identifier is not None and len(candidate_identifier) > 32):
            raise ValueError("Invalid value for `candidate_identifier`, length must be less than or equal to `32`")  # noqa: E501

        self._candidate_identifier = candidate_identifier

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


        :return: The person_reference of this TpdmCandidate.  # noqa: E501
        :rtype: EdFiPersonReference
        """
        return self._person_reference

    @person_reference.setter
    def person_reference(self, person_reference):
        """Sets the person_reference of this TpdmCandidate.


        :param person_reference: The person_reference of this TpdmCandidate.  # noqa: E501
        :type: EdFiPersonReference
        """

        self._person_reference = person_reference

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

        An unordered collection of candidateAddresses. The set of elements that describes an address, including the street address, city, state, and ZIP code.  # noqa: E501

        :return: The addresses of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateAddress]
        """
        return self._addresses

    @addresses.setter
    def addresses(self, addresses):
        """Sets the addresses of this TpdmCandidate.

        An unordered collection of candidateAddresses. The set of elements that describes an address, including the street address, city, state, and ZIP code.  # noqa: E501

        :param addresses: The addresses of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateAddress]
        """

        self._addresses = addresses

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

        The city the student was born in.  # noqa: E501

        :return: The birth_city of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_city

    @birth_city.setter
    def birth_city(self, birth_city):
        """Sets the birth_city of this TpdmCandidate.

        The city the student was born in.  # noqa: E501

        :param birth_city: The birth_city of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_city is not None and len(birth_city) > 30):
            raise ValueError("Invalid value for `birth_city`, length must be less than or equal to `30`")  # noqa: E501

        self._birth_city = birth_city

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

        The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes.  # noqa: E501

        :return: The birth_country_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_country_descriptor

    @birth_country_descriptor.setter
    def birth_country_descriptor(self, birth_country_descriptor):
        """Sets the birth_country_descriptor of this TpdmCandidate.

        The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes.  # noqa: E501

        :param birth_country_descriptor: The birth_country_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_country_descriptor is not None and len(birth_country_descriptor) > 306):
            raise ValueError("Invalid value for `birth_country_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._birth_country_descriptor = birth_country_descriptor

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

        The month, day, and year on which an individual was born.  # noqa: E501

        :return: The birth_date of this TpdmCandidate.  # noqa: E501
        :rtype: date
        """
        return self._birth_date

    @birth_date.setter
    def birth_date(self, birth_date):
        """Sets the birth_date of this TpdmCandidate.

        The month, day, and year on which an individual was born.  # noqa: E501

        :param birth_date: The birth_date of this TpdmCandidate.  # noqa: E501
        :type: date
        """
        if self._configuration.client_side_validation and birth_date is None:
            raise ValueError("Invalid value for `birth_date`, must not be `None`")  # noqa: E501

        self._birth_date = birth_date

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

        For students born outside of the U.S., the Province or jurisdiction in which an individual is born.  # noqa: E501

        :return: The birth_international_province of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_international_province

    @birth_international_province.setter
    def birth_international_province(self, birth_international_province):
        """Sets the birth_international_province of this TpdmCandidate.

        For students born outside of the U.S., the Province or jurisdiction in which an individual is born.  # noqa: E501

        :param birth_international_province: The birth_international_province of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_international_province is not None and len(birth_international_province) > 150):
            raise ValueError("Invalid value for `birth_international_province`, length must be less than or equal to `150`")  # noqa: E501

        self._birth_international_province = birth_international_province

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

        A person's gender at birth.  # noqa: E501

        :return: The birth_sex_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_sex_descriptor

    @birth_sex_descriptor.setter
    def birth_sex_descriptor(self, birth_sex_descriptor):
        """Sets the birth_sex_descriptor of this TpdmCandidate.

        A person's gender at birth.  # noqa: E501

        :param birth_sex_descriptor: The birth_sex_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_sex_descriptor is not None and len(birth_sex_descriptor) > 306):
            raise ValueError("Invalid value for `birth_sex_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._birth_sex_descriptor = birth_sex_descriptor

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

        The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born.  # noqa: E501

        :return: The birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._birth_state_abbreviation_descriptor

    @birth_state_abbreviation_descriptor.setter
    def birth_state_abbreviation_descriptor(self, birth_state_abbreviation_descriptor):
        """Sets the birth_state_abbreviation_descriptor of this TpdmCandidate.

        The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born.  # noqa: E501

        :param birth_state_abbreviation_descriptor: The birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                birth_state_abbreviation_descriptor is not None and len(birth_state_abbreviation_descriptor) > 306):
            raise ValueError("Invalid value for `birth_state_abbreviation_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._birth_state_abbreviation_descriptor = birth_state_abbreviation_descriptor

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

        For students born outside of the U.S., the date the student entered the U.S.  # noqa: E501

        :return: The date_entered_us of this TpdmCandidate.  # noqa: E501
        :rtype: date
        """
        return self._date_entered_us

    @date_entered_us.setter
    def date_entered_us(self, date_entered_us):
        """Sets the date_entered_us of this TpdmCandidate.

        For students born outside of the U.S., the date the student entered the U.S.  # noqa: E501

        :param date_entered_us: The date_entered_us of this TpdmCandidate.  # noqa: E501
        :type: date
        """

        self._date_entered_us = date_entered_us

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

        An unordered collection of candidateDisabilities. The disability condition(s) that best describes an individual's impairment.  # noqa: E501

        :return: The disabilities of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateDisability]
        """
        return self._disabilities

    @disabilities.setter
    def disabilities(self, disabilities):
        """Sets the disabilities of this TpdmCandidate.

        An unordered collection of candidateDisabilities. The disability condition(s) that best describes an individual's impairment.  # noqa: E501

        :param disabilities: The disabilities of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateDisability]
        """

        self._disabilities = disabilities

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

        Indicates a state health or weather related event that displaces a group of students, and may require additional funding, educational, or social services.  # noqa: E501

        :return: The displacement_status of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._displacement_status

    @displacement_status.setter
    def displacement_status(self, displacement_status):
        """Sets the displacement_status of this TpdmCandidate.

        Indicates a state health or weather related event that displaces a group of students, and may require additional funding, educational, or social services.  # noqa: E501

        :param displacement_status: The displacement_status of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                displacement_status is not None and len(displacement_status) > 30):
            raise ValueError("Invalid value for `displacement_status`, length must be less than or equal to `30`")  # noqa: E501

        self._displacement_status = displacement_status

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

        An indication of inadequate financial condition of an individual's family, as determined by family income, number of family members/dependents, participation in public assistance programs, and/or other characteristics considered relevant by federal, state, and local policy.  # noqa: E501

        :return: The economic_disadvantaged of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._economic_disadvantaged

    @economic_disadvantaged.setter
    def economic_disadvantaged(self, economic_disadvantaged):
        """Sets the economic_disadvantaged of this TpdmCandidate.

        An indication of inadequate financial condition of an individual's family, as determined by family income, number of family members/dependents, participation in public assistance programs, and/or other characteristics considered relevant by federal, state, and local policy.  # noqa: E501

        :param economic_disadvantaged: The economic_disadvantaged of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._economic_disadvantaged = economic_disadvantaged

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

        An unordered collection of candidateElectronicMails. The numbers, letters, and symbols used to identify an electronic mail (e-mail) user within the network to which the individual or organization belongs.  # noqa: E501

        :return: The electronic_mails of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateElectronicMail]
        """
        return self._electronic_mails

    @electronic_mails.setter
    def electronic_mails(self, electronic_mails):
        """Sets the electronic_mails of this TpdmCandidate.

        An unordered collection of candidateElectronicMails. The numbers, letters, and symbols used to identify an electronic mail (e-mail) user within the network to which the individual or organization belongs.  # noqa: E501

        :param electronic_mails: The electronic_mails of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateElectronicMail]
        """

        self._electronic_mails = electronic_mails

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

        Indicates that a person passed, failed, or did not take an English Language assessment (e.g., TOEFFL).  # noqa: E501

        :return: The english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._english_language_exam_descriptor

    @english_language_exam_descriptor.setter
    def english_language_exam_descriptor(self, english_language_exam_descriptor):
        """Sets the english_language_exam_descriptor of this TpdmCandidate.

        Indicates that a person passed, failed, or did not take an English Language assessment (e.g., TOEFFL).  # noqa: E501

        :param english_language_exam_descriptor: The english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                english_language_exam_descriptor is not None and len(english_language_exam_descriptor) > 306):
            raise ValueError("Invalid value for `english_language_exam_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._english_language_exam_descriptor = english_language_exam_descriptor

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

        Indicator of whether individual is a first generation college student.  # noqa: E501

        :return: The first_generation_student of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._first_generation_student

    @first_generation_student.setter
    def first_generation_student(self, first_generation_student):
        """Sets the first_generation_student of this TpdmCandidate.

        Indicator of whether individual is a first generation college student.  # noqa: E501

        :param first_generation_student: The first_generation_student of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._first_generation_student = first_generation_student

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

        A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.  # noqa: E501

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

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

        A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.  # noqa: E501

        :param first_name: The first_name of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and first_name is None:
            raise ValueError("Invalid value for `first_name`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                first_name is not None and len(first_name) > 75):
            raise ValueError("Invalid value for `first_name`, length must be less than or equal to `75`")  # noqa: E501

        self._first_name = first_name

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

        The gender of the candidate.  # noqa: E501

        :return: The gender_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._gender_descriptor

    @gender_descriptor.setter
    def gender_descriptor(self, gender_descriptor):
        """Sets the gender_descriptor of this TpdmCandidate.

        The gender of the candidate.  # noqa: E501

        :param gender_descriptor: The gender_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                gender_descriptor is not None and len(gender_descriptor) > 306):
            raise ValueError("Invalid value for `gender_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._gender_descriptor = gender_descriptor

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

        An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).  # noqa: E501

        :return: The generation_code_suffix of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._generation_code_suffix

    @generation_code_suffix.setter
    def generation_code_suffix(self, generation_code_suffix):
        """Sets the generation_code_suffix of this TpdmCandidate.

        An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).  # noqa: E501

        :param generation_code_suffix: The generation_code_suffix of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                generation_code_suffix is not None and len(generation_code_suffix) > 10):
            raise ValueError("Invalid value for `generation_code_suffix`, length must be less than or equal to `10`")  # noqa: E501

        self._generation_code_suffix = generation_code_suffix

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

        An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"  # noqa: E501

        :return: The hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._hispanic_latino_ethnicity

    @hispanic_latino_ethnicity.setter
    def hispanic_latino_ethnicity(self, hispanic_latino_ethnicity):
        """Sets the hispanic_latino_ethnicity of this TpdmCandidate.

        An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"  # noqa: E501

        :param hispanic_latino_ethnicity: The hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._hispanic_latino_ethnicity = hispanic_latino_ethnicity

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

        An unordered collection of candidateLanguages. The language(s) the individual uses to communicate.  # noqa: E501

        :return: The languages of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateLanguage]
        """
        return self._languages

    @languages.setter
    def languages(self, languages):
        """Sets the languages of this TpdmCandidate.

        An unordered collection of candidateLanguages. The language(s) the individual uses to communicate.  # noqa: E501

        :param languages: The languages of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateLanguage]
        """

        self._languages = languages

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

        The name borne in common by members of a family.  # noqa: E501

        :return: The last_surname of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._last_surname

    @last_surname.setter
    def last_surname(self, last_surname):
        """Sets the last_surname of this TpdmCandidate.

        The name borne in common by members of a family.  # noqa: E501

        :param last_surname: The last_surname of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and last_surname is None:
            raise ValueError("Invalid value for `last_surname`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                last_surname is not None and len(last_surname) > 75):
            raise ValueError("Invalid value for `last_surname`, length must be less than or equal to `75`")  # noqa: E501

        self._last_surname = last_surname

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

        An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient.  # noqa: E501

        :return: The limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._limited_english_proficiency_descriptor

    @limited_english_proficiency_descriptor.setter
    def limited_english_proficiency_descriptor(self, limited_english_proficiency_descriptor):
        """Sets the limited_english_proficiency_descriptor of this TpdmCandidate.

        An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient.  # noqa: E501

        :param limited_english_proficiency_descriptor: The limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                limited_english_proficiency_descriptor is not None and len(limited_english_proficiency_descriptor) > 306):
            raise ValueError("Invalid value for `limited_english_proficiency_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._limited_english_proficiency_descriptor = limited_english_proficiency_descriptor

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

        The person's maiden name.  # noqa: E501

        :return: The maiden_name of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._maiden_name

    @maiden_name.setter
    def maiden_name(self, maiden_name):
        """Sets the maiden_name of this TpdmCandidate.

        The person's maiden name.  # noqa: E501

        :param maiden_name: The maiden_name of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                maiden_name is not None and len(maiden_name) > 75):
            raise ValueError("Invalid value for `maiden_name`, length must be less than or equal to `75`")  # noqa: E501

        self._maiden_name = maiden_name

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

        A secondary name given to an individual at birth, baptism, or during another naming ceremony.  # noqa: E501

        :return: The middle_name of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._middle_name

    @middle_name.setter
    def middle_name(self, middle_name):
        """Sets the middle_name of this TpdmCandidate.

        A secondary name given to an individual at birth, baptism, or during another naming ceremony.  # noqa: E501

        :param middle_name: The middle_name of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                middle_name is not None and len(middle_name) > 75):
            raise ValueError("Invalid value for `middle_name`, length must be less than or equal to `75`")  # noqa: E501

        self._middle_name = middle_name

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

        Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)  # noqa: E501

        :return: The multiple_birth_status of this TpdmCandidate.  # noqa: E501
        :rtype: bool
        """
        return self._multiple_birth_status

    @multiple_birth_status.setter
    def multiple_birth_status(self, multiple_birth_status):
        """Sets the multiple_birth_status of this TpdmCandidate.

        Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)  # noqa: E501

        :param multiple_birth_status: The multiple_birth_status of this TpdmCandidate.  # noqa: E501
        :type: bool
        """

        self._multiple_birth_status = multiple_birth_status

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

        An unordered collection of candidateOtherNames. Other names (e.g., alias, nickname, previous legal name) associated with a person.  # noqa: E501

        :return: The other_names of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateOtherName]
        """
        return self._other_names

    @other_names.setter
    def other_names(self, other_names):
        """Sets the other_names of this TpdmCandidate.

        An unordered collection of candidateOtherNames. Other names (e.g., alias, nickname, previous legal name) associated with a person.  # noqa: E501

        :param other_names: The other_names of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateOtherName]
        """

        self._other_names = other_names

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

        An unordered collection of candidatePersonalIdentificationDocuments. The documents presented as evident to verify one's personal identity; for example: drivers license, passport, birth certificate, etc.  # noqa: E501

        :return: The personal_identification_documents of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidatePersonalIdentificationDocument]
        """
        return self._personal_identification_documents

    @personal_identification_documents.setter
    def personal_identification_documents(self, personal_identification_documents):
        """Sets the personal_identification_documents of this TpdmCandidate.

        An unordered collection of candidatePersonalIdentificationDocuments. The documents presented as evident to verify one's personal identity; for example: drivers license, passport, birth certificate, etc.  # noqa: E501

        :param personal_identification_documents: The personal_identification_documents of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidatePersonalIdentificationDocument]
        """

        self._personal_identification_documents = personal_identification_documents

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

        A prefix used to denote the title, degree, position, or seniority of the person.  # noqa: E501

        :return: The personal_title_prefix of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._personal_title_prefix

    @personal_title_prefix.setter
    def personal_title_prefix(self, personal_title_prefix):
        """Sets the personal_title_prefix of this TpdmCandidate.

        A prefix used to denote the title, degree, position, or seniority of the person.  # noqa: E501

        :param personal_title_prefix: The personal_title_prefix of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if (self._configuration.client_side_validation and
                personal_title_prefix is not None and len(personal_title_prefix) > 30):
            raise ValueError("Invalid value for `personal_title_prefix`, length must be less than or equal to `30`")  # noqa: E501

        self._personal_title_prefix = personal_title_prefix

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

        An unordered collection of candidateRaces. The general racial category which most clearly reflects the individual's recognition of his or her community or with which the individual most identifies. The data model allows for multiple entries so that each individual can specify all appropriate races.  # noqa: E501

        :return: The races of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateRace]
        """
        return self._races

    @races.setter
    def races(self, races):
        """Sets the races of this TpdmCandidate.

        An unordered collection of candidateRaces. The general racial category which most clearly reflects the individual's recognition of his or her community or with which the individual most identifies. The data model allows for multiple entries so that each individual can specify all appropriate races.  # noqa: E501

        :param races: The races of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateRace]
        """

        self._races = races

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

        The sex of the candidate.  # noqa: E501

        :return: The sex_descriptor of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._sex_descriptor

    @sex_descriptor.setter
    def sex_descriptor(self, sex_descriptor):
        """Sets the sex_descriptor of this TpdmCandidate.

        The sex of the candidate.  # noqa: E501

        :param sex_descriptor: The sex_descriptor of this TpdmCandidate.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and sex_descriptor is None:
            raise ValueError("Invalid value for `sex_descriptor`, must not be `None`")  # noqa: E501
        if (self._configuration.client_side_validation and
                sex_descriptor is not None and len(sex_descriptor) > 306):
            raise ValueError("Invalid value for `sex_descriptor`, length must be less than or equal to `306`")  # noqa: E501

        self._sex_descriptor = sex_descriptor

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

        An unordered collection of candidateTelephones. The 10-digit telephone number, including the area code, for the person.  # noqa: E501

        :return: The telephones of this TpdmCandidate.  # noqa: E501
        :rtype: list[TpdmCandidateTelephone]
        """
        return self._telephones

    @telephones.setter
    def telephones(self, telephones):
        """Sets the telephones of this TpdmCandidate.

        An unordered collection of candidateTelephones. The 10-digit telephone number, including the area code, for the person.  # noqa: E501

        :param telephones: The telephones of this TpdmCandidate.  # noqa: E501
        :type: list[TpdmCandidateTelephone]
        """

        self._telephones = telephones

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

        A unique system-generated value that identifies the version of the resource.  # noqa: E501

        :return: The etag of this TpdmCandidate.  # noqa: E501
        :rtype: str
        """
        return self._etag

    @etag.setter
    def etag(self, etag):
        """Sets the etag of this TpdmCandidate.

        A unique system-generated value that identifies the version of the resource.  # noqa: E501

        :param etag: The etag of this TpdmCandidate.  # noqa: E501
        :type: str
        """

        self._etag = etag

    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(TpdmCandidate, 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, TpdmCandidate):
            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, TpdmCandidate):
            return True

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

# coding: utf-8 Ed-Fi Operational Data Store API      The Ed-Fi ODS / API enables applications to read and write education data stored in an Ed-Fi ODS through a secure REST interface.  ***  > *Note: Consumers of ODS / API information should sanitize all data for display and storage. The ODS / API provides reasonable safeguards against cross-site scripting attacks and other malicious content, but the platform does not and cannot guarantee that the data it contains is free of all potentially harmful content.*  ***   # noqa: E501      OpenAPI spec version: 3          Generated by: https://github.com/swagger-api/swagger-codegen.git # noqa: F401 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. # noqa: E501 TpdmCandidate - a model defined in Swagger # noqa: E501 Gets the id of this TpdmCandidate.  # noqa: E501            # noqa: E501          :return: The id of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the id of this TpdmCandidate.            # noqa: E501          :param id: The id of this TpdmCandidate.  # noqa: E501         :type: str Gets the candidate_identifier of this TpdmCandidate.  # noqa: E501          A unique alphanumeric code assigned to a candidate.  # noqa: E501          :return: The candidate_identifier of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the candidate_identifier of this TpdmCandidate.          A unique alphanumeric code assigned to a candidate.  # noqa: E501          :param candidate_identifier: The candidate_identifier of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 # noqa: E501 Gets the person_reference of this TpdmCandidate.  # noqa: E501           :return: The person_reference of this TpdmCandidate.  # noqa: E501         :rtype: EdFiPersonReference Sets the person_reference of this TpdmCandidate.           :param person_reference: The person_reference of this TpdmCandidate.  # noqa: E501         :type: EdFiPersonReference Gets the addresses of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateAddresses. The set of elements that describes an address, including the street address, city, state, and ZIP code.  # noqa: E501          :return: The addresses of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateAddress] Sets the addresses of this TpdmCandidate.          An unordered collection of candidateAddresses. The set of elements that describes an address, including the street address, city, state, and ZIP code.  # noqa: E501          :param addresses: The addresses of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateAddress] Gets the birth_city of this TpdmCandidate.  # noqa: E501          The city the student was born in.  # noqa: E501          :return: The birth_city of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the birth_city of this TpdmCandidate.          The city the student was born in.  # noqa: E501          :param birth_city: The birth_city of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the birth_country_descriptor of this TpdmCandidate.  # noqa: E501          The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes.  # noqa: E501          :return: The birth_country_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the birth_country_descriptor of this TpdmCandidate.          The country in which an individual is born. It is strongly recommended that entries use only ISO 3166 2-letter country codes.  # noqa: E501          :param birth_country_descriptor: The birth_country_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the birth_date of this TpdmCandidate.  # noqa: E501          The month, day, and year on which an individual was born.  # noqa: E501          :return: The birth_date of this TpdmCandidate.  # noqa: E501         :rtype: date Sets the birth_date of this TpdmCandidate.          The month, day, and year on which an individual was born.  # noqa: E501          :param birth_date: The birth_date of this TpdmCandidate.  # noqa: E501         :type: date # noqa: E501 Gets the birth_international_province of this TpdmCandidate.  # noqa: E501          For students born outside of the U.S., the Province or jurisdiction in which an individual is born.  # noqa: E501          :return: The birth_international_province of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the birth_international_province of this TpdmCandidate.          For students born outside of the U.S., the Province or jurisdiction in which an individual is born.  # noqa: E501          :param birth_international_province: The birth_international_province of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the birth_sex_descriptor of this TpdmCandidate.  # noqa: E501          A person's gender at birth.  # noqa: E501          :return: The birth_sex_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the birth_sex_descriptor of this TpdmCandidate.          A person's gender at birth.  # noqa: E501          :param birth_sex_descriptor: The birth_sex_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501          The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born.  # noqa: E501          :return: The birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the birth_state_abbreviation_descriptor of this TpdmCandidate.          The abbreviation for the name of the state (within the United States) or extra-state jurisdiction in which an individual was born.  # noqa: E501          :param birth_state_abbreviation_descriptor: The birth_state_abbreviation_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the date_entered_us of this TpdmCandidate.  # noqa: E501          For students born outside of the U.S., the date the student entered the U.S.  # noqa: E501          :return: The date_entered_us of this TpdmCandidate.  # noqa: E501         :rtype: date Sets the date_entered_us of this TpdmCandidate.          For students born outside of the U.S., the date the student entered the U.S.  # noqa: E501          :param date_entered_us: The date_entered_us of this TpdmCandidate.  # noqa: E501         :type: date Gets the disabilities of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateDisabilities. The disability condition(s) that best describes an individual's impairment.  # noqa: E501          :return: The disabilities of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateDisability] Sets the disabilities of this TpdmCandidate.          An unordered collection of candidateDisabilities. The disability condition(s) that best describes an individual's impairment.  # noqa: E501          :param disabilities: The disabilities of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateDisability] Gets the displacement_status of this TpdmCandidate.  # noqa: E501          Indicates a state health or weather related event that displaces a group of students, and may require additional funding, educational, or social services.  # noqa: E501          :return: The displacement_status of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the displacement_status of this TpdmCandidate.          Indicates a state health or weather related event that displaces a group of students, and may require additional funding, educational, or social services.  # noqa: E501          :param displacement_status: The displacement_status of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the economic_disadvantaged of this TpdmCandidate.  # noqa: E501          An indication of inadequate financial condition of an individual's family, as determined by family income, number of family members/dependents, participation in public assistance programs, and/or other characteristics considered relevant by federal, state, and local policy.  # noqa: E501          :return: The economic_disadvantaged of this TpdmCandidate.  # noqa: E501         :rtype: bool Sets the economic_disadvantaged of this TpdmCandidate.          An indication of inadequate financial condition of an individual's family, as determined by family income, number of family members/dependents, participation in public assistance programs, and/or other characteristics considered relevant by federal, state, and local policy.  # noqa: E501          :param economic_disadvantaged: The economic_disadvantaged of this TpdmCandidate.  # noqa: E501         :type: bool Gets the electronic_mails of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateElectronicMails. The numbers, letters, and symbols used to identify an electronic mail (e-mail) user within the network to which the individual or organization belongs.  # noqa: E501          :return: The electronic_mails of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateElectronicMail] Sets the electronic_mails of this TpdmCandidate.          An unordered collection of candidateElectronicMails. The numbers, letters, and symbols used to identify an electronic mail (e-mail) user within the network to which the individual or organization belongs.  # noqa: E501          :param electronic_mails: The electronic_mails of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateElectronicMail] Gets the english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501          Indicates that a person passed, failed, or did not take an English Language assessment (e.g., TOEFFL).  # noqa: E501          :return: The english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the english_language_exam_descriptor of this TpdmCandidate.          Indicates that a person passed, failed, or did not take an English Language assessment (e.g., TOEFFL).  # noqa: E501          :param english_language_exam_descriptor: The english_language_exam_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the first_generation_student of this TpdmCandidate.  # noqa: E501          Indicator of whether individual is a first generation college student.  # noqa: E501          :return: The first_generation_student of this TpdmCandidate.  # noqa: E501         :rtype: bool Sets the first_generation_student of this TpdmCandidate.          Indicator of whether individual is a first generation college student.  # noqa: E501          :param first_generation_student: The first_generation_student of this TpdmCandidate.  # noqa: E501         :type: bool Gets the first_name of this TpdmCandidate.  # noqa: E501          A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.  # noqa: E501          :return: The first_name of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the first_name of this TpdmCandidate.          A name given to an individual at birth, baptism, or during another naming ceremony, or through legal change.  # noqa: E501          :param first_name: The first_name of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 # noqa: E501 Gets the gender_descriptor of this TpdmCandidate.  # noqa: E501          The gender of the candidate.  # noqa: E501          :return: The gender_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the gender_descriptor of this TpdmCandidate.          The gender of the candidate.  # noqa: E501          :param gender_descriptor: The gender_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the generation_code_suffix of this TpdmCandidate.  # noqa: E501          An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).  # noqa: E501          :return: The generation_code_suffix of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the generation_code_suffix of this TpdmCandidate.          An appendage, if any, used to denote an individual's generation in his family (e.g., Jr., Sr., III).  # noqa: E501          :param generation_code_suffix: The generation_code_suffix of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501          An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"  # noqa: E501          :return: The hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501         :rtype: bool Sets the hispanic_latino_ethnicity of this TpdmCandidate.          An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central, and South America, and other Spanish cultures, regardless of race. The term, \"Spanish origin,\" can be used in addition to \"Hispanic or Latino.\"  # noqa: E501          :param hispanic_latino_ethnicity: The hispanic_latino_ethnicity of this TpdmCandidate.  # noqa: E501         :type: bool Gets the languages of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateLanguages. The language(s) the individual uses to communicate.  # noqa: E501          :return: The languages of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateLanguage] Sets the languages of this TpdmCandidate.          An unordered collection of candidateLanguages. The language(s) the individual uses to communicate.  # noqa: E501          :param languages: The languages of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateLanguage] Gets the last_surname of this TpdmCandidate.  # noqa: E501          The name borne in common by members of a family.  # noqa: E501          :return: The last_surname of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the last_surname of this TpdmCandidate.          The name borne in common by members of a family.  # noqa: E501          :param last_surname: The last_surname of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 # noqa: E501 Gets the limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501          An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient.  # noqa: E501          :return: The limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the limited_english_proficiency_descriptor of this TpdmCandidate.          An indication that the student has been identified as limited English proficient by the Language Proficiency Assessment Committee (LPAC), or English proficient.  # noqa: E501          :param limited_english_proficiency_descriptor: The limited_english_proficiency_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the maiden_name of this TpdmCandidate.  # noqa: E501          The person's maiden name.  # noqa: E501          :return: The maiden_name of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the maiden_name of this TpdmCandidate.          The person's maiden name.  # noqa: E501          :param maiden_name: The maiden_name of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the middle_name of this TpdmCandidate.  # noqa: E501          A secondary name given to an individual at birth, baptism, or during another naming ceremony.  # noqa: E501          :return: The middle_name of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the middle_name of this TpdmCandidate.          A secondary name given to an individual at birth, baptism, or during another naming ceremony.  # noqa: E501          :param middle_name: The middle_name of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the multiple_birth_status of this TpdmCandidate.  # noqa: E501          Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)  # noqa: E501          :return: The multiple_birth_status of this TpdmCandidate.  # noqa: E501         :rtype: bool Sets the multiple_birth_status of this TpdmCandidate.          Indicator of whether the student was born with other siblings (i.e., twins, triplets, etc.)  # noqa: E501          :param multiple_birth_status: The multiple_birth_status of this TpdmCandidate.  # noqa: E501         :type: bool Gets the other_names of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateOtherNames. Other names (e.g., alias, nickname, previous legal name) associated with a person.  # noqa: E501          :return: The other_names of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateOtherName] Sets the other_names of this TpdmCandidate.          An unordered collection of candidateOtherNames. Other names (e.g., alias, nickname, previous legal name) associated with a person.  # noqa: E501          :param other_names: The other_names of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateOtherName] Gets the personal_identification_documents of this TpdmCandidate.  # noqa: E501          An unordered collection of candidatePersonalIdentificationDocuments. The documents presented as evident to verify one's personal identity; for example: drivers license, passport, birth certificate, etc.  # noqa: E501          :return: The personal_identification_documents of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidatePersonalIdentificationDocument] Sets the personal_identification_documents of this TpdmCandidate.          An unordered collection of candidatePersonalIdentificationDocuments. The documents presented as evident to verify one's personal identity; for example: drivers license, passport, birth certificate, etc.  # noqa: E501          :param personal_identification_documents: The personal_identification_documents of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidatePersonalIdentificationDocument] Gets the personal_title_prefix of this TpdmCandidate.  # noqa: E501          A prefix used to denote the title, degree, position, or seniority of the person.  # noqa: E501          :return: The personal_title_prefix of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the personal_title_prefix of this TpdmCandidate.          A prefix used to denote the title, degree, position, or seniority of the person.  # noqa: E501          :param personal_title_prefix: The personal_title_prefix of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 Gets the races of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateRaces. The general racial category which most clearly reflects the individual's recognition of his or her community or with which the individual most identifies. The data model allows for multiple entries so that each individual can specify all appropriate races.  # noqa: E501          :return: The races of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateRace] Sets the races of this TpdmCandidate.          An unordered collection of candidateRaces. The general racial category which most clearly reflects the individual's recognition of his or her community or with which the individual most identifies. The data model allows for multiple entries so that each individual can specify all appropriate races.  # noqa: E501          :param races: The races of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateRace] Gets the sex_descriptor of this TpdmCandidate.  # noqa: E501          The sex of the candidate.  # noqa: E501          :return: The sex_descriptor of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the sex_descriptor of this TpdmCandidate.          The sex of the candidate.  # noqa: E501          :param sex_descriptor: The sex_descriptor of this TpdmCandidate.  # noqa: E501         :type: str # noqa: E501 # noqa: E501 Gets the telephones of this TpdmCandidate.  # noqa: E501          An unordered collection of candidateTelephones. The 10-digit telephone number, including the area code, for the person.  # noqa: E501          :return: The telephones of this TpdmCandidate.  # noqa: E501         :rtype: list[TpdmCandidateTelephone] Sets the telephones of this TpdmCandidate.          An unordered collection of candidateTelephones. The 10-digit telephone number, including the area code, for the person.  # noqa: E501          :param telephones: The telephones of this TpdmCandidate.  # noqa: E501         :type: list[TpdmCandidateTelephone] Gets the etag of this TpdmCandidate.  # noqa: E501          A unique system-generated value that identifies the version of the resource.  # noqa: E501          :return: The etag of this TpdmCandidate.  # noqa: E501         :rtype: str Sets the etag of this TpdmCandidate.          A unique system-generated value that identifies the version of the resource.  # noqa: E501          :param etag: The etag of this TpdmCandidate.  # noqa: E501         :type: str Returns the model properties as a dict Returns the string representation of the model For `print` and `pprint` Returns true if both objects are equal Returns true if both objects are not equal