/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġcms . rend ner Ġ( Dan iel ĠSch mid t ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcms . rend ner . debugger . impl Ċ Ċ class ĠLocal Python Eval Debugger ( ĊĠĠĠ Ġprivate Ġval Ġpython Path : ĠString , Ċ ) Ġ: ĠPython Eval Debugger () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġthe ĠPython Ġinterpreter . ĊĠĠĠĠ Ġ* ĠThe Ġfile Ġreferred Ġby Ġ[ source FilePath ] Ġhas Ġto Ġcontain Ġa Ġline Ġwith Ġ" breakpoint ()", Ġusually Ġthe Ġlast Ġline , ĊĠĠĠĠ Ġ* Ġto Ġswitch Ġthe Ġinterpreter Ġinto Ġdebug Ġmode . ĠThe Ġinterpreter Ġwill Ġstop Ġat Ġthis Ġline Ġand Ġprocess Ġall Ġsubmitted ĊĠĠĠĠ Ġ* Ġevaluation Ġrequests . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart With SourceFile ( source FilePath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart ( listOf ( python Path , Ġsource FilePath )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġthe ĠPython Ġinterpreter . ĊĠĠĠĠ Ġ* ĠThe Ġ[ code Snippet ] Ġhas Ġto Ġcontain Ġa Ġline Ġwith Ġ" breakpoint ()", Ġusually Ġthe Ġlast Ġline , Ġto Ġswitch Ġthe Ġinterpreter ĊĠĠĠĠ Ġ* Ġinto Ġdebug Ġmode . ĠThe Ġinterpreter Ġwill Ġstop Ġat Ġthis Ġline Ġand Ġprocess Ġall Ġsubmitted Ġevaluation Ġrequests . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart With Code Snippet ( code Snippet : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart ( listOf ( python Path , Ġ"- c ", Ġcode Snippet )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart ( process Args : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĠPython Process ( System . line Separator (), Ġprint Output Ġ= Ġfalse , Ġprint Input Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġprocess . start ( process Args ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart ( process ) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess . cleanup () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }