
    Vf3                     h   d dl Z d dlZd dlZd dlZd dlmZ dej                  v sJ d dlZd dlm	Z
 d dlZd dlmZ d dlmZ dZdj#                  ej$                  e      Z G d	 d
e      Z e       Zddde_        d Z eed d      Zd Zd Zd fdZd Zd Zd Z d dfdZ!ddefddefdd ed      fdd edd      fd d! ed"      fd#d! ed$      fd%d ed&d      fd'd(e fd)d* ed+      fd,d- e!d.d/      fd0d1 e!d2      fd3d4 e!d5      fd6d7 e!d8e      fgZ"d9 Z#d: Z$d; Z%d< Z&d= Z'd> Z(d? Z)d@ Z*y)A    N)	find_specpydevd)pydevd_runpy)log)apiz2<filename> | -m <module> | -c <code> | --pid <pid>a0  debugpy {0}
See https://aka.ms/debugpy for documentation.

Usage: debugpy --listen | --connect
               [<host>:]<port>
               [--wait-for-client]
               [--configure-<name> <value>]...
               [--log-to <path>] [--log-to-stderr]
               {1}
               [<arg>]...
c                   ,    e Zd ZdZdZdZdZdZdZdZ	dZ
y)OptionsNF)__name__
__module____qualname__modeaddresslog_tolog_to_stderrtargettarget_kindwait_for_clientadapter_access_token     [/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/debugpy/server/cli.pyr	   r	   *   s+    DGFMFKOr   r	   noneT)qt
subProcessc                       fd}|S )Nc                      |       }|k  rt        dj                              |k\  rt        dj                              |S )Nzmust be >= {0}zmust be < {0})
ValueErrorformat)snparserstartstops     r   parsezin_range.<locals>.parse:   sV    1IU-44U;<<T	_33D9::r   r   )r!   r"   r#   r$   s   ``` r   in_ranger%   9   s     Lr   c                 l    t        t        t        j                         t        j                  d       y )Nfiler   )printHELPsysstderrexitswitchits     r   print_help_and_exitr1   H   s    	$SZZ HHQKr   c                 `    t        t        j                         t        j                  d       y )Nr   )r)   debugpy__version__r+   r-   r.   s     r   print_version_and_exitr5   M   s    	'

HHQKr   c                     | S Nr   xs    r   <lambda>r:   R       q r   c                       fd}|S )Nc                 J     t        |            }t        t        |       y r7   )nextsetattroptions)argr0   valuer!   varnames      r   dozset_arg.<locals>.doS   s    tBx %(r   r   )rC   r!   rD   s   `` r   set_argrE   R   s    ) Ir   c                       fd}|S )Nc                 (    t        t               y r7   )r?   r@   )rA   r0   rB   rC   s     r   rD   zset_const.<locals>.do[   s    %(r   r   )rC   rB   rD   s   `` r   	set_constrH   Z   s    ) Ir   c                       fd}|S )Nc                 6   t         j                  t        d      t        |      }|j	                  d      \  }}}|sd}|}	 t        |      }d|cxk  rdk  st        d       t        d      t         _        ||ft         _        y # t        $ r d}Y Hw xY w)Nz---listen and --connect are mutually exclusive:z	127.0.0.1r   i   zinvalid port number)r@   r   r   r>   	partitionint	Exceptionr   )rA   r0   rB   hostsepportr   s         r   rD   zset_address.<locals>.dob   s    ??&LMM R//#.c4DD	t9D T#G#233 $233,  	D	s   B
 
BBr   )r   rD   s   ` r   set_addressrS   a   s    '( Ir   c                    d}| j                  |      sJ | t        |      d  }t        |      }|t        j                  vrt        dj                  |            t        t        j                  |         }	 |t        u rddd|j                            }n ||      }|t        j                  |<   y # t        $ r& t        dj                  ||j                              w xY w)Nz--configure-zunknown property {0!r}TF)truefalsez{0!r} must be a {1})
startswithlenr>   r@   configr   r   typeboollowerrO   r
   )rA   r0   prefixnamerB   expected_types         r   
set_configr`   y   s    F>>&!!!s6{}DHE7>>!188>??-.MUD !E25;;=AE!%(E !GNN4  U.55dM<R<RSTTUs   8'B3 3/C"c                     | S r7   r   r8   s    r   r:   r:      r;   r   Fc                       fd}|S )Nc                    t         _         r| n
t        |            }t        |t              r0	 |j                  t        j                               }|t         _        y |t         _        y # t        $ rT 	 |j                  d      }n3# t        $ r' dd l	}|j                  |j                  d            }Y nw xY wY |t         _        y w xY w)Nutf-8r   F)r@   r   r>   
isinstancebytesdecoder+   getfilesystemencodingUnicodeDecodeErrorlocalegetpreferredencodingr   )rA   r0   r   rj   kindr!   
positionals       r   rD   zset_target.<locals>.do   s    "ztBx8fe$Os'@'@'BC   & OO#]]73F) O!#]]6+F+Fu+MNFO  Os5   #A. .	C8B
	C
