# -*- coding: utf-8 -*-

"""
   wegene.Models.AncestryArea

   This file was automatically generated by APIMATIC BETA v2.0 on 02/22/2016
"""
from wegene.APIHelper import APIHelper


class AncestryArea(object):

    """Implementation of the 'ancestry area' model.

    User ancestry composition areas information

    Attributes:
        uygur (string): composition component
        ny (string): composition component
        finnish_russian (string): composition component
        iranian (string): composition component
        dai (string): composition component
        spanish (string): composition component
        han_southern (string): composition component
        han_northern (string): composition component
        somali (string): composition component
        tungus (string): composition component
        sardinian (string): composition component
        mayan (string): composition component
        mongolian (string): composition component
        egyptian (string): composition component
        pima (string): composition component
        gaoshan (string): composition component
        lahu (string): composition component
        cambodian (string): composition component
        korean (string): composition component
        french (string): composition component
        english (string): composition component
        balkan (string): composition component
        sindhi (string): composition component
        papuan (string): composition component
        hungarian (string): composition component
        kinh (string): composition component
        japanese (string): composition component
        eskimo (string): composition component
        saudi (string): composition component
        mbuti (string): composition component
        she (string): composition component
        tibetan (string): composition component
        yoruba (string): composition component
        bantusa (string): composition component
        ashkenazi (string): composition component
        mala (string): composition component
        yakut (string): composition component
        bengali (string): composition component
        thai (string): composition component
        kyrgyz (string): composition component
        uzbek (string): composition component
        miao_yao (string): composition component

    """

    def __init__(self,
                 **kwargs):
        """Constructor for the Report class

        Args:
            **kwargs: Keyword Arguments in order to initialise the
                object. Any of the attributes in this object are able to
                be set through the **kwargs of the constructor. The values
                that can be supplied and their types are as follows::

                    uygur -- string -- composition component
                    ny -- string -- composition component
                    finnish_russian -- string -- composition component
                    iranian -- string -- composition component
                    dai -- string -- composition component
                    spanish -- string -- composition component
                    han_southern -- string -- composition component
                    han_northern -- string -- composition component
                    somali -- string -- composition component
                    tungus -- string -- composition component
                    sardinian -- string -- composition component
                    mayan -- string -- composition component
                    mongolian -- string -- composition component
                    egyptian -- string -- composition component
                    pima -- string -- composition component
                    gaoshan -- string -- composition component
                    lahu -- string -- composition component
                    cambodian -- string -- composition component
                    korean -- string -- composition component
                    french -- string -- composition component
                    english -- string -- composition component
                    balkan -- string -- composition component
                    sindhi -- string -- composition component
                    papuan -- string -- composition component
                    hungarian -- string -- composition component
                    kinh -- string -- composition component
                    japanese -- string -- composition component
                    eskimo -- string -- composition component
                    saudi -- string -- composition component
                    mbuti -- string -- composition component
                    she -- string -- composition component
                    tibetan -- string -- composition component
                    yoruba -- string -- composition component
                    bantusa -- string -- composition component
                    ashkenazi -- string -- composition component
                    mala -- string -- composition component
                    yakut -- string -- composition component
                    bengali -- string -- composition component
                    thai -- string -- composition component
                    kyrgyz -- string -- composition component
                    uzbek -- string -- composition component
                    miao_yao -- string -- composition component

        """
        # Set all of the parameters to their default values
        self.uygur = None
        self.ny = None
        self.finnish_russian = None
        self.iranian = None
        self.dai = None
        self.spanish = None
        self.han_southern = None
        self.han_northern = None
        self.somali = None
        self.tungus = None
        self.sardinian = None
        self.mayan = None
        self.mongolian = None
        self.egyptian = None
        self.pima = None
        self.gaoshan = None
        self.lahu = None
        self.cambodian = None
        self.korean = None
        self.french = None
        self.english = None
        self.balkan = None
        self.sindhi = None
        self.papuan = None
        self.hungarian = None
        self.kinh = None
        self.japanese = None
        self.eskimo = None
        self.saudi = None
        self.mbuti = None
        self.she = None
        self.tibetan = None
        self.yoruba = None
        self.bantusa = None
        self.ashkenazi = None
        self.mala = None
        self.yakut = None
        self.bengali = None
        self.thai = None
        self.kyrgyz = None
        self.uzbek = None
        self.miao_yao = None

        # Create a mapping from API property names to Model property names
        replace_names = {
            "uygur": "uygur",
            "ny": "ny",
            "finnish_russian": "finnish_russian",
            "iranian": "iranian",
            "dai": "dai",
            "spanish": "spanish",
            "han_southern": "han_southern",
            "han_northern": "han_northern",
            "somali": "somali",
            "tungus": "tungus",
            "sardinian": "sardinian",
            "mayan": "mayan",
            "mongolian": "mongolian",
            "egyptian": "egyptian",
            "pima": "pima",
            "gaoshan": "gaoshan",
            "lahu": "lahu",
            "cambodian": "cambodian",
            "korean": "korean",
            "french": "french",
            "english": "english",
            "balkan": "balkan",
            "sindhi": "sindhi",
            "papuan": "papuan",
            "hungarian": "hungarian",
            "kinh": "kinh",
            "japanese": "japanese",
            "eskimo": "eskimo",
            "saudi": "saudi",
            "mbuti": "mbuti",
            "she": "she",
            "tibetan": "tibetan",
            "yoruba": "yoruba",
            "bantusa": "bantusa",
            "ashkenazi": "ashkenazi",
            "mala": "mala",
            "yakut": "yakut",
            "bengali": "bengali",
            "thai": "thai",
            "kyrgyz": "kyrgyz",
            "uzbek": "uzbek",
            "miao_yao": "miao_yao"
        }

        # Parse all of the Key-Value arguments
        if kwargs is not None:
            for key in kwargs:
                # Only add arguments that are actually part of this object
                if key in replace_names:
                    setattr(self, replace_names[key], kwargs[key])

            # Other objects also need to be initialised properly
            if "result" in kwargs:
                self.result = GenotypesModel(**kwargs["result"])

    def resolve_names(self):
        """Creates a dictionary representation of this object.

        This method converts an object to a dictionary that represents the
        format that the model should be in when passed into an API Request.
        Because of this, the generated dictionary may have different
        property names to that of the model itself.

        Returns:
            dict: The dictionary representing the object.

        """
        # Create a mapping from Model property names to API property names
        replace_names = {
            "uygur": "uygur",
            "ny": "ny",
            "finnish_russian": "finnish_russian",
            "iranian": "iranian",
            "dai": "dai",
            "spanish": "spanish",
            "han_southern": "han_southern",
            "han_northern": "han_northern",
            "somali": "somali",
            "tungus": "tungus",
            "sardinian": "sardinian",
            "mayan": "mayan",
            "mongolian": "mongolian",
            "egyptian": "egyptian",
            "pima": "pima",
            "gaoshan": "gaoshan",
            "lahu": "lahu",
            "cambodian": "cambodian",
            "korean": "korean",
            "french": "french",
            "english": "english",
            "balkan": "balkan",
            "sindhi": "sindhi",
            "papuan": "papuan",
            "hungarian": "hungarian",
            "kinh": "kinh",
            "japanese": "japanese",
            "eskimo": "eskimo",
            "saudi": "saudi",
            "mbuti": "mbuti",
            "she": "she",
            "tibetan": "tibetan",
            "yoruba": "yoruba",
            "bantusa": "bantusa",
            "ashkenazi": "ashkenazi",
            "mala": "mala",
            "yakut": "yakut",
            "bengali": "bengali",
            "thai": "thai",
            "kyrgyz": "kyrgyz",
            "uzbek": "uzbek",
            "miao_yao": "miao_yao",
        }

        retval = dict()

        return APIHelper.resolve_names(self, replace_names, retval)
