
    kh!                     0   d dl Z d dlZddlmZ g addZg addZ G d de      Z	 e	de
fi       Z G d	 d
e      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z G d de      Z G d de      Z G d de      Z G d de      Zd Zy)    N   )callablec                 8    t         j                  | ||||g       y N)_transition_gathererappend)eventfrom_toactionguards        p/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/invoke/vendor/fluidity/machine.py
transitionr   	   s    r65 AB    c                 4    t         j                  | ||g       y r   )_state_gathererr   nameenterexits      r   stater      s    D%./r   c                        e Zd Z fdZ xZS )MetaStateMachinec                     t         t        |   | |||      }g |_        i |_        t
        D ]  } |j                  |   t        D ]  } |j                  |   g ag a|S r   )	superr   __new___class_transitions_class_statesr   _add_class_stater   _add_class_transition)clsr   bases
dictionaryMachinesi	__class__s          r   r   zMetaStateMachine.__new__   sy    (#6sD%T%'" "  	)A$G$$a(	)% 	.A)G))1-	.!r   )__name__
__module____qualname__r   __classcell__r'   s   @r   r   r      s     r   r   StateMachineBasec                        e Zd Zd Z fdZd Zd Zd Zed        Z	ddZ
d Z ee      Zd	 Zd
 Zd Zd Zed        ZddZd Zd Zd Zd Zd Zd Z xZS )StateMachinec                 N   | j                          | j                          | j                          t        | j                        r| j	                         | _        | j                  | j                        | _        | j                  j                  |        | j                          y r   )	"_bring_definitions_to_object_level_inject_into_parts_validate_machine_definitionsr   initial_state_state_by_name_current_state_object	run_enter_create_state_gettersselfs    r   __init__zStateMachine.__init__'   s~    //1!**,D&&'!%!3!3!5D%)%8%89K9K%L""",,T2""$r   c                 J    t         t        |   |       }i |_        g |_        |S r   )r   r/   r   _states_transitions)r!   argskwargsobjr'   s       r   r   zStateMachine.__new__1   s(    L#.s3
r   c                     | j                   j                  | j                  j                         | j                  j                  | j                  j                         y r   )r=   updater'   r   r>   extendr   r9   s    r   r1   z/StateMachine._bring_definitions_to_object_level7   s<    DNN889  !B!BCr   c                 v    | j                   j                         | j                  fD ]  }|D ]	  }| |_          y r   )r=   valuesr>   machine)r:   
collection	components      r   r2   zStateMachine._inject_into_parts;   s@    <<..0$2C2CD 	)J' )	$(	!)	)r   c                 z    t        | j                        dk  rt        d      t        | dd       st        d      y )N   z!There must be at least two statesr4   z!There must exist an initial state)lenr=   InvalidConfigurationgetattrr9   s    r   r3   z*StateMachine._validate_machine_definitions@   s<    t||q &'JKKt_d3&'JKK 4r   c                 8    t        |||      | j                  |<   y r   )_Stater   )r!   r   r   r   s       r   r   zStateMachine._add_class_stateF   s    "(ud";$r   c                     t        |||      }t        | |j                         |j                         j	                  | | j
                               || j                  |<   y r   )rP   setattrgetter_namegetter_method__get__r'   r=   )r:   r   r   r   r   s        r   	add_statezStateMachine.add_stateJ   sM    tUD)e'')5+>+>+@+H+Ht~~+^_"Tr   c                 .    | j                   j                  S r   )r6   r   r9   s    r   _current_state_namez StateMachine._current_state_nameO   s    ))...r   c                      y)zK
        This method is called whenever a state change is executed
        N )r:   r
   r   s      r   changing_statezStateMachine.changing_stateT   s     	r   c                 r    | j                  | j                  j                  |j                         || _        y r   )r[   r6   r   r:   r   s     r   
_new_statezStateMachine._new_stateZ   s*    D66;;UZZH%*"r   c                 H    t        | j                  j                               S r   )listr=   rF   r9   s    r   _state_objectszStateMachine._state_objects^   s    DLL'')**r   c                 \    | j                         D cg c]  }|j                   c}S c c}w r   ra   r   )r:   r%   s     r   stateszStateMachine.statesa   s#     $ 3 3 561666s   )c                     t        |t        |      D cg c]  }| j                  |    c}| j                  |   ||      }| j                  j	                  |       t        | ||j                                y c c}w r   )_Transition_listizer   r   r   rR   event_method)r!   r	   r
   r   r   r   r%   r   s           r   r    z"StateMachine._add_class_transitiond   sl     xPU(W!):):1)=(Wb!652
%%j1UJ3356 )Xs   A8
c           	      6   t        |t        |      D cg c]  }| j                  |       c}| j                  |      ||      }| j                  j	                  |       t        | ||j                         j                  | | j                               y c c}w r   )	rf   rg   r5   r>   r   rR   rh   rU   r'   )r:   r	   r
   r   r   r   r%   r   s           r   add_transitionzStateMachine.add_transitionk   s}     RW(YA)<)<Q)?(Y#VU4
  ,eZ446>>tT^^TU )Zs   B
