
    Chi                     &   S r SSKrSSKrSSKrSSKrSSKJr  SSKrSSK	J
r
  SSKJr  SSKJr  SSKJr  SSKJr   SS	KJr  SSKJrJrJr   SSKJr  SSKJr  SSKJ r J!r!  Sr"\'" \SS5      =(       d    \RP                  r) " S S5      r* " S S5      r+ " S S5      r, " S S5      r- " S S5      r. " S S5      r/ " S  S!5      r0g! \ a	    SS
KJr   Nf = f! \ a    Sr" N\# a(  r$\$RJ                  RL                  S:X  a  Sr" Sr$C$N\$eSr$C$ff = f)"z/Debugger implementation for the IPython kernel.    N)Path)get_ipython)leading_empty_lines)Event)Queue)jsonapi)json_default)date_default   )get_file_nameget_tmp_directoryget_tmp_hash_seed)api)pydevd_frame_utils)SuspendedFramesManager_FramesTrackerTFDebuggerInitializationError
ROUTING_IDc                       \ rS rSrSrS rSrg)	_FakeCode0   zFake code class.c                     Xl         X l        gInit.Nco_filenameco_name)selfr   r   s      eC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\ipykernel/debugger.py__init___FakeCode.__init__3   s    &    r   N__name__
__module____qualname____firstlineno____doc__r    __static_attributes__ r"   r   r   r   0   s
    r"   r   c                       \ rS rSrSrS rSrg)
_FakeFrame9   zFake frame class.c                 6    Xl         X l        X0l        SU l        gr   )f_code	f_globalsf_localsf_back)r   r/   r0   r1   s       r   r    _FakeFrame.__init__<   s    " r"   )r2   r/   r0   r1   Nr#   r*   r"   r   r,   r,   9   s
    r"   r,   c                       \ rS rSrSrS rSrg)
_DummyPyDBD   zFake PyDb class.c                 :    SSK Jn  UR                  5       U l        g)r   r   )	PyDevdAPIN)_pydevd_bundle.pydevd_apir8   VariablePresentationvariable_presentation)r   r8   s     r   r    _DummyPyDB.__init__G   s    7%.%C%C%E"r"   )r;   Nr#   r*   r"   r   r5   r5   D   s    Fr"   r5   c                   4    \ rS rSrSrS rS rS rS	S jrSr	g)
VariableExplorerN   zA variable explorer.c                     [        5       U l        [        5       U l        [	        U R                  U R                  5      U l        SU l        g)zInitialize the explorer.N)r   suspended_frame_managerr5   py_dbr   trackerframer   s    r   r    VariableExplorer.__init__Q   s5    '='?$\
%d&B&BDJJO
r"   c                     [        5       R                  n[        [        S[	        S5      5      X5      U l        U R                  R                  S[        R                  " U R
                  5      5        g)zStart tracking.<module>zsys._getframe()thread1N)
r   user_nsr,   r   r   rD   rC   trackr   create_frames_list_from_frame)r   vars     r   rK   VariableExplorer.trackX   sR    m##	*mDU6V WY\b
9&8&V&VW[WaWa&bcr"   c                 8    U R                   R                  5         g)zStop tracking.N)rC   untrack_allrE   s    r   rP   VariableExplorer.untrack_all^   s      "r"   Nc                     UnU(       d  [        U R                  5      nU R                  R                  U5      nUR	                  5        Vs/ s H  oDR                  5       PM     sn$ s  snf )z1Get the child variables for a variable reference.)idrD   rA   get_variableget_children_variablesget_var_data)r   variable_refvar_ref	variablesxs        r   rU   'VariableExplorer.get_children_variablesb   sU    nG00==gF	*3*J*J*LM*LQ *LMMMs   A()rD   rB   rA   rC   N)
r$   r%   r&   r'   r(   r    rK   rP   rU   r)   r*   r"   r   r>   r>   N   s    d#Nr"   r>   c                   F    \ rS rSrSrSrSrSrSrS r	S r
S	 rS
 rS rSrg)DebugpyMessageQueuek   zA debugpy message queue.zContent-Length:    z

   c                 h    SU l         U R                  5         Xl        [        5       U l        X l        g)zInit the queue. N)
