
    Xh!                         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     M/var/www/html/myenv/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  r2t        j                  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'        j0                  t3        j4                  |            }t&        j(                  j7                  t,        t&        j8                  t3        j:                  |      |t3        j:                  |             |j<                  xj>                  t&        j@                  t&        jB                  z  z  c_        t&        j(                  jE                  t,        t&        j8                  t3        j:                  |      |       t&        j(                  jG                  t&        jH                  t&        jJ                  z  dt        jL                        }t&        j(                  jO                  t,        |       tS        jT                  tV               tX        jZ                  j]                  dddt        jL                  | t_        j`                  d      dz  d       |r`dt        jb                  fdt        jd                  ffD ]7  \  }}}tg        jh                  t%               |||       |jk                  |       9 tm        jn                  tp        d      }d|_9        |ju                          |D ]  }	 t        jv                  |        y # t        $ r*}t        j                   d	j#                  ||            d }~ww xY w# t        $ r t        jP                  dd       Y nw xY w# t        $ r t        jP                  d       Y w xY w# |D ]=  }	 t        jv                  |       # t        $ r t        jP                  d       Y ;w xY w w xY w)NzOSpawning debuggee process:

Command line: {0!r}

Environment variables: {1!r}

)stdoutstderrr   graalpyc                  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())targetr1   )<r   r   setr   pipedictsysplatformimplementationr1   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   spawnrq   (   s   HH	+ 	 I}7 "$Hh!#Hh(HhAAI(;FF<<7"s'9'9'>'>)'K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   BQ 2O 2Q >F.O7 ,C7Q )P	O4
%O//O44Q 7 PQ PQ Q ?Q R
Q R R	?RR	R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   r7   r8   r   r?   TerminateJobObjectrA   r   killpgr   r   SIGKILLr#   r$   r   r   r   rT   rT      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   waitr7   r8   r#   r   r$   r   r   r   wait_for_remaining_outputanywait_on_exit_predicatesr   rU   rV   _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 . . .    )r7   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/)rR   rD   r   r   rW   r;   r7   r[   debugpyr   r   r   r   debugpy.launcherr   r8   r   r   rA   r   r   rq   rT   r]   r   r   r   r   <module>r      sq   
   	    
   ) #<<7'  9
 R *G7T@$Dr   