]:[@sddlZddlZddlZddlmZdddgZGdddeZGdddZdd Z Gd ddZ d d Z d dZ GdddeZ ddZddZddZdS)N) CO_GENERATORBdbQuitBdb Breakpointc@seZdZdS)rN)__name__ __module__ __qualname__r r (/opt/alt/python35/lib64/python3.5/bdb.pyr s c@s,eZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%d&Zdd'd(Zd)d*Zd+d,Zd-d.Zdd/d0Zd1d2Zd3d4Zd5ddd6d7Zd8d9Zd:d;Zd<d=Zd>d?Z d@dAZ!dBdCZ"dDdEZ#dFdGZ$dHdIZ%dJdKZ&dLdMZ'dNdOdPZ(dddQdRZ)dddSdTZ*dUdVZ+dWdXZ,dS)YrNcCs:|rt|nd|_i|_i|_d|_dS)N)setskipbreaksfncacheframe_returning)selfr r r r __init__s  z Bdb.__init__cCso|d|dddkr"|S|jj|}|sktjj|}tjj|}||j|<|S)N<>)rgetospathabspathnormcase)rfilenamecanonicr r r rs z Bdb.canoniccCs3ddl}|jd|_|jdddS)Nr) linecache checkcachebotframe _set_stopinfo)rrr r r reset&s   z Bdb.resetcCs|jr dS|dkr&|j|S|dkrB|j||S|dkr^|j||S|dkrz|j||S|dkr|jS|dkr|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_dispatchcCsA|j|s|j|r:|j||jr:t|jS)N) stop_here break_here user_liner&rr+)rr.r r r r'@s   zBdb.dispatch_linecCs|jdkr"|j|_|jS|j|p=|j|sDdS|jrd|jjt@rd|jS|j |||j rt |jS)N) rf_backr+r1break_anywhere stopframef_codeco_flagsr user_callr&r)rr.r0r r r r(Fs  zBdb.dispatch_callc Cs|j|s||jkr|jr>|jjt@r>|jSz||_|j||Wdd|_X|j rwt |j|kr|j dkr|j dd|jS)Nrr) r1 returnframer6r7r8rr+r user_returnr&r stoplinenor )rr.r0r r r r)Vs   zBdb.dispatch_returncCs|j|ra|jjt@o<|dtko<|ddks|j|||jrtn`|jr||jk r|jjjt@r|dtt fkr|j|||jrt|j S)Nr) r1r7r8r StopIterationuser_exceptionr&rr6 GeneratorExitr+)rr.r0r r r r*fs   zBdb.dispatch_exceptioncCs.x'|jD]}tj||r dSq WdS)NTF)r fnmatch)r module_namepatternr r r is_skipped_moduleszBdb.is_skipped_modulecCsk|jr(|j|jjdr(dS||jkrZ|jdkrJdS|j|jkS|jsgdSdS)NrFrTr)r rD f_globalsrr6r<f_lineno)rr.r r r r1s  z Bdb.stop_herecCs|j|jj}||jkr(dS|j}||j|krg|jj}||j|krgdSt|||\}}|r|j|_|r|j r|j t |jdSdSdS)NFT) rr7 co_filenamer rFco_firstlineno effectivenumberZ currentbp temporarydo_clearstr)rr.rlinenobpflagr r r r2s   zBdb.break_herecCstddS)Nz)subclass of bdb must implement do_clear())NotImplementedError)rr0r r r rLsz Bdb.do_clearcCs|j|jj|jkS)N)rr7rGr )rr.r r r r5szBdb.break_anywherecCsdS)Nr )rr.Z argument_listr r r r9sz Bdb.user_callcCsdS)Nr )rr.r r r r3sz Bdb.user_linecCsdS)Nr )rr.Z return_valuer r r r;szBdb.user_returncCsdS)Nr )rr.exc_infor r r r?szBdb.user_exceptionrcCs(||_||_d|_||_dS)NF)r6r:r&r<)rr6r:r<r r r r s   zBdb._set_stopinfocCs0|dkr|jd}|j|||dS)Nr)rFr )rr.rNr r r set_untils  z Bdb.set_untilcCsE|jr1|jj}|r1|j r1|j|_|jdddS)N)rr4f_tracer+r )rZ caller_framer r r set_steps    z Bdb.set_stepcCs|j|ddS)N)r )rr.r r r set_nextsz Bdb.set_nextcCs=|jjt@r&|j|ddn|j|j|dS)Nrr)r7r8rr r4)rr.r r r set_returnszBdb.set_returncCsn|dkrtjj}|jx(|rO|j|_||_|j}q(W|jtj|jdS)N) sys _getframer4r!r+rTrrUsettrace)rr.r r r set_traces       z Bdb.set_tracecCsj|j|jdd|jsftjdtjj}x(|re||jk re|`|j}q>WdS)Nrr)r rr rXrZrYr4rT)rr.r r r set_continues  zBdb.set_continuecCs/|j|_d|_d|_tjddS)NT)rr6r:r&rXrZ)rr r r set_quits   z Bdb.set_quitFc Cs|j|}ddl}|j||}|sAd||fS|jj|g}||kro|j|t|||||} dS)NrzLine %s:%d does not exist)rrgetliner setdefaultappendr) rrrNrKcondfuncnamerr"listrOr r r set_breaks   z Bdb.set_breakcCsD||ftjkr)|j|j||j|s@|j|=dS)N)rbplistr remove)rrrNr r r _prune_breaks!s zBdb._prune_breakscCs|j|}||jkr&d|S||j|krGd||fSx/tj||fddD]}|jqeW|j||dS)NzThere are no breakpoints in %szThere is no breakpoint at %s:%d)rr rredeleteMerg)rrrNrOr r r clear_break's$zBdb.clear_breakcCsiy|j|}Wn/tk rD}zt|SWYdd}~XnX|j|j|j|jdS)N)get_bpbynumber ValueErrorrMrhrgfiler")rr0rOerrr r r clear_bpbynumber3s  zBdb.clear_bpbynumbercCsz|j|}||jkr&d|SxC|j|D]4}tj||f}x|D]}|jqTWq4W|j|=dS)NzThere are no breakpoints in %s)rr rrerh)rrr"ZblistrOr r r clear_all_file_breaks;s zBdb.clear_all_file_breakscCs>|js dSx!tjD]}|r|jqWi|_dS)NzThere are no breakpoints)r r bpbynumberrh)rrOr r r clear_all_breaksEs  zBdb.clear_all_breakscCs|stdyt|}Wn"tk rFtd|YnXytj|}Wn"tk r|td|YnX|dkrtd||S)NzBreakpoint number expectedz Non-numeric breakpoint number %sz!Breakpoint number %d out of rangezBreakpoint %d already deleted)rkintrrp IndexError)rr0rJrOr r r rjMs    zBdb.get_bpbynumbercCs/|j|}||jko.||j|kS)N)rr )rrrNr r r get_break\sz Bdb.get_breakcCsH|j|}||jkrD||j|krDtj||fpGgS)N)rr rre)rrrNr r r get_breaksaszBdb.get_breakscCs1|j|}||jkr)|j|SgSdS)N)rr )rrr r r get_file_breaksgs zBdb.get_file_breakscCs|jS)N)r )rr r r get_all_breaksnszBdb.get_all_breakscCsg}|r$|j|kr$|j}x?|dk re|j||jf||jkrYP|j}q'W|jtdt|d}x2|dk r|j|j|j f|j}qW|dkrtdt|d}||fS)Nrr) tb_frametb_nextr`rFrr4reversemaxlen tb_lineno)rftstackir r r get_stackts      z Bdb.get_stackz: c Cs,ddl}ddl}|\}}|j|jj}d||f}|jjrh||jj7}n |d7}d|jkr|jd} nd} | r||j| 7}n |d7}d|jkr|jd} |d7}||j| 7}|j|||j } | r(||| j 7}|S)Nrz%s(%r)zZ__args__z()Z __return__z->) rreprlibrr7rGco_namef_localsr-r^rEstrip) rZ frame_linenoZlprefixrrr.rNrsargsrvr"r r r format_stack_entrys*      zBdb.format_stack_entrycCs|dkr!ddl}|j}|dkr3|}|jt|tr^t|dd}tj|jz-yt |||Wnt k rYnXWdd|_ tjdXdS)NrzexecT) __main____dict__r! isinstancerMcompilerXrZr+rrr&)rcmdglobalslocalsrr r r runs        zBdb.runcCs|dkr!ddl}|j}|dkr3|}|jtj|jz-yt|||SWntk rxYnXWdd|_tjdXdS)NrT) rrr!rXrZr+evalrr&)rexprrrrr r r runevals        z Bdb.runevalcCs|j|||dS)N)r)rrrrr r r runctxsz Bdb.runctxcOsj|jtj|jd}z,y|||}Wntk rJYnXWdd|_tjdX|S)NT)r!rXrZr+rr&)rfuncrkwdsresr r r runcalls    z Bdb.runcall)-rrrrrr!r+r'r(r)r*rDr1r2rLr5r9r3r;r?r rSrUrVrWr[r\r]rdrgrirnrorqrjrtrurvrwrrrrrrr r r r rsV                              cCstjdS)N)rr[r r r r r[sr[c@seZdZdZiZdgZdddddZddZdd Zd d Z dd d Z ddZ ddZ dS)rrNFcCs||_d|_||_||_||_||_d|_d|_d|_t j |_ t j d7_ |j j |||f|jkr|j||fj |n|g|j||fq|jd7_|js|jdkrz|jd8_qq|dfSqyPt|j|j|j }|r|jdkr|jd8_n |dfSWq|dfSYqXqWdS)NrrTF)NN) rrerrrrarrrEr)rlr"r.Z possiblesrvalr r r rITs*    rIc@s@eZdZddZddZddZddZd S) TdbcCs,|jj}|sd}td||dS)Nz???z+++ call)r7rr,)rr.rnamer r r r9s z Tdb.user_callcCszddl}|jj}|s$d}|j|jj}|j||j|j}td||j|d|j dS)Nrz???z+++:) rr7rrrGr^rFrEr,r)rr.rrfnr"r r r r3s  z Tdb.user_linecCstd|dS)Nz +++ return)r,)rr.Zretvalr r r r;szTdb.user_returncCstd||jdS)Nz +++ exception)r,r\)rr.Z exc_stuffr r r r?s zTdb.user_exceptionN)rrrr9r3r;r?r r r r rs    rcCs1td|dt|d}td|dS)Nzfoo() z bar returned)r,bar)nxr r r foosrcCstd|d|dS)Nzbar(rr=)r,)ar r r rsrcCst}|jddS)Nzimport bdb; bdb.foo(10))rr)rr r r tests r)rArXrinspectr__all__ Exceptionrrr[rrrIrrrrr r r r s    Z  0