tcp_buffer_reset_tcp_posevent_callbackr   message_queuelog)r   rf   rh   s      r   r    DebugpyMessageQueue.__init__s   s*    ,+07r"   c                 <    SU l         SU l        SU l        SU l        g )Nr   )
header_posseparator_posmessage_sizemessage_posrE   s    r   re   "DebugpyMessageQueue._reset_tcp_pos{   s!    r"   c                 
   U R                   R                  S5        [        R                  " [        [
        [        R                  4   [        R                  " U5      5      nUS   S:X  aH  U R                   R                  S5        U R                   R                  U5        U R                  U5        g U R                   R                  S5        U R                   R                  U5        U R                  R                  U5        g )NzQUEUE - _put_message:typeeventzQUEUE - received event:zQUEUE - put message:)rh   debugtcastdictstrAnyr   loadsrf   rg   
put_nowait)r   raw_msgmsgs      r   _put_message DebugpyMessageQueue._put_message   s    ./ffT#quu*%w}}W'=>v;'!HHNN45HHNN3$HHNN12HHNN3))#.r"   c                 d   U =R                   U-  sl         U R                  R                  S5         U R                  S:X  a.  U R                   R	                  [
        R                  5      U l        U R                  S:X  a  gU R                  R                  SU R                  5        U R                  S:X  aL  U R                  [
        R                  -   nU R                   R	                  [
        R                  U5      U l        U R                  S:X  a  gU R                  R                  SU R                  5        U R                  S:X  ae  U R                  [
        R                  -   nU R                  [
        R                  -   U l
        [        U R                   X0R                   5      U l        U R                  R                  SU R                  5        U R                  R                  SU R                  5        [        U R                   5      U R                  -
  U R                  :  a  gU R                  U R                   U R                  U R                  U R                  -    5        [        U R                   5      U R                  -
  U R                  :X  a3  U R                  R                  S5        S	U l         U R!                  5         gU R                   U R                  U R                  -   S U l         U R                  R                  S
U R                   5        U R!                  5         GM   )zPut a tcp frame in the queue.zQUEUE - received framerk   NzQUEUE - found header at pos %iz!QUEUE - found separator at pos %izQUEUE - found message at pos %izQUEUE - message size is %izQUEUE - resetting tcp_bufferrc   zQUEUE - slicing tcp_buffer: %s)rd   rh   rt   rl   findr^   HEADERrm   HEADER_LENGTH	SEPARATORro   SEPARATOR_LENGTHintrn   lenr~   re   )r   rD   hintsize_poss       r   put_tcp_frame!DebugpyMessageQueue.put_tcp_frame   s^   5 /0"$"&//"6"67J7Q7Q"R"$HHNN;T__M !!R')<)J)JJ%)__%9%9:M:W:WY]%^"!!R'HHNN>@R@RS2%??-@-N-NN#'#5#58K8\8\#\ $'CUCU(V$W!HHNN<d>N>NOHHNN79J9JK4??#d&6&669J9JJ 0 043C3CdFWFW3WX 4??#d&6&66$:K:KK=>"$##%"ood.>.>ARAR.R.TUDOHHNN;T__M!Q r"   c                 R   #    U R                   R                  5       I Sh  vN $  N7f)zGet a message from the queue.N)rg   getrE   s    r   get_messageDebugpyMessageQueue.get_message   s      ''++----   '%')rf   rl   rh   ro   rg   rn   rm   rd   N)r$   r%   r&   r'   r(   r   r   r   r   r    re   r~   r   r   r)   r*   r"   r   r^   r^   k   s4    "FMI
/-"^.r"   r^   c                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)DebugpyClient   zA client for debugpy.c                     Xl         X l        X0l        [        U R                  U R                   5      U l        SU l        SU l        SU l        SU l	        [        5       U l        SU l        g)zInitialize the client.	127.0.0.1rk   NT)rh   debugpy_streamrf   r^   _forward_eventrg   debugpy_hostdebugpy_port
routing_idwait_for_attachr   
init_eventinit_event_seq)r   rh   r   rf   s       r   r    DebugpyClient.__init__   s\    ,,01D1DdhhO'#' r"   c                 N    U R                  5       u  pSU-   S-   [        U5      -   $ )Ntcp://:)get_host_portrx   )r   hostports      r   _get_endpointDebugpyClient._get_endpoint   s*    '')
$$s4y00r"   c                     US   S:X  a$  U R                   R                  5         US   U l        U R                  U5        g )Nrs   initializedseq)r   setr   rf   r   r}   s     r   r   DebugpyClient._forward_event   s8    w<=(OO!"%e*DC r"   c                 J   U R                   c.  U R                  R                  R                  [        5      U l         [
        R                  " U[        SSS9n[        [        U5      5      n[        R                  U-   [        R                  -   R                  S5      nXB-  nU R                  R                  S5        U R                  R                  U R                   5        U R                  R                  U5        U R                  R!                  U R                   U45        g )NF)defaultensure_ascii	allow_nanasciizDEBUGPYCLIENT:)r   r   socket
getsockoptr   r   dumpsr	   rx   r   r^   r   r   encoderh   rt   send_multipart)r   r}   contentcontent_lengthbufs        r   _send_requestDebugpyClient._send_request   s    ??""1188CCJODO-- 	
 S\*"))N:=P=Z=ZZbb
 	'(t's**DOOS+ABr"   c                 R   #    U R                   R                  5       I S h  vN $  N7fr\   )rg   r   rE   s    r   _wait_for_response DebugpyClient._wait_for_response   s"      ''335555r   c                   #    U R                   R                  5       I S h  vN   S[        U R                  5      S-   SS.nU R	                  U5        U R                  5       I S h  vN   U R                  5       I S h  vN $  Na N N7f)Nrequestr   configurationDone)rr   r   command)r   waitr   r   r   r   )r   r   s     r   _handle_init_sequence#DebugpyClient._handle_init_sequence   s     oo""$$$ t**+a/*

 	,- %%''' ,,... 	% 	( /s4   BBAB%B&B=B>BBBc                    U R                   S:X  a  U R                  R                  nUR                  SU R                  -   5        UR                  [        R                  5      R                  S5      U l	        UR                  U R                  5        U R                  R                  S5      nU R                  US-   S U l         U R                  U R                   4$ )zGet the host debugpy port.rk   r   utf-8r   r   N)r   r   r   bind_to_random_portr   r   zmqLAST_ENDPOINTdecodeendpointunbindrfind)r   r   indexs      r   r   DebugpyClient.get_host_port  s    "((//F&&x$2C2C'CD"--c.?.?@GGPDMMM$--(MM'',E $eaik :D  $"3"333r"   c                     U R                   R                  R                  U R                  5       5        U R                   R                  R	                  [
        5      U l        g)zConnect to the tcp socket.N)r   r   connectr   r   r   r   rE   s    r   connect_tcp_socket DebugpyClient.connect_tcp_socket  sC    ""**4+=+=+?@--44??
Kr"   c                     U R                   R                  R                  U R                  5       5        SU l        [        5       U l        SU l        SU l        g)zDisconnect from the tcp socket.Nrk   T)	r   r   
disconnectr   r   r   r   r   r   rE   s    r   disconnect_tcp_socket#DebugpyClient.disconnect_tcp_socket  sE    ""--d.@.@.BC' #r"   c                 :    U R                   R                  U5        g)zReceive a dap frame.N)rg   r   )r   rD   s     r   receive_dap_frameDebugpyClient.receive_dap_frame  s    ((/r"   c                 J  #    U R                  U5        U R                  (       a*  US   S:X  a!  U R                  5       I Sh  vN nSU l        U$ U R                  5       I Sh  vN nU R                  R                  S5        U R                  R                  U5        U$  N] N>7f)zSend a dap request.r   attachNFzDEBUGPYCLIENT - returning:)r   r   r   r   rh   rt   )r   r}   reps      r   send_dap_requestDebugpyClient.send_dap_request"  s     3C	Nh$>2244C#(D J++--34s
 5 .s#   ?B#B B#"B!#=B#!B#)r   r   r   r   rf   r   r   rh   rg   r   r   N)r$   r%   r&   r'   r(   r    r   r   r   r   r   r   r   r   r   r   r)   r*   r"   r   r   r      s>    !1!C&6/$	4L
$0r"   r   c                       \ rS rSrSr/ SQr/ SQr SS jrS rS r	S r
S	 rS
 r\S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)Debuggeri0  zThe debugger class.)dumpCellsetBreakpointssource
stackTracerY   r   r   )	debugInfoinspectVariablesrichInspectVariablesmodulescopyToGlobalsc                 
   Xl         [        XU R                  5      U l        X@l        XPl        SU l        X0l        X`l        [        5       U l
        0 U l        [        R                   H  n[        X5      U R                  U'   M     0 U l        [        R                    H  n[        X5      U R                  U'   M     0 U l        [%        5       U l        SU l        0 U l        SU l        SU l        SU l        [3        5       U l        g)zInitialize the debugger.Fr   r   N)rh   r   _handle_eventdebugpy_clientshell_socketsession
is_startedrf   just_my_coder   stopped_queuestarted_debug_handlersr   started_debug_msg_typesgetattrstatic_debug_handlersstatic_debug_msg_typesbreakpoint_listr   stopped_threadsdebugpy_initialized_removed_cleanupr   r   r   r>   variable_explorer)r   rh   r   rf   r   r   r   msg_types           r   r    Debugger.__init__G  s     +CASAST(,(+07&(# 88H4;D4KD''1 9 &(" 77H3:43JD&&x0 8  ""u#(  "'!1!3r"   c                    US   S:X  a\  US   S   (       a  U R                   R                  U5        g U R                  R                  US   S   5        U R	                  U5        g US   S:X  aP  US   S   (       a  [        5       U l        O!U R                  R                  US   S   5        U R	                  U5        g U R	                  U5        g )Nrs   stoppedbodyallThreadsStoppedthreadId	continuedallThreadsContinued)r   r{   r   addrf   r   remover   s     r   r   Debugger._handle_eventh  s    w<9$6{./""--c2  $$S[%<=$\[(6{01'*u$$$++CK
,CD$$r"   c                 T   #    U R                   R                  U5      I S h  vN $  N7fr\   )r   r   r   s     r   _forward_messageDebugger._forward_messagey  s"     ((99#>>>>s   (&(c                     U Vs/ s H  o0R                  US   5      (       d  M  UPM!     nnUS   SUS   SUS   SU0S.$ s  snf )Nnamer   responseTr   rY   )r   rr   request_seqsuccessr   r  )accept_variable)r   r   rY   rM   var_lists        r   _build_variables_response"Debugger._build_variables_response|  sY    #,R9C0D0DS[0QC9R5>"5>y) (+
 	
 Ss
   AAc                     / SQnX;  $ )N)IPythonHistorySavingThreadzThread-2zThread-3zThread-4r*   )r   thread_nameforbid_lists      r   _accept_stopped_threadDebugger._accept_stopped_thread  s     Y--r"   c                 T  #    U R                   R                  5       I Sh  vN nUS   S-   SSS.nU R                  U5      I Sh  vN nUS   S    H<  nU R                  US   5      (       d  M  U R                  R                  US	   5        M>     U R                  U5        g N N`7f)
zHandle a stopped event.Nr   r   r   threads)r   rr   r   r  r  rS   )r   r   r  r  r   r  rf   )r   rs   reqr   threads        r   handle_stopped_eventDebugger.handle_stopped_event  s      ((,,..ElQ&	iP))#..&k),F**6&>::$$((6 - 	E" /.s'   B(B$$B(B&&B(05B(&B(c                     U R                   $ r\   )r   rE   s    r   
tcp_clientDebugger.tcp_client  s    """r"   c           	         U R                   (       d  [        5       n[        U5      R                  5       (       d  [        U5      R	                  SS9  U R
                  R                  5       u  p#SnUSU-   S-   U-   S-   -  nUSS.nU R                  R                  U R                  SUS	U R                  R                  [        5      5        U R                  R                  U R                  S
S9u  pgUS   S   S:H  U l         [        5       R                  R                  n[         U;   a3  UR#                  [         5      n	UR%                  U	5      U R&                  U	'   U R
                  R)                  5         U R                   $ )zStart the debugger.T)parentszimport debugpy;zdebugpy.listen(("z",z)))codesilentexecute_requestNr   )moder   statusok)r   r   r   existsmkdirr   r   r   sendr   r   r   recvr   input_transformer_managercleanup_transformsr   r   popr   r   )
r   tmp_dirr   r   r'  r   identr}   r2  r   s
             r   startDebugger.start  sY   ''')G=''))W##D#1,,::<JD$D'$.5<tCCD#t4GLL!!!""--j9 **4+<+<1*EJE'*9~h'?4'GD$ )]DDWW"44&,,-@AE+=+A+A%+HD!!%(..0'''r"   c                    U R                   R                  5         [        5       R                  R                  n[        U R                  5       H/  nU R                  R                  U5      nUR                  X#5        M1     g)zStop the debugger.N)	r   r   r   r1  r2  sortedr   r3  insert)r   r2  r   funcs       r   stopDebugger.stop  sc    113 )]DDWWD112E((,,U3D%%e2 3r"   c                    #    US   S   n[        U5      n[        USSS9 nUR                  U5        SSS5        SUS   S	US
   SU0S.$ ! , (       d  f       N= f7f)zHandle a dump cell message.	argumentsr'  wr   encodingNr  r   Tr   
