
    i                        S SK Jr  S SKJrJr  S SKJrJrJr  S SK	J
r
Jr  S SKJrJrJr  S SKJrJr  S SKJr  \ " S S	5      5       r\ " S
 S5      5       r\ " S S5      5       rS\S\S\4S jr SS\S\\   S\4S jjrg)    )	dataclass)ListOptional)	StopEventInputRequiredEventHumanResponseEvent)
StepConfigStepFunction)WorkflowGraphEdgeWorkflowGraphNodeWorkflowGraphNodeEdges)get_steps_from_classget_steps_from_instance)Workflowc                   n    \ rS rSr% Sr\\S'   \\S'   \\S'   Sr\\   \S'   Sr	\\
   \S'   S	\4S
 jrSrg)DrawWorkflowNode   z(Represents a node in the workflow graph.idlabel	node_typeNtitle
event_typereturnc                     [        U R                  U R                  U R                  U R                  U R
                  (       a  U R
                  R                  S9$ S S9$ )Nr   r   r   r   r   )r   r   r   r   r   r   __name__selfs    _/home/james-whalen/.local/lib/python3.13/site-packages/workflows/server/representation_utils.pyto_response_model"DrawWorkflowNode.to_response_model"   sO     ww**nn**37??t//
 	

 IM
 	
     )r   
__module____qualname____firstlineno____doc__str__annotations__r   r   r   typer   r    __static_attributes__r#   r"   r   r   r      sB    2GJNE8C=  
#4 
r"   r   c                   <    \ rS rSr% Sr\\S'   \\S'   S\4S jrSr	g)	DrawWorkflowEdge,   z)Represents an edge in the workflow graph.sourcetargetr   c                 >    [        U R                  U R                  S9$ )N)r/   r0   )r   r/   r0   r   s    r   r    "DrawWorkflowEdge.to_response_model3   s     ;;;;
 	
r"   r#   N)
r   r$   r%   r&   r'   r(   r)   r   r    r+   r#   r"   r   r-   r-   ,   s    3KK
#4 
r"   r-   c                   H    \ rS rSr% Sr\\   \S'   \\   \S'   S\	4S jr
Srg)	DrawWorkflowGraph:   z2Intermediate representation of workflow structure.nodesedgesr   c                     [        U R                   Vs/ s H  oR                  5       PM     snU R                   Vs/ s H  o"R                  5       PM     snS9$ s  snf s  snf )Nr6   r7   )r   r6   r    r7   )r   nodeedges      r   r    #DrawWorkflowGraph.to_response_modelA   sO    %8<

C
))+
C8<

C
))+
C
 	
CCs
   AA 
r#   N)r   r$   r%   r&   r'   r   r   r)   r-   r   r    r+   r#   r"   r   r4   r4   :   s*    < !! !!
#9 
r"   r4   r   
max_lengthr   c                 :    [        U 5      U::  a  U $ U SUS-
    S3$ )zHelper to truncate long labels.N   *)len)r   r=   s     r   _truncate_labelrB   H   s,    J*,5OU;KZ!^5L4MQ2OOr"   Nworkflowmax_label_lengthc                    [        U 5      nU(       d  [        U 5      n/ n/ n[        5       nSnSnUR                  5        HF  u  pU	R                  nUR
                   H  n
[        U
[        5      (       d  M  U
n  O   U(       d  MF    O   UR                  5        GHV  u  pU	R                  nU(       a  [        X5      OUnU(       a  [        U5      U:  a  UOSnX;  a,  UR                  [        UUSUS95        UR                  U5        UR                   H  nU[        :X  a  X:w  a  M  U(       a  [        UR                  U5      OUR                  nU(       a%  [        UR                  5      U:  a  UR                  OSnUR                  U;  d  M}  UR                  [        UR                  USUUS95        UR                  UR                  5        M     UR
                   GH  n
U
[        S5      L a  M  U(       a  [        U
R                  U5      OU
R                  nU(       a%  [        U
R                  5      U:  a  U
R                  OSnU
R                  U;  aA  UR                  [        U
R                  USUU
S95        UR                  U
R                  5        [        U
[         5      (       d  M  SU;  d  M  UR                  [        SSSS95        UR                  S5        GM	     GMY     UR                  5        GHO  u  pU	R                  nUR
                   Hq  n
U
[        S5      La$  UR                  [#        XR                  5      5        [        U
[         5      (       d  ML  UR                  [#        U
R                  S5      5        Ms     UR                   H  nUS	:X  aB  [        U[        5      (       a-  U(       a%  UR                  [#        UR                  U5      5        O%UR                  [#        UR                  U5      5        [        U[$        5      (       d  M  UR                  [#        SUR                  5      5        M     GMR     ['        X4S
9$ )z?Extract workflow structure into an intermediate representation.Nstep)r   r   r   r   eventr   external_stepexternal)r   r   r   _doner9   )r   r   setitems_step_configreturn_types
issubclassr   rB   rA   appendr   addaccepted_eventsr   r*   r   r-   r   r4   )rC   rD   stepsr6   r7   added_nodesstep_configcurrent_stop_event	step_name	step_funcreturn_type
step_label
step_titler   event_labelevent_titlereturn_labelreturn_titles                     r   _extract_workflow_structurer`   M   s   
 &:(%CE'1EE%K(,K  %	,,&33K+y11%0" 4
  !. !&	,,
   I8 	  C	N5E$E  	 'LL  $$$	 OOI& &55JY&:+K $  
 3 35EF((  $J,?,?(@CS(S ##  ""+5$%..)"))#- 
 3 343 68 '33Kd4j( $   4 46FG ))  $K,@,@(ADT(T $$  ##;6$&//*")*#.  4 45 ;(:;;#;6$*-", 0O 4o !.B !&	,, '33K$t*,-i9M9MNO+'9::-k.B.BOTU 4 &55JG#
:y(I(I%LL();)D)DiP -j.A.A9MN*&899-oz?R?RST 6 !.0 566r"   )N)dataclassesr   typingr   r   workflows.eventsr   r   r   workflows.decoratorsr	   r
   workflows.protocolr   r   r   workflows.utilsr   r   	workflowsr   r   r-   r4   r(   intrB   r`   r#   r"   r   <module>ri      s    ! ! 
 : 
  
 
 
* 

 

 

 

 

 

P3 PC PC P ;?W7W7*23-W7W7r"   