U
    W+d 3                     @   s   d Z ddlZddlmZ ddlmZ ddlmZ dddZdd Z	G d	d
 d
e
ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )z@Object-oriented interface to SWF wrapping boto.swf.layer1.Layer1    N)wraps)Layer1)Layer1Decisionsaws_access_key_idaws_secret_access_keyc                 C   s   t | |d dS )zSet default credentials.r   N)DEFAULT_CREDENTIALSupdater    r
   3/tmp/pip-unpacked-wheel-dlxw5sjy/boto/swf/layer2.pyset_default_credentials   s    r   c                   @   s0   e Zd ZdZdZdZdZdZdd Zdd Z	dS )SWFBaseNc                 K   sX   dD ]}t |rt| |t |  q|D ]}t| |||  q(t| j| j| jd| _d S )Nr   )region)r   getsetattrr   r   r   r   _swf)selfkwargsZcredkeykwargr
   r
   r   __init__   s    
zSWFBase.__init__c                 C   s@   t | j}t| dr*|dt t| d 7 }d| jj|t| f S )Nversion-z<%s %r at 0x%x>)strnamehasattrgetattr	__class____name__id)r   Zrep_strr
   r
   r   __repr__)   s    

zSWFBase.__repr__)
r   
__module____qualname__r   domainr   r   r   r   r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd ZdZdZdZeejdd Z	eej
dd Zeejdd	 ZeejdddZeejdddZdddZeejdd Zeejdd ZdS )DomainzSimple Workflow Domain.N   c                 C   s   | j | jS )zDescribeDomain.)r   describe_domainr   r   r
   r
   r   describe5   s    zDomain.describec                 C   s   | j | j dS )ZDeprecateDomainN)r   deprecate_domainr   r&   r
   r
   r   	deprecate:   s    zDomain.deprecatec                 C   s   | j | jt| j| j dS )zRegisterDomain.N)r   register_domainr   r   	retentiondescriptionr&   r
   r
   r   register?   s    zDomain.register
REGISTEREDc                 K   sn   | j j| j|f|}g }|d D ]H}|d }|d= || || j| j| j| jd |tf | q |S )zListActivityTypes.	typeInfosZactivityTyper   r   r"   r   )	r   list_activity_typesr   r	   r   r   r   appendActivityType)r   statusr   Z	act_typesZact_objectsZact_argsZ	act_identr
   r
   r   
activitiesE   s    
zDomain.activitiesc                 K   sn   | j j| j|f|}g }|d D ]H}|d }|d= || || j| j| j| jd |tf | q |S )zListWorkflowTypes.r/   workflowTyper0   )	r   list_workflow_typesr   r	   r   r   r   r2   WorkflowType)r   r4   r   Zwf_typesZ
wf_objectsZwf_argsZwf_identr
   r
   r   	workflowsW   s    
zDomain.workflowsFc                 K   s   |r| j j| jf|}n*d|kr0t d |d< | j j| jf|}g }|d D ]R}dD ]}|| }||= || qV|| j| j| j| jd |	t
f | qN|S )zList list open/closed executions.

        For a full list of available parameters refer to
        :py:func:`boto.swf.layer1.Layer1.list_closed_workflow_executions` and
        :py:func:`boto.swf.layer1.Layer1.list_open_workflow_executions`
        Zoldest_dateiQ ZexecutionInfos)Z	executionr6   r0   )r   Zlist_closed_workflow_executionsr   timeZlist_open_workflow_executionsr	   r   r   r   r2   WorkflowExecution)r   closedr   
executionsZexe_objectsZexe_argsZ
nested_keyZnested_dictr
   r
   r   r=   j   s.    zDomain.executionsc                 C   s   | j | j|S )zCountPendingActivityTasks.)r   count_pending_activity_tasksr   r   	task_listr
   r
   r   r>      s    z#Domain.count_pending_activity_tasksc                 C   s   | j | j|S )zCountPendingDecisionTasks.)r   count_pending_decision_tasksr   r?   r
   r
   r   rA      s    z#Domain.count_pending_decision_tasks)r.   )r.   )F)r   r    r!   __doc__r,   r+   r   r   r%   r'   r(   r)   r*   r-   r1   r5   r7   r9   r=   r>   rA   r
   r
   r
   r   r#   /   s$   



!
r#   c                   @   s    e Zd ZdZdZdZdd ZdS )ActorNc                 C   s
   t  dS )zTo be overloaded by subclasses.N)NotImplementedErrorr&   r
   r
   r   run   s    z	Actor.run)r   r    r!   r@   last_tasktokenr"   rE   r
   r
   r
   r   rC      s   rC   c                   @   sr   e Zd ZdZeejdddZeejdddZ	eej
dddZeejdd	d
Zeejdd ZdS )ActivityWorkerz/Base class for SimpleWorkflow activity workers.Nc                 C   s   |dkr| j }| j||S )zRespondActivityTaskCanceled.N)rF   r   respond_activity_task_canceledr   
task_tokendetailsr
   r
   r   cancel   s    zActivityWorker.cancelc                 C   s   |dkr| j }| j||S )zRespondActivityTaskCompleted.N)rF   r   respond_activity_task_completed)r   rJ   resultr
   r
   r   complete   s    zActivityWorker.completec                 C   s   |dkr| j }| j|||S )zRespondActivityTaskFailed.N)rF   r   respond_activity_task_failed)r   rJ   rK   reasonr
   r
   r   fail   s
    