sourcePathrr   r  r  r   r  )r   openwrite)r   messager'  	file_namefs        r   r   Debugger.dumpCell  sm     {#F+!$'	)S73qGGDM 4 "5>y)!9-
 	
 43s   AAA
AAc                   #    US   S   S   nUS   S   U R                   U'   U R                  U5      I Sh  vN nUR                  S5      (       a+  US   S    Vs/ s H
  nSUS   0PM     snU R                   U'   U$  NGs  snf 7f)	z!Handle a set breakpoints message.r?  r   pathbreakpointsNr  r  line)r   r  r   )r   rG  r   message_response
breakpoints        r   r   Debugger.setBreakpoints  s     %h/7'.{';M'JV$!%!6!6w!?? 	** #36":="I,"IJ F+,"I,D  (   @,s!   5BA?$BB-BBc                   #    SUS   US   S.nUS   S   S   n[        U5      R                  5       (       a/  [        USS	9 nS
US'   SUR                  5       0US'   SSS5        U$ SUS'   SUS'   0 US'   U$ ! , (       d  f       U$ = f7f)zHandle a source message.r  r   r   )rr   r  r   r?  r   rL  r   rA  Tr  r   r  NFzsource unavailablerG  )r   is_filerE  read)r   rG  replysource_pathrI  s        r   r   Debugger.source  s     #GENwW`Oabk*84V<$$&&kG4#'i !*AFFH 5f 5 	  %E)3E)E&M 54 s   A B
A8B
8
BB
c           	        #    U R                  U5      I Sh  vN n US   S   n[        U5      [        S [        [	        U5      S5       5       5      -
  nUS   S   SUS-    US   S'   U$  NT! [
         a     U$ f = f7f)zHandle a stack trace message.Nr  stackFramesc              3   P   #    U  H  u  pUS    S:X  d  M  US:w  d  M  Uv   M     g7f)r  rH   r   Nr*   ).0ivs      r   	<genexpr>&Debugger.stackTrace.<locals>.<genexpr>   s.      -=da6jAX]^bc]c=s   &&	&r   )r  r   next	enumeratereversedStopIteration)r   rG  rU  sf_list
