o ÏÓçhŒ~ã@s² ddlZddlZddlZddlmZmZmZgd¢ZeeBeBZGdd„de ƒZ Gdd„dƒZ dd „Z Gd d „d ƒZ d d „Zdd„ZGdd„de ƒZdd„Zdd„Zdd„ZdS)éN)Ú CO_GENERATORÚ CO_COROUTINEÚCO_ASYNC_GENERATOR)ÚBdbQuitÚBdbÚ Breakpointc@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r ú*/opt/alt/python310/lib64/python3.10/bdb.pyr src@s‚eZdZ d]dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd^d%d&„Zd]d'd(„Zd)d*„Zd+d,„Zd-d.„Zd]d/d0„Zd1d2„Zd3d4„Zd5d6„Z  d_d8d9„Zd:d;„Zdd?„Z d@dA„Z!dBdC„Z"dDdE„Z#dFdG„Z$dHdI„Z%dJdK„Z&dLdM„Z'dNdO„Z(dPdQ„Z)d`dSdT„Z*dadUdV„Z+dadWdX„Z,dYdZ„Z-d[d\„Z.dS)brNcCs0|rt|ƒnd|_i|_i|_d|_| ¡dS©N)ÚsetÚskipÚbreaksÚfncacheÚframe_returningÚ _load_breaks)Úselfrr r r Ú__init__s  z Bdb.__init__cCsT |d|dd…dkr|S|j |¡}|s(tj |¡}tj |¡}||j|<|S)Nú<ééÿÿÿÿú>)rÚgetÚosÚpathÚabspathÚnormcase)rÚfilenameÚcanonicr r r r 's    z Bdb.canoniccCs( ddl}| ¡d|_| dd¡dS)Nr)Ú linecacheÚ checkcacheÚbotframeÚ _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) NÚlineZcallÚreturnZ exceptionZc_callZ c_exceptionZc_returnz*bdb.Bdb.dispatch: unknown debugging event:)ÚquittingÚ dispatch_lineÚ dispatch_callÚdispatch_returnÚdispatch_exceptionÚtrace_dispatchÚprintÚrepr)rÚframeZeventÚargr 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-r2Úbreak_anywhereÚ stopframeÚf_codeÚco_flagsÚGENERATOR_AND_COROUTINE_FLAGSÚ user_callr(r©rr0r1r r r r*vs   zBdb.dispatch_callcCs„ | |¡s ||jkr?|jr|jjt@r|jSz||_| ||¡Wd|_nd|_w|j r/t ‚|j|ur?|j dkr?|  dd¡|jS©Nr) 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;Ú StopIterationÚuser_exceptionr(rr8Ú GeneratorExitr-r=r r r r,¢s     ú ÿ  zBdb.dispatch_exceptioncCs0 |durdS|jD] }t ||¡rdSq dS©NFT)rÚfnmatch)rZ module_nameÚpatternr r r Úis_skipped_moduleÁs  ÿzBdb.is_skipped_modulecCsP |jr| |j d¡¡rdS||jur!|jdkrdS|j|jkS|js&dSdS)NrFrT)rrIÚ f_globalsrr8rAÚf_linenor5r r r r2Êsÿ   z Bdb.stop_herecCsŠ | |jj¡}||jvrdS|j}||j|vr&|jj}||j|vr&dSt|||ƒ\}}|rC|j|_|rA|j rA|  t |jƒ¡dSdSrF) r r9Ú co_filenamerrKÚco_firstlinenoÚ effectiveÚnumberZ currentbpÚ temporaryÚdo_clearÚstr)rr0rÚlinenoÚbpÚflagr r r r3Ùs   zBdb.break_herecCs tdƒ‚)Nz)subclass of bdb must implement do_clear())ÚNotImplementedError)rr1r r r rQôsz Bdb.do_clearcCs | |jj¡|jvSr )r r9rLrr5r r r r7ûszBdb.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 )rr0Úexc_infor r r rDrXzBdb.user_exceptionrcCs ||_||_d|_||_dS©NF)r8r?r(rA)rr8r?rAr r r r$s  zBdb._set_stopinfocCs& |dur |jd}| |||¡dS©Nr)rKr$)rr0rSr r r Ú set_until$s z Bdb.set_untilcCs2 |jr|jj}|r|js|j|_| dd¡dSr )rr6Úf_tracer-r$)rZ caller_framer r r Úset_step,s  z Bdb.set_stepcCs | |d¡dSr )r$r5r r r Úset_next8sz Bdb.set_nextcCs2 |jjt@r| |dd¡dS| |j|¡dSr>)r9r:r;r$r6r5r r r Ú set_return<s zBdb.set_returncCsP |dur t ¡j}| ¡|r|j|_||_|j}|s| ¡t |j¡dSr ) ÚsysÚ _getframer6r%r-r]r#r^Úsettracer5r r r Ú set_traceCs ýz Bdb.set_tracecCsf | |jdd¡|js+t d¡t ¡j}|r-||jur1|`|j}|r/||jusdSdSdSdSdSr>)r$r#rrarcrbr6r]r5r r r Ú set_continueRs  þü zBdb.set_continuecCs$ |j|_d|_d|_t d¡dS©NT)r#r8r?r(rarc©rr r r Úset_quitas z Bdb.set_quitcCs* |j |g¡}||vr| |¡dSdSr )rÚ setdefaultÚappend)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) rrrSrPÚcondÚfuncnamer!r&rTr r r Ú set_breakxs    z Bdb.set_breakcCs& tj ¡D] \}}| ||¡qdSr )rÚbplistÚkeysrk©rrrSr r r rˆsÿzBdb._load_breakscCs: ||ftjvr|j| |¡|j|s|j|=dSdSr )rrprÚremoverrr r r Ú _prune_breaks“s   ÿzBdb._prune_breakscCsl | |¡}||jvrd|S||j|vrd||fStj||fdd…D]}| ¡q'| ||¡dS)NúThere are no breakpoints in %szThere is no breakpoint at %s:%d)r rrrpÚdeleteMert)rrrSrTr r r Ú clear_break s     zBdb.clear_breakc CsZ z| |¡}Wnty}z t|ƒWYd}~Sd}~ww| ¡| |j|j¡dSr )Úget_bpbynumberÚ ValueErrorrRrvrtÚfiler&)rr1rTÚerrr r r Úclear_bpbynumber±s€ÿzBdb.clear_bpbynumbercCsZ | |¡}||jvrd|S|j|D]}tj||f}|D]}| ¡qq|j|=dS)Nru)r rrrprv)rrr&ZblistrTr r r Úclear_all_file_breaks¾s   ÿzBdb.clear_all_file_breakscCs. |jsdStjD]}|r| ¡q i|_dS)NzThere are no breakpoints)rrÚ bpbynumberrv)rrTr r r Úclear_all_breaksÍs €zBdb.clear_all_breakscCs| |stdƒ‚zt|ƒ}Wntytd|ƒd‚wztj|}Wnty1td|ƒd‚w|durz()Z __return__z->) r!Úreprlibr r9rLÚco_nameÚf_localsr/rlrJÚstrip) rZ frame_linenoZlprefixr!r“r0rSrÚsZrvr&r r r Úformat_stack_entry's$   zBdb.format_stack_entryc Cs² |dur ddl}|j}|dur|}| ¡t|tƒr!t|ddƒ}t |j¡z(zt |||ƒWn t y9Yn wWd|_ t d¡dSWd|_ t d¡dSd|_ t d¡w)NrzÚexecT) Ú__main__Ú__dict__r%Ú isinstancerRÚcompilerarcr-r™rr()rÚcmdÚglobalsÚlocalsršr r r ÚrunGs.    ÿÿýÿ zBdb.runc Cs– |dur ddl}|j}|dur|}| ¡t |j¡z%zt|||ƒWWd|_t d¡Sty6YnwWd|_t d¡dSd|_t d¡w)NrT) ršr›r%rarcr-Úevalr(r)rÚexprrŸr ršr r r Úruneval]s(   üÿÿ z Bdb.runevalcCs | |||¡dSr )r¡)rržrŸr r r r Úrunctxqsz Bdb.runctxc Os€ | ¡t |j¡d}z)z ||i|¤Ž}Wn ty Yn wWd|_t d¡|SWd|_t d¡|Sd|_t d¡wrf)r%rarcr-rr()rÚfuncÚargsÚkwdsÚresr r r Úruncallxs&  ÿÿ ü þ z Bdb.runcallr )r©FNN)r’©NN)/rr r rr r%r-r)r*r+r,rIr2r3rQr7r<r4r@rDr$r\r^r_r`rdrerhrkrorrtrwr|r}rrxrƒr„r…r†r‘r˜r¡r¤r¥rªr r r r rs` +       ÿ         rcCs tƒ ¡dSr )rrdr r r r rdŠsrdc@sdeZdZ dZiZdgZddd„Zedd„ƒZdd „Z d d „Z d d „Z ddd„Z dd„Z dd„ZdS)rrNFcCs’||_d|_||_||_||_||_d|_d|_d|_t j |_ t j d7_ |j   |¡||f|jvr?|j||f  |¡dS|g|j||f<dS)NTrr)rnÚfunc_first_executable_linerzr&rPrmÚenabledÚignoreÚhitsrÚnextrOr~rjrp)rrzr&rPrmrnr r r rªs zBreakpoint.__init__cCsdt_it_dgt_dSr[)rr±rpr~r r r r ÚclearBreakpoints¾s zBreakpoint.clearBreakpointscCsD |j|jf}d|j|j<|j| |¡|j|s |j|=dSdSr )rzr&r~rOrprs)rÚindexr r r rvÄs    þzBreakpoint.deleteMecCó d|_dSrf©r®rgr r r ÚenableÒó zBreakpoint.enablecCr´rZrµrgr r r ÚdisableÖr·zBreakpoint.disablecCs$ |durtj}t| ¡|ddS)N)rz)raÚstdoutr.Úbpformat)rÚoutr r r ÚbpprintÚszBreakpoint.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 hitsrr—Úz" breakpoint already hit %d time%s)rPr®rOrzr&rmr¯r°)rZdispZretZssr r r rºäs( ÿ zBreakpoint.bpformatcCs d|j|j|jfS)Nzbreakpoint %s at %s:%s)rOrzr&rgr r r Ú__str__szBreakpoint.__str__r«r )rr r r±rpr~rÚ staticmethodr²rvr¶r¸r¼rºr¾r r r r rs    rcCsP |js|j|jkr dSdS|jj|jkrdS|js|j|_|j|jkr&dSdSrF)rnr&rKr9r”r­)Úbr0r r r Ú checkfuncname s  rÁcCsÄ tj||f}|D]U}|jsq t||ƒsq |jd7_|js3|jdkr-|jd8_q |dfSz!t|j|j|j ƒ}|rS|jdkrL|jd8_n|dfWSWq |dfYSdS)NrrTFr¬) rrpr®rÁr°rmr¯r¢rJr•)rzr&r0Z possiblesrÀÚvalr r r rN)s.     €rNc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTdbcCs |jj}|sd}td||ƒdS)Nú???z+++ call)r9r”r.)rr0r§Únamer r r r<_sz Tdb.user_callcCsTddl}|jj}|s d}| |jj¡}| ||j|j¡}td||j|d|  ¡ƒdS)NrrÄz+++ú:) r!r9r”r rLrlrKrJr.r–)rr0r!rÅÚfnr&r r r r4cs z Tdb.user_linecCstd|ƒdS)Nz +++ return©r.)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  rÃcCs&td|dƒt|dƒ}td|ƒdS)Nzfoo(ú)é z bar returned)r.Úbar)ÚnÚxr r r Úfoops  rÎcCstd|dƒ|dS)Nzbar(rÉrBrÈ)Úar r r rËus rËcCstƒ}| d¡dS)Nzimport bdb; bdb.foo(10))rÃr¡)rŽr r r ÚtestysrÐ)rGrarÚinspectrrrÚ__all__r;Ú ExceptionrrrdrrÁrNrÃrÎrËrÐr r r r Ús* }z 5