
    XhR                     j   d Z ddlmZmZ ddlmZ ej                  ZddlmZ ej                  Z	ej                  Z
ddlZddlZddlmZ ddlmZ ddlZddlmZ dd	lmZ dd
lmZmZ ddlZddlmZmZ ddlmZ  G d d      Z	 ddlmZ ee_        ddlm Z m!Z! ejD                  d   dk\  re e_         ne e_          G d de      Z# G d d      Z$d Z%d Z&d Z'd Z(ejR                  dk7  r e*ed      sd Z+nd Z+nd Z+d Z,d ejZ                  v rejZ                  d    d!k(  Z.nd"Z.	 	 ej^                  Z/e.rdd#l1m#Z# e/e/e_/        n
	  e2ed$       d% Z3d& Z4d' Z5d( Z6d) Z7d* Z8d+ Z9 G d, d-e
      Z:d. Z;e<d/k(  rddl=Z= e=j6                  ej|                        e_>        ej~                  d0d \  Z@ZAdd1lmBZB  eCe@      dk(  r! eCeA      dk(  r eBj                         \  ZEZFeFZA e=jj                   eBj                          eCe@       eCeA             yy#  Y xY w# e0$ r dZ/Y w xY w#  Y xY w#  d"Z.Y xY w)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                   .    e Zd Zd Zd Z ee      Zd Zy)Commandc                 .    || _         || _        d| _        y)za
        :type code_fragment: CodeFragment
        :type interpreter: InteractiveConsole
        N)interpretercode_fragmentmore)selfr   r   s      Y/var/www/html/myenv/lib/python3.12/site-packages/debugpy/_vendored/pydevd/pydevconsole.py__init__zCommand.__init__"   s    
 '*	    c                 >    | j                   rd}|S t        rd}|S d}|S )Nsingleexec)is_single_liner   )r   symbols     r   symbol_for_fragmentzCommand.symbol_for_fragment+   s4    ''F 	 !   r   c                     | j                   j                  }| j                  | j                         }| j                  j	                  |d|      | _        y )Nz<input>)r   textr   r   	runsourcer   )r   r!   r   s      r   runzCommand.run7   sE    !!&&))$*<*<=$$..tYG	r   N)__name__
__module____qualname__r   r   staticmethodr#    r   r   r   r   !   s      '':;Hr   r   )execfile)runfile_set_globals_function   c                   6    e Zd ZdZd	dZd Zd Zd Zd Zd Z	y)
InterpreterInterfacezO
    The methods in this class should be registered in the xml-rpc server.
    Nc                     t        j                  | ||       || _        || _        i | _        t        | j                        | _        d| _        y )NF)r   r   client_porthost	namespacer   r   _input_error_printed)r   r1   r0   
mainThreadconnect_status_queues        r   r   zInterpreterInterface.__init__V   sD     ))$
<PQ&	-dnn=$)!r   c                 f    t        | j                  |      }|j                          |j                  S N)r   r   r#   r   )r   codeFragmentcommands      r   do_add_execz InterpreterInterface.do_add_exec^   s'    $**L9||r   c                     | j                   S r7   )r2   r   s    r   get_namespacez"InterpreterInterface.get_namespacec   s    ~~r   c                     	 ddl m}  || j                  d       }|j                  |      S #  t	        j
                          g cY S xY w)Nr   )	Completer)_pydev_bundle._pydev_completerr?   r2   completer	   	exception)r   r!   act_tokr?   	completers        r   getCompletionsz#InterpreterInterface.getCompletionsf   sC    	@!$..$7I%%g..	!Is	   ), Ac                 .    t        j                  d       y )Nr   )sysexitr<   s    r   closezInterpreterInterface.closep   s    r   c                      y)NzPyDev console: starting.
r(   r<   s    r   get_greeting_msgz%InterpreterInterface.get_greeting_msgs   s    +r   r7   )
r$   r%   r&   __doc__r   r:   r=   rE   rI   rK   r(   r   r   r.   r.   Q   s%    *
,r   r.   c                       e Zd ZdZdZy)_ProcessExecQueueHelperNF)r$   r%   r&   _debug_hook_return_control_oscr(   r   r   rN   rN   w   s    Kr   rN   c                     | t         _        y r7   )rN   rO   )
debug_hooks    r   set_debug_hookrS   |   s    *4'r   c                     | j                   rPt        | j                         D ]7  }|t        j                  v s| j                   j	                  |      } |        9 y y r7   )mpl_modules_for_patchinglistrG   modulespop)r   moduleactivate_functions      r    activate_mpl_if_already_importedr[      sS    ++;??@ 	$F$$/$H$H$L$LV$T!!#	$ ,r   c                 ,     ddl m}  fd} ||       y )Nr   )set_return_control_callbackc                      t         j                  r+t         j                   t         _        t         j                  ry j                  j	                         syy)zA function that the inputhooks can call (via inputhook.stdin_ready()) to find
        out if they should cede control and returnTF)rN   rO   rP   