module_idxs        r   r   Debugger.stackTrace  s     ++G44	FmM2GW -'(91=- ) J ,1=+GHX*WX.+YE&M-( % 5   		s3   A?A,A?AA. *A?.
A<8A?;A<<A?c                     / SQnX;  nU=(       a%    [        [        R                  " SU5      5      (       + nU=(       a    USS S:g  nU$ )zAccept a variable by name.)r$   r(   __package__
__loader____spec____annotations____builtins____builtin____display__r   debugpyexitquitInOut_oh_dh______z^_\dr      _i)boolresearch)r   variable_namer  conds       r   r  Debugger.accept_variable  sK    
, /CD7M!BCC2a*d2r"   c                 J  #    0 nU R                   (       d2  U R                  R                  US   S   5      nU R                  X5      $ U R	                  U5      I Sh  vN nUS   S    Vs/ s H  o@R                  US   5      (       d  M  UPM!     snUS   S'   U$  N?s  snf 7f)zHandle a variables message.r?  variablesReferenceNr  rY   r  )r   r   rU   r  r  r  )r   rG  rU  rY   rM   s        r   rY   Debugger.variables%  s     ##..EE$%9:I 11'EE++G44 !=5&
5C9M9McRXk9ZC5&
fk"  5&
s*   AB#BB#+BBB#B#c                    #    U R                   R                  5       u  p#X#S.US   S'   SUS   S'   U R                  (       d	  S/US   S'   U R                  U5      I Sh  vN $  N7f)	zHandle an attach message.)r   r   r?  r   T	logToFileDebugStdLibdebugOptionsN)r   r   r   r  )r   rG  r   r   s       r   r   Debugger.attach5  so     ((668
37*FY',0[)
   4A?GK 0**73333s   AA&A$ A&c                 ,   #    US   SUS   SUS   S.$ 7f)z$Handle a configuration done message.r   r  Tr   )r   rr   r  r  r   r*   )r   rG  s     r   r   Debugger.configurationDoneB  s-      5>"5>y)
 	
s   c                 *  #    / nU R                   R                  5        H  u  p4UR                  X4S.5        M     SUS   SUS   U R                  S[	        5       [        5       [        R                  -   SU[        U R                  5      SS/SS	.
S
.$ 7f)zHandle a debug info message.)r   rM  r  r   Tr   Murmur2.pyzPython Exceptions)
	isStarted
