
    i                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJr  \(       a  S S	KJr   " S
 S5      r\" 5       r\ " S S5      5       rg)    )Lock)	dataclass)Optional)IdentityWeakKeyDict)ControlLoopFunctionPluginRegisteredWorkflowWorkflowRuntime)Workflow)StepWorkerFunction)TYPE_CHECKING)Contextc                       \ rS rSrSrSS jrS\S\S\S	\	\
\4   S\4
S
 jrS\
S\S\SSS	\	\
\4   SS4S jrS\
S\S   4S jrS\
SS4S jrSrg)WorkflowPluginRegistry   zQ
Ensures that plugins register each workflow once and only once for each plugin.
returnNc                 N    [        5       U l        [        5       U l        0 U l        g N)r   	workflowsr   lockrun_contexts)selfs    ]/home/james-whalen/.local/lib/python3.13/site-packages/workflows/runtime/workflow_registry.py__init__WorkflowPluginRegistry.__init__   s$    
  ! 	 F	=?    workflowpluginworkflow_functionstepsc                    [        U5      nU R                  R                  U5      nUb	  XV;   a  Xe   $ U R                     U R                  R                  U5      nUb  XV;   a  Xe   sS S S 5        $ UR	                  XU5      nUc  [        X45      nUc  0 nX`R                  U'   XvU'   UsS S S 5        $ ! , (       d  f       g = fr   )typer   getr   registerr	   )r   r   r   r   r    plugin_type
plugin_mapregistered_workflows           r   get_registered_workflow.WorkflowPluginRegistry.get_registered_workflow!   s     6l ^^''1
!k&?**YY++H5J%+*C!.	 Y #)//(u"U"*&89J&R#!
+5x(&9{#& YYs   'B208B22
C run_idcontextr   c                 8    [        UUUUUS9U R                  U'   g )N)r*   r   r   r+   r    )RegisteredRunContextr   )r   r*   r   r   r+   r    s         r   register_run#WorkflowPluginRegistry.register_run=   s(     %9%
&!r   r-   c                 8    U R                   R                  U5      $ r   )r   r#   r   r*   s     r   get_runWorkflowPluginRegistry.get_runM   s      $$V,,r   c                 <    U R                   R                  US 5        g r   )r   popr1   s     r   
delete_run!WorkflowPluginRegistry.delete_runP   s    fd+r   )r   r   r   )r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   dictstrr   r	   r(   r
   r.   r   r2   r6   __static_attributes__ r   r   r   r      s    @'' ' /	'
 C++,' 
'8

 
  	

 
 C++,
 

 -c -h/E&F -, , ,r   r   c                   R    \ rS rSr% \\S'   \\S'   \\S'   S\S'   \\\	4   \S'   Sr
g	)
r-   W   r*   r   r   r   r+   r    r@   N)r8   r9   r:   r;   r>   __annotations__r   r
   r=   r   r?   r@   r   r   r-   r-   W   s*    K''((r   r-   N)	threadingr   dataclassesr   typingr   *workflows.runtime.types._identity_weak_refr   workflows.runtime.types.pluginr   r   r	   r
   workflows.workflowr   %workflows.runtime.types.step_functionr   r   workflows.context.contextr   r   workflow_registryr-   r@   r   r   <module>rM      s[     !  J  ( D  1>, >,B +,  ) ) )r   