a DOgz@sddlZddlZddlZddlmZmZmZgdZeeBeBZGddde Z GdddZ dd Z Gd d d Z d d ZddZGddde ZddZddZddZdS)N) CO_GENERATOR CO_COROUTINECO_ASYNC_GENERATOR)BdbQuitBdb Breakpointc@s eZdZdS)rN)__name__ __module__ __qualname__r r /usr/lib64/python3.9/bdb.pyr src@sleZdZdYddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#ZdZd%d&Zd[d'd(Zd)d*Zd+d,Zd-d.Zd\d/d0Zd1d2Zd3d4Zd]d6d7Zd8d9Zd:d;Zdd?Z d@dAZ!dBdCZ"dDdEZ#dFdGZ$dHdIZ%dJdKZ&dLdMZ'd^dOdPZ(d_dQdRZ)d`dSdTZ*dUdVZ+dWdXZ,dS)arNcCs(|r t|nd|_i|_i|_d|_dSN)setskipbreaksfncacheframe_returning)selfrr r r __init__sz Bdb.__init__cCsR|d|dddkr|S|j|}|sNtj|}tj|}||j|<|S)N<>)rgetospathabspathnormcase)rfilenamecanonicr r r r%s    z Bdb.canoniccCs&ddl}|d|_|dddS)Nr) linecache checkcachebotframe _set_stopinfo)rr r r r reset6sz Bdb.resetcCs|jr dS|dkr||S|dkr0|||S|dkrD|||S|dkrX|||S|dkrf|jS|dkrt|jS|dkr|jStdt||jS) Nlinecallreturn exceptionZc_callZ c_exceptionZc_returnz*bdb.Bdb.dispatch: unknown debugging event:)quitting dispatch_line dispatch_calldispatch_returndispatch_exceptiontrace_dispatchprintrepr)rframeeventargr r r r.=s$    zBdb.trace_dispatchcCs.||s||r(|||jr(t|jSr ) stop_here break_here user_liner)rr.rr1r r r r*hs  zBdb.dispatch_linecCsd|jdur|j|_|jS||s0||s0dS|jrH|jjt@rH|jS| |||j r^t |jSr ) r"f_backr.r4break_anywhere stopframef_codeco_flagsGENERATOR_AND_COROUTINE_FLAGS user_callr)rrr1r3r r r r+ts   zBdb.dispatch_callcCs||s||jkr||jr,|jjt@r,|jSz||_|||Wd|_nd|_0|j r\t |j|ur||j dkr|| dd|jSNr) r4 returnframer:r;r<r=r.r user_returnr)r stoplinenor#r?r r r r,s  zBdb.dispatch_returncCs||rF|jjt@r.|dtur.|ddus||||jrtnD|jr||jur|jjjt@r|dtt fvr||||jrt|j S)Nr) r4r;r<r= StopIterationuser_exceptionr)rr: GeneratorExitr.r?r r r r-s          zBdb.dispatch_exceptioncCs.|dur dS|jD]}t||rdSqdSNFT)rfnmatch)r module_namepatternr r r is_skipped_modules   zBdb.is_skipped_modulecCsN|jr||jdrdS||jur@|jdkr4dS|j|jkS|jsJdSdS)NrFrT)rrL f_globalsrr:rCf_linenor7r r r r4s   z Bdb.stop_herecCs||jj}||jvrdS|j}||j|vrJ|jj}||j|vrJdSt|||\}}|r|j|_|r|j r| t |jdSdSdSrH) rr; co_filenamerrNco_firstlineno effectivenumberZ currentbp temporarydo_clearstr)rr1rlinenobpflagr r r r5s  zBdb.break_herecCs tddS)Nz)subclass of bdb must implement do_clear())NotImplementedError)rr3r r r rTsz Bdb.do_clearcCs||jj|jvSr )rr;rOrr7r r r r9szBdb.break_anywherecCsdSr r )rr1Z argument_listr r r r>sz Bdb.user_callcCsdSr r r7r r r r6sz Bdb.user_linecCsdSr r )rr1Z return_valuer r r rB szBdb.user_returncCsdSr r )rr1exc_infor r r rF szBdb.user_exceptionrcCs||_||_d|_||_dSNF)r:rAr)rC)rr:rArCr r r r#szBdb._set_stopinfocCs$|dur|jd}||||dS)Nr)rNr#)rr1rVr r r set_until"s z Bdb.set_untilcCs0|jr |jj}|r |js |j|_|dddSr )rr8f_tracer.r#)rZ caller_framer r r set_step*s  z Bdb.set_stepcCs||ddSr )r#r7r r r set_next6sz Bdb.set_nextcCs.|jjt@r||ddn||j|dSr@)r;r<r=r#r8r7r r r set_return:s zBdb.set_returncCsL|durtj}||r4|j|_||_|j}q|t|jdSr ) sys _getframer8r$r.r]r"r^settracer7r r r set_traceAs z Bdb.set_tracecCsH||jdd|jsDtdtj}|rD||jurD|`|j}q*dSr@)r#r"rrarcrbr8r]r7r r r set_continuePs  zBdb.set_continuecCs"|j|_d|_d|_tddSNT)r"r:rAr)rarcrr r r set_quit_sz Bdb.set_quitFc Csb||}ddl}|||}|s.d||fS|j|g}||vrN||t|||||} dS)NrzLine %s:%d does not exist)rr getliner setdefaultappendr) rrrVrScondfuncnamer r%listrWr r r set_breakps    z Bdb.set_breakcCs4||ftjvr|j|||j|s0|j|=dSr )rbplistrremoverrrVr r r _prune_breakss zBdb._prune_breakscCsj||}||jvrd|S||j|vr6d||fStj||fddD] }|qL|||dS)NThere are no breakpoints in %szThere is no breakpoint at %s:%d)rrrrpdeleteMers)rrrVrWr r r clear_breaks     zBdb.clear_breakc CsXz||}Wn,ty:}zt|WYd}~Sd}~00|||j|jdSr )get_bpbynumber ValueErrorrUrursfiler%)rr3rWerrr r r clear_bpbynumberszBdb.clear_bpbynumbercCsX||}||jvrd|S|j|D]$}tj||f}|D] }|qz()Z __return__z->) r reprlibrr;rOco_namef_localsr0rirMstrip) rZ frame_linenoZlprefixr rr1rVrsrvr%r r r format_stack_entrys    zBdb.format_stack_entryc Cs|durddl}|j}|dur"|}|t|tr@t|dd}t|jz8zt |||Wnt ypYn0Wd|_ tdnd|_ td0dS)NrzexecT) __main____dict__r$ isinstancerUcompilerarcr.rrr))rcmdglobalslocalsrr r r run5s"     zBdb.runc Cs|durddl}|j}|dur"|}|t|jzHz t|||WWd|_tdStyjYn0Wd|_tdnd|_td0dS)NrT) rrr$rarcr.evalr)r)rexprrrrr r r runevalKs$    z Bdb.runevalcCs||||dSr )r)rrrrr r r runctx_sz Bdb.runctxc Osj|t|jd}z:z||i|}Wnty>Yn0Wd|_tdnd|_td0|Srf)r$rarcr.rr))rfuncargskwdsresr r r runcallfs    z Bdb.runcall)N)r)N)N)FNN)r)NN)NN)-rr r rrr$r.r*r+r,r-rLr4r5rTr9r>r6rBrFr#r\r^r_r`rdrerhrorsrvr{r|r~rwrrrrrrrrrrr r r r rsX +               rcCstdSr )rrdr r r r rdxsrdc@sVeZdZdZiZdgZdddZddZdd Zd d Z dd d Z ddZ ddZ dS)rrNFcCs||_d|_||_||_||_||_d|_d|_d|_t j |_ t j d7_ |j |||f|jvr||j||f |n|g|j||f<dS)NTrr)rmfunc_first_executable_lineryr%rSrlenabledignorehitsrnextrRr}rkrp)rryr%rSrlrmr r r rs zBreakpoint.__init__cCs>|j|jf}d|j|j<|j|||j|s:|j|=dSr )ryr%r}rRrprq)rindexr r r rus    zBreakpoint.deleteMecCs d|_dSrfrrgr r r enableszBreakpoint.enablecCs d|_dSr[rrgr r r disableszBreakpoint.disablecCs"|durtj}t||ddS)N)ry)rastdoutr/bpformat)routr r r bpprintszBreakpoint.bpprintcCs|jr d}nd}|jr |d}n|d}d|j||j|jf}|jrT|d|jf7}|jrj|d|jf7}|jr|jdkrd }nd }|d |j|f7}|S) Nzdel zkeep zyes zno z%-4dbreakpoint %s at %s:%dz stop only if %sz ignore next %d hitsrrz" breakpoint already hit %d time%s)rSrrRryr%rlrr)rZdispretssr r r rs&  zBreakpoint.bpformatcCsd|j|j|jfS)Nzbreakpoint %s at %s:%s)rRryr%rgr r r __str__szBreakpoint.__str__)FNN)N) rr r rrpr}rrurrrrrr r r r r}s  rcCsN|js|j|jkrdSdS|jj|jkr,dS|js:|j|_|j|jkrJdSdSrH)rmr%rNr;rr)br1r r r checkfuncnames  rcCstj||f}|D]}|jsqt||s*q|jd7_|jsh|jdkrZ|jd8_qq|dfSqzBt|j|j|j }|r|jdkr|jd8_n|dfWSWq|dfYS0qdS)NrrTF)NN) rrprrrrlrrrMr)ryr%r1Z possiblesrvalr r r rQs*   rQc@s,eZdZddZddZddZddZd S) TdbcCs |jj}|sd}td||dS)N???z+++ call)r;rr/)rr1rnamer r r r>Dsz Tdb.user_callcCsTddl}|jj}|sd}||jj}|||j|j}td||j|d| dS)Nrrz+++:) r r;rrrOrirNrMr/r)rr1r rfnr%r r r r6Hs z Tdb.user_linecCstd|dS)Nz +++ returnr/)rr1Zretvalr r r rBOszTdb.user_returncCstd||dS)Nz +++ exception)r/re)rr1Z exc_stuffr r r rFQs zTdb.user_exceptionN)rr r r>r6rBrFr r r r rCsrcCs&td|dt|d}td|dS)Nzfoo() z bar returned)r/bar)nxr r r fooUs  rcCstd|d|dS)Nzbar(rrDr)ar r r rZs rcCst}|ddS)Nzimport bdb; bdb.foo(10))rr)rr r r test^sr)rIrarinspectrrr__all__r= ExceptionrrrdrrrQrrrrr r r r s& kt"0