
    "er                        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 d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZ d d	lmZmZmZ d d
lm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'Z' G d de(      Z) e)       jT                  Z*y)    N)	pydev_log)	exception)pydevd_tracepropertypydevd_dont_tracepydevd_utilsset_additional_thread_infoget_exception_class)!InternalEvaluateConsoleExpressionInternalConsoleGetCompletionsInternalRunCustomOperation#internal_get_next_statement_targets%internal_get_smart_step_into_variants)NEXT_VALUE_SEPARATOR
IS_WINDOWSNULL)ID_TO_MEANINGCMD_EXEC_EXPRESSIONCMD_AUTHENTICATE)	PyDevdAPI)StringIO)
NetCommand)pydevd_find_thread_by_idc                   \   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZeZeZeZeZeZeZd ZeZeZd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#e#Z$e#Z%d Z&d Z'd Z(d Z)d Z*e*Z+e*Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5d( Z6d) Z7d* Z8d+ Z9d, Z:d- Z;d. Z<d/ Z=d0 Z>y1)2_PyDevCommandProcessorc                 "    t               | _        y N)r   api)selfs    K/usr/lib/python3/dist-packages/_pydevd_bundle/pydevd_process_net_command.py__init__z_PyDevCommandProcessor.__init__   s    ;    c           
         |t         k7  rR|j                  j                         s8|j                  j	                  |d      }|j
                  j                  |       yt        t        |         }|j                         }t        | |j                         d      }|D|j                  j	                  |dt        |      z         }|j
                  j                  |       y|j                  }	|dk(  rt        }	|	5  	  |||||      }||j
                  j                  |       ddd       y#  t        t        t        zt                t!               }
t        j"                  |
       |j                  j	                  |d|||fd|
j%                               }||j
                  j                  |       Y xY w# 1 sw Y   yxY w)zProcesses a command received from the Java side

        @param cmd_id: the id of the command
        @param seq: the sequence of the command
        @param text: the text received in the command
        Client not authenticated.Nzunexpected command cmd_thread_dump_to_stderr)filez=Unexpected exception in process_net_command.
