
    'i@                        d dl Z d dlZd dlZd dlmZ d dlZddlmZ ddl	m	Z	m
Z
 dedefdZej                  j                  ej                  j!                          d	
      ZdeddfdZddZededdfd       Zededdfd       Zededdfd       Zededdfd       Z G d de	j0                        Z G d de	j4                  e	j6                           ZdeddfdZdej<                  eef   fdZ ddZ!y)    N)Path   )helpers)coreutilsxreturnc                     d| z  S )N    r   s    O/var/www/stems/demucs_env/lib/python3.12/site-packages/submitit/test_helpers.py_three_timer      s    q5L    z"Rsync is required for snapshotting)reasontmp_pathc                    | dz  }t        j                  d      }|j                  t        d       |j                  t        d       t	        |      dk(  sJ t        d |D              dk(  sJ t        j                  ||       t        j                  |      }t        d	 |D              dk(  sJ  |       d
dgk(  sJ t        d |D              dk(  sJ y )Nztest_funcseq.pklT)verbose         c              3   <   K   | ]  }|j                           y wNdone.0r   s     r   	<genexpr>z4test_function_sequence_checkpoint.<locals>.<genexpr>!        %Aqvvx%   r   c              3   <   K   | ]  }|j                           y wr   r   r   s     r   r   z4test_function_sequence_checkpoint.<locals>.<genexpr>$   r   r          c              3   <   K   | ]  }|j                           y wr   r   r   s     r   r   z4test_function_sequence_checkpoint.<locals>.<genexpr>&   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                    dt         dt         fd}d\  }}| j                  ||||g      }t        j                         }g }t        t	        j
                  |d            D ]9  \  }}t        j                         |z
  }	|dk  r|	|k  sJ |j                  |       ; |||g|D cg c]  }|j                          c}k(  sJ |d   |d	   u sJ y c c}w )
Nr   r	   c                 0    t        j                  |        | S r   )timesleepr   s    r   fztest_as_completed.<locals>.f*   s    

1r   )g      ?皙?r4   )poll_frequencyr   r   )float	map_arrayr1   	enumerater   as_completedappendresult)
executorr3   slowfastjobsstartfinished_jobsnjelapseds
             r   test_as_completedrF   )   s    U u 
 JD$a$d!34DIIKEM'..tCHI  1))+%q5T>!>Q  $m!D!((*!DDDD7mB'''' "Es   %Cc                    t        j                         }t        j                  |       5  t        j                         | k(  sJ | dz  j	                         sJ 	 d d d        t        j                         |k(  sJ y # 1 sw Y   #xY w)Nsubmitit/test_helpers.py)r   cwdr   RsyncSnapshotexists)r   rI   s     r   test_snapshotrL   ?   sv    
((*C			x	( @xxzX%%%55==???@ 88:@ @s   /A<<Bc                     dg}t        j                  | |      5  | dz  j                         sJ | dz  j                         rJ 	 d d d        y # 1 sw Y   y xY w)Nzsubmitit/test_*)snapshot_direxcludezsubmitit/helpers.pyrH   )r   rJ   rK   )r   rO   s     r   test_snapshot_excludesrP   H   sf     !G			Hg	F D0088:::99AACCCCD D Ds   +AAc                     t        j                  |      5  | j                  t        j                        }d d d        t        j                               |k(  sJ y # 1 sw Y   (xY w)NrN   )r   rJ   submitosgetcwdr   r<   )r=   r   jobs      r   test_job_use_snapshot_cwdrW   P   sP    			H	5 )oobii()

)))) )s    AA'c                    t        j                  |      5  dt        fd}| j                  |      }d d d                t        t              j
                  dz  k(  sJ j                         |dz  k(  sJ y # 1 sw Y   HxY w)NrR   r	   c                  4    dd l } t        | j                        S )Nr   )submititr   __file__)rZ   s    r   submitit_filez4test_job_use_snapshot_modules.<locals>.submitit_file[   s    ))**r   z__init__.pyzsubmitit/__init__.py)r   rJ   r   rS   r[   parentr<   )r=   r   r\   rV   s       r   test_job_use_snapshot_modulesr^   W   s|    			H	5 -	+t 	+ oom,- ?d8n33mCCCC::<8&<<<<<- -s   A::Bc                   @     e Zd Zddedef fdZd	dededefdZ xZS )
FakeInfoWatcherWithTimerdelay_stime_changec                 d    t         |   |       t        j                         | _        || _        y r   )super__init__r1   start_timerrb   )selfra   rb   	__class__s      r   re   z!FakeInfoWatcherWithTimer.__init__j   s&    !99;&r   job_idmoder	   c                     t        j                          | j                  z
  }|| j                  k  ryd| j                  z  |cxkD  r| j                  kD  ry |dk(  ryy)Npendingr   runningfailedr   )r1   rf   rb   )rg   ri   rj   durations       r   	get_statez"FakeInfoWatcherWithTimer.get_stateo   s^    99;!1!11d&&&!!!H?t/?/?? @Xr   )<   {Gz?)standard)	__name__
__module____qualname__intr7   re   strrp   __classcell__)rh   s   @r   r`   r`   h   s0    ' 'u '
 3  r   r`   c                       e Zd Z e       Zy)FakeJobWithTimerN)rt   ru   rv   r`   watcherr   r   r   r{   r{   z   s
    &(Gr   r{   c                     t        d|       }t        d|       }||g}t        j                  |dd       t        d |D              sJ t	        d |D              |hk(  sJ y )	Nrn   )ri   folder	succeededrr   T)	test_modec              3   B   K   | ]  }|j                         s|  y wr   r   r   rD   s     r   r   z$test_monitor_jobs.<locals>.<genexpr>   s     +Q!&&(q+s   c              3   \   K   | ]$  }|j                   j                         d k(  s!| & yw)FAILEDN)stateupperr   s     r   r   z$test_monitor_jobs.<locals>.<genexpr>   s!     >Q!''--/X"=q>s   ",,)r{   r   monitor_jobsallset)r   rV   job2r@   s       r   test_monitor_jobsr   ~   sd    !1(!SC"2+h"WD;Dtt4+$++++>$>>3%GGGr   c                      t         j                  j                         D  ci c]  \  } }| j                  d      s| | c}} S c c}} w )N)SLURM_	SUBMITIT_)rT   environitems
startswith)r   ys     r   _get_envr      s7    ZZ--/YTQ1<<@W3XAqDYYYs
   AAc                     t               } t        j                  dd      5  t        t                     t        |       dz   k(  sJ t	        j
                         5  t               rJ 	 d d d        t        t                     t        |       dz   k(  sJ 	 d d d        t               | k(  sJ t        j                  dd      5  t	        j
                  d      5  d	t        j                  vsJ d
t        j                  vsJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr"   )SLURM_BLUBLUSUBMITIT_BLUBLUr   *   i:  )MASTER_PORTBLABLA)r   )extra_namesr   r   )r   r   environment_variablesr'   r   	clean_envrT   r   )bases    r   test_clean_envr      s   :D		$	$"b	I 08:#d)a-///  	"z!>z	"8:#d)a-///	0
 :		$	$C	@ .;7 	. 

2222::---	.. .	" 	"0 0	. 	.. .sG   9D"D),D"D:)D.D:D	D""D+.D7	3D::E)r	   N)"rT   r1   typingtppathlibr   pytest r   r   r   rw   r   markskipifrJ   	availablerequires_rsyncr.   rF   rL   rP   rW   r^   InfoWatcherr`   JobRr{   r   Dictrx   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   