o
    ȷe 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
   F/var/www/ideatree/venv/lib/python3.10/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   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kwargs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   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 )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   v   | j j| j|fi |}g }|d D ]&}|d }|d= || || j| j| j| jd |tdi | q|S )zListActivityTypes.	typeInfosactivityTyper   r   r$   r   Nr
   )	r   list_activity_typesr   r	   r   r   r   appendActivityType)r   statusr   	act_typesact_objectsact_args	act_identr
   r
   r   
activitiesE   s   
zDomain.activitiesc                 K   r2   )zListWorkflowTypes.r3   workflowTyper5   Nr
   )	r   list_workflow_typesr   r	   r   r   r   r7   WorkflowType)r   r9   r   wf_types
wf_objectswf_argswf_identr
   r
   r   	workflowsW   s   
zDomain.workflowsFc                 K   s   |r| j j| jfi |}nd|vrt d |d< | j j| jfi |}g }|d D ]+}dD ]}|| }||= || q/|| j| j| j| jd |	t
di | q+|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`
        oldest_dateiQ executionInfos)	executionr?   r5   Nr
   )r   list_closed_workflow_executionsr   timelist_open_workflow_executionsr	   r   r   r   r7   WorkflowExecution)r   closedr   
executionsexe_objectsexe_args
nested_keynested_dictr
   r
   r   rO   j   s.   zDomain.executionsc                 C      | j | j|S )zCountPendingActivityTasks.)r   count_pending_activity_tasksr   r   	task_listr
   r
   r   rU         z#Domain.count_pending_activity_tasksc                 C   rT   )zCountPendingDecisionTasks.)r   count_pending_decision_tasksr   rV   r
   r
   r   rY      rX   z#Domain.count_pending_decision_tasks)r1   )F)r   r"   r#   __doc__r/   r.   r   r   r'   r)   r+   r,   r-   r0   r6   r>   r@   rF   rO   rU   rY   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  )zTo be overloaded by subclasses.)NotImplementedErrorr(   r
   r
   r   run   s   z	Actor.run)r   r"   r#   rW   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      |du r| j }| j||S )zRespondActivityTaskCanceled.N)r^   r   respond_activity_task_canceledr   
task_tokendetailsr
   r
   r   cancel      zActivityWorker.cancelc                 C   r`   )zRespondActivityTaskCompleted.N)r^   r   respond_activity_task_completed)r   rc   resultr
   r
   r   complete   rf   zActivityWorker.completec                 C   s   |du r| j }| j|||S )zRespondActivityTaskFailed.N)r^   r   respond_activity_task_failed)r   rc   rd   reasonr
   r
   r   fail   s
   
zActivityWorker.failc                 C   r`   )zRecordActivityTaskHeartbeat.N)r^   r   record_activity_task_heartbeatrb   r
   r
   r   	heartbeat   rf   zActivityWorker.heartbeatc                 K   F   | j }d|v r|d}|d= | jj| j|fi |}|d| _|S )zPollForActivityTask.rW   	taskToken)rW   r   r   poll_for_activity_taskr$   r^   )r   r   rW   taskr
   r
   r   poll      
zActivityWorker.pollNN)NNN)r   r"   r#   rZ   r   r   ra   re   rg   ri   rj   rl   rm   rn   rq   rs   r
   r
   r
   r   r_      s    r_   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   s4   t |tr|j}|du r| j}| jj||fi |S )zRespondDecisionTaskCompleted.N)
isinstancer   _datar^   r   respond_decision_task_completed)r   rc   	decisionsr   r
   r
   r   ri      s   
zDecider.completec                 K   ro   )zPollForDecisionTask.rW   rp   )rW   r   r   poll_for_decision_taskr$   r^   )r   r   rW   decision_taskr
   r
   r   rs      rt   zDecider.pollru   )
r   r"   r#   rZ   r   r   ry   ri   r{   rs   r
   r
   r
   r   rv      s    
rv   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 )rA   zA versioned workflow type.N	TERMINATEc                 C      | j | j| j| jS )zDescribeWorkflowType.)r   describe_workflow_typer$   r   r   r(   r
   r
   r   r)         zWorkflowType.describec                 K   s8   dddd}| | | jj| j| j| jfi | dS )zRegisterWorkflowType.3600300r}   )(default_execution_start_to_close_timeout#default_task_start_to_close_timeoutdefault_child_policyN)r	   r   register_workflow_typer$   r   r   r   r   argsr
   r
   r   r0      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|v r|d }|d= nd| j | jt f }dD ]}||t| |||< q| jj| j|| j | jfi |d }t| j | j|| j|| j	| j
dS )zStartWorkflowExecution.workflow_idz%s-%s-%i)rW   child_policyrunId)r   r   r   r$   
workflowIdr   r   )r   r   rK   r   r   r   start_workflow_executionr$   rM   r   r   )r   r   r   def_attrrun_idr
   r
   r   start  s$   
zWorkflowType.start)r   r"   r#   rZ   r   rW   r   r   r   r   r)   r   r0   r   r,   r   r   r
   r
   r
   r   rA      s    


rA   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 )rM   zAn instance of a workflow.Nc                 K   s    | j j| j|| jfi | dS )zSignalWorkflowExecution.N)r   signal_workflow_executionr$   r   )r   signamer   r
   r
   r   signal  s
   
zWorkflowExecution.signalc                 K   s   | j j| j| jfi |S )z$TerminateWorkflowExecution (p. 103).)r   terminate_workflow_executionr$   r   r   r   r
   r
   r   	terminate%  s
   
zWorkflowExecution.terminatec                 K   s"   | j j| j| j| jfi |d S )zGetWorkflowExecutionHistory.events)r   get_workflow_execution_historyr$   r   r   r   r
   r
   r   history+  s   zWorkflowExecution.historyc                 C   r~   )zDescribeWorkflowExecution.)r   describe_workflow_executionr$   r   r   r(   r
   r
   r   r)   1  r   zWorkflowExecution.describec                 C   r~   )zRequestCancelWorkflowExecution.)r   !request_cancel_workflow_executionr$   r   r   r(   r
   r
   r   request_cancel7  s   
z WorkflowExecution.request_cancel)r   r"   r#   rZ   r   r   r   r   r   r   r   r   r   r   r   r)   r   r   r
   r
   r
   r   rM     s    



rM   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 )	r8   zA versioned activity type.Nc                 C   r~   )zDeprecateActivityType.)r   deprecate_activity_typer$   r   r   r(   r
   r
   r   r,   D  r   zActivityType.deprecatec                 C   r~   )zDescribeActivityType.)r   describe_activity_typer$   r   r   r(   r
   r
   r   r)   J  r   zActivityType.describec                 K   s:   ddddd}| | | jj| j| j| jfi | dS )zRegisterActivityType.6003900r   r   )default_task_heartbeat_timeout&default_task_schedule_to_close_timeout&default_task_schedule_to_start_timeoutr   N)r	   r   register_activity_typer$   r   r   r   r
   r
   r   r0   P  s   

zActivityType.register)r   r"   r#   rZ   r   r   r   r   r,   r   r)   r   r0   r
   r
   r
   r   r8   >  s    

r8   )rZ   rK   	functoolsr   boto.swf.layer1r   boto.swf.layer1_decisionsr   r   r   objectr   r%   r[   r_   rv   rA   rM   r8   r
   r
   r
   r   <module>   s"    g
-0&