
    Ri!                     t   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dS )    N   )callablec                 D    t                               | ||||g           d S N)_transition_gathererappend)eventfrom_toactionguards        V/srv/django_bis/venv311/lib/python3.11/site-packages/invoke/vendor/fluidity/machine.py
transitionr   	   s'    r65 ABBBBB    c                 @    t                               | ||g           d S 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__   s    (#..66sD%TT%'" "  	) 	)A$G$a(((% 	. 	.A)G)1---!r   )__name__
__module____qualname__r   __classcell__r'   s   @r   r   r      s8                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                 r   |                                   |                                  |                                  t          | j                  r|                                 | _        |                     | j                  | _        | j                            |            |                                  d S 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11!!!**,,,D&'' 	6!%!3!3!5!5D%)%8%89K%L%L"",,T222""$$$$$r   c                 t    t          t          |                               |           }i |_        g |_        |S r   )r   r/   r   _states_transitions)r!   argskwargsobjr'   s       r   r   zStateMachine.__new__1   s4    L#&&..s33
r   c                     | j                             | j        j                   | j                            | j        j                   d S r   )r=   updater'   r   r>   extendr   r9   s    r   r1   z/StateMachine._bring_definitions_to_object_level7   s?    DN8999  !BCCCCCr   c                 d    | j                                         | j        fD ]}|D ]	}| |_        
d S r   )r=   valuesr>   machine)r:   
collection	components      r   r2   zStateMachine._inject_into_parts;   sP    <..00$2CD 	) 	)J' ) )	$(	!!)	) 	)r   c                     t          | j                  dk     rt          d          t          | dd           st          d          d S )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@   sV    t|q  &'JKKKt_d33 	L&'JKKK	L 	Lr   c                 8    t          |||          | j        |<   d S r   )_Stater   )r!   r   r   r   s       r   r   zStateMachine._add_class_stateF   s!    "(ud";";$r   Nc                     t          |||          }t          | |                                |                                                    | | j                             || j        |<   d S r   )rP   setattrgetter_namegetter_method__get__r'   r=   )r:   r   r   r   r   s        r   	add_statezStateMachine.add_stateJ   sa    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                     dS )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                 ^    |                      | j        j        |j                   || _        d S r   )r[   r6   r   r:   r   s     r   
_new_statezStateMachine._new_stateZ   s.    D6;UZHHH%*"""r   c                 N    t          | j                                                  S r   )listr=   rF   r9   s    r   _state_objectszStateMachine._state_objects^   s    DL''))***r   c                 >    d |                                  D             S )Nc                     g | ]	}|j         
S rZ   r   ).0r%   s     r   
<listcomp>z'StateMachine.states.<locals>.<listcomp>b   s    6661666r   )ra   r9   s    r   stateszStateMachine.statesa   s"    66 3 3 5 56666r   c                      t          | fdt          |          D              j        |         ||          } j                            |           t           ||                                           d S )Nc                 *    g | ]}j         |         S rZ   )r   )re   r%   r!   s     r   rf   z6StateMachine._add_class_transition.<locals>.<listcomp>f   s!    (W(W(W!):1)=(W(W(Wr   )_Transition_listizer   r   r   rR   event_method)r!   r	   r
   r   r   r   r   s   `      r   r    z"StateMachine._add_class_transitiond   s|     (W(W(W(WxPU(W(W(Wb!652 2
%%j111UJ335566666r   c                 2    t          | fdt          |          D                                  |          ||          } j                            |           t           ||                                                      j                             d S )Nc                 :    g | ]}                     |          S rZ   )r5   )re   r%   r:   s     r   rf   z/StateMachine.add_transition.<locals>.<listcomp>l   s'    (Y(Y(YA)<)<Q)?)?(Y(Y(Yr   )	rj   rk   r5   r>   r   rR   rl   rU   r'   )r:   r	   r
   r   r   r   r   s   `      r   add_transitionzStateMachine.add_transitionk   s     (Y(Y(Y(YRW(Y(Y(Y##VU4 4
  ,,,eZ4466>>tT^TTUUUUUr   c                     |                      |          }|                     |          }|                     |          } |j        | g|R i | d S r   )_transitions_by_name_ensure_from_validity_check_guardsrun)r:   
event_namer?   r@   transitionsthis_transitions         r   _process_transitionsz!StateMachine._process_transitionsq   sd    //
;;00==,,[99D24222622222r   c           	          |                                  D ]P}t          | |                                |                                                    | | j                             Qd S r   )ra   rR   rS   rT   rU   r'   r]   s     r   r8   z"StateMachine._create_state_gettersw   sl    ((** 	d 	dED%++--u/B/B/D/D/L/LTSWSa/b/bcccc	d 	dr   c                 R    |                                  D ]}|j        |k    r|c S d S r   )ra   r   )r:   r   r   s      r   r5   zStateMachine._state_by_name{   sB    ((** 	 	EzT!! "	 	r   c                 N    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   rq   z!StateMachine._transitions_by_name   s(    FFFFFHYZZ[[[r   c                      t          t           fd|                    }t          |          dk    r%t          d|d         j        d j                  |S )Nc                 8    |                      j                  S r   )is_valid_fromr6   )r   r:   s    r   r}   z4StateMachine._ensure_from_validity.<locals>.<lambda>   s    Z55d6PQQ r   r   zCannot z from )r`   r~   rL   InvalidTransitionr	   current_state)r:   rv   valid_transitionss   `  r   rr   z"StateMachine._ensure_from_validity   s|     
Q
Q
Q
Q
" "    !!Q&&##A$$$d&8&8%: ; ; ;  r   c                     g }|D ],}|                     |           r|                    |           -t          |          dk    rt          d          t          |          dk    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:   rv   allowed_transitionsr   s       r   rs   zStateMachine._check_guards   s     % 	7 	7J%%d++ 7#**:666"##q((#$PQQQ$%%))"#XYYY"1%%r   NN)r(   r)   r*   r;   r   r1   r2   r3   classmethodr   rV   rX   propertyr   r[   r^   ra   rg   r    ro   rx   r8   r5   rq   rr   rs   r+   r,   s   @r   r/   r/   %   s       % % %    D D D) ) )
L L L < < [<# # # #
/ / / H011M  + + ++ + +7 7 7 7 7 [7V V V V3 3 3d d d  
\ \ \! ! !	& 	& 	& 	& 	& 	& 	&r   r/   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )rj   c                 f    || _         || _        || _        || _        t	          |          | _        d S r   )r	   r
   r   r   _Guardr   )r:   r	   r
   r   r   r   s         r   r;   z_Transition.__init__   s/    

E]]


r   c                 H      fd}d j         z  |_         j         |_        |S )Nc                 4     | j         j        g|R i |}d S r   )rx   r	   )rG   r?   r@   these_transitionsr:   s       r   generated_eventz1_Transition.event_method.<locals>.generated_event   s/     < <TZ Y$ Y Y YRX Y Yr   zevent %s)r	   __doc__r(   )r:   r   s   ` r   rl   z_Transition.event_method   s@    	Z 	Z 	Z 	Z 	Z",tz"9#': r   c                 .    |t          | j                  v S r   )rk   r
   )r:   r
   s     r   r   z_Transition.is_valid_from   s    ,,,,r   c                 6    | j                             |          S r   )r   checkr:   rG   s     r   r   z_Transition.check_guard   s    z(((r   c                     |j                             |           |                    | j                   | j                            |            t          |          j        | j        g|R i | d S r   )r6   run_exitr^   r   r7   _ActionRunnerrt   r   )r:   rG   r?   r@   s       r   rt   z_Transition.run   sx    %..w77747###'""""g"4;@@@@@@@@@r   N)r(   r)   r*   r;   rl   r   r   rt   rZ   r   r   rj   rj      sd        # # #  - - -) ) )A A A A Ar   rj   c                        e Zd Zd Zd Zd ZdS )r   c                     || _         d S r   )r   )r:   r   s     r   r;   z_Guard.__init__   s    r   c                 ~    | j         dS t          | j                   }d}|D ]}|o|                     ||          }|S )NT)r   rk   	_evaluate)r:   rG   itemsresultitems        r   r   z_Guard.check   sQ    ;4%% 	> 	>D=w = =FFr   c                     t          |          r ||          S t          ||          }t          |          r
 |            }|S r   )r   rN   )r:   rG   r   r   s       r   r   z_Guard._evaluate   sK    D>> 	4== GT**E  Lr   N)r(   r)   r*   r;   r   r   rZ   r   r   r   r      sA                r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )rP   c                 0    || _         || _        || _        d S r   r   )r:   r   r   r   s       r   r;   z_State.__init__   s    	
			r   c                     d| j         z  S )Nzis_%srd   r9   s    r   rS   z_State.getter_name   s    ""r   c                       fd}|S )Nc                 $    | 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                 T    t          |                              | j                   d S r   )r   rt   r   r   s     r   r7   z_State.run_enter   s&    g""4:.....r   c                 T    t          |                              | j                   d S r   )r   rt   r   r   s     r   r   z_State.run_exit   s&    g""49-----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dS )r   c                     || _         d S r   )rG   r   s     r   r;   z_ActionRunner.__init__   s    r   c                 X    |sd S t          |          }|D ]} | j        |g|R i | d S r   )rk   _run_action)r:   action_paramr?   r@   action_itemsaction_items         r   rt   z_ActionRunner.run   s[     	F--' 	; 	;KD[:4:::6::::	; 	;r   c                     t          |          r | j        || j        g|R i | d S  | j        t          | j        |          g|R i | d S r   )r   _try_to_run_with_argsrG   rN   r:   r   r?   r@   s       r   r   z_ActionRunner._run_action   su    F 	W&D&vt|MdMMMfMMMMM&D&wt|V'D'DVtVVVvVVVVVr   c                 N    	  ||i | d S # t           $ r  |             Y d S w xY wr   )	TypeErrorr   s       r   r   z#_ActionRunner._try_to_run_with_args   sN    	FD#F##### 	 	 	FHHHHHH	s    $$N)r(   r)   r*   r;   rt   r   r   rZ   r   r   r   r      sS          ; ; ;W W W    r   r   c                       e Zd ZdS )rM   Nr(   r)   r*   rZ   r   r   rM   rM              Dr   rM   c                       e Zd ZdS )r   Nr   rZ   r   r   r   r      r   r   r   c                       e Zd ZdS )r   Nr   rZ   r   r   r   r     r   r   r   c                       e Zd ZdS )r   Nr   rZ   r   r   r   r     r   r   r   c                 F    t          |           t          t          fv r| p| gS r   )typer`   tuple)values    r   rk   rk     s#    ;;4-'1E<eW<r   r   )reinspectbackwardscompatr   r   r   r   r   r   r   objectr-   r/   rj   r   rP   r   	ExceptionrM   r   r   r   rk   rZ   r   r   <module>r      sM   				  % % % % % %  C C C C 0 0 0 0    t     $#$6
BGG p& p& p& p& p&# p& p& p&fA A A A A& A A A:    V   0. . . . .V . . .,    F   2	 	 	 	 	9 	 	 		 	 	 	 		 	 	 		 	 	 	 		 	 	 		 	 	 	 	y 	 	 	= = = = =r   