
    'i                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	 ddl
mZmZmZmZ ddlmZ ddlmZmZ  G d d	e      Z G d
 de      Z G d dee         Z G d de      Zy)    N)Path)DictListOptionalUnion   )ExecutorInfoWatcherJobR)JobEnvironment)DelayedSubmissionUncompletedJobErrorc                       e Zd ZdeddfdZy)DebugInfoWatcherjob_idreturnNc                      y N )selfr   s     N/var/www/stems/demucs_env/lib/python3.12/site-packages/submitit/local/debug.pyregister_jobzDebugInfoWatcher.register_job           )__name__
__module____qualname__strr   r   r   r   r   r      s    3 4 r   r   c                   :    e Zd ZdddddddZdefdZdeddfdZy)	DebugJobEnvironmentSUBMITIT_DEBUG_JOB_IDSUBMITIT_DEBUG_NOT_SET)r   	num_nodes	num_tasksnodeglobal_rank
local_rankr   c                 &    dt         j                  v S )Nr"   )osenvironr   s    r   	activatedzDebugJobEnvironment.activated#   s    &"**44r   	countdownNc                      y r   r   )r   r.   s     r   _requeuezDebugJobEnvironment._requeue&   r   r   )r   r   r   _envboolr-   intr0   r   r   r   r!   r!      s:    )--(/.D54 5# $ r   r!   c                        e Zd Z e       Zdededdf fdZdefdZe	de
fd       Zddeddfd	Zdd
Zdee   fdZdee   fdZddZddedefdZe	defd       Zddedeeef   fdZddZ xZS )DebugJobfolder
submissionr   Nc                     dt        |       }t        | 	  ||       || _        d| _        t        t        j                        | _        | j                  | j                  d<   y )NDEBUG_)r6   r   Fr"   )	idsuper__init___submission	cancelleddictr*   r+   r   )r   r6   r7   r   	__class__s       r   r<   zDebugJob.__init__-   sX    "Z.)*v6%BJJ'04,-r   c                     | j                   S r   )r=   r,   s    r   r7   zDebugJob.submission5   s    r   c                      y)N   r   r,   s    r   r%   zDebugJob.num_tasks8   s    r   checkc                     d| _         y )NT)r>   )r   rD   s     r   cancelzDebugJob.cancel<   s	    r   c                 :    | j                   rt        d|  d      y )NzJob z was cancelled.)r>   r   r,   s    r   _check_not_cancelledzDebugJob._check_not_cancelled?   s"    >>%TF/&BCC r   c                 .   | j                          | j                  j                         r| j                  j                  gS t	        t
        j                        }t
        j                  j                          t
        j                  j                  | j                         t        j                  d      }| j                  j                  j                  j                  dd       t        j                  | j                  j                        }|j!                  t        j"                         t        j                  | j                  j$                        }|j!                  t        j&                         |j)                  |       |j)                  |       |j+                  d| j                  j                   d       	 | j                  j-                         gt
        j                  j                          t
        j                  j                  |       |j/                  |       |j/                  |       S # t0        $ ri}t3        |       t
        j                  j5                  dd      j7                  d      rdd l}|j;                           dd l}|j;                           d }~ww xY w# t
        j                  j                          t
        j                  j                  |       |j/                  |       |j/                  |       w xY w)	N T)exist_okparentsz0Logging is written both to stderr/stdout and to z8/err. But call to print will only appear in the console.PYTHONBREAKPOINTipdbr   )rH   r=   done_resultr?   r*   r+   clearupdatelogging	getLoggerpathsstdoutparentmkdirFileHandlersetLevelDEBUGstderrWARNING
addHandlerwarningresultremoveHandler	Exceptionprintget
startswithrN   post_mortempdb)r   environ_backuproot_loggerstdout_handlerstderr_handlererN   rg   s           r   resultszDebugJob.resultsC   s7   !!#  "$$,,--bjj)





$,,'''+

  &&d&C ,,TZZ->->?. ,,TZZ->->?0~.~.>tzz?P?P>Q RA A	
	6$$++-. JJJJn-%%n5%%n5#  	!H zz~~0"5@@H  "
  !	 JJJJn-%%n5%%n5s&   H> >	J0A$J++J00J3 3A!Lc                     | j                          	 | j                  j                          y # t        $ r}|cY d }~S d }~ww xY wr   )rH   r=   r`   rb   )r   rl   s     r   	exceptionzDebugJob.exceptionn   s?    !!#	##% 	 H	s   - 	A=AAc                 $    | j                          y r   )rm   r,   s    r   waitzDebugJob.waitx   s    r   force_checkc                 V    | j                          | j                  j                         S r   )rm   r=   rO   )r   rr   s     r   rO   zDebugJob.done|   s     $$&&r   c                 T    | j                   j                         ry| j                  ryy)NDONE	CANCELLEDQUEUED)r=   rO   r>   r,   s    r   statezDebugJob.state   s$      ">>r   modec                     d| j                   iS )NSTATE)rx   )r   ry   s     r   get_infozDebugJob.get_info   s    $$r   c                      y r   r   r,   s    r   __del__zDebugJob.__del__   s    r   )T)r   N)F)force)r   r   r   r   watcherr   r   r<   r7   propertyr3   r%   r2   rF   rH   r   r   rm   r   BaseExceptionro   rq   rO   r   rx   r   r|   r~   __classcell__r@   s   @r   r5   r5   *   s     G<t <1B <t < -   3  D D D)6a )6V8M2 ' ' '
 s  %S %tCH~ %r   r5   c                        e Zd ZeZdeeef   f fdZde	j                  e   de	j                  ee	j                        fdZ xZS )DebugExecutorr6   c                 $    t         |   |       y r   )r;   r<   )r   r6   r@   s     r   r<   zDebugExecutor.__init__   s     r   delayed_submissionsr   c                 T    |D cg c]  }t        | j                  |       c}S c c}w r   )r5   r6   )r   r   dss      r   _internal_process_submissionsz+DebugExecutor._internal_process_submissions   s$     5HHbb)HHHs   %)r   r   r   r5   	job_classr   r   r   r<   tpr   r   r   Anyr   r   r   s   @r   r   r      sP    I!uS$Y/ !I#%77+<#=I	RVV	Ir   r   )rS   r*   typingr   pathlibr   r   r   r   r   	core.corer	   r
   r   r   core.job_environmentr   
core.utilsr   r   r   r!   r5   r   r   r   r   <module>r      s^     	   . . 5 5 1 ?{ . $ds1v dN	IH 	Ir   