zActivityWorker.failc                 C   s   |dkr| j }| j||S )zRecordActivityTaskHeartbeat.N)rF   r   record_activity_task_heartbeatrI   r
   r
   r   	heartbeat   s    zActivityWorker.heartbeatc                 K   sB   | j }d|kr|d}|d= | jj| j|f|}|d| _|S )zPollForActivityTask.r@   	taskToken)r@   r   r   poll_for_activity_taskr"   rF   )r   r   r@   Ztaskr
   r
   r   poll   s    
zActivityWorker.poll)NN)NN)NNN)NN)r   r    r!   rB   r   r   rH   rL   rM   rO   rP   rR   rS   rT   rV   rW   r
   r
   r
   r   rG      s   rG   c                   @   s6   e Zd ZdZeejdddZeejdd Z	dS )Deciderz'Base class for SimpleWorkflow deciders.Nc                 K   s0   t |tr|j}|dkr| j}| jj||f|S )zRespondDecisionTaskCompleted.N)
isinstancer   _datarF   r   respond_decision_task_completed)r   rJ   Z	decisionsr   r
   r
   r   rO      s    
zDecider.completec                 K   sB   | j }d|kr|d}|d= | jj| j|f|}|d| _|S )zPollForDecisionTask.r@   rU   )r@   r   r   poll_for_decision_taskr"   rF   )r   r   r@   Zdecision_taskr
   r
   r   rW      s    
zDecider.poll)NN)
r   r    r!   rB   r   r   r[   rO   r\   rW   r
   r
   r
   r   rX      s
   
rX   c                   @   sd   e Zd ZdZdZdZdZeej	dd Z
eejdd Zeejdd	 Zeejd
d ZdS )r8   zA versioned workflow type.N	TERMINATEc                 C   s   | j | j| j| jS )zDescribeWorkflowType.)r   describe_workflow_typer"   r   r   r&   r
   r
   r   r'      s    zWorkflowType.describec                 K   s4   dddd}| | | jj| j| j| jf| dS )zRegisterWorkflowType.3600300r]   )Z(default_execution_start_to_close_timeout#default_task_start_to_close_timeoutZdefault_child_policyN)r	   r   register_workflow_typer"   r   r   r   r   argsr
   r
   r   r-      s    
zWorkflowType.registerc                 C   s   | j | j| j| j dS )zDeprecateWorkflowType.N)r   deprecate_workflow_typer"   r   r   r&   r
   r
   r   r)     s    zWorkflowType.deprecatec              	   K   s   d|kr|d }|d= nd| j | jt f }dD ]}||t| |||< q2| jj| j|| j | jf|d }t| j | j|| j|| j	| j
dS )zStartWorkflowExecution.workflow_idz%s-%s-%i)r@   child_policyrunId)r   r   rh   r"   
workflowIdr   r   )r   r   r:   r   r   r   start_workflow_executionr"   r;   r   r   )r   r   rf   Zdef_attrZrun_idr
   r
   r   start  s*     
  zWorkflowType.start)r   r    r!   rB   r   r@   rg   r   r   r^   r'   rb   r-   re   r)   rj   rk   r
   r
   r
   r   r8      s   


r8   c                   @   sr   e Zd ZdZdZdZeejdd Z	eej
dd Zeejdd Zeejd	d
 Zeejdd ZdS )r;   zAn instance of a workflow.Nc                 K   s   | j j| j|| jf| dS )zSignalWorkflowExecution.N)r   signal_workflow_executionr"   ri   )r   signamer   r
   r
   r   signal  s
    zWorkflowExecution.signalc                 K   s   | j j| j| jf|S )z$TerminateWorkflowExecution (p. 103).)r   terminate_workflow_executionr"   ri   r   r   r
   r
   r   	terminate%  s
    
zWorkflowExecution.terminatec                 K   s   | j j| j| j| jf|d S )zGetWorkflowExecutionHistory.events)r   get_workflow_execution_historyr"   rh   ri   rp   r
   r
   r   history+  s    zWorkflowExecution.historyc                 C   s   | j | j| j| jS )zDescribeWorkflowExecution.)r   describe_workflow_executionr"   rh   ri   r&   r
   r
   r   r'   1  s    zWorkflowExecution.describec                 C   s   | j | j| j| jS )zRequestCancelWorkflowExecution.)r   !request_cancel_workflow_executionr"   ri   rh   r&   r
   r
   r   request_cancel7  s    
 z WorkflowExecution.request_cancel)r   r    r!   rB   ri   rh   r   r   rl   rn   ro   rq   rs   rt   ru   r'   rv   rw   r
   r
   r
   r   r;     s   



r;   c                   @   sJ   e Zd ZdZdZeejdd Zeej	dd Z
eejdd ZdS )	r3   zA versioned activity type.Nc                 C   s   | j | j| j| jS )zDeprecateActivityType.)r   deprecate_activity_typer"   r   r   r&   r
   r
   r   r)   D  s    zActivityType.deprecatec                 C   s   | j | j| j| jS )zDescribeActivityType.)r   describe_activity_typer"   r   r   r&   r
   r
   r   r'   J  s    zActivityType.describec                 K   s6   ddddd}| | | jj| j| j| jf| dS )zRegisterActivityType.Z600Z3900r`   r_   )Zdefault_task_heartbeat_timeoutZ&default_task_schedule_to_close_timeoutZ&default_task_schedule_to_start_timeoutra   N)r	   r   register_activity_typer"   r   r   rc   r
   r
   r   r-   P  s    
zActivityType.register)r   r    r!   rB   r   r   r   rx   r)   ry   r'   rz   r-   r
   r
   r
   r   r3   >  s   

r3   )rB   r:   	functoolsr   Zboto.swf.layer1r   Zboto.swf.layer1_decisionsr   r   r   objectr   r#   rC   rG   rX   r8   r;   r3   r
   r
   r
   r   <module>   s    g
-0&