-B:7C9B::C
Cr   )rl   r!   rm   rD   s   ``` r   
set_targetrn      s     " Ir   z-(\?|h|-help)z-(V|-version)z--log-toz<path>r   z--log-to-stderrr   z--listenz	<address>listenz	--connectconnectz--wait-for-clientr   z--configure-.+z<value>z--adapter-access-tokenz<token>r    z
<filename>r(   )rm   z-mz<module>module-cz<code>codez--pidz<pid>pidc               #      K   t        t        j                        dk\  rFt        j                  d   } t        j                  d= |  t        t        j                        dk\  rEy y w)N      )rX   r+   argv)rB   s    r   consume_argvrz      sE     
chh-1
HHQK chh-1
s   A!A&$A&c                     t               } t               }	 	 t        |      }|}|j                  d      sd}t        D ]$  \  }}}t        j                  d|z   dz   |      s$ n t	        d|z         || v rt	        d|z         | j                  |       	  |||       t        j                  nt        j                  t	        d
      t        j                   t        j                  dk7  rt	        d      t        j"                  dk(  rt        j$                  rt	        d      t        j                  J t        j"                  J t        j&                  J y # t        $ r t	        dt
        z         w xY w# t        $ r  |J t	        dj                  ||            t        $ r!}t	        d	j                  |||            d }~ww xY w)Nzmissing target: -rq   z^(z)$zunrecognized switch zduplicate switch z{0}: missing {1}zinvalid {0} {1}: {2}z(either --listen or --connect is requiredrp   z)--adapter-access-token requires --connectru   z(--pid does not support --wait-for-client)setrz   r>   StopIterationr   TARGETrW   switchesrematchaddr   rO   r@   r   r   r   r   r   r   )seenr0   rA   r/   patternplaceholderactionexcs           r   
parse_argvr      s   5D	B
	:r(C   %F,4 	>(G[&xxw-v6	> 3f<==T>069::HHV	V3O >>%; > ||CDD##/GLLI4MDEEe#(?(?CDD>>%%%***??&&&K  	:/&899	:&  	M***/66v{KLL 	V3::6;PSTUU	Vs#   E 	E> E;>0G.G

Gc                 B   | t         j                  d<   t        j                  dt         j                         t	        j
                  t        j                         t        j                  dk(  r$t	        j                  t        j                         nit        j                  dk(  r4t	        j                  t        j                  t        j                         n"t        t        t        j                              t        j                  rt	        j                          y y )Nr   zsys.argv after patching: {0!r}ro   rp   )access_token)r+   ry   r   debugr3   	configurer@   rY   r   ro   r   rp   r   AssertionErrorreprr   )argv_0s    r   start_debuggingr      s     CHHQKII.9gnn%||xw'		"g6R6RST',,/00! r   c                     t         j                  } t        |        t        j                  j                  |       r@t        j                  j                  |       }t        j                  j                  d|       nt        j                  d|        t        j                  d       t        j                  d|        t        j                  | d       y )Nr   zNot a file: {0!r}Pre-launch environment:zRunning file {0!r}__main__)run_name)r@   r   r   ospathisfiledirnamer+   insertr   r   describe_environmentinforunpyrun_path)r   dirs     r   run_filer   
  s    ^^FF 
ww~~fggoof%3		%v.67HH!6*	NN6J/r   c                     t         j                  j                  dt        d             t         j                  d   } 	 t        t        j                        }||j                  } t        |        t        j                  d       t        j                  dt        j                         	 t        j                   } |t        j                  d       y # t        $ r t        j                  d       Y w xY w# t"        $ r= t        j$                  d       t        j&                  t        j                  d	       Y y w xY w)
Nr   rq   z*Error determining module path for sys.argvr   zRunning module {0!r}T)
alter_argvzArunpy._run_module_as_main is missing, falling back to run_module.)	alter_sys)r+   r   r   strry   r   r@   r   originrO   r   swallow_exceptionr   r   r   r   _run_module_as_mainAttributeErrorwarning
run_module)r   specrun_module_as_mains      r   r   r     s     HHOOAs2w XXa[FL([[F F67HH#W^^4<"66
 	7>>d;%  LJKL  9WX489s$   'C *C7 C43C47AD=<D=c                  b   t         j                  j                  dt        d             t	        t
        j                  t        d      t        d            } t        t        d             t        j                  d       t        j                  dt
        j                         t        | i        y )Nr   rq   z<string>execrs   r   zRunning code:

{0})r+   r   r   r   compiler@   r   r   r   r   r   eval)rt   s    r   run_coder   @  si    HHOOAs2w7>>3z?CK@DCI67HH#W^^4rNr   c                     t         j                  } t        j                  d|        d }t        j
                  j                  t        j                  j                        }t        j
                  j                  |      sJ  ||      }t         j                  t         j                  t         j                  t         j                  t         j                  d} |t!        j"                  |            }d}|j%                  dd      j%                  dd      j'                  ||      }t        j                  d	|j%                  d
d             h dt)        |      z  rJ d       t        j
                  j+                  t        j
                  j                  t,        j                        d      }t        j
                  j                  |      sJ t.        j
                  j1                  |       	 dd l}t        j                  d|        |j5                  | |dt7        t	        j8                  dd                   t        j                  d|        y # t:        $ r t        j<                  d|        Y 8w xY w)Nz!Attaching to process with PID={0}c                 P    | #t        t        | j                  d                  S d S )Nrd   )list	bytearrayencode)r   s    r   r:   zattach_to_pid.<locals>.<lambda>Q  s"    Q]tIahhw&789 PT r   )r   r   r   r   r   a9  
import codecs;
import json;
import sys;

decode = lambda s: codecs.utf_8_decode(bytearray(s))[0] if s is not None else None;

script_dir = decode({script_dir});
setup = json.loads(decode({setup}));

sys.path.insert(0, script_dir);
import attach_pid_injected;
del sys.path[0];

attach_pid_injected.attach(setup);
rq   
)
script_dirsetupzCode to be injected: 
{0};z;
>   r   r   "'zOInjected code should not contain any single quotes, double quotes, or newlines.pydevd_attach_to_processr   z,Injecting code into process with PID={0} ...T DEBUGPY_ATTACH_BY_PID_DEBUG_INFO0)connect_debugger_tracingshow_debug_infoz#Code injection into PID={0} failed:z&Code injection into PID={0} completed.)r@   r   r   r   r   r   r   r3   server__file__existsr   r   r   r   r   jsondumpsreplacer   r}   joinr   r+   appendadd_code_to_python_processrun_python_coderN   getenvrO   reraise_exception)ru   r   r   r   python_codepydevd_attach_to_process_pathr   s          r   attach_to_pidr   M  s   
..CHH0#6TF!8!89J77>>*%%%
#J ??"22.. ' < <E 4::e$%EK" 	D"%	r		:U	3 
 HH);+>+>sE+JK 	[!11YXY  %'GGLL
(*D%! 77>>7888HHOO12J)?E"22%)		*Lc RS	 	3 	
 HH5s;  JCSIJs   1AI I65I6c                  D   t        t        j                        } 	 t                t        j                  #t        j                  t        j                         t        j                  r#t        j                  t        j                         t        j                          t!        j"                  t        d      | t        j                         	 t$        t&        t(        t*        dt        j,                     } |        y # t        $ r`}t        t        t              t        d      z   t        |      z   t        j                         t        j                  d       Y d }~=d }~ww xY w# t.        $ r,}t!        j0                  d|j2                  d       Y d }~y d }~ww xY w)	Nz
