B
    ?F[ 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   r   N)DEFAULT_CREDENTIALSupdate)r   r    r	   .lib/python3.7/site-packages/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   s`   x&dD ]}t |rt| |t |  qW x|D ]}t| |||  q.W t| j| j| jd| _d S )N)r   r   )region)r   getsetattrr   r   r   r   _swf)selfkwargsZcredkeyZ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description)r   r	   r	   r
   register?   s    zDomain.register
REGISTEREDc             K   sr   | j j| j|f|}g }xT|d D ]H}|d }|d= || || j| j| j| jd |tf | q"W |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   sr   | j j| j|f|}g }xT|d D ]H}|d }|d= || || j| j| j| jd |tf | q"W |S )zListWorkflowTypes.r,   workflowType)r   r   r    r   )	r   list_workflow_typesr   r   r   r   r   r.   WorkflowType)r   r0   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 }xb|d D ]V}x$dD ]}|| }||= || qZW || j| j| j| jd |	t
f | qPW |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	executionr2   )r   r   r    r   )r   Zlist_closed_workflow_executionsr   timeZlist_open_workflow_executionsr   r   r   r   r.   WorkflowExecution)r   closedr   
executionsZexe_objectsZexe_argsZ
nested_keyZnested_dictr	   r	   r
   r9   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	   r
   r<      s    z#Domain.count_pending_decision_tasks)r+   )r+   )F)r   r   r   __doc__r)   r(   r   r   r#   r$   r%   r&   r'   r*   r-   r1   r3   r5   r9   r:   r<   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)NotImplementedError)r   r	   r	   r
   run   s    z	Actor.run)r   r   r   r;   last_tasktokenr    r@   r	   r	   r	   r
   r>      s   r>   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)rA   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)rA   r   respond_activity_task_completed)r   rD   resultr	   r	   r
   complete   s    zActivityWorker.completec             C   s   |dkr| j }| j|||S )zRespondActivityTaskFailed.N)rA   r   respond_activity_task_failed)r   rD   rE   reasonr	   r	   r
   fail   s    
zActivityWorker.failc             C   s   |dkr| j }| j||S )zRecordActivityTaskHeartbeat.N)rA   r   record_activity_task_heartbeat)r   rD   rE   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    rA   )r   r   r;   Ztaskr	   r	   r
   poll   s    
zActivityWorker.poll)NN)NN)NNN)NN)r   r   r   r=   r   r   rC   rF   rG   rI   rJ   rL   rM   rN   rP   rQ   r	   r	   r	   r
   rB      s   rB   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   _datarA   r   respond_decision_task_completed)r   rD   Z	decisionsr   r	   r	   r
   rI      s    
zDecider.completec             K   sB   | j }d|kr|d}|d= | jj| j|f|}|d| _|S )zPollForDecisionTask.r;   rO   )r;   r   r   poll_for_decision_taskr    rA   )r   r   r;   Zdecision_taskr	   r	   r
   rQ      s    
zDecider.poll)NN)
r   r   r   r=   r   r   rU   rI   rV   rQ   r	   r	   r	   r
   rR      s   
rR   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 )r4   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300rW   )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 }x"dD ]}||t| |||< q4W | 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   ra   r    
workflowIdr   r   )r   r   r6   r   r   r   start_workflow_executionr    r7   r   r   )r   r   r_   Zdef_attrZrun_idr	   r	   r
   start  s    

zWorkflowType.start)r   r   r   r=   r   r;   r`   r   r   rX   r$   r\   r*   r^   r&   rc   rd   r	   r	   r	   r
   r4      s   r4   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 )r7   zAn instance of a workflow.Nc             K   s   | j j| j|| jf| dS )zSignalWorkflowExecution.N)r   signal_workflow_executionr    rb   )r   Z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    rb   )r   r   r	   r	   r
   	terminate%  s    
zWorkflowExecution.terminatec             K   s   | j j| j| j| jf|d S )zGetWorkflowExecutionHistory.Zevents)r   get_workflow_execution_historyr    ra   rb   )r   r   r	   r	   r
   history+  s    zWorkflowExecution.historyc             C   s   | j | j| j| jS )zDescribeWorkflowExecution.)r   describe_workflow_executionr    ra   rb   )r   r	   r	   r
   r$   1  s    zWorkflowExecution.describec             C   s   | j | j| j| jS )zRequestCancelWorkflowExecution.)r   !request_cancel_workflow_executionr    rb   ra   )r   r	   r	   r
   request_cancel7  s    
z WorkflowExecution.request_cancel)r   r   r   r=   rb   ra   r   r   re   rf   rg   rh   ri   rj   rk   r$   rl   rm   r	   r	   r	   r
   r7     s   r7   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 )	r/   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3900rZ   rY   )Zdefault_task_heartbeat_timeoutZ&default_task_schedule_to_close_timeoutZ&default_task_schedule_to_start_timeoutr[   N)r   r   register_activity_typer    r   r   )r   r   r]   r	   r	   r
   r*   P  s    
zActivityType.register)r   r   r   r=   r   r   r   rn   r&   ro   r$   rp   r*   r	   r	   r	   r
   r/   >  s
   r/   )r=   r6   	functoolsr   Zboto.swf.layer1r   Zboto.swf.layer1_decisionsr   r   r   objectr   r!   r>   rB   rR   r4   r7   r/   r	   r	   r	   r
   <module>   s   g
-0&