o ?Og~@s ddlZddlZddlZddlmZmZmZgdZeeBeBZGddde 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 */opt/alt/python310/lib64/python3.10/bdb.pyr src@seZdZ d]ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd^d%d&Zd]d'd(Zd)d*Zd+d,Zd-d.Zd]d/d0Zd1d2Zd3d4Zd5d6Z  d_d8d9Zd:d;Zdd?Z d@dAZ!dBdCZ"dDdEZ#dFdGZ$dHdIZ%dJdKZ&dLdMZ'dNdOZ(dPdQZ)d`dSdTZ*dadUdVZ+dadWdXZ,dYdZZ-d[d\Z.dS)brNcCs0|rt|nd|_i|_i|_d|_|dSN)setskipbreaksfncacheframe_returning _load_breaks)selfrr r r __init__s  z Bdb.__init__cCsT |d|dddkr|S|j|}|s(tj|}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 reset8s z Bdb.resetcCs |jrdS|dkr||S|dkr|||S|dkr#|||S|dkr-|||S|dkr4|jS|dkr;|jS|dkrB|jStdt||jS) NlineZcallreturnZ exceptionZc_callZ c_exceptionZc_returnz*bdb.Bdb.dispatch: unknown debugging event:)quitting dispatch_line dispatch_calldispatch_returndispatch_exceptiontrace_dispatchprintrepr)rframeZeventargr r r r-?s&    zBdb.trace_dispatchcCs0 ||s ||r|||jrt|jSr ) stop_here break_here user_liner(rr-rr0r r r r)js   zBdb.dispatch_linecCsf |jdur |j|_|jS||s||sdS|jr%|jjt@r%|jS| |||j r0t |jSr ) r#f_backr-r2break_anywhere stopframef_codeco_flagsGENERATOR_AND_COROUTINE_FLAGS user_callr(rrr0r1r r r r*vs   zBdb.dispatch_callcCs ||s ||jkr?|jr|jjt@r|jSz||_|||Wd|_nd|_w|j r/t |j|ur?|j dkr?| dd|jSNr) r2 returnframer8r9r:r;r-r user_returnr(r stoplinenor$r=r r r r+s  zBdb.dispatch_returncCs ||r&|jjt@r|dtur|ddus#||||jr#t|j S|jrH||jurH|jjjt@rH|dtt fvrH||||jrHt|j S)Nr) r2r9r:r; StopIterationuser_exceptionr(rr8 GeneratorExitr-r=r r r r,s        zBdb.dispatch_exceptioncCs0 |durdS|jD] }t||rdSq dSNFT)rfnmatch)rZ module_namepatternr r r is_skipped_modules  zBdb.is_skipped_modulecCsP |jr||jdrdS||jur!|jdkrdS|j|jkS|js&dSdS)NrFrT)rrI f_globalsrr8rAf_linenor5r r r r2s   z Bdb.stop_herecCs ||jj}||jvrdS|j}||j|vr&|jj}||j|vr&dSt|||\}}|rC|j|_|rA|j rA| t |jdSdSrF) r r9 co_filenamerrKco_firstlineno effectivenumberZ currentbp temporarydo_clearstr)rr0rlinenobpflagr r r r3s   zBdb.break_herecCs td)Nz)subclass of bdb must implement do_clear())NotImplementedError)rr1r r r rQsz Bdb.do_clearcCs ||jj|jvSr )r r9rLrr5r r r r7szBdb.break_anywherecC dSr r )rr0Z argument_listr r r r<z Bdb.user_callcCrWr r r5r r r r4rXz Bdb.user_linecCrWr r )rr0Z return_valuer r r r@ rXzBdb.user_returncCrWr r )rr0exc_infor r r rDrXzBdb.user_exceptionrcCs ||_||_d|_||_dSNF)r8r?r(rA)rr8r?rAr r r r$s  zBdb._set_stopinfocCs& |dur |jd}||||dSNr)rKr$)rr0rSr r r set_until$s z Bdb.set_untilcCs2 |jr|jj}|r|js|j|_|dddSr )rr6f_tracer-r$)rZ caller_framer r r set_step,s  z Bdb.set_stepcCs ||ddSr )r$r5r r r set_next8sz Bdb.set_nextcCs2 |jjt@r||dddS||j|dSr>)r9r:r;r$r6r5r r r set_return<s zBdb.set_returncCsP |dur tj}||r|j|_||_|j}|s|t|jdSr ) sys _getframer6r%r-r]r#r^settracer5r r r set_traceCs z Bdb.set_tracecCsf ||jdd|js+tdtj}|r-||jur1|`|j}|r/||jusdSdSdSdSdSr>)r$r#rrarcrbr6r]r5r r r set_continueRs   zBdb.set_continuecCs$ |j|_d|_d|_tddSNT)r#r8r?r(rarcrr r r set_quitas z Bdb.set_quitcCs* |j|g}||vr||dSdSr )r setdefaultappend)rrrSZ bp_linenosr r r _add_to_breaksrs zBdb._add_to_breaksFc CsP ||}ddl}|||}|sd||fS|||t|||||}dS)NrzLine %s:%d does not exist)r r!getlinerkr) rrrSrPcondfuncnamer!r&rTr r r set_breakxs    z Bdb.set_breakcCs& tjD] \}}|||qdSr )rbplistkeysrkrrrSr r r rszBdb._load_breakscCs: ||ftjvr|j|||j|s|j|=dSdSr )rrprremoverrr r r _prune_breakss   zBdb._prune_breakscCsl ||}||jvrd|S||j|vrd||fStj||fddD]}|q'|||dS)NThere are no breakpoints in %szThere is no breakpoint at %s:%d)r rrrpdeleteMert)rrrSrTr r r clear_breaks     zBdb.clear_breakc CsZ z||}Wnty}z t|WYd}~Sd}~ww|||j|jdSr )get_bpbynumber ValueErrorrRrvrtfiler&)rr1rTerrr r r clear_bpbynumberszBdb.clear_bpbynumbercCsZ ||}||jvrd|S|j|D]}tj||f}|D]}|qq|j|=dS)Nru)r rrrprv)rrr&ZblistrTr r r clear_all_file_breakss   zBdb.clear_all_file_breakscCs. |jsdStjD]}|r|q i|_dS)NzThere are no breakpoints)rr bpbynumberrv)rrTr r r clear_all_breakss zBdb.clear_all_breakscCs| |stdzt|}Wntytd|dwztj|}Wnty1td|dw|durz()Z __return__z->) r!reprlibr r9rLco_namef_localsr/rlrJstrip) rZ frame_linenoZlprefixr!rr0rSrsZrvr&r r r format_stack_entry's$   zBdb.format_stack_entryc Cs |dur ddl}|j}|dur|}|t|tr!t|dd}t|jz(zt |||Wn t y9Yn wWd|_ tddSWd|_ tddSd|_ tdw)NrzexecT) __main____dict__r% isinstancerRcompilerarcr-rrr()rcmdglobalslocalsrr r r runGs.     zBdb.runc Cs |dur ddl}|j}|dur|}|t|jz%zt|||WWd|_tdSty6YnwWd|_tddSd|_tdw)NrT) rrr%rarcr-evalr(r)rexprrrrr r r runeval]s(    z Bdb.runevalcCs ||||dSr )r)rrrrr r r runctxqsz Bdb.runctxc Os |t|jd}z)z ||i|}Wn ty Yn wWd|_td|SWd|_td|Sd|_tdwrf)r%rarcr-rr()rfuncargskwdsresr r r runcallxs&     z Bdb.runcallr )rFNN)rNN)/rr r rr r%r-r)r*r+r,rIr2r3rQr7r<r4r@rDr$r\r^r_r`rdrerhrkrorrtrwr|r}rrxrrrrrrrrrrr r r r rs` +                rcCs tdSr )rrdr r r r rdsrdc@sdeZdZ dZiZdgZdddZeddZdd Z d d Z d d Z dddZ ddZ ddZdS)rrNFcCs||_d|_||_||_||_||_d|_d|_d|_t j |_ t j d7_ |j |||f|jvr?|j||f |dS|g|j||f<dS)NTrr)rnfunc_first_executable_linerzr&rPrmenabledignorehitsrnextrOr~rjrp)rrzr&rPrmrnr r r rs zBreakpoint.__init__cCsdt_it_dgt_dSr[)rrrpr~r r r r clearBreakpointss zBreakpoint.clearBreakpointscCsD |j|jf}d|j|j<|j|||j|s |j|=dSdSr )rzr&r~rOrprs)rindexr r r rvs    zBreakpoint.deleteMecC d|_dSrfrrgr r r enable zBreakpoint.enablecCrrZrrgr r r disablerzBreakpoint.disablecCs$ |durtj}t||ddS)N)rz)rastdoutr.bpformat)routr r r bpprintszBreakpoint.bpprintcCs |jrd}nd}|jr|d}n|d}d|j||j|jf}|jr+|d|jf7}|jr6|d|jf7}|jrL|jdkrAd }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)rPrrOrzr&rmrr)rZdispZretZssr r r rs(  zBreakpoint.bpformatcCs d|j|j|jfS)Nzbreakpoint %s at %s:%s)rOrzr&rgr r r __str__szBreakpoint.__str__rr )rr r rrpr~r staticmethodrrvrrrrrr r r r rs    rcCsP |js|j|jkr dSdS|jj|jkrdS|js|j|_|j|jkr&dSdSrF)rnr&rKr9rr)br0r r r checkfuncname s  rcCs tj||f}|D]U}|jsq t||sq |jd7_|js3|jdkr-|jd8_q |dfSz!t|j|j|j }|rS|jdkrL|jd8_n|dfWSWq |dfYSdS)NrrTFr) rrprrrrmrrrJr)rzr&r0Z possiblesrvalr r r rN)s.     rNc@s,eZdZddZddZddZddZd S) TdbcCs |jj}|sd}td||dS)N???z+++ call)r9rr.)rr0rnamer r r r<_sz Tdb.user_callcCsTddl}|jj}|s d}||jj}|||j|j}td||j|d| dS)Nrrz+++:) r!r9rr rLrlrKrJr.r)rr0r!rfnr&r r r r4cs z Tdb.user_linecCstd|dS)Nz +++ returnr.)rr0Zretvalr r r r@jszTdb.user_returncCstd||dS)Nz +++ exception)r.re)rr0Z exc_stuffr r r rDls  zTdb.user_exceptionN)rr r r<r4r@rDr r r r r^s  rcCs&td|dt|d}td|dS)Nzfoo() z bar returned)r.bar)nxr r r foops  rcCstd|d|dS)Nzbar(rrBr)ar r r rus rcCst}|ddS)Nzimport bdb; bdb.foo(10))rr)rr r r testysr)rGrarinspectrrr__all__r; ExceptionrrrdrrrNrrrrr r r r s* }z 5