
    ^hR                        S r SSKJrJr  SSKJr  \R                  rSSKJr  \R                  r	\R                  r
SSKrSSKrSSKJ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Jr  SSKrSSKJrJr  SSKJr   " S S5      r SSKJr  \\l        SSKJ r J!r!  \RD                  S   S:  a  \ \l         O\ \l          " S S\5      r# " S S5      r$S r%S r&S r'S r(\RR                  S:w  a  \*" \S5      (       d  S r+OS r+OS r+S r,S \RZ                  ;   a  \RZ                  S    S!:H  r.OS"r.  \R^                  r/\.(       a  SS#K1J#r#  \/b  \/\l/        O \2" \S$5        O S% r3S& r4S' r5S( r6S) r7S* r8S+ r9 " S, S-\
5      r:S. r;\<S/:X  a  SSK=r=\=R6                  " \R|                  5      \l>        \R~                  S0S u  r@rASS1KJBrB  \C" \@5      S:X  a"  \C" \A5      S:X  a  \BR                  " 5       u  rErF\FrA\=Rj                  " \BR                  " 5       \C" \@5      \C" \A5      5        gg!    GN= f! \0 a    Sr/ Nf = f!    N= f!   S"r. N= f)2z6
Entry point module to start the interactive console.
    )thread_code)	IS_JYTHON)InteractiveConsoleN)	threading)INTERACTIVE_MODE_AVAILABLE)	pydev_log)pydevd_save_locals)Exec_queue)BaseInterpreterInterface	BaseStdIn)CodeFragmentc                   6    \ rS rSrS rS r\" \5      rS rSrg)Command!   c                 *    Xl         X l        SU l        g)zI
:type code_fragment: CodeFragment
:type interpreter: InteractiveConsole
N)interpretercode_fragmentmore)selfr   r   s      _/home/james-whalen/.local/lib/python3.13/site-packages/debugpy/_vendored/pydevd/pydevconsole.py__init__Command.__init__"   s    
 '*	    c                 R    U R                   (       a  SnU$ [        (       a  SnU$ SnU$ )Nsingleexec)is_single_liner   )r   symbols     r   symbol_for_fragmentCommand.symbol_for_fragment+   s6    ''F 	 y!   r   c                     U R                   R                  nU R                  U R                   5      nU R                  R	                  USU5      U l        g )Nz<input>)r   textr!   r   	runsourcer   )r   r$   r    s      r   runCommand.run7   sE    !!&&))$*<*<=$$..tYG	r   )r   r   r   N)	__name__
__module____qualname____firstlineno__r   r!   staticmethodr&   __static_attributes__ r   r   r   r   !   s      '':;Hr   r   )execfile)runfile_set_globals_function   c                   @    \ rS rSrSrSS jrS rS rS rS r	S	 r
S
rg)InterpreterInterfaceQ   zG
The methods in this class should be registered in the xml-rpc server.
Nc                     [         R                  " XU5        X l        Xl        0 U l        [        U R                  5      U l        SU l        g )NF)r   r   client_porthost	namespacer   r   _input_error_printed)r   r8   r7   
mainThreadconnect_status_queues        r   r   InterpreterInterface.__init__V   s>     ))$<PQ&	-dnn=$)!r   c                 f    [        U R                  U5      nUR                  5         UR                  $ N)r   r   r&   r   )r   codeFragmentcommands      r   do_add_exec InterpreterInterface.do_add_exec^   s'    $**L9||r   c                     U R                   $ r?   )r9   r   s    r   get_namespace"InterpreterInterface.get_namespacec   s    ~~r   c                      SSK Jn  U" U R                  S 5      nUR                  U5      $ !   [        R
                  " 5         / s $ = f)Nr   )	Completer)_pydev_bundle._pydev_completerrI   r9   completer	   	exception)r   r$   act_tokrI   	completers        r   getCompletions#InterpreterInterface.getCompletionsf   sC    	@!$..$7I%%g..	!Is	   ), Ac                 0    [         R                  " S5        g )Nr   )sysexitrE   s    r   closeInterpreterInterface.closep   s    r   c                     g)NzPyDev console: starting.