exec_queueemptyr   s   r   return_controlz4init_set_return_control_back.<locals>.return_control   sG     #.. ?V>i>i:i#7&::%%++-r   )pydev_ipython.inputhookr]   )r   r]   rb   s   `  r   init_set_return_control_backrd      s    C$  /r   c                     t        |        t        sy t        |        ddlm} t        | j                        D ]-  }|j                  || j                  j                  |             / y )Nr   )import_hook_manager)	rd   r   r[   _pydev_bundle.pydev_import_hookrf   rV   rU   add_module_namerX   )r   rf   mods      r   init_mpl_in_consolerj      sY     -%$[1CK889 `++C1U1U1Y1YZ]1^_`r   win32killc                      y)NTr(   )pids    r   
pid_existsro      s    r   c                     dd l }| dk(  ry	 t        j                  | d       y# t        $ rF}|j                   |j                  k(  rY d }~y|j                   |j
                  k(  rY d }~yY d }~yd }~ww xY w)Nr   TF)errnoosrl   OSErrorESRCHEPERM)rn   rq   errs      r   ro   ro      sg    
 ax Q    99+ YY%++-   s   # 	A2A-
A--A2c                 0   dd l }|j                  j                  }d}d}d}d}|j                  ||z  d|       }|s|j	                         }||k(  ryy	 |j                  d      }	|j                  |	      }
|j                  ||
      }|s	 |j                  |       yt        |
j                  j                        r5t        |
j                  j                        |k7  r	 |j                  |       y|j                  |       y# |j                  |       w xY w)Nr   i   i   W   i  FT)ctypeswindllkernel32OpenProcessGetLastErrorc_intpointerGetExitCodeProcessCloseHandleboolcontentsvalueint)rn   ry   r{   PROCESS_QUERY_INFORMATION!PROCESS_QUERY_LIMITED_INFORMATIONERROR_INVALID_PARAMETERSTILL_ACTIVEprocessrv   zero	exit_codeexit_code_suceededs               r   ro   ro      s    	==))$*!,2)"&&&'@Cd'dfgilm'')C--
 	*<<?Dt,I!)!<!<Wi!P% 
   ) i((../C	8J8J8P8P4QUa4a  )H  )   )s   6D AD Dc                    t        |        ddlm} 	 t        t        j
                  j                  dd            }	 |dk7  rt        |      s
t                 |       }t        j                  rt        j                          |r	  |        	 	 | j                  j                  dd      }t!        |      r |        n| j#                  |      }#  d}Y xY w#  t        j                          Y exY w# t        j                  $ r Y w xY w# t$        $ r
 d | _        Y t(        $ r   t        j                  d	       t                Y {xY w)
Nr   )get_inputhookPYDEV_ECLIPSE_PIDz-1Tg?)blocktimeoutz'Error processing queue on pydevconsole.)rj   rc   r   r   rr   environgetro   rH   rN   rO   r	   rB   r_   r   Emptycallableadd_execKeyboardInterruptbuffer
SystemExit)r   r   kill_if_pid_not_alive	inputhookr   r   s         r   process_exec_queuer     s.   $5# #BJJNN3F$M N  B&34 "O	"..#//1&	 + 6 6 : :x : X & "++M:9 # ""&##% <<  ! 	!%K 		 IJFsG   )C C C4 +$D CC14D
D 	D

D E
)E
IPYTHONENABLETrueF)r.   exitfuncc                      	 ddl }|j                  j                  j                  d       y# t        $ r@ t        |       dk(  rt        j                  | d          Y yt        j                  d       Y yw xY w)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SystemrH   ImportErrorlenrr   _exit)argsjavas     r   do_exitr   R  sW    		a  t9>HHT!WHHQK	s   ), /A5A54A5c           
      N   	 |dk(  rd} ddl m} 	  || |fdd      }t        |j                         |j                  |j                         |j                  |j                         |j                  |j                         |j                  |j                         |j                  |j                         |j                  |j                         |j                  |j                          |j                  |j"                         |j                  |j$                         |j                  |j&                         |j                  |j(                         |j                  |j*                         |j                  |j,                         |j                  |j.                         |j                  |j0                         |j                  |j2                         |j                  |j4                         |dk(  r=|j6                  j9                         \  }}t;        |       t;        |j
                         	 	 |j=                          #  t        j                  j	                  d| d|d	|j
                  d
       t        j                  j                           xY w#  t        j>                         d   }d}	 |j@                  d   dk(  }n#  Y nxY w|s Y xY w#  tC        jD                          |jG                         }||jI                  d       Y y Y y xY w)Nr    )SimpleXMLRPCServerFT)logRequests