Error: r'   rw   z=sys.argv before parsing: {0!r}
         after parsing:  {1!r})r(   rr   rt   ru   z%Debuggee exited via SystemExit: {0!r}r   )level)r   r+   ry   r   rO   r)   r   r*   r,   r-   r@   r   r3   r   r   ensure_loggingr   r   r   r   r   r   r   
SystemExitr   rt   )original_argvr   runs      r   mainr     s   NM
 ~~!w~~&szz"HHOP
  	

 

 	1  c$i#k**SX5CJJG2  
3SXXW	
 	

s0   
C> /E* >	E'AE""E'*	F3"FF)+r   r   r   r+   importlib.utilr   modulesr   _pydevd_bundler   r   r3   debugpy.commonr   debugpy.serverr   r   r   r4   r*   objectr	   r@   rY   r%   rN   ru   r1   r5   rE   rH   rS   r`   rn   r   rz   r   r   r   r   r   r   r   r   r   r   <module>r      s  
  	 	 
 $
 3;;   1    
>
 F  f   )d3	 sAt

 ) 0!* )e 6 4GH4JKGH4EFIot4TUK4IJK	4JKI>OQU4VW	J? G<R4ST JvRV4WX	
Jx4HI	Jv4FGJuc4JK-6,'^"*0*<B
B<J 
r   