r.   rE   s    r   get_greeting_msg%InterpreterInterface.get_greeting_msgs   s    +r   )r:   r7   r8   r   r9   r?   )r(   r)   r*   r+   __doc__r   rB   rF   rO   rT   rW   r-   r.   r   r   r4   r4   Q   s%    *
,r   r4   c                       \ rS rSrSrSrSrg)_ProcessExecQueueHelperw   NFr.   )r(   r)   r*   r+   _debug_hook_return_control_oscr-   r.   r   r   r[   r[   w   s    Kr   r[   c                     U [         l        g r?   )r[   r]   )
debug_hooks    r   set_debug_hookra   |   s    *4'r   c                     U R                   (       aU  [        U R                   5       H;  nU[        R                  ;   d  M  U R                   R	                  U5      nU" 5         M=     g g r?   )mpl_modules_for_patchinglistrR   modulespop)r   moduleactivate_functions      r    activate_mpl_if_already_importedri      sO    ++;??@F$$/$H$H$L$LV$T!!# A ,r   c                 .   ^  SSK Jn  U 4S jnU" U5        g )Nr   )set_return_control_callbackc                     > [         R                  (       a4  [         R                  (       + [         l        [         R                  (       a  gT R                  R	                  5       (       d  gg)zxA function that the inputhooks can call (via inputhook.stdin_ready()) to find
out if they should cede control and returnTF)r[   r]   r^   
exec_queueemptyr   s   r   return_control4init_set_return_control_back.<locals>.return_control   sJ     #.. ?V>i>i:i#7&::%%++--r   )pydev_ipython.inputhookrk   )r   rk   rp   s   `  r   init_set_return_control_backrs      s    C$  /r   c                     [        U 5        [        (       d  g [        U 5        SSKJn  [        U R                  5       H-  nUR                  X R                  R                  U5      5        M/     g )Nr   )import_hook_manager)	rs   r   ri   _pydev_bundle.pydev_import_hookru   rd   rc   add_module_namerf   )r   ru   mods      r   init_mpl_in_consolery      sS     -%%$[1CK889++C1U1U1Y1YZ]1^_ :r   win32killc                     g)NTr.   )pids    r   
pid_existsr~      s    r   c                     SS K nU S:X  a  g [        R                  " U S5        g! [         aH  nUR                   UR                  :X  a   S nAgUR                   UR
                  :X  a   S nAg S nAgS nAff = f)Nr   TF)errnoosr{   OSErrorESRCHEPERM)r}   r   errs      r   r~   r~      sg    
 ax Q    99+ YY%++-   s   % 