hashMethodhashSeedtmpFilePrefixtmpFileSuffixrM  stoppedThreadsrichRenderingexceptionPathsr   rD  )
r   itemsappendr   r   r   osseplistr   )r   rG  r   keyvalues        r   r   Debugger.debugInfoL  s     ..446JC""c#HI 7 "5>y)!__'-/!2!4rvv!=!&."&t';';"<!%#6"7!%
 	
s   BBc                    #    U R                   R                  5         [        5       U l         U R                   R                  5         U R                   R	                  5       nU R                  X5      $ 7f)z$Handle an inspect variables message.)r   rP   r>   rK   rU   r  )r   rG  rY   s      r   r   Debugger.inspectVariablesd  s[     **, "2!3$$&**AAC	--gAAs   A/A1c           	        #    SUS   SUS   S.nUS   S   n[         R                  U5      nU(       d  0 0 S.US	'   US
:X  d  US:X  a  SUS'   U$ 0 n0 nU R                  (       dX  [        5       R	                  X305      U   nUR                  SS5      S:X  a$  UR                  S0 5      nUR                  S0 5      nOVSU S3nUS   S   n	US   n
U R                  SSU
S-   XSS.S.5      I Sh  vN nUS   (       a  [        US	   S   0 0 5      u  pVUUR                  5        VVs0 s H  u  pX;   d  M  X_M     snnS.nXS	'   SUS'   U$  N]s  snnf 7f)z(Handle a rich inspect variables message.r  r   Fr   )rr   sequence_seqr  r   r?  variableName)datametadatar  zspecial variableszfunction variablesTr  r+  errorr,  r  r  z'get_ipython().display_formatter.format()frameIdr   evaluater   	clipboard)
expressionr  contextrr   r   r   r?  Nresult)	rx   isidentifierr   r   user_expressionsr   r  evalr  )r   rG  rU  var_name
valid_name	repr_datarepr_metadatar  r'  frame_idr   kr]  r  s                 r   r   Debugger.richInspectVariableso  s     #ENy)	
 ;'7%%h/