Initial params: z. Exception: )r   authenticationis_authenticatedcmd_factorymake_error_messagewriteradd_commandr   strlowergetattr
_main_lockr   	tracebacksyspydev_log_exceptionr   	print_excgetvalue)r    py_dbcmd_idseqtextcmdmeaningmethod_name
on_commandlockstreams              r!   process_net_commandz*_PyDevCommandProcessor.process_net_command   s    %%e.B.B.S.S.U##66s<WXCLL$$S)F, mmoT;#4#4#6=
##66s<QTWX^T_<_`CLL$$S)55D 	66 T:?LL,,S1		6 	6
6(S_ATA`')%ZF''V4++>>$c40&//2CC 005%	6 	6s   8F>:(D++BF;9F>>Gc                     |}|j                   j                  |       |j                   j                         r!t        |||j                   j                        S |j
                  j                  |d      S )Nr%   )r(   loginr)   r   client_access_tokenr*   r+   )r    r7   r8   r9   r:   access_tokens         r!   cmd_authenticatez'_PyDevCommandProcessor.cmd_authenticateQ   sb    ""<0002fc5+?+?+S+STT  33C9TUUr#   c                 8    | j                   j                  |      S r   )r   runr    r7   r8   r9   r:   s        r!   cmd_runz_PyDevCommandProcessor.cmd_runY   s    xx||E""r#   c                 :    | j                   j                  ||      S r   )r   list_threadsrI   s        r!   cmd_list_threadsz'_PyDevCommandProcessor.cmd_list_threads\   s    xx$$UC00r#   c                 n    |j                  dd      \  }}}}| j                  j                  |||||      S N	   )splitr   request_completions)	r    r7   r8   r9   r:   	thread_idframe_id_scopeact_toks	            r!   cmd_get_completionsz*_PyDevCommandProcessor.cmd_get_completions_   s:     04zz$/B,	8VWxx++E3	8WUUr#   c                     d|v r |j                  d      \  }}t        |      }n|}d}| j                  j                  |||i |      S )NrP   g      ?)fmttimeout)rR   floatr   request_stack)r    r7   r8   r9   r:   rT   r[   s          r!   cmd_get_thread_stackz+_PyDevCommandProcessor.cmd_get_thread_stackf   sQ     4<!%D!1IwGnGIGxx%%eS)W%UUr#   c                 X    | j                   j                  |||j                               S r   )r   set_protocolstriprI   s        r!   cmd_set_protocolz'_PyDevCommandProcessor.cmd_set_protocolr   s!    xx$$UC>>r#   c                 V    | j                   j                  ||j                               S r   )r   request_suspend_threadra   rI   s        r!   cmd_thread_suspendz)_PyDevCommandProcessor.cmd_thread_suspendu   s    xx..udjjlCCr#   c                 (   t         rd}nd}d}|j                  d      }t        |      dk(  r|}n(t        |      dk(  r|\  }}nt        |      dk(  r|\  }}}| j                  j	                  ||||      }	| j                  j                  |d       |	S )	NWINDOWSUNIXLINErP         rQ   T)r   rR   lenr   set_ide_os_and_breakpoints_byset_enable_thread_notifications)
r    r7   r8   r9   r:   ide_osbreakpoints_bysplitted_local_versionversion_msgs
             r!   cmd_versionz"_PyDevCommandProcessor.cmd_versionx   s     FF  ::d#x=A%N]a%-"NF]a5=2NFNhh<<UCQ_` 	00=r#   c                 T    | j                   j                  |j                               S r   )r   request_resume_threadra   rI   s        r!   cmd_thread_runz%_PyDevCommandProcessor.cmd_thread_run   s    xx--djjl;;r#   c                 X    | j                   j                  ||j                         |      S r   )r   request_stepra   rI   s        r!   	_cmd_stepz _PyDevCommandProcessor._cmd_step   s!    xx$$UDJJL&AAr#   c           	      p    |j                  dd      \  }}}| j                  j                  ||||d ||      S NrP   rk   )rR   r   request_set_next)r    r7   r8   r9   r:   rT   line	func_names           r!   _cmd_set_nextz$_PyDevCommandProcessor._cmd_set_next   s;    %)ZZa%8"	4xx((YdT]^^r#   c                 `   |j                  dd      \  }}}|j                  d      ri|t        d      d  }d|v r+|j                  d      \  }	}
t        |	      }	t        |
      }
nd}
t        |      }	| j                  j                  ||||	|
      S | j                  j                  |||||      S )NrP   rk   zoffset=;)rR   
startswithrl   intr   request_smart_step_into$request_smart_step_into_by_func_name)r    r7   r8   r9   r:   rT   line_or_bytecode_offsetr   tempoffsetchild_offsets              r!   cmd_smart_step_intoz*_PyDevCommandProcessor.cmd_smart_step_into   s    8<

