U
    ÍZjÇ  ã                   @   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	rjd dlm
Z
mZmZmZmZ d dlmZ G dd„ deƒZdS )é    N)ÚEnum)ÚABCMetaÚabstractmethod)ÚDictÚListÚOptionalÚUnionÚAny)Údatetimec                   @   sv   e Zd ZdZddiZddiZdZddi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 )ÚCauseat  
    Describes the type of the Cause.


    :param object_type: 
    :type object_type: (optional) str

    .. note::

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

        | ConnectionCompleted: :py:class:`ask_sdk_model.connection_completed.ConnectionCompleted`

    Úobject_typeÚstrÚtypeFZConnectionCompletedz6ask_sdk_model.connection_completed.ConnectionCompletedNc                 C   s   d| _ || _dS )zqDescribes the type of the Cause.

        :param object_type: 
        :type object_type: (optional) str
        N)Z_Cause__discriminator_valuer   )Úselfr   © r   úV/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/ask_sdk_model/cause.pyÚ__init__>   s    zCause.__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_modelJ   s    
zCause.get_real_child_modelc                 C   s¦   i }t  | j¡D ]�\}}t| |ƒ}t|tƒrDttdd„ |ƒƒ||< qt|tƒrZ|j||< qt	|dƒrr| 
¡ ||< qt|tƒr˜t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>Z   s   zCause.to_dict.<locals>.<lambda>r   c                 S   sF   t | d dƒr"| d | d  ¡ fS t| d tƒrB| d | d jfS | S )Né   r   r   r   )Úitemr   r   r   r   d   s
    ÿÿ)ÚsixÚ	iteritemsÚdeserialized_typesÚgetattrr   ÚlistÚmapr   r   r   r   ÚdictÚitems)r   ÚresultÚattrÚ_r   r   r   r   r   Q   s&    

ý


û
zCause.to_dictc                 C   s   t  |  ¡ ¡S )z.Returns the string representation of the model)ÚpprintÚpformatr   ©r   r   r   r   Úto_stro   s    zCause.to_strc                 C   s   |   ¡ S )zFor `print` and `pprint`)r0   r/   r   r   r   Ú__repr__t   s    zCause.__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__y   s    
zCause.__eq__c                 C   s
   | |k S )z*Returns true if both objects are not equalr   r3   r   r   r   Ú__ne__�   s    zCause.__ne__)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   Zattribute_mapZsupports_multiple_typesr   r   r   Z__metaclass__r   r   Úclassmethodr   r   r0   r1   r5   r6   r   r   r   r   r      s,    ÿ ÿ ÿ
r   )r-   Úrer"   ÚtypingÚenumr   Úabcr   r   ÚTYPE_CHECKINGr   r   r   r   r	   r
   Úobjectr   r   r   r   r   Ú<module>   s   