%'R8E&M..(>R2R#'i L	## !]33X4HI(SFzz(G,4"JJvr2	 &

:r : =XJaHD{+I6H%.C//%)704Va!b	 E Y+/fh0GR+P(	 *7*=*=*?R*?$!1>*?R

 fi% Ss*   C,E.E/7E&E5E;EEc           	         #    US   S   nUS   S   nUS   S   nSU S3nUS   nU R                  SS	US
-   UUUS.S.5      I S h  vN $  N7f)Nr?  dstVariableNamesrcVariableName
srcFrameIdzglobals()['z']r   r   setExpressionr   )r  r  r  r  )r  )r   rG  dst_var_namesrc_var_namesrc_frame_idr  r   s          r   r   Debugger.copyToGlobals  s     {+,=>{+,=>{+L9"<.3
en**!*Qw",)+		
 
 	
 
s   AAAAc                   #    [        [        R                  R                  5       5      nUR	                  SS5      nUR	                  S[        U5      5      n/ n[        X45       H^  nX&   n[        [        USS5      SS5      nU(       d  M(  UR                  S5      (       d  M@  UR                  XgR                  US.5        M`     S	U[        U5      S
.0$ 7f)zHandle a modules message.startModuler   moduleCountrj  Noriginr  )rS   r  rL  r  )r   totalModules)r  sysr   valuesr   r   ranger   endswithr  r$   )	r   rG  r   r  r  modsr\  modulefilenames	            r   r   Debugger.modules  s     s{{))+,kk-3kk-W>{0AZFwvz4@(DQHxH--e441ooxPQ	 1 D#g,GHHs   BCC$2Cc                   #    0 nUS   S:X  az  U R                   (       a  U R                  R                  S5        OMU R                  5       U l         U R                   (       a  U R                  R                  S5        OSUS   SSSS	.nU R                  R                  US   S
5      nUb  U" U5      I S
h  vN nO]U R                   (       aL  U R                  R                  US   S
5      nUb  U" U5      I S
h  vN nOU R                  U5      I S
h  vN nUS   S:X  aH  U R                  5         0 U l	        [        5       U l        SU l         U R                  R                  S5        U$  N Ns N[7f)zProcess a request.r   
initializez The debugger has already startedzThe debugger has startedr      Fr  )r   r  r   r  rr   Nr   zThe debugger has stopped)r   rh   infor6  r   r   r   r  r<  r   r   r   )r   rG  rU  handlers       r   process_requestDebugger.process_request  s>    9-@A"&**,??HHMM"<= $0'.u~ #( *E ,,001CTJ!'**E__1155gi6H$OG"%g.."33G<<9-IIK#%D #&5D #DOHHMM45 + /<s8   B3E15E+6AE19E-:E1E/AE1-E1/E1)r   r   r   r   r   r   r   rf   r   r   rh   r   r   r   r   r   r   r   N)T) r$   r%   r&   r'   r(   r   r   r    r   r  r  r  r   propertyr#  r6  r<  r   r   r   r   r  rY   r   r   r   r   r   r   r   r  r)   r*   r"   r   r   r   0  s     X\4B%"?	
.
# # #(<3
  ,: 4

0	B2h
(I%r"   r   )1r(   r  r|  r  typingru   pathlibr   r   IPython.core.getipythonr   IPython.core.inputtransformer2r   tornado.locksr   tornado.queuesr   	zmq.utilsr   jupyter_client.jsonutilr	   ImportErrorr
   compilerr   r   r   debugpy.serverr   _pydevd_bundler   &_pydevd_bundle.pydevd_suspended_framesr   r   _is_debugpy_available	Exceptione	__class__r$   r   IDENTITYr   r   r,   r5   r>   r^   r   r   r*   r"   r   <module>r     s   5 	 	 
   
 / >    E4 J I"1
 ! S,-=
  F FN N:S. S.ll l^z z  EDE   "!  	{{<< %s5   C C CCD#D(D	DD