U
    cc3                     @   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                #   @   s   e Zd ZdZddiZddiZdZdddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd("ZdZe	Z
ed8d*d+Zed,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd)S )9	Directivea  

    :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.

        | CustomInterfaceController.StopEventHandler: :py:class:`ask_sdk_model.interfaces.custom_interface_controller.stop_event_handler_directive.StopEventHandlerDirective`,
        |
        | Navigation.Assistance.AnnounceRoadRegulation: :py:class:`ask_sdk_model.interfaces.navigation.assistance.announce_road_regulation.AnnounceRoadRegulation`,
        |
        | Connections.SendRequest: :py:class:`ask_sdk_model.interfaces.connections.send_request_directive.SendRequestDirective`,
        |
        | Dialog.UpdateDynamicEntities: :py:class:`ask_sdk_model.dialog.dynamic_entities_directive.DynamicEntitiesDirective`,
        |
        | CustomInterfaceController.StartEventHandler: :py:class:`ask_sdk_model.interfaces.custom_interface_controller.start_event_handler_directive.StartEventHandlerDirective`,
        |
        | GadgetController.SetLight: :py:class:`ask_sdk_model.interfaces.gadget_controller.set_light_directive.SetLightDirective`,
        |
        | Alexa.Presentation.APL.SendIndexListData: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.send_index_list_data_directive.SendIndexListDataDirective`,
        |
        | Dialog.Delegate: :py:class:`ask_sdk_model.dialog.delegate_directive.DelegateDirective`,
        |
        | Dialog.ConfirmIntent: :py:class:`ask_sdk_model.dialog.confirm_intent_directive.ConfirmIntentDirective`,
        |
        | CustomInterfaceController.SendDirective: :py:class:`ask_sdk_model.interfaces.custom_interface_controller.send_directive_directive.SendDirectiveDirective`,
        |
        | Alexa.Presentation.HTML.HandleMessage: :py:class:`ask_sdk_model.interfaces.alexa.presentation.html.handle_message_directive.HandleMessageDirective`,
        |
        | Alexa.Presentation.APLA.RenderDocument: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apla.render_document_directive.RenderDocumentDirective`,
        |
        | Dialog.ElicitSlot: :py:class:`ask_sdk_model.dialog.elicit_slot_directive.ElicitSlotDirective`,
        |
        | Alexa.Presentation.HTML.Start: :py:class:`ask_sdk_model.interfaces.alexa.presentation.html.start_directive.StartDirective`,
        |
        | AudioPlayer.Stop: :py:class:`ask_sdk_model.interfaces.audioplayer.stop_directive.StopDirective`,
        |
        | Dialog.ConfirmSlot: :py:class:`ask_sdk_model.dialog.confirm_slot_directive.ConfirmSlotDirective`,
        |
        | AudioPlayer.Play: :py:class:`ask_sdk_model.interfaces.audioplayer.play_directive.PlayDirective`,
        |
        | Alexa.Presentation.APL.ExecuteCommands: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.execute_commands_directive.ExecuteCommandsDirective`,
        |
        | Display.RenderTemplate: :py:class:`ask_sdk_model.interfaces.display.render_template_directive.RenderTemplateDirective`,
        |
        | Conversations.ResetContext: :py:class:`ask_sdk_model.interfaces.conversations.reset_context_directive.ResetContextDirective`,
        |
        | Dialog.DelegateRequest: :py:class:`ask_sdk_model.dialog.delegate_request_directive.DelegateRequestDirective`,
        |
        | Hint: :py:class:`ask_sdk_model.interfaces.display.hint_directive.HintDirective`,
        |
        | Connections.StartConnection: :py:class:`ask_sdk_model.interfaces.connections.v1.start_connection_directive.StartConnectionDirective`,
        |
        | Alexa.Presentation.APLT.RenderDocument: :py:class:`ask_sdk_model.interfaces.alexa.presentation.aplt.render_document_directive.RenderDocumentDirective`,
        |
        | GameEngine.StartInputHandler: :py:class:`ask_sdk_model.interfaces.game_engine.start_input_handler_directive.StartInputHandlerDirective`,
        |
        | VideoApp.Launch: :py:class:`ask_sdk_model.interfaces.videoapp.launch_directive.LaunchDirective`,
        |
        | Alexa.Presentation.APLT.ExecuteCommands: :py:class:`ask_sdk_model.interfaces.alexa.presentation.aplt.execute_commands_directive.ExecuteCommandsDirective`,
        |
        | GameEngine.StopInputHandler: :py:class:`ask_sdk_model.interfaces.game_engine.stop_input_handler_directive.StopInputHandlerDirective`,
        |
        | Tasks.CompleteTask: :py:class:`ask_sdk_model.interfaces.tasks.complete_task_directive.CompleteTaskDirective`,
        |
        | Alexa.Presentation.APL.RenderDocument: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.render_document_directive.RenderDocumentDirective`,
        |
        | Connections.SendResponse: :py:class:`ask_sdk_model.interfaces.connections.send_response_directive.SendResponseDirective`,
        |
        | Alexa.Presentation.APL.SendTokenListData: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.send_token_list_data_directive.SendTokenListDataDirective`,
        |
        | AudioPlayer.ClearQueue: :py:class:`ask_sdk_model.interfaces.audioplayer.clear_queue_directive.ClearQueueDirective`,
        |
        | Alexa.Presentation.APL.UpdateIndexListData: :py:class:`ask_sdk_model.interfaces.alexa.presentation.apl.update_index_list_data_directive.UpdateIndexListDataDirective`

    object_typestrtypeFzkask_sdk_model.interfaces.custom_interface_controller.stop_event_handler_directive.StopEventHandlerDirectivez^ask_sdk_model.interfaces.navigation.assistance.announce_road_regulation.AnnounceRoadRegulationzPask_sdk_model.interfaces.connections.send_request_directive.SendRequestDirectivezHask_sdk_model.dialog.dynamic_entities_directive.DynamicEntitiesDirectivezmask_sdk_model.interfaces.custom_interface_controller.start_event_handler_directive.StartEventHandlerDirectivezPask_sdk_model.interfaces.gadget_controller.set_light_directive.SetLightDirectiveziask_sdk_model.interfaces.alexa.presentation.apl.send_index_list_data_directive.SendIndexListDataDirectivez9ask_sdk_model.dialog.delegate_directive.DelegateDirectivezDask_sdk_model.dialog.confirm_intent_directive.ConfirmIntentDirectivezdask_sdk_model.interfaces.custom_interface_controller.send_directive_directive.SendDirectiveDirectivez`ask_sdk_model.interfaces.alexa.presentation.html.handle_message_directive.HandleMessageDirectivezbask_sdk_model.interfaces.alexa.presentation.apla.render_document_directive.RenderDocumentDirectivez>ask_sdk_model.dialog.elicit_slot_directive.ElicitSlotDirectivezOask_sdk_model.interfaces.alexa.presentation.html.start_directive.StartDirectivezAask_sdk_model.interfaces.audioplayer.stop_directive.StopDirectivez@ask_sdk_model.dialog.confirm_slot_directive.ConfirmSlotDirectivezAask_sdk_model.interfaces.audioplayer.play_directive.PlayDirectivezcask_sdk_model.interfaces.alexa.presentation.apl.execute_commands_directive.ExecuteCommandsDirectivezRask_sdk_model.interfaces.display.render_template_directive.RenderTemplateDirectivezTask_sdk_model.interfaces.conversations.reset_context_directive.ResetContextDirectivezHask_sdk_model.dialog.delegate_request_directive.DelegateRequestDirectivez=ask_sdk_model.interfaces.display.hint_directive.HintDirectivez[ask_sdk_model.interfaces.connections.v1.start_connection_directive.StartConnectionDirectivezbask_sdk_model.interfaces.alexa.presentation.aplt.render_document_directive.RenderDocumentDirectivez]ask_sdk_model.interfaces.game_engine.start_input_handler_directive.StartInputHandlerDirectivezBask_sdk_model.interfaces.videoapp.launch_directive.LaunchDirectivezdask_sdk_model.interfaces.alexa.presentation.aplt.execute_commands_directive.ExecuteCommandsDirectivez[ask_sdk_model.interfaces.game_engine.stop_input_handler_directive.StopInputHandlerDirectivezLask_sdk_model.interfaces.tasks.complete_task_directive.CompleteTaskDirectivezaask_sdk_model.interfaces.alexa.presentation.apl.render_document_directive.RenderDocumentDirectivezRask_sdk_model.interfaces.connections.send_response_directive.SendResponseDirectiveziask_sdk_model.interfaces.alexa.presentation.apl.send_token_list_data_directive.SendTokenListDataDirectivezNask_sdk_model.interfaces.audioplayer.clear_queue_directive.ClearQueueDirectivezmask_sdk_model.interfaces.alexa.presentation.apl.update_index_list_data_directive.UpdateIndexListDataDirective)"z*CustomInterfaceController.StopEventHandlerz,Navigation.Assistance.AnnounceRoadRegulationzConnections.SendRequestzDialog.UpdateDynamicEntitiesz+CustomInterfaceController.StartEventHandlerzGadgetController.SetLightz(Alexa.Presentation.APL.SendIndexListDatazDialog.DelegatezDialog.ConfirmIntentz'CustomInterfaceController.SendDirectivez%Alexa.Presentation.HTML.HandleMessagez&Alexa.Presentation.APLA.RenderDocumentzDialog.ElicitSlotzAlexa.Presentation.HTML.StartzAudioPlayer.StopzDialog.ConfirmSlotzAudioPlayer.Playz&Alexa.Presentation.APL.ExecuteCommandszDisplay.RenderTemplatezConversations.ResetContextzDialog.DelegateRequestZHintzConnections.StartConnectionz&Alexa.Presentation.APLT.RenderDocumentzGameEngine.StartInputHandlerzVideoApp.Launchz'Alexa.Presentation.APLT.ExecuteCommandszGameEngine.StopInputHandlerzTasks.CompleteTaskz%Alexa.Presentation.APL.RenderDocumentzConnections.SendResponsez(Alexa.Presentation.APL.SendTokenListDatazAudioPlayer.ClearQueuez*Alexa.Presentation.APL.UpdateIndexListDataNc                 C   s   d| _ || _dS )zQ

        :param object_type: 
        :type object_type: (optional) str
        N)Z_Directive__discriminator_valuer   )selfr    r   ;/tmp/pip-unpacked-wheel-urk6bcke/ask_sdk_model/directive.py__init__   s    zDirective.__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_model   s    
zDirective.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rt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>   s   z#Directive.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      s
    )six	iteritemsdeserialized_typesgetattrr   listmapr   r   r   r   dictitems)r   resultattr_r   r   r   r   r      s&    





zDirective.to_dictc                 C   s   t |  S )z.Returns the string representation of the model)pprintpformatr   r   r   r   r   to_str   s    zDirective.to_strc                 C   s   |   S )zFor `print` and `pprint`)r0   r/   r   r   r   __repr__   s    zDirective.__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Directive.__eq__c                 C   s
   | |k S )z*Returns true if both objects are not equalr   r3   r   r   r   __ne__   s    zDirective.__ne__)N)__name__
__module____qualname____doc__r$   Zattribute_mapZsupports_multiple_typesr   r   r   __metaclass__r   r   classmethodr   r   r0   r1   r5   r6   r   r   r   r   r      sl   P  %
r   )r-   rer"   typingenumr   abcr   r   TYPE_CHECKINGr   r   r   r   r	   r
   objectr   r   r   r   r   <module>   s   