
    Vf~!                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZ d dlmZ ej                  dk(  rd dlmZ da	 da	 g Z	 d Zd Zd	 Zd
 Zd Zy)    N)launcher)log	messaging)outputwin32)winapic                  *    dt         j                   dS )NzDebuggee[PID=])processpid     b/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/debugpy/launcher/debuggee.pydescriber   $   s    7;;-q))r   c           
         t        j                  d||       t               }	 |rEt        j                         \  }}t        j                         \  }}|||||hz  }t        ||      }	ni }	t        j                  dk7  rd }
|	j                  |
       	 t        j                  |f|dd|	at        j                  d	t!                      t        j                  dk(  r	 t"        j$                  j'                  d d       at#        j*                         }t#        j,                  t/        j0                  |            }t"        j$                  j3                  t(        t"        j4                  t/        j6                  |      |t/        j6                  |             |j8                  xj:                  t"        j<                  t"        j>                  z  z  c_        t"        j$                  jA                  t(        t"        j4                  t/        j6                  |      |       t"        j$                  jC                  t"        jD                  t"        jF                  z  d
t        jH                        }t"        j$                  jK                  t(        |       tO        jP                  tR               tT        jV                  jY                  dddt        jH                  | t[        j\                  d      dz  d       |r`dt        j^                  fdt        j`                  ffD ]7  \  }}}tc        jd                  t!               |||       |jg                  |       9 ti        jj                  tl        d      }d|_7        |jq                          |D ]  }	 t        jr                  |        y # t        $ r*}t        j                  dj                  ||            d }~ww xY w# t        $ r t        jL                  dd       Y nw xY w# t        $ r t        jL                  d       Y w xY w# |D ]=  }	 t        jr                  |       # t        $ r t        jL                  d       Y ;w xY w w xY w)NzOSpawning debuggee process:

Command line: {0!r}

Environment variables: {1!r}

)stdoutstderrr   c                  t   	 t        j                          t        j                  t        j                  t        j                        } 	 t        j
                  dt         j                        }	 t        j                  |t        j                                t        j                  |       	 t        j                  t        j                  |        y # t        j                  |       w xY w# t        j                  t        j                  |        w xY w# t        $ r t        j                  dd       Y y w xY w)Nz/dev/ttyzFailed to set up process groupinfolevel)ossetpgrpsignalSIGTTOUSIG_IGNopenO_RDWR	tcsetpgrpgetpgrpclose	Exceptionr   swallow_exception)old_handlerttys     r   
preexec_fnzspawn.<locals>.preexec_fn?   s     JJL
 #)--"OKC ggj"))<*LLbjjl;HHSMfnnkB HHSMfnnkB  ))8sB   AD 	$C+ .(C C+ ,$D C((C+ +&DD  D76D7)r&   r   )envbufsizez0Couldn't spawn debuggee: {0}

Command line:{1!r}zSpawned {0}.FzFailed to set up job objectwarningr   r   launchTP   )startMethodisLocalProcesssystemProcessIdnamepointerSizer   r   zwait_for_exit())targetr0   ):r   r   setr   pipedictsysplatformupdate
subprocessPopenr   r"   r   MessageHandlingErrorformatr   r   kernel32CreateJobObjectA
job_handle$JOBOBJECT_EXTENDED_LIMIT_INFORMATIONDWORDctypessizeofQueryInformationJobObject!JobObjectExtendedLimitInformationpointerBasicLimitInformation
LimitFlags"JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSEJOB_OBJECT_LIMIT_BREAKAWAY_OKSetInformationJobObjectOpenProcessPROCESS_TERMINATEPROCESS_SET_QUOTAr   AssignProcessToJobObjectr#   atexitregisterkillr   channel
send_eventstructcalcsizer   r   r   CaptureOutputremove	threadingThreadwait_for_exitdaemonstartr!   )process_namecmdliner'   redirect_output	close_fdsstdout_rstdout_wstderr_rstderr_wkwargsr&   excjob_infojob_info_sizeprocess_handlecategoryfdteewait_threads                      r   spawnro   (   s   HH	+ 	 I|7 "$Hh!#Hh(HhAAI(;FF<<7"0 MMZM0	 &&wMCMfMG 	,<<7"&V#__==dDI
!FFH &V]]8-D E99<<NN8,!NN=1 ..99 == 8899 77<<NN8,!	 "(!<!<,,v/G/GGKK" 88^T
 	##'"&#*;;$%s3a7		
 8SZZ08SZZ0& %!"c $$XZ2sC  $%  &&mBST!  	7B7	7]  	00DKK 	b  V%%&C9UUV@  7%%I67  	7B7 7%%I67	7s   A1P& N$ .2P& !F.O C7P& P$	O-%OOP&  O>:P& =O>>P& P#"P#&Q*-QQ*Q%	"Q*$Q%	%Q*c                     t         y 	 t         j                         t        j                  dt	                      t
        j                  dk(  r%t        j                  j                  t        d       y t        j                  t         j                  t        j                         y y # t         $ r! t        j"                  dt	                      Y y w xY w)NzKilling {0}r   r   zFailed to kill {0})r   pollr   r   r   r6   r7   r   r=   TerminateJobObjectr?   r   killpgr   r   SIGKILLr"   r#   r   r   r   rR   rR      s    @<<>!HH]HJ/||w&22:qA 		'++v~~6 "  @2HJ?@s   A)B' 32B' ''CCc                  &   	 t         j                         t        j                  dk7  r
dk  rdz  t        j                  dt                      t        j                          t        fdt        D              } 	 t        j                  j                  dd	i       | r
t!                	 t        j                  j                  d
       y # t        $ r t        j                  d       dY w xY w# t        $ r Y ^w xY w# t        $ r Y y w xY w)Nr   r      z$Couldn't determine process exit codez{0} exited with code {1}c              3   .   K   | ]  } |        y w)Nr   ).0predcodes     r   	<genexpr>z wait_for_exit.<locals>.<genexpr>   s     ETd4jEs   exitedexitCode
terminated)r   waitr6   r7   r"   r   r#   r   r   r   wait_for_remaining_outputanywait_on_exit_predicatesr   rS   rT   _wait_for_user_input)should_waitr{   s    @r   r[   r[      s    
||~<<7"tax
 DLD
 HH'T:
$$& E-DEEK##Hz4.@A ##L1)  DE    s5   1C  "C5 /D  C21C25	D D	DDc                  d   t         j                  rt         j                  rt         j                  j                         rddlm}  	 dd l}d}|r` | j                  d       t         j                  j                  d       t         j                  j                          j                          y  | j                  d       t         j                  j                  d       t         j                  j                          t         j                  j                  d	       y y y y # t        $ r d}Y w xY w)
Nr   )r   TFz5msvcrt available - waiting for user input via getch()z Press any key to continue . . . z8msvcrt not available - waiting for user input via read()zPress Enter to continue . . .    )r6   r   stdinisattydebugpy.commonr   msvcrtImportErrordebugwriteflushgetchread)r   r   	can_getchs      r   r   r      s    
zzciiCII$4$4$6&	 ICIIMNJJ?@JJLLNCIIPQJJ=>JJIINN1' %7iz
  	I	s   D! !D/.D/)rP   rB   r   r   rU   r9   r6   rY   debugpyr   r   r   r   debugpy.launcherr   r7   r   r   r?   r   r   ro   rR   r[   r   r   r   r   <module>r      sq   
   	    
   ) #<<7'  9
 R *F7R@$Dr   