
    ^i@                        S SK r S SKrS SKrS SKJr  S SKrSSKJr  SSK	J	r	J
r
  S\S\4S jr\R                  R                  \R                  R!                  5       (       + S	S
9rS\SS4S jrSS jr\S\SS4S j5       r\S\SS4S j5       r\S\SS4S j5       r\S\SS4S j5       r " S S\	R0                  5      r " S S\	R4                  \	R6                     5      rS\SS4S jrS\R<                  \\4   4S jr SS jr!g)    N)Path   )helpers)coreutilsxreturnc                     SU -  $ )N    r   s    R/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/submitit/test_helpers.py_three_timer      s    q5L    z"Rsync is required for snapshotting)reasontmp_pathc                    U S-  n[         R                  " SS9nUR                  [        S5        UR                  [        S5        [	        U5      S:X  d   e[        S U 5       5      S:X  d   e[        R                  " X!5        [        R                  " U5      n[        S	 U 5       5      S:X  d   eU" 5       S
S/:X  d   e[        S U 5       5      S:X  d   eg )Nztest_funcseq.pklT)verbose         c              3   @   #    U  H  oR                  5       v   M     g 7fNdone.0r   s     r   	<genexpr>4test_function_sequence_checkpoint.<locals>.<genexpr>!        %Avvxx   r   c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   r   s     r   r   r   $   r    r!         c              3   @   #    U  H  oR                  5       v   M     g 7fr   r   r   s     r   r   r   &   r    r!   )	r   FunctionSequenceaddr   lensumr   cloudpickle_dumppickle_load)r   filefs0fs1s       r   !test_function_sequence_checkpointr/      s    ((D

"
"4
0CGGKGGKs8q==%%%***	3%


D
!C%%%***5RH%%%***r   c                    S[         S[         4S jnSu  p#U R                  XX3/5      n[        R                  " 5       n/ n[        [        R
                  " USS95       H;  u  px[        R                  " 5       U-
  n	US:  a  X:  d   eUR                  U5        M=     X3U/U Vs/ s H  oR                  5       PM     sn:X  d   eUS   US	   L d   eg s  snf )
Nr   r	   c                 2    [         R                  " U 5        U $ r   )timesleepr   s    r   ftest_as_completed.<locals>.f*   s    

1r   )g      ?皙?r6   )poll_frequencyr   r   )float	map_arrayr2   	enumerater   as_completedappendresult)
executorr4   slowfastjobsstartfinished_jobsnjelapseds
             r   test_as_completedrH   )   s    U u 
 JDa!34DIIKEM'..tCHI))+%q5>!>Q J m!Dm((*m!DDDD7mB'''' "Es   $Cc                 0   [         R                  " 5       n[        R                  " U 5         [         R                  " 5       U :X  d   eU S-  R	                  5       (       d   e S S S 5        [         R                  " 5       U:X  d   eg ! , (       d  f       N*= f)Nsubmitit/test_helpers.py)r   cwdr   RsyncSnapshotexists)r   rK   s     r   test_snapshotrN   ?   sn    
((*C			x	(xxzX%%%55==???? 
) 88: 
)	(s   6B
Bc                     S/n[         R                  " XS9   U S-  R                  5       (       d   eU S-  R                  5       (       a   e S S S 5        g ! , (       d  f       g = f)Nzsubmitit/test_*)snapshot_direxcludezsubmitit/helpers.pyrJ   )r   rL   rM   )r   rQ   s     r   test_snapshot_excludesrR   H   s^     !G			H	F0088::::99AACCCCC 
G	F	Fs   5A
A%c                     [         R                  " US9   U R                  [        R                  5      nS S S 5        [        WR                  5       5      U:X  d   eg ! , (       d  f       N.= f)NrP   )r   rL   submitosgetcwdr   r>   )r?   r   jobs      r   test_job_use_snapshot_cwdrY   P   sI    			H	5oobii( 
6

))) 
6	5s    A
A+c                    [         R                  " US9   S[        4S jnU R                  U5      nS S S 5        W" 5       [        [        5      R
                  S-  :X  d   eWR                  5       US-  :X  d   eg ! , (       d  f       NO= f)NrT   r	   c                  4    SS K n [        U R                  5      $ )Nr   )submititr   __file__)r\   s    r   submitit_file4test_job_use_snapshot_modules.<locals>.submitit_file[   s    ))**r   z__init__.pyzsubmitit/__init__.py)r   rL   r   rU   r]   parentr>   )r?   r   r^   rX   s       r   test_job_use_snapshot_modulesra   W   su    			H	5	+t 	+ oom, 
6 ?d8n33mCCCC::<8&<<<<< 
6	5s   A;;
B	c                   R   ^  \ rS rSrS
S\S\4U 4S jjjrSS\S\S\4S jjrS	r	U =r
$ )FakeInfoWatcherWithTimerh   delay_stime_changec                 d   > [         TU ]  U5        [        R                  " 5       U l        X l        g r   )super__init__r2   start_timerrf   )selfre   rf   	__class__s      r   ri   !FakeInfoWatcherWithTimer.__init__j   s$    !99;&r   job_idmoder	   c                     [         R                   " 5       U R                  -
  nX0R                  :  a  gSU R                  -  Us=:  a  U R                  :  a   g  US:X  a  gg)Npendingr   runningfailedr   )r2   rj   rf   )rk   rn   ro   durations       r   	get_state"FakeInfoWatcherWithTimer.get_stateo   s\    99;!1!11&&&!!!H?t/?/?? @Xr   )rj   rf   )<   {Gz?)standard)__name__
__module____qualname____firstlineno__intr9   ri   strru   __static_attributes____classcell__)rl   s   @r   rc   rc   h   s:    ' 'u ' '
 3   r   rc   c                   "    \ rS rSr\" 5       rSrg)FakeJobWithTimerz   r   N)rz   r{   r|   r}   rc   watcherr   r   r   r   r   r   z   s
    &(Gr   r   c                     [        SU S9n[        SU S9nX/n[        R                  " USSS9  [        S U 5       5      (       d   e[	        S U 5       5      U1:X  d   eg )	Nrs   )rn   folder	succeededrx   T)	test_modec              3   R   #    U  H  oR                  5       (       d  M  Uv   M     g 7fr   r   r   rF   s     r   r   $test_monitor_jobs.<locals>.<genexpr>   s     +$Q&&(qq$s   '	'c              3   d   #    U  H&  oR                   R                  5       S :X  d  M"  Uv   M(     g7f)FAILEDN)stateupperr   s     r   r   r      s!     >$Q''--/X"=qq$s   !0	0)r   r   monitor_jobsallset)r   rX   job2rB   s       r   test_monitor_jobsr   ~   se    !1(!SC"2+h"WD;Dtt4+$+++++>$>>3%GGGr   c                      [         R                  R                  5        V Vs0 s H  u  pU R                  S5      (       d  M  X_M!     snn $ s  snn f )N)SLURM_	SUBMITIT_)rV   environitems
startswith)r   ys     r   _get_envr      s;    ZZ--/Y/TQ1<<@W3XDAD/YYYs   AAc                     [        5       n [        R                  " SSS9   [        [        5       5      [        U 5      S-   :X  d   e[        R
                  " 5          [        5       (       a   e S S S 5        [        [        5       5      [        U 5      S-   :X  d   e S S S 5        [        5       U :X  d   e[        R                  " SSS9   [        R
                  " SS9   S	[        R                  ;  d   eS
[        R                  ;  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr#   )SLURM_BLUBLUSUBMITIT_BLUBLUr   *   i:  )MASTER_PORTBLABLA)r   )extra_namesr   r   )r   r   environment_variablesr(   r   	clean_envrV   r   )bases    r   test_clean_envr      s    :D		$	$"b	I8:#d)a-/// zz!>z !8:#d)a-///	 
J
 :		$	$C	@;7 

2222::--- 8 
A	@ !  
J	I 87 
A	@sG   ;D.D.-D.	E-D?E
D+	'D..
D<?
E		E
E)r	   N)"rV   r2   typingtppathlibr   pytest r   r   r   r~   r   markskipifrL   	availablerequires_rsyncr/   rH   rN   rR   rY   ra   InfoWatcherrc   JobRr   r   Dictr   r   r   r   r   r   <module>r      sg   
      3 3  ##''))2V $ 
+ + +(, D T   DT Dd D D *$ *4 * * =d =t = = t// $)txx' )H H HZ"''#s(# Z.r   