
    /h6                        S r SSKrSSKrSSKJr  SSKJrJr  SSKJ	r	  SSK
JrJr  SSKJr  SSKJr  S	 rS
\4S jrS\4S jr\" \R*                  R-                  SS5      5      rS r\R2                  " \S:  SS9S 5       r\R2                  " \S:  SS9S 5       r\R2                  " \S:  SS9S S\4S jj5       r\R2                  " \S:  SS9S!S\S\4S jj5       r\S 5       rS r \!S:X  a  \ " 5         gg)"zT
Test file to ensure that in general certain situational setups for notebooks work.
    N)Queue)markraises)ChildFailedError)PartialStatenotebook_launcher)require_bnb)is_bnb_availablec                  0    [        S[        5        35        g )NPartialState:
)printr        e/home/james-whalen/.local/lib/python3.13/site-packages/accelerate/test_utils/scripts/test_notebook.pybasic_functionr      s    	OLN+
,-r   queuec                     U R                  5       (       a  g U R                  5       nUS:  a  U R                  US-
  5        [        S5      e[	        S[        5        35        g )Nr      z&The nut hasn't cracked yet! Try again.r   )emptygetputRuntimeErrorr   r   )r   trials     r   tough_nut_functionr   #   sP    {{}}IIKEqy		%!)CDD	OLN+
,-r   	sleep_secc                     [        5       nUR                  S-  S:X  a  [        S5      e[        R                  " U 5        g )N   r   +I'm an even process. I don't like to sleep.)r   process_indexr   timesleep)r   states     r   bipolar_sleep_functionr#   .   s4    NEQ!#HII

9r   ACCELERATE_NUM_PROCESSESr   c                  *    [        [        S[        S9  g )Nr   num_processesr   r   NUM_PROCESSESr   r   r   test_can_initializer*   9   s    nbFr   r   z<Need at least 2 processes to test static rendezvous backends)reasonc                  ,    [        [        S[        SS9  g )Nr   staticr'   rdzv_backendr(   r   r   r   test_static_rdzv_backendr0   =   s    nbT\]r   z:Need at least 2 processes to test c10d rendezvous backendsc                  ,    [        [        S[        SS9  g )Nr   c10dr.   r(   r   r   r   test_c10d_rdzv_backendr3   B   s    nbTZ[r   z1Need at least 2 processes to test fault tolerancemax_restartsc                 d    [        5       nUR                  U 5        [        [        U4[        U S9  g )N)r'   r4   )r   r   r   r   r)   )r4   r   s     r   test_fault_tolerantr6   G   s'    GE	IIl(5(-^jkr   z,Need at least 2 processes to test monitoringmonitor_intervalc                     [         R                   " 5       n[        [        SS9   [        [        U4[
        U S9  S S S 5        [         R                   " 5       U-
  U:  d   S5       eg ! , (       d  f       N2= f)Nr   match)r'   r7   z,Monitoring did not stop the process in time.)r    r   r   r   r#   r)   )r7   r   
start_times      r   test_monitoringr<   N   s`    J	 (U	V"L'-		
 
W 99;#i/_1__/ 
W	Vs   A&&
A4c                      [        [        SS9   SS Kn [        [        S[
        S9  S S S 5        g ! , (       d  f       g = f)NzPlease keep these importsr9   r   r   r&   )r   r   bitsandbytesr   r   r)   )bnbs    r   test_problematic_importsr@   [   s)    	$?	@"."MJ 
A	@	@s   0
>c                  d   [        S5        [        5         [        S5        [        5         [        S5        [        5         [        S5        [	        5         [        S5        [        5         [        5       (       a  [        S5        [        5         [        S:  a  [        5       R                  5         g g )NzTest basic notebook can be ranzTest static rendezvous backendzTest c10d rendezvous backendzTest fault tolerantzTest monitoringzTest problematic imports (bnb)r   )r   r*   r0   r3   r6   r<   r
   r@   r)   r   destroy_process_groupr   r   r   mainrC   c   s    	
*+	
*+	
()	
 	
./ "q,,. r   __main__)   )g{Gz?d   )"__doc__osr    multiprocessingr   pytestr   r   0torch.distributed.elastic.multiprocessing.errorsr   
accelerater   r   accelerate.test_utilsr	   accelerate.utilsr
   r   r   intr#   environr   r)   r*   skipifr0   r3   r6   floatr<   r@   rC   __name__r   r   r   <module>rT      sJ   
  !  M 6 - -.
.e .c  BJJNN#=qABG ]Q'ef^ g^ ]Q'cd\ e\ ]Q'Z[lc l \l ]Q'UV	`e 	`s 	` W	` K K/$ zF r   