A7A2A22A7c                 L   SS K nUR                  R                  nSnSnSnSnUR                  X4-  SU 5      nU(       d  UR	                  5       nX:X  a  gg UR                  S5      n	UR                  U	5      n
UR                  Xz5      nU(       d   UR                  U5        g[        U
R                  R                  5      (       a6  [        U
R                  R                  5      U:w  a   UR                  U5        gUR                  U5        g! UR                  U5        f = f)Nr   i   i   W   i  FT)ctypeswindllkernel32OpenProcessGetLastErrorc_intpointerGetExitCodeProcessCloseHandleboolcontentsvalueint)r}   r   r   PROCESS_QUERY_INFORMATION!PROCESS_QUERY_LIMITED_INFORMATIONERROR_INVALID_PARAMETERSTILL_ACTIVEprocessr   zero	exit_codeexit_code_suceededs               r   r~   r~      s    	==))$*!,2)"&&&'@'dfgilm'')C-
 	*<<?Dt,I!)!<!<W!P% 
   ) i((..//C	8J8J8P8P4QUa4a  )H  )   )s   :D $AD D#c                    [        U 5        SSKJn   [        [        R
                  R                  SS5      5      n US:w  a  [        U5      (       d
  [        5         U" 5       n[        R                  (       a  [        R                  5         U(       a   U" 5           U R                  R                  SSS9n[!        U5      (       a  U" 5         OU R#                  U5      n M  !   Sn N= f!   [        R                  " 5          Nj= f! [        R                   a     M  f = f! [$         a    S U l         M  [(         a    e   [        R                  " S	5        [        5          N= f)
Nr   )get_inputhookPYDEV_ECLIPSE_PIDz-1Tg?)blocktimeoutz'Error processing queue on pydevconsole.)ry   rr   r   r   r   environgetr~   rS   r[   r]   r	   rL   rm   r   Emptycallableadd_execKeyboardInterruptbuffer
SystemExit)r   r   kill_if_pid_not_alive	inputhookr   r   s         r   process_exec_queuer     s4   $5# #BJJNN3F$M N  B&344 "O	"..#//1&	 + 6 6 : :x : X && "++M:9 # ""&##% <<  ! 	!%K 		 IJFsM   )C$ C- D	 8D$ D$ $C*-D	D!D$  D!!D$ $E%8+E%IPYTHONENABLETrueF)r4   exitfuncc                       SSK nUR                  R                  R                  S5        g! [         aC    [        U 5      S:X  a  [        R                  " U S   5         g[        R                  " S5         gf = f)z
We have to override the exit because calling sys.exit will only actually exit the main thread,
and as we're in a Xml-rpc server, that won't work.
r   N   )java.lang.SystemlangSystemrS   ImportErrorlenr   _exit)argsjavas     r   do_exitr   R  sW    		a  t9>HHT!WHHQK	s   ), 2A9 A98A9c           
      `    US:X  a  Sn SSK Jn   U" X4SSS9n[        UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                  5        UR                  UR                   5        UR                  UR"                  5        UR                  UR$                  5        UR                  UR&                  5        UR                  UR(                  5        UR                  UR*                  5        UR                  UR,                  5        UR                  UR.                  5        UR                  UR0                  5        UR                  UR2                  5        UR                  UR4                  5        US:X  a<  UR6                  R9                  5       u  pQ[;        U5        [;        UR
                  5          UR=                  5         M  !   [        R                  R	                  SU < SU< S	UR
                  < S
35        [        R                  R                  5         e = f!   [        R>                  " 5       S   nSn UR@                  S   S:H  nO!    O= fU(       d  e  N= f!   [B        RD                  " 5         URG                  5       nUb  URI                  S5         g  g = f)Nr    )SimpleXMLRPCServerFT)logRequests
allow_nonez"Error starting server with host: "z
", port: "z", client_port: "z"
r      )%_pydev_bundle.pydev_importsr   rR   stderrwriter7   flushr1   rF   register_functionexecLineexecMultipleLinesrO   getFramegetVariablechangeVariablegetDescriptionrT   	interrupt	handshakeconnectToDebuggerhellogetArrayevaluateShowConsoleloadFullValue	enableGuisocketgetsocknameprintserve_foreverexc_infor   r	   rL   get_connect_status_queueput)	r8   portr   XMLRPCServerserverheretryconnection_queues	            r   start_console_serverr   f  s   D(19D 	S	!4,EdSF 	k778  !5!56  !>!>?  !;!;<  !5!56  !8!89  !;!;<  !;!;<  !2!23  !6!67  !6!67  !>!>?  !2!23  !5!56  !5!56  !8!89  !:!:; 	  !6!6719113IQ$K+))*$$& I	JJ\`bfhshh  A JJD LLN1%FF1INE (&??A'  ' (sS   K. 	I H#K. >J* K. AJ''K. *K+KK+KK+)K. .;L-c                     [         [        l        [        X[        R
                  " 5       5      n[        [        XU45        [        U5        g r?   )	r   rR   rS   r4   r   current_threadstart_new_threadr   r   )r8   r   r7   r   s       r   start_serverr     s8     CH&t):R:R:TUK)D+DE{#r   c                  z    [         (       a0  [        [        S5      (       a  [        5       n U R	                  5       $ g g Nr   )IPYTHONhasattr__builtin__get_interpreterget_ipython_hidden_vars_dictro   s    r   get_ipython_hidden_varsr     s1    w7;66%'7799 7wr   c                  6    [        [        S5      n U $ ! [         az    [        S S [        R
                  " 5       5      n U [        l        [        R                  R                  U R                  5       5        [        R                  R                  5          U $ f = fr   )getattrr   AttributeErrorr4   r   r   r   rR   r   r   rW   r   )interpreterInterfaces    r   r   r     s    &{MB    3D$	@X@X@Z["6

->>@A

s    B BBc                 n    [        5       nUR                  R                  X#5        UR                  X5      $ r?   )r   r   updaterO   )r$   tokenglobalslocalsr   s        r   get_completionsr     s0    *,$$++G<..t;;r   c                     [        5       nUR                  R                  X5        UR                  U 5      nU(       a  gUR	                  X5        g)NTF)r   r   r   	need_morer   )coder   r   debuggerr   ress         r   	exec_coder     sF    *,$$++G<

(
(
.C
!!$1r   c                   8    \ rS rSrSrS	S jrS rS	S jrS rSr	g)
ConsoleWriteri  r   Nc                 .    [         R                  X5        g r?   )InteractiveInterpreterr   )r   r   s     r   r   ConsoleWriter.__init__  s    ''5r   c                     U R                   S:  a  U =R                   S-  sl         g US:X  a  SU l         [        R                  R                  U5        g )Nr   r   #Traceback (most recent call last):
)skiprR   r   r   )r   datas     r   r   ConsoleWriter.write  s<    99q=IINI==	JJT"r   c                    [         R                  " 5       u  p#nU[         l        U[         l        U[         l        U(       a5  U[
        L a,   UR                  u  nu  pgp[        XQXxU	45      nU[         l        [        R                  " X#5      n
[         R                  R                  SR                  U
5      5        g! [         a     NQf = f)z,Display the syntax error that just occurred.r   N)rR   r   	last_type
last_valuelast_tracebackSyntaxErrorr   
ValueError	tracebackformat_exception_onlyr   r   join)r   filenametyper   tbmsgdummy_filenamelinenooffsetlinerd   s              r   showsyntaxerrorConsoleWriter.showsyntaxerror  s     ,,.R+'>Cjj;;nf $CFD)IJ!&..t;

'  s   B; ;
CCc                     [         R                  " 5       u  p4nU[         l        U[         l        U[         l        [
        R                  " U5      nUSS2	 [
        R                  " U5      nU(       a  UR                  SS5        UR                  [
        R                  " X45      5        S=pe[         R                  R                  SR                  U5      5        g! S=pef = f)z)Display the exception that just occurred.Nr   r   r  r   )rR   r   r  r  r  r  
extract_tbformat_listinsertextendr  r   r   r  )r   r   kwargsr  r   r  tblistliness           r   showtracebackConsoleWriter.showtraceback  s    	!llnOD CM"CN!#C))"-Frr
))&1EQ FGLL88EFF

( FRs   B(C C!)r  r?   )
r(   r)   r*   r+   r  r   r   r  r&  r-   r.   r   r   r  r    s    D6#(*)r   r  c                    UR                  X5      nUR                  S5      S:  n[        UR                  SS5      5      n0 nUR	                  UR
                  5        UR	                  UR                  5        [        (       a?  [        [        U5      XdR                  U5      nU(       d  [        R                  " U5        U$ [        5       nU(       d   [        U5      n	U	c  gOUn	 [%        XUR                  5        [        R                  " U5        g! [        [        [         4 a    UR#                  5          gf = f! [&         a    e   UR)                  5          g= f)z7returns 'False' in case expression is partially correctz@LINE@r   
FT)
find_framecountstrreplacer   	f_globalsf_localsr   r   r   r
   save_localsr  compile_commandOverflowErrorr  r  r  r   r   r&  )
	thread_idframe_id
expressiondbgframeis_multilineupdated_globalsr   r   r   s
             r   console_execr:    s;   NN9/E##H-1LZ''$78J
 O5??+5>>*wl:6Y\]	**51/K	":.D
 <  .TENN3 	&&u-+ {J7 	'')	  $!!# s   D (E  %D=<D= E__main__r   )pydev_localhost)HrY   "_pydev_bundle._pydev_saved_modulesr   r   _pydevd_bundle.pydevd_constantsr   r    _pydevd_bundle.pydevconsole_coder   r1  r  r   rR   r   r   r  _pydev_bundler	   _pydevd_bundler
   r   r   r   builtinsr   !_pydev_bundle.pydev_console_utilsr   r   r   r   r/   _pydev_bundle.pydev_umdr0   r1   version_infor4   r[   ra   ri   rs   ry   platformr   r~   r   r   r   r   r   #_pydev_bundle.pydev_ipython_consoledelattrr   r   r   r   r   r   r   r  r:  r(   pydevconsolestdinargvr   r7   r<  r   get_socket_namer   pget_localhostr.   r   r   <module>rO     se   = 5**  ?''55  	 
 8 F  # - 4  Q :H H:	4#K
 CA!!K!K#,3 #,L   
5$00
` <<72v	
	D)X-` bjj jj)V3G G	<< L#CLZ( $(E(P	$:	 <4)* 4)n.h z &&syy1CI1D+-
4yA~#k*a/ 002Ao;;=s4y#kJZ[# a	t  	GsN   H$ /H, ;I 	H: $H),H74I 6H77I :H><I >I I