c                     | j                  |      }| j                  |      }| j                  |      } |j                  | g|i | y r   )_transitions_by_name_ensure_from_validity_check_guardsrun)r:   
event_namer?   r@   transitionsthis_transitions         r   _process_transitionsz!StateMachine._process_transitionsq   sL    //
;00=,,[9D24262r   c           	          | j                         D ]E  }t        | |j                         |j                         j	                  | | j
                               G y r   )ra   rR   rS   rT   rU   r'   r]   s     r   r8   z"StateMachine._create_state_gettersw   sN    ((* 	dED%++-u/B/B/D/L/LTSWSaSa/bc	dr   c                 T    | j                         D ]  }|j                  |k(  s|c S  y r   rc   )r:   r   r   s      r   r5   zStateMachine._state_by_name{   s+    ((* 	EzzT!	r   c                 H    t        t        fd| j                              S )Nc                 "    | j                   k(  S r   )r	   )r   r   s    r   <lambda>z3StateMachine._transitions_by_name.<locals>.<lambda>   s    j.>.>$.F r   )r`   filterr>   )r:   r   s    `r   rl   z!StateMachine._transitions_by_name   s    FFHYHYZ[[r   c                      t        t         fd|            }t        |      dk(  r(t        d|d   j                  d j
                        |S )Nc                 :    | j                  j                        S r   )is_valid_fromr6   )r   r:   s    r   rx   z4StateMachine._ensure_from_validity.<locals>.<lambda>   s    Z55d6P6PQ r   r   zCannot z from )r`   ry   rL   InvalidTransitionr	   current_state)r:   rq   valid_transitionss   `  r   rm   z"StateMachine._ensure_from_validity   sX     
Q
"   !Q&#A$$d&8&8%: ; ;  r   c                     g }|D ]%  }|j                  |       s|j                  |       ' t        |      dk(  rt        d      t        |      dkD  rt	        d      |d   S )Nr   z*Guard is not satisfied for this transitionr   z3More than one transition was allowed for this event)check_guardr   rL   GuardNotSatisfiedForkedTransition)r:   rq   allowed_transitionsr   s       r   rn   zStateMachine._check_guards   st     % 	7J%%d+#**:6	7 "#q(#$PQQ$%)"#XYY"1%%r   NN)r(   r)   r*   r;   r   r1   r2   r3   classmethodr   rV   rX   propertyr~   r[   r^   ra   rd   r    rj   rs   r8   r5   rl   rm   rn   r+   r,   s   @r   r/   r/   %   s    %D)
L < <#
/ 01M++7 7 7V3d
\!	&r   r/   c                   *    e Zd Zd Zd Zd Zd Zd Zy)rf   c                 \    || _         || _        || _        || _        t	        |      | _        y r   )r	   r
   r   r   _Guardr   )r:   r	   r
   r   r   r   s         r   r;   z_Transition.__init__   s)    