48K5	*I"--i8 +3y>?;Dd{'+zz#$V"<0!T8833E3	6S_`` 88@@YXoqz{{r#   c                     |j                         }d|vr|j                         }d }n|j                  dd      \  }}| j                  j                  ||||       y NrP   rj   )ra   rR   r   request_reload_code)r    r7   r8   r9   r:   module_namefilenames          r!   cmd_reload_codez&_PyDevCommandProcessor.cmd_reload_code   sR    zz|t**,KH$(JJtQ$7!K$$UChGr#   c           	          |j                  dd      \  }}}}|j                  d      }	|d|	 j                  dd      }
||	dz   d  }| j                  j	                  ||||||
|       y )NrP   rQ   r   .rj   )rR   rindexreplacer   request_change_variable)r    r7   r8   r9   r:   rT   rU   scopeattr_and_value	tab_indexattrvalues               r!   cmd_change_variablez*_PyDevCommandProcessor.cmd_change_variable   st    59ZZa5H2	8UN"))$/	a	*224=y1}~.((Y%QUW\]r#   c                     |j                  dd      \  }}}|j                  d      dk7  r|j                  dd      \  }}	n|d }	}| j                  j                  ||||||	       y )NrP   rk   r   rj   )rR   findr   request_get_variable)
r    r7   r8   r9   r:   rT   rU   
scopeattrsr   attrss
             r!   cmd_get_variablez'_PyDevCommandProcessor.cmd_get_variable   sg     +/**T1*='	8Z??4 B&%++D!4LE5&5E%%eS)XueTr#   c                     |j                  dd      \  }}}}}	}
}}|j                  d      dk7  r|j                  dd      \  }}n|d }}| j                  j                  |||||||	|
|||       y )NrP      r   rj   )rR   r   r   request_get_array)r    r7   r8   r9   r:   roffsetcoffsetrowscolsformatrT   rU   r   r   r   s                  r!   cmd_get_arrayz$_PyDevCommandProcessor.cmd_get_array   s     QUPZPZ[_abPcM$fi:??4 B&%++D!4LE5&5E""5#wtVU^`hjoqvwr#   c                 |    |j                  d      d   }| j                  j                  |t        |      dk(         y r   )rR   r   set_show_return_valuesr   )r    r7   r8   r9   r:   show_return_valuess         r!   cmd_show_return_valuesz-_PyDevCommandProcessor.cmd_show_return_values   s5    !ZZ-a0''s3E/F!/KLr#   c                     |j                  dd      \  }}}|j                  t              }| j                  j                  |||||       y r|   )rR   r   r   request_load_full_value)	r    r7   r8   r9   r:   rT   rU   r   varss	            r!   cmd_load_full_valuez*_PyDevCommandProcessor.cmd_load_full_value   sD    *.**T1*='	8Z 45((Y$Or#   c                 n    |j                  dd      \  }}}| j                  j                  |||||       y r|   )rR   r   request_get_description)r    r7   r8   r9   r:   rT   rU   
expressions           r!   cmd_get_descriptionz*_PyDevCommandProcessor.cmd_get_description   s3    *.**T1*='	8Z((Y*Ur#   c                 l    |j                  dd      \  }}}| j                  j                  ||||       y r|   )rR   r   request_get_frame)r    r7   r8   r9   r:   rT   rU   r   s           r!   cmd_get_framez$_PyDevCommandProcessor.cmd_get_frame   s1    %)ZZa%8"	8U""5#y(Cr#   c                 D    d}d}d }j                   r	 	 |j                  dd      \
  }}	}
}}}}}}}|dk(  }t        |      }t        |      }|j	                  dd	      j	                  d
d      j                         }|j	                  dd	      j	                  d
d      j                         }n|j                  dd      \  }	}
}}}}}t        |      x}}|j	                  dd	      j	                  d
d      j                         }|j	                  dd	      j	                  d
d      j                         }|t        |      dk  s|dk(  rd }|t        |      dk  s|dk(  rd }|t        |      dk  s|dk(  rd } fd} j                  j                   j                  j                  |
      |	|||||||||      } |||       y # t        $ r  |j                  dd      \	  }}	}
}}}}}}Y w xY w# t        $ r |j                  dd      \  }}	}
}}}}Y w xY w)NNONEFrP   	      True   @_@NEW_LINE_CHAR@_@
@_@TAB_CHAR@_@r   Nonec                     |j                   }|j                  }|j                  }d}|r|j                  j                  k(  rd|d}n|j                  j
                  k(  rd|d}nn|j                  j                  k(  rd}nR|j                  j                  k(  r
d|d|d}n/d|d	|d
}n%|j                  |k7  rd|j                  d|d|d
}|r5j                  j                  j                  j                  |             y y )N zFpydev debugger: Trying to add breakpoint to file that does not exist: z (will have no effect).
zNpydev debugger: Trying to add breakpoint to file that is excluded by filters: z2pydev debugger: Trying to add breakpoint to line (z) that is not valid in: z.
zUpydev debugger: Breakpoint not validated (reason unknown -- please report as error): z (z).
z+pydev debugger (info): Breakpoint in line: z moved to line: z (in )
error_codetranslated_linetranslated_filenamer   ADD_BREAKPOINT_FILE_NOT_FOUND'ADD_BREAKPOINT_FILE_EXCLUDED_BY_FILTERSADD_BREAKPOINT_LAZY_VALIDATIONADD_BREAKPOINT_INVALID_LINEoriginal_liner,   r-   r*   make_warning_message)breakpoint_idadd_breakpoint_resultr   r   r   msgr7   r    s         r!   on_changed_breakpoint_statezI_PyDevCommandProcessor.cmd_set_break.<locals>.on_changed_breakpoint_state/  s-   .99J3CCO"7"K"KC!G!GG BU  WC488#S#SS J]  _C488#J#JJC488#G#GG rA  CV  XC H
 @S  Ud  eC )66/Ij  kN  kN  P_  at  uC(():):)O)OPS)TU r#   )r   )
