o
    1_Wc  ã                   @   sŠ   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ ej	r;d dlm
Z
mZmZmZmZ d dlmZ d dlmZ G dd„ deƒZdS )	é    N)ÚEnum)ÚABCMetaÚabstractmethod)ÚDictÚListÚOptionalÚUnionÚAny)Údatetime)ÚBackButtonBehaviorc                   @   sŠ   e Zd ZdZddddœZddddœZdZd	d
ddddddœZdZe	Z
ed dd„ƒZedd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )!ÚTemplateaš  

    :param object_type: 
    :type object_type: (optional) str
    :param token: 
    :type token: (optional) str
    :param back_button: 
    :type back_button: (optional) ask_sdk_model.interfaces.display.back_button_behavior.BackButtonBehavior

    .. note::

        This is an abstract class. Use the following mapping, to figure out
        the model class to be instantiated, that sets ``type`` variable.

        | ListTemplate2: :py:class:`ask_sdk_model.interfaces.display.list_template2.ListTemplate2`,
        |
        | ListTemplate1: :py:class:`ask_sdk_model.interfaces.display.list_template1.ListTemplate1`,
        |
        | BodyTemplate7: :py:class:`ask_sdk_model.interfaces.display.body_template7.BodyTemplate7`,
        |
        | BodyTemplate6: :py:class:`ask_sdk_model.interfaces.display.body_template6.BodyTemplate6`,
        |
        | BodyTemplate3: :py:class:`ask_sdk_model.interfaces.display.body_template3.BodyTemplate3`,
        |
        | BodyTemplate2: :py:class:`ask_sdk_model.interfaces.display.body_template2.BodyTemplate2`,
        |
        | BodyTemplate1: :py:class:`ask_sdk_model.interfaces.display.body_template1.BodyTemplate1`

    ÚstrzHask_sdk_model.interfaces.display.back_button_behavior.BackButtonBehavior)Úobject_typeÚtokenÚback_buttonÚtyper   Z
backButtonFz=ask_sdk_model.interfaces.display.list_template2.ListTemplate2z=ask_sdk_model.interfaces.display.list_template1.ListTemplate1z=ask_sdk_model.interfaces.display.body_template7.BodyTemplate7z=ask_sdk_model.interfaces.display.body_template6.BodyTemplate6z=ask_sdk_model.interfaces.display.body_template3.BodyTemplate3z=ask_sdk_model.interfaces.display.body_template2.BodyTemplate2z=ask_sdk_model.interfaces.display.body_template1.BodyTemplate1)ZListTemplate2ZListTemplate1ZBodyTemplate7ZBodyTemplate6ZBodyTemplate3ZBodyTemplate2ZBodyTemplate1Nc                 C   s   d| _ || _|| _|| _dS )a  

        :param object_type: 
        :type object_type: (optional) str
        :param token: 
        :type token: (optional) str
        :param back_button: 
        :type back_button: (optional) ask_sdk_model.interfaces.display.back_button_behavior.BackButtonBehavior
        N)Z_Template__discriminator_valuer   r   r   )Úselfr   r   r   © r   úKD:\Flask\env\Lib\site-packages\ask_sdk_model/interfaces/display/template.pyÚ__init__W   s   
zTemplate.__init__c                 C   s   || j  }| j |¡S )z:Returns the real base class specified by the discriminator)Újson_discriminator_keyÚdiscriminator_value_class_mapÚget)ÚclsÚdataZdiscriminator_valuer   r   r   Úget_real_child_modeli   s   
zTemplate.get_real_child_modelc                 C   s¦   i }t  | j¡D ]H\}}t| |ƒ}t|tƒr"ttdd„ |ƒƒ||< qt|tƒr-|j||< qt	|dƒr9| 
¡ ||< qt|tƒrLttdd„ | ¡ ƒƒ||< q|||< q|S )z&Returns the model properties as a dictc                 S   s&   t | dƒr	|  ¡ S t| tƒr| jS | S )NÚto_dict©Úhasattrr   Ú
isinstancer   Úvalue)Úxr   r   r   Ú<lambda>y   s    z"Template.to_dict.<locals>.<lambda>r   c                 S   sF   t | d dƒr| d | d  ¡ fS t| d tƒr!| d | d jfS | S )Né   r   r   r   )Úitemr   r   r   r"   ƒ   s
   ÿÿ)ÚsixÚ	iteritemsÚdeserialized_typesÚgetattrr   ÚlistÚmapr   r    r   r   ÚdictÚitems)r   ÚresultÚattrÚ_r    r   r   r   r   p   s&   

ý


û
zTemplate.to_dictc                 C   s   t  |  ¡ ¡S )z.Returns the string representation of the model)ÚpprintÚpformatr   ©r   r   r   r   Úto_strŽ   s   zTemplate.to_strc                 C   s   |   ¡ S )zFor `print` and `pprint`)r3   r2   r   r   r   Ú__repr__“   s   zTemplate.__repr__c                 C   s   t |tƒsdS | j|jkS )z&Returns true if both objects are equalF)r   r   Ú__dict__©r   Úotherr   r   r   Ú__eq__˜   s   
zTemplate.__eq__c                 C   s
   | |k S )z*Returns true if both objects are not equalr   r6   r   r   r   Ú__ne__    s   
zTemplate.__ne__)NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   Zattribute_mapZsupports_multiple_typesr   r   r   Ú__metaclass__r   r   Úclassmethodr   r   r3   r4   r8   r9   r   r   r   r   r      s<    ýýù

r   )r0   Úrer%   ÚtypingÚenumr   Úabcr   r   ÚTYPE_CHECKINGr   r   r   r   r	   r
   Z5ask_sdk_model.interfaces.display.back_button_behaviorr   ZBackButtonBehavior_46c3eb02Úobjectr   r   r   r   r   Ú<module>   s   