E]
r   c                 \      fd}d j                   z  |_         j                   |_        |S )Nc                 F     | j                   j                  g|i |}y r   )rs   r	   )rG   r?   r@   these_transitionsr:   s       r   generated_eventz1_Transition.event_method.<locals>.generated_event   s%     < < <TZZ Y$ YRX Yr   zevent %s)r	   __doc__r(   )r:   r   s   ` r   rh   z_Transition.event_method   s,    	Z",tzz"9#':: r   c                 0    |t        | j                        v S r   )rg   r
   )r:   r
   s     r   r|   z_Transition.is_valid_from   s    ,,,r   c                 8    | j                   j                  |      S r   )r   checkr:   rG   s     r   r   z_Transition.check_guard   s    zz((r   c                     |j                   j                  |       |j                  | j                         | j                  j	                  |        t        |      j                  | j                  g|i | y r   )r6   run_exitr^   r   r7   _ActionRunnerro   r   )r:   rG   r?   r@   s       r   ro   z_Transition.run   s]    %%..w7477#'""g""4;;@@@r   N)r(   r)   r*   r;   rh   r|   r   ro   rZ   r   r   rf   rf      s    #-)Ar   rf   c                       e Zd Zd Zd Zd Zy)r   c                     || _         y r   )r   )r:   r   s     r   r;   z_Guard.__init__   s	    r   c                     | j                   yt        | j                         }d}|D ]  }|xr | j                  ||      } |S )NT)r   rg   	_evaluate)r:   rG   itemsresultitems        r   r   z_Guard.check   sK    ;;% 	>D=w =F	>r   c                 h    t        |      r ||      S t        ||      }t        |      r |       }|S r   )r   rN   )r:   rG   r   r   s       r   r   z_Guard._evaluate   s2    D>= GT*ELr   N)r(   r)   r*   r;   r   r   rZ   r   r   r   r      s    r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)rP   c                 .    || _         || _        || _        y r   r   )r:   r   r   r   s       r   r;   z_State.__init__   s    	
	r   c                      d| j                   z  S )Nzis_%s)r   r9   s    r   rS   z_State.getter_name   s    ""r   c                       fd}|S )Nc                 6    | j                   j                  k(  S r   )r~   r   )self_machiner:   s    r   state_getterz*_State.getter_method.<locals>.state_getter   s    --::r   rZ   )r:   r   s   ` r   rT   z_State.getter_method   s    	;r   c                 L    t        |      j                  | j                         y r   )r   ro   r   r   s     r   r7   z_State.run_enter   s    g""4::.r   c                 L    t        |      j                  | j                         y r   )r   ro   r   r   s     r   r   z_State.run_exit   s    g""499-r   N)r(   r)   r*   r;   rS   rT   r7   r   rZ   r   r   rP   rP      s    
#
/.r   rP   c                   $    e Zd Zd Zd Zd Zd Zy)r   c                     || _         y r   )rG   r   s     r   r;   z_ActionRunner.__init__   s	    r   c                 Z    |sy t        |      }|D ]  } | j                  |g|i |  y r   )rg   _run_action)r:   action_paramr?   r@   action_itemsaction_items         r   ro   z_ActionRunner.run   s;    -' 	;KD[:4:6:	;r   c                     t        |      r" | j                  || j                  g|i | y  | j                  t        | j                  |      g|i | y r   )r   _try_to_run_with_argsrG   rN   r:   r   r?   r@   s       r   r   z_ActionRunner._run_action   sO    F&D&&vt||MdMfM&D&&wt||V'DVtVvVr   c                 B    	  ||i | y # t         $ r
  |        Y y w xY wr   )	TypeErrorr   s       r   r   z#_ActionRunner._try_to_run_with_args   s(    	D#F# 	H	s    N)r(   r)   r*   r;   ro   r   r   rZ   r   r   r   r      s    ;Wr   r   c                       e Zd Zy)rM   Nr(   r)   r*   rZ   r   r   rM   rM          r   rM   c                       e Zd Zy)r}   Nr   rZ   r   r   r}   r}      r   r   r}   c                       e Zd Zy)r   Nr   rZ   r   r   r   r     r   r   r   c                       e Zd Zy)r   Nr   rZ   r   r   r   r     r   r   r   c                 B    t        |       t        t        fv xr | xs | gS r   )typer`   tuple)values    r   rg   rg     s!    ;4-'1E<eW<r   r   )reinspectbackwardscompatr   r   r   r   r   r   r   objectr-   r/   rf   r   rP   r   	ExceptionrM   r}   r   r   rg   rZ   r   r   <module>r      s    	  %  C 0t   $$6
BG p&# p&fA& A:V 0.V .,F 2	9 			 			 		y 	=r   