allow_nonez"Error starting server with host: "z
", port: "z", client_port: "z"
r      )%_pydev_bundle.pydev_importsr   rG   stderrwriter0   flushr+   r=   register_functionexecLineexecMultipleLinesrE   getFramegetVariablechangeVariablegetDescriptionrI   	interrupt	handshakeconnectToDebuggerhellogetArrayevaluateShowConsoleloadFullValue	enableGuisocketgetsocknameprintserve_foreverexc_infor   r	   rB   get_connect_status_queueput)	r1   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' '9L$c                     t         t        _        t        | |t	        j
                               }t        t        | ||f       t        |       y r7   )	r   rG   rH   r.   r   current_threadstart_new_threadr   r   )r1   r   r0   r   s       r   start_serverr     s<     CH&t[):R:R:TUK)D$+DE{#r   c                  f    t         r+t        t        d      rt               } | j	                         S y y Nr   )IPYTHONhasattr__builtin__get_interpreterget_ipython_hidden_vars_dictra   s    r   get_ipython_hidden_varsr     s,    7;6%'7799 7wr   c                  2   	 t        t        d      } | S # t        $ ry t        d d t	        j
                               } | t        _        t        j                  j                  | j                                t        j                  j                          Y | S w xY wr   )getattrr   AttributeErrorr.   r   r   r   rG   r   r   rK   r   )interpreterInterfaces    r   r   r     s    &{MB    3D$	@X@X@Z["6

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

s    A>BBc                 r    t               }|j                  j                  ||       |j                  | |      S r7   )r   r   updaterE   )r!   tokenglobalslocalsr   s        r   get_completionsr     s4    *,$$++GV<..tU;;r   c                     t               }|j                  j                  ||       |j                  |       }|ry|j	                  | |       y)NTF)r   r   r   	need_morer   )coder   r   debuggerr   ress         r   	exec_coder     sJ    *,$$++GV<

(
(
.C
!!$1r   c                   ,    e Zd ZdZddZd ZddZd Zy)ConsoleWriterr   Nc                 0    t         j                  | |       y r7   )InteractiveInterpreterr   )r   r   s     r   r   zConsoleWriter.__init__  s    ''f5r   c                     | j                   dkD  r| xj                   dz  c_         y |dk(  rd| _         t        j                  j                  |       y )Nr   r   #Traceback (most recent call last):
)skiprG   r   r   )r   datas     r   r   zConsoleWriter.write  s<    99q=IINI==	JJT"r   c                    t        j                         \  }}}|t         _        |t         _        |t         _        |r8|t
        u r0	 |j                  \  }\  }}}}	t        |||||	f      }|t         _        t        j                  ||      }
t         j                  j                  dj                  |
             y# t        $ r Y Pw xY w)z,Display the syntax error that just occurred.r   N)rG   r   	last_type
last_valuelast_tracebackSyntaxErrorr   
ValueError	tracebackformat_exception_onlyr   r   join)r   filenametyper   tbmsgdummy_filenamelinenooffsetlinerV   s              r   showsyntaxerrorzConsoleWriter.showsyntaxerror  s     ,,.eR+'>Cjj;;nffd $C(FFD)IJ!&..tU;

'  s   B9 9	CCc                    	 t        j                         \  }}}|t         _        |t         _        |t         _        t        j                  |      }|dd= t        j                  |      }|r|j                  dd       |j                  t        j                  ||             dx}}t         j                  j                  dj                  |             y# dx}}w xY w)z)Display the exception that just occurred.Nr   r   r   r   )rG   r   r   r   r   r   
extract_tbformat_listinsertextendr  r   r   r  )r   r   kwargsr  r   r  tblistliness           r   showtracebackzConsoleWriter.showtraceback  s    	!llnOD% CM"CN!#C))"-Frr
))&1EQ FGLL88uEFFR

( FRs   B!C Cr7   )r$   r%   r&   r   r   r   r  r  r(   r   r   r   r     s    D6#(*)r   r   c                    |j                  | |      }|j                  d      dkD  }t        |j                  dd            }i }|j	                  |j
                         |j	                  |j                         t        r:t        t        |      ||j                  |      }|st        j                  |       |S t               }|s	 t        |      }	|	y|}		 t%        |	||j                         t        j                  |       y# t        t        t         f$ r |j#                          Y yw xY w# t&        $ r   |j)                          Y yxY w)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'    s8   NN9h/E##H-1LZ''$78J
 O5??+5>>*l:6Y\]	**51/K	":.D
 <.T?ENN3 	&&u-+ {J7 	'')	  $!!# s   D D/ $D,+D,/E__main__r   )pydev_localhost)HrL   "_pydev_bundle._pydev_saved_modulesr   r   _pydevd_bundle.pydevd_constantsr   r    _pydevd_bundle.pydevconsole_coder   r  r   rr   rG   r   r   r   _pydev_bundler	   _pydevd_bundler
   r   r   r   builtinsr   !_pydev_bundle.pydev_console_utilsr   r   r   r   r)   _pydev_bundle.pydev_umdr*   r+   version_infor.   rN   rS   r[   rd   rj   platformr   ro   r   r   r   r   r   #_pydev_bundle.pydev_ipython_consoledelattrr   r   r   r   r   r   r   r   r'  r$   pydevconsolestdinargvr   r0   r)  r   get_socket_namer   pget_localhostr(   r   r   <module>r<     sf   = 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02AL;o;;=s4y#kJZ[# a	t  	GsH   H &H 2H, 	H% HH"H, !H""H, %H)'H, ,H2