_set_breakpoints_with_idrR   
ValueErrorr   r   ra   rl   r   add_breakpointfilename_to_str)r    r7   r8   r9   r:   suspend_policyis_logpointhit_conditionr   btyper   r~   r   	conditionr   r   results   ``               r!   cmd_set_breakz$_PyDevCommandProcessor.cmd_set_break   s    !))nN JN  JT  JT  UZ  \]  J^  GM5(D)YPZ\ikv  yG *W4  .Mt9D "))*@%H)51%%'  $++,BEJ)51%%' 
 W[V`V`afhiVjSE8T9ni $'t9,MD!))*@%H)51%%'  $++,BEJ)51%%'   c)n&9Y'=QI!s:!';zW?TJ$#m*<*A]V]E] M	V> ((488++H5umTS\^g{`{ ) } 	$M6:W " Ny}  zD  zD  EJ  LM  zNvM5(D)YPZ\ikvN  nY]YcYcdiklYmVuhiJns.   G G8 %G51G8 4G55G8 8#HHc                    |j                  dd      \  }}}| j                  j                  |      }	 t        |      }| j                  j	                  ||||       y # t
        $ r t        j                  d|       Y y w xY w)NrP   rk   zIError removing breakpoint. Expected breakpoint_id to be an int. Found: %s)rR   r   r   r   remove_breakpointr   r   critical)r    r7   r8   r9   r:   breakpoint_typer   r   s           r!   cmd_remove_breakz'_PyDevCommandProcessor.cmd_remove_breakT  s~     48::dA3F0=88++H5	X.M
 HH&&uhW	  	{jlyz	{s   A A?>A?c           
          d}	 |j                  dd      \  }}}}	}
}|t        k(  }t        |
      dk(  }| j                  j                  |||||	|||       y # t        $ r |j                  dd      \  }}}}	}
Y ]w xY w)Nr   rP         rj   )rR   r   r   r   r   request_exec_or_evaluate)r    r7   r8   r9   r:   attr_to_set_resultrT   rU   r   r   trimis_exectrim_if_too_bigs                r!    _cmd_exec_or_evaluate_expressionz7_PyDevCommandProcessor._cmd_exec_or_evaluate_expressionc  s      	OOSzzZ^`aObLIx
D:L //d)q.))3	8Z/Se	g  	O;?::dA;N8Ix
D	Os   A !A;:A;c                 p    |j                  dd      \  }}}}| j                  j                  |||||       y rO   )rR   r   request_console_exec)	r    r7   r8   r9   r:   rT   rU   r   r   s	            r!   cmd_console_execz'_PyDevCommandProcessor.cmd_console_exect  s7     26D!1D.	8UJ%%eS)XzRr#   c                    t        j                  |      }|j                  dd      }g }|j                  dg       D ]E  }|j                  dd      }	|j                  dd      }
|	dk7  s-|
dk7  s3|j                  |	|
f       G t	        |      s|rt        j                  |       |j                  dd      }|s|r|t
        _        yy)	aa  
        :param text:
            Json text. Something as:

            {
                "pathMappings": [
                    {
                        "localRoot": "c:/temp",
                        "remoteRoot": "/usr/temp"
                    }
                ],
                "debug": true,
                "force": false
            }
        forceFpathMappings	localRootr   
remoteRootdebugN)jsonloadsgetappendboolpydevd_file_utilssetup_client_server_pathsDEBUG_CLIENT_SERVER_TRANSLATION)r    r7   r8   r9   r:   as_jsonr   path_mappingspathMappingr   r   r   s               r!   cmd_set_path_mapping_jsonz0_PyDevCommandProcessor.cmd_set_path_mapping_json{  s      **T"GU+";;~r: 	>K#R8I$r:JRjB&6$$i%<=		> %77FGU+E@E= r#   c                 
   	 i |_         i |_        i |_        t        j                  |      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      |_        |j                  dd      |_        |j                  dd      }	|j                  dg       }
|
D ].  }|s|j                  |d d |||d	|	
       |j                          0 y #  t        j                  d|       Y y xY w)Nbreak_on_uncaughtFbreak_on_caughtbreak_on_user_caught)skip_on_exceptions_thrown_in_same_context7ignore_exceptions_thrown_in_lines_with_ignore_exceptionignore_librariesexception_typesTr   r   notify_on_handled_exceptionsnotify_on_unhandled_exceptions#notify_on_user_unhandled_exceptionsnotify_on_first_raise_onlyr	  /Error when setting exception list. Received: %s)break_on_uncaught_exceptionsbreak_on_caught_exceptions!break_on_user_uncaught_exceptionsr   r   r   r  r  add_break_on_exceptionon_breakpoints_changedr   r   )r    r7   r8   r9   r:   r   r  r  r  r	  r
  exception_types               r!   cmd_set_py_exception_jsonz0_PyDevCommandProcessor.cmd_set_py_exception_json  s$   	Y13E./1E,68E3jj&G ',? G%kk*;UCO#*;;/Eu#M >EkkJuw|>}E;LSKK  YR  TY  MZEI&{{+=uE%kk*;R@O"1 /%,,""#1@3D8L/3%5 - 	 ,,./ 	Y QSWXs   C%C( (Dc                    	 |j                  d      }i |_        i |_        i |_        t	        |      dk\  r|d   dk(  rd}nd}|d   dk(  rd}nd}|d   dk(  rd|_        nd|_        |d	   dk(  rd|_        nd|_        |d
   dk(  rd}nd}|dd  D ].  }	|	j                         }	|	s|j                  |	d d ||dd|       0 y t        j                  d|       y #  t        j                  d|       Y y xY w)Nr   r   r   trueTFrj   rk   rQ   r   r  z=Expected to have at least 5 ';' separated items. Received: %sr  )rR   r  r  r  rl   r  r  ra   r  r   r   )
r    r7   r8   r9   r:   rq   r  r  r	  r  s
             r!   cmd_set_py_exceptionz+_PyDevCommandProcessor.cmd_set_py_exception  s9   2	Yzz#H13E./1E,68E38}!A;&((,%(-%A;&(&*O&+OA;&(FJECFKECA;&(TXEQTYEQA;&('+$',$&.qrl N%3%9%9%;N) 00&"&#'5D7H<A37)9 1 	  ##$ceij	Y QSWXs   B?C C C3c                 x    |}| j                   j                  |      }| j                   j                  |||       y r   )r   r   request_load_source)r    r7   r8   r9   r:   r   s         r!   _load_sourcez#_PyDevCommandProcessor._load_source  s1    88++H5$$UC:r#   c                 B    |}| j                   j                  |||       y r   )r   !request_load_source_from_frame_id)r    r7   r8   r9   r:   rU   s         r!   cmd_load_source_from_frame_idz4_PyDevCommandProcessor.cmd_load_source_from_frame_id  s    225#xHr#   c                 2   |r|j                  d      }t        |      dk\  ru|j                  s#|d   dk(  rt        j                          d|_        |d   dk(  rd|_        nd|_        |d   dk(  rd|_        nd|_        |d   dk(  rd|_        y d|_        y y y )	Nr   rQ   r   r  Trj   Frk   )rR   rl   disable_property_tracer   replace_builtin_propertydisable_property_getter_tracedisable_property_setter_tracedisable_property_deleter_trace)r    r7   r8   r9   r:   rq   s         r!   cmd_set_property_tracez-_PyDevCommandProcessor.cmd_set_property_trace  s     zz#H8}!33v8M(AAC37E0A;&(:>E7:?E7A;&(:>E7:?E7A;&(;?E8;@E8' " r#   c                    d}d}|j                  d      dk7  r	 |j                  dd      \  }}}}}	}
n|dddf\  }}}	}
|j                  dd      j                  d	d      j                         }|t	        |      dk(  s|d
k(  rd }|j                  dd      j                  d	d      j                         }|t	        |      dk(  s|d
k(  rd }|j                  d      dk7  r|j                  d      \  }}nd}|dk(  rU| j
                  j                  ||||t        |      dkD  t        |	      dk(  dt        |      dk(  t        |
      dkD  	       y | j
                  j                  |||       y #  |j                  dd      \  }}}	}
Y MxY w)Nr   rP   r   r   rQ   r   r   r   r   r   -pythonrj   rk   )r  r  r  r  r	  )	r   rR   r   ra   rl   r   add_python_exception_breakpointr    add_plugins_exception_breakpoint)r    r7   r8   r9   r:   r   r   r   r  r  r	  r   s               r!   cmd_add_exception_breakz._PyDevCommandProcessor.cmd_add_exception_break!  s   * 	
99T?b @ DH  DN  DN  OS  UV  DW  A	9j2NPn  qA imnoqrtuhueI35SUe%%&;TBJJK[]abhhj	 c)n&9Y&=PI''(=tDLLM]_cdjjl
!s:!';zV?SJ>>#"$)2)=&OY&Oh&HH44y)Z-01M-NQR-R/23Q/RVW/W45+./K+LPQ+Q!$%5!6!: 5  HH55e_iX=@lplvlvw{}~li	79WYis   E0 0Fc                     |}|j                  d      dk7  r|j                  d      \  }}nd}|dk(  r| j                  j                  ||       y | j                  j	                  |||       y )Nr)  r   r*  )r   rR   r   "remove_python_exception_breakpoint#remove_plugins_exception_breakpoint)r    r7   r8   r9   r:   r   r  s          r!   cmd_remove_exception_breakz1_PyDevCommandProcessor.cmd_remove_exception_break[  sc    	>>#"$(1(<%NI%NX%HH77yIHH88PYZr#   c                 @    | j                   j                  |d|       y )Ndjango)r   r   )r   r,  rI   s        r!   cmd_add_django_exception_breakz5_PyDevCommandProcessor.cmd_add_django_exception_breakg  s    11%]a1br#   c                 @    | j                   j                  |d|       y )Nr3  )r  r   )r   r0  rI   s        r!   !cmd_remove_django_exception_breakz8_PyDevCommandProcessor.cmd_remove_django_exception_breakj  s    44U8_c4dr#   c                 $   |dk7  r|j                  dd      \  }}}|j                  d      \  }}|dk(  rt        ||||d      }	n8|dk(  rt        ||||d      }	n"|d	k(  rt        ||||      }	nt        d
|      |j	                  |	|       y y )Nr   rP   rk   EVALUATET)buffer_outputEVALUATE_UNBUFFEREDFGET_COMPLETIONSzUnrecognized command: )rR   r   r   r   post_internal_command)
r    r7   r8   r9   r:   rT   rU   console_commandr~   int_cmds
             r!   cmd_evaluate_console_expressionz6_PyDevCommandProcessor.cmd_evaluate_console_expressionm  s    2:37::dA3F0Ix$3$9$9$$?!OT*,;Hd$H !$99;Hd%I !$557YRVW !!PQQ'';% r#   c           
         |dk7  r	 |j                  dd      \  }}|j                  dd      \  }}}	|	j	                  d      dk7  r|	j                  dd      \  }
}n|	d }}
|j                  dd	      \  }}}t        ||||
||||      }|j                  ||       y y #  t        j                  j                  d|d        xY w)
Nr   ||rj   z2Custom operation now needs a || separator. Found: r   rP   rk   r   rQ   )rR   r3   stderrwriter   r   r<  )r    r7   r8   r9   r:   locationcustomrT   rU   r   r   r   styleencoded_code_or_filefnnamer>  s                   r!   cmd_run_custom_operationz/_PyDevCommandProcessor.cmd_run_custom_operation  s    2:#'::dA#6 &
 /7nnT1.E+Ixt$*)//a8u *Du
 39,,tQ2G/E'0i5RW168LfVG'';) 

  ]a!cds   B &Cc                 R   |r$d}|j                  |      r|dd  }|j                  j                          |r|j                  d      D ]  }|j                  d      \  }}| j                  j                  |      }t        j                  |      }	t        j                  |      }
t        j                  j                  |
      r=|j                  j                  |	      }|i x}|j                  |	<   d|t        |      <   t        j                  j!                  d|
d        y y y )NzREPLACE:r   rA  |rj   zXpydev debugger: warning: trying to ignore exception thrown on file that does not exist: z (will have no effect)
)r   .filename_to_lines_where_exceptions_are_ignoredclearrR   r   filename_to_serverr   canonical_normalized_pathabsolute_pathospathexistsr   r   r3   rB  rC  )r    r7   r8   r9   r:   r   r~   original_filenameline_numbercanonical_normalized_filenameabsolute_filenamelines_ignoreds               r!   cmd_ignore_thrown_exception_atz5_PyDevCommandProcessor.cmd_ignore_thrown_exception_at  s    Gw'ABxDDJJL JJt, oD59ZZ_2%{(,(C(CDU(V%4E4_4_`q4r1(9(G(GHY(Z%ww~~&78(-(\(\(`(`a~((0 CE  EME,`,`a~,:;c+&67

((Zk*n oo  r#   c                 ^    |r+d}|j                         |k(  }t        j                  |       y y )Nr  )ra   r   trace_filter)r    r7   r8   r9   r:   true_strmodes          r!   cmd_enable_dont_tracez,_PyDevCommandProcessor.cmd_enable_dont_trace  s-    H::<8+D**40 r#   c                 6    |r|j                  d|v d|v        y y )NSTDOUTSTDERR)enable_output_redirectionrI   s        r!   cmd_redirect_outputz*_PyDevCommandProcessor.cmd_redirect_output  s$    ++H,<h$>NO r#   c                 `    |j                  dd      \  }}|j                  |t        |||       y r   )rR   post_method_as_internal_commandr   )r    r7   r8   r9   r:   rT   rU   s          r!   cmd_get_next_statement_targetsz5_PyDevCommandProcessor.cmd_get_next_statement_targets  s2    "jjq1	8--:CH	Vr#   c           
      t    |j                  dd      \  }}}}|j                  |t        |||||t               y )NrP   rQ   r   )rR   re  r   r	   )	r    r7   r8   r9   r:   rT   rU   
start_lineend_lines	            r!    cmd_get_smart_step_into_variantsz7_PyDevCommandProcessor.cmd_get_smart_step_into_variants  sH    48JJtQ4G1	8Z--<c9hXbdl  Jd 	. 	er#   c                 Z    | j                   j                  ||j                  d             y )NrP   )r   set_project_rootsrR   rI   s        r!   cmd_set_project_rootsz,_PyDevCommandProcessor.cmd_set_project_roots  s    ""5$**U*;<r#   c                 ,    t        j                          y r   )r   dump_threadsrI   s        r!   r&   z0_PyDevCommandProcessor.cmd_thread_dump_to_stderr  s    !!#r#   c                 ^    |j                         dv r| j                  j                          y y )N)r   r  1)ra   r   stop_on_entryrI   s        r!   cmd_stop_on_startz(_PyDevCommandProcessor.cmd_stop_on_start  s&    ::<00HH""$ 1r#   c                     t        j                  |j                               }d|v rt        d |d   D              |_        d|v rt        d |d   D              |_        d|v r|d   |_        y y )N$skip_suspend_on_breakpoint_exceptionc              3   2   K   | ]  }t        |        y wr   r
   .0xs     r!   	<genexpr>z@_PyDevCommandProcessor.cmd_pydevd_json_config.<locals>.<genexpr>  s      ?]+,#A&?]   skip_print_breakpoint_exceptionc              3   2   K   | ]  }t        |        y wr   r
   rw  s     r!   rz  z@_PyDevCommandProcessor.cmd_pydevd_json_config.<locals>.<genexpr>  s      :X+,#A&:Xr{  !multi_threads_single_notification)r   r   ra   tupleru  r|  r~  )r    r7   r8   r9   r:   r   s         r!   cmd_pydevd_json_configz-_PyDevCommandProcessor.cmd_pydevd_json_config  s     jj&1S89> ?]034Z0[?] :]E6 -349 :X034U0V:X 5XE1 /#569:]6^E3 6r#   c                     |}t        |      }d }|)t        |dd       st        |      }|j                  |      }	 |j                  j                  ||||      d }d }S # d }d }w xY w)Npydev_do_not_trace)r   r0   r	   get_topmost_framer*   "make_get_exception_details_message)	r    r7   r8   r9   r:   rT   tframeadditional_infos	            r!   cmd_get_exception_detailsz0_PyDevCommandProcessor.cmd_get_exception_details  sz    	$Y/=,@$!G8;O#55a8E	$$GGsT]_deEA EAs   A A$N)?__name__
__module____qualname__r"   rA   rF   rJ   rM   rX   r^   rb   re   rt   rw   rz   cmd_step_intocmd_step_into_my_codecmd_step_overcmd_step_over_my_codecmd_step_returncmd_step_return_my_coder   cmd_run_to_linecmd_set_next_statementr   r   r   r   r   r   r   r   r   r   r   r   cmd_evaluate_expressioncmd_exec_expressionr   r  r  r  r  cmd_load_sourcecmd_get_file_contentsr   r'  r-  r1  r4  r6  r?  rI  rY  r^  rc  rf  rj  rm  r&   rs  r  r   r#   r!   r   r      sd   36jV#1V
V?D8<B M%M%O'_ $O*|*H^
UxMPV
DV;pXg ?:SFB'YR4Yl;
 #O(IA48Yt
[ce<,<0o01PVe=$%_&r#   r   )+r   rQ  r3   r2   _pydev_bundler   _pydev_bundle.pydev_logr   r4   _pydevd_bundler   r   r   ,_pydevd_bundle.pydevd_additional_thread_infor	   !_pydevd_bundle.pydevd_breakpointsr   _pydevd_bundle.pydevd_commr   r   r   r   r   _pydevd_bundle.pydevd_constantsr   r   r   $_pydevd_bundle.pydevd_comm_constantsr   r   r   _pydevd_bundle.pydevd_apir   ior   !_pydevd_bundle.pydevd_net_commandr   &_pydevd_bundle.pydevd_thread_lifecycler   r   objectr   rA   r  r#   r!   <module>r     sm     	 
  # D P P S AP P S R e e /  8 K [V [| -.BB r#   