B '³¥ËrÞÿã"@sàddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z Gdd„de ƒZdddddd d d d g Zd d„Zdd„Zdd„ZGdd„deƒZdZGdd„dejejƒZedk r^d dddddddddd d!d"d#d$d%d&d'dd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6g"Zx*eD]"Zeeed7eƒj ¡d87Zq(Weejj7Z[[dId9d„ZdJd:d„Z d;d„Z!dd „Z#dKd?d „Z$d@d„Z%dAZ&dBdC„Z'dDd „Z(dEZ)dFdG„Z*e+dHkrÜddl,Z,e, *¡dS)LéNc@s eZdZdS)ÚRestartN)Ú__name__Ú __module__Ú __qualname__©rrú&/opt/alt/python37/lib/python3.7/pdb.pyrUsrÚrunÚpmÚPdbÚrunevalÚrunctxÚruncallÚ set_traceÚ post_mortemÚhelpc Csxt dt |¡¡}y t|ƒ}Wntk r4dSX|4x,t|ddD]\}}| |¡rJ|||fSqJWWdQRXdS)Nzdef\s+%s\s*[(]é)Ústart)ÚreÚcompileÚescapeÚopenÚOSErrorÚ enumerateÚmatch)ÚfuncnameÚfilenameZcreÚfpÚlinenoÚlinerrrÚ find_function\s  rcCsXt |¡\}}t |¡r,|j|jkr,|dfSt |¡r>|dfSt ||d…¡|dfS)Nr)ÚinspectZ findsourceZisframeÚ f_globalsÚf_localsZismoduleZgetblock)ÚobjÚlinesrrrrÚgetsourcelinesis  r%cCs8tt |¡ƒ}| ¡x|D]\}}||kr|SqWdS)Nr)ÚlistÚdisZfindlinestartsÚreverse)ÚcodeZlastiZ linestartsÚirrrrÚ lasti2linenors r+c@seZdZdd„ZdS)Ú_rstrcCs|S)Nr)ÚselfrrrÚ__repr__}sz_rstr.__repr__N)rrrr.rrrrr,{sr,z -> c@seZdZdZd£dd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„ZeZd¤d8d9„Zd:d;„ZeZ eZ!eZ"dd?„Z%d@dA„Z&dBdC„Z'eZ(dDdE„Z)eZ*dFdG„Z+eZ,dHdI„Z-eZ.dJdK„Z/e/Z0eZ1eZ2dLdM„Z3e3Z4e3Z5dNdO„Z6dPdQ„Z7e7Z8dRdS„Z9e9Z:dTdU„Z;e;ZdXdY„Z?e?Z@dZd[„ZAeAZBd\d]„ZCeCZDd^d_„ZEeEZFZGd`da„ZHeHZIdbdc„ZJeZKddde„ZLeLZMeLZNdfdg„ZOdhdi„ZPePZQdjdk„ZReRZSdldm„ZTd¥dndo„ZUdpdq„ZVdrds„ZWeZXeZYeZZdtdu„Z[e[Z\dvdw„Z]e]Z^dxdy„Z_eZ`d¦d{d|„Zad}d~„ZbeZcdd€„ZdeZedd‚„Zfdƒd„„Zgd…d†„Zhd‡dˆ„Zid‰dŠ„Zjd‹dŒ„ZkddŽddd‘d’gZld“d”„Zmenfd•d–„Zod—d˜„ZpepZqd™dš„Zrd›dœ„Zsddž„ZtdŸd „Zud¡d¢„ZvdS)§r NÚtabFTc Cs4tjj||dtj ||||¡|r,d|_d|_i|_i|_d|_ d|_ i|_ yddl }|  d¡Wntk rzYnXd|_||_g|_|ry,ttj d¡ƒ}|j |¡WdQRXWntk rÔYnXy$tdƒ}|j |¡WdQRXWntk rYnXi|_i|_i|_d|_d|_dS) N)Úskiprz(Pdb) ÚFz `@#$%^&*()=+[{]}\|;:'",<>?z~/.pdbrcz.pdbrc)ÚbdbÚBdbÚ__init__ÚcmdÚCmdZ use_rawinputÚpromptÚaliasesÚ displayingÚ mainpyfileÚ_wait_for_mainpyfileÚ tb_linenoÚreadlineZset_completer_delimsÚ ImportErrorÚ allow_kbdintÚnosigintÚrcLinesrÚosÚpathÚ expanduserÚextendrÚcommandsÚcommands_dopromptÚcommands_silentÚcommands_definingÚ commands_bnum) r-Ú completekeyÚstdinÚstdoutr0r@Zreadrcr=ZrcFilerrrr4ŒsD z Pdb.__init__cCs*|jr t‚| d¡| ¡| |¡dS)Nz- Program interrupted. (Use 'cont' to resume).)r?ÚKeyboardInterruptÚmessageÚset_stepr)r-ZsignumÚframerrrÚsigint_handlerºs  zPdb.sigint_handlercCstj |¡| ¡dS)N)r2r3ÚresetÚforget)r-rrrrSÁs z Pdb.resetcCs&d|_g|_d|_d|_|j ¡dS)Nr)rÚstackÚcurindexÚcurframer<Úclear)r-rrrrTÅs z Pdb.forgetcCsl| ¡| ||¡\|_|_x*|rFt|jj|jƒ}||j|j<|j }qW|j|jd|_ |j j |_ |  ¡S)Nr)rTZ get_stackrUrVr+Útb_frameÚf_codeÚtb_lastir<Útb_nextrWr"Úcurframe_localsÚ execRcLines)r-ÚfÚtbrrrrÚsetupÌs   z Pdb.setupcCsh|js dS|j}| ¡g|_xD|rb| ¡ ¡}|r |ddkr | |¡r |jt|ƒ7_dSq WdS)Nrú#T)rAr(ÚpopÚstripÚonecmdÚreversed)r-rArrrrr^Þs  zPdb.execRcLinescCs.|jr dS| |¡r*| d¡| |d¡dS)Nz--Call--)r;Z stop_hererOÚ interaction)r-rQZ argument_listrrrÚ user_callòs   z Pdb.user_callcCsH|jr.|j| |jj¡ks$|jdkr(dSd|_| |¡rD| |d¡dS)NrF)r;r:ÚcanonicrZÚ co_filenameÚf_linenoÚ bp_commandsrg)r-rQrrrÚ user_lineûs  z Pdb.user_linecCs˜t|ddƒr”|j|jkr”|j}d|_|j}| |d¡x|j|D]}| |¡qBW||_|j|sv| |j|j ¡|j |rˆ|  ¡|  ¡dSdS)NÚ currentbpFrr) ÚgetattrrnrFÚlastcmdrarerHÚprint_stack_entryrUrVrGÚ_cmdlooprT)r-rQrnZ lastcmd_backrrrrrls      zPdb.bp_commandscCs.|jr dS||jd<| d¡| |d¡dS)NÚ __return__z --Return--)r;r"rOrg)r-rQZ return_valuerrrÚ user_returns   zPdb.user_returncCsh|jr dS|\}}}||f|jd<|s2|tkr2dnd}| d|t ||¡d ¡f¡| ||¡dS)NZ __exception__z Internal r1z%s%séÿÿÿÿ)r;r"Ú StopIterationrOÚ tracebackÚformat_exception_onlyrdrg)r-rQÚexc_infoÚexc_typeÚ exc_valueÚ exc_tracebackÚprefixrrrÚuser_exception%s zPdb.user_exceptioncCsDx>yd|_| ¡d|_PWqtk r:| d¡YqXqWdS)NTFz--KeyboardInterrupt--)r?ÚcmdlooprNrO)r-rrrrr9sz Pdb._cmdloopcCsb|j |j¡}|r^xJ| ¡D]>\}}| |¡}||k r||kr|||<| d|||f¡qWdS)Nzdisplay %s: %r [old: %r])r9ÚgetrWÚitemsÚ_getval_exceptrO)r-r9ÚexprZoldvalueZnewvaluerrrÚpreloopFs z Pdb.preloopcCsZtjrt tjtj¡dt_| ||¡r4| ¡dS| |j|j¡|  ¡| ¡dS)N) r Ú_previous_sigint_handlerÚsignalÚSIGINTrarTrqrUrVrr)r-rQrwrrrrgSs zPdb.interactioncCs|dk r| t|ƒ¡dS)N)rOÚrepr)r-r#rrrÚ displayhookaszPdb.displayhookc CsÈ|dd…dkr|dd…}|j}|jj}ydt|dddƒ}tj}tj}tj}z(|jt_|jt_|jt_t|||ƒWd|t_|t_|t_XWn4t  ¡dd…}|  t j |Žd  ¡¡YnXdS)Nrú!Ú zZsingleéru)r]rWr!rÚsysrMrLr‰ÚexecryÚerrorrwrxrd) r-rÚlocalsÚglobalsr)Z save_stdoutZ save_stdinZsave_displayhookryrrrÚdefaultis(  z Pdb.defaultcCsà| ¡s |S| ¡}xx|d|jkrŒ|j|d}d}x0|dd…D] }| dt|ƒ|¡}|d7}qDW| dd |dd…¡¡}| ¡}qW|ddkrÜ| d¡}|dkrÜ||dd… ¡}|j  |¡|d|…  ¡}|S) Nrrú%z%*ú Úaliasz;;rŒ) rdÚsplitr8ÚreplaceÚstrÚjoinÚfindÚlstripÚcmdqueueÚappendÚrstrip)r-rÚargsÚiiZtmpArgZmarkerÚnextrrrÚprecmds&     z Pdb.precmdcCs"|jstj ||¡S| |¡SdS)N)rIr5r6reÚhandle_command_def)r-rrrrre˜sz Pdb.onecmdcCsÄ| |¡\}}}|sdS|dkr0d|j|j<dS|dkrBg|_dS|j|j}|rf| |d|¡n | |¡yt|d|ƒ}Wntk rœ|j}YnX|j |j krÀd|j |j<g|_dSdS)NZsilentTÚendrr”Údo_F) Z parselinerHrJrœrFrroÚAttributeErrorr’rÚcommands_resumingrG)r-rr5ÚargZcmdlistÚfuncrrrr£¤s,      zPdb.handle_command_defcCst||jddS)N)Úfile)ÚprintrM)r-ÚmsgrrrrOÂsz Pdb.messagecCstd||jddS)Nz***)rª)r«rM)r-r¬rrrrÅsz Pdb.errorcCs¤| ¡ d¡rgSy| ||||¡}Wntk r>g}YnXt |d¡}xP|D]H}tj |¡rt| |d¡qTtj  |¡rT|  ¡ d¡rT| |d¡qTW|S)N)ú:ú,Ú*ú/)z.pyz.pywr­) rdÚendswithÚ_complete_expressionÚ ExceptionÚglobrBrCÚisdirrÚisfileÚlower)r-ÚtextrÚbegidxÚendidxÚretÚglobsÚfnrrrÚ_complete_locationËs   zPdb._complete_locationcs‡fdd„ttjjƒDƒS)Ncs.g|]&\}}|dk rt|ƒ ˆ¡rt|ƒ‘qS)N)r˜Ú startswith)Ú.0r*Úbp)r¸rrú âsz*Pdb._complete_bpnumber..)rr2Ú BreakpointÚ bpbynumber)r-r¸rr¹rºr)r¸rÚ_complete_bpnumberÞszPdb._complete_bpnumberc sÆ|js gS|jj ¡}| |j¡dˆkr¬ˆ d¡‰y0|ˆd}xˆdd…D]}t||ƒ}qPWWnttfk r|gSXd  ˆdd…¡d‰‡‡fdd„t |ƒDƒS‡fdd„|  ¡DƒSdS)NÚ.rrrucs"g|]}| ˆd¡rˆ|‘qS)ru)r¿)rÀÚn)Údottedr}rrrÂúsz,Pdb._complete_expression..csg|]}| ˆ¡r|‘qSr)r¿)rÀrÇ)r¸rrrÂýs) rWr!ÚcopyÚupdater]r–roÚKeyErrorr¦r™ÚdirÚkeys)r-r¸rr¹rºÚnsr#Úpartr)rÈr}r¸rr²ås    zPdb._complete_expressioncCs(|sttjjƒd}n"y t|ƒ}Wn| d¡dS||_||jkrf|j||j||j |f}nd}g|j|<d|j|<d|j |<|j }d|_ d|_ zzy |  ¡Wnht k r|rê|d|j|<|d|j|<|d|j |<n|j|=|j|=|j |=| d¡YnXWdd|_ ||_ XdS) Nrz.Usage: commands [bnum] ... endTFz(com) rrŒz1command definition aborted, old commands restored)Úlenr2rÃrÄÚintrrJrFrGrHr7rIrrN)r-r¨ZbnumZold_command_defsZ prompt_backrrrÚ do_commandss@%       zPdb.do_commandsrc Cs@|s<|jr8| d¡x"tjjD]}|r| | ¡¡qWdSd}d}d}| d¡}|dkr~||dd… ¡}|d|… ¡}|  d¡}d} |dkr|d|… ¡}|  |¡} | sÆ|  d|¡dS| }||dd… ¡}y t |ƒ}Wn$t k r|  d|¡dSXn¼y t |ƒ}Wn®t k rÌyt||jj|jƒ} Wn|} YnXy.t| dƒrl| j} | j} | j} | j}| j}Wn@| |¡\} }}| s¶|  d |¡dS| } t |ƒ}YnXYnX|sÜ| ¡}| ||¡}|r<| ||||| ¡}|r|  |¡n*| ||¡d }| d |j|j|jf¡dS) Nz!Num Type Disp Enb Wherer®rrr­z%r not found from sys.pathzBad lineno: %sÚ__func__zJThe specified object %r is not a function or was not found along sys.path.ruzBreakpoint %d at %s:%d) ÚbreaksrOr2rÃrÄZbpformatršr›ržÚrfindÚ lookupmodulerrÑÚ ValueErrorÚevalrWr!r]ÚhasattrrÓÚ__code__Úco_nameÚco_firstlinenorjÚlineinfoÚ defaultFileÚ checklineZ set_breakÚ get_breaksÚnumberrªr)r-r¨Z temporaryrÁrrÚcondZcommaZcolonrr_r©r)ÚokZlnrÚerrrrrÚdo_breakRs~             z Pdb.do_breakcCs"|jjj}|dkr|jr|j}|S)Nz)rWrZrjr:)r-rrrrrÞ¯s zPdb.defaultFilecCs| |d¡dS)Nr)rå)r-r¨rrrÚ do_tbreak»sz Pdb.do_tbreakc CsÌd}| d¡}t|ƒdkr(|d ¡}nt|ƒdkrB|d ¡}n|S|dkrR|S| d¡}|ddkr~|d=t|ƒdkr~|S| ¡}t|ƒdkrœ|d}n| |d¡}|r²|}|d}t||ƒ} | pÊ|S) N)NNNú'rrér1rÆr-)r–rÐrdrÞrÖr) r-Z identifierZfailedZidstringÚidÚpartsZfnameÚitemr_ZanswerrrrrÝÄs.         z Pdb.lineinfocCs€t|dƒr|jjnd}t |||¡}|s6| d¡dS| ¡}|rn|ddksn|dd…dksn|dd…dkr|| d¡dS|S) NrWz End of filerrbrèz"""z'''zBlank or comment)rÙrWr!Ú linecacheÚgetlinerOrdr)r-rrr¼rrrrrßås   z Pdb.checklinec Csl| ¡}x^|D]V}y| |¡}Wn,tk rL}z| |¡Wdd}~XYqX| ¡| d|¡qWdS)Nz Enabled %s)r–Úget_bpbynumberr×rÚenablerO)r-r¨rŸr*rÁrärrrÚ do_enableús z Pdb.do_enablec Csl| ¡}x^|D]V}y| |¡}Wn,tk rL}z| |¡Wdd}~XYqX| ¡| d|¡qWdS)Nz Disabled %s)r–rîr×rÚdisablerO)r-r¨rŸr*rÁrärrrÚ do_disable s zPdb.do_disablec CsÂ| dd¡}y |d}Wntk r0d}YnXy| |d ¡¡}WnHtk rf| d¡YnXtk r}z| |¡Wdd}~XYn.X||_|s®| d|j¡n| d|j¡dS)Nr”rrzBreakpoint number expectedz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.) r–Ú IndexErrorrîrdrr×rârOrá)r-r¨rŸrârÁrärrrÚ do_conditions   zPdb.do_conditionc CsÜ| ¡}yt|d ¡ƒ}Wnd}YnXy| |d ¡¡}WnHtk rb| d¡Ynvtk rŒ}z| |¡Wdd}~XYnLX||_|dkrÈ|dkr®d|}nd}| d||j f¡n| d|j ¡dS)NrrzBreakpoint number expectedz %d crossingsz 1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.) r–rÑrdrîrórr×ÚignorerOrá)r-r¨rŸÚcountrÁräZcountstrrrrÚ do_ignore:s(   z Pdb.do_ignorec CsŽ|sxy tdƒ}Wntk r(d}YnX| ¡ ¡}|dkrtdd„tjjDƒ}| ¡x|D]}| d|¡q^WdSd|kr|  d¡}|d|…}||dd…}y t |ƒ}Wnt k rÐd |}YnX|  ||¡}|  ||¡}|rú| |¡nx|D]}| d|¡qWdS| ¡} xd| D]\}y| |¡}Wn.t k rj}z| |¡Wdd}~XYnX| |¡| d|¡q*WdS) NzClear all breaks? Úno)ÚyZyescSsg|] }|r|‘qSrr)rÀrÁrrrrÂksz Pdb.do_clear..z Deleted %sr­rzInvalid line number (%s))ÚinputÚEOFErrorrdr·r2rÃrÄZclear_all_breaksrOrÕrÑr×ràZ clear_breakrr–rîZclear_bpbynumber) r-r¨ZreplyZbplistrÁr*rrräZ numberlistrrrÚdo_clear]sF              z Pdb.do_clearcCs | ¡dS)N)Úprint_stack_trace)r-r¨rrrÚdo_wheresz Pdb.do_wherecCs>||_|j|jd|_|jj|_| |j|j¡d|_dS)Nr)rVrUrWr"r]rqr)r-rárrrÚ _select_framešs  zPdb._select_framecCsx|jdkr| d¡dSyt|p"dƒ}Wn"tk rJ| d|¡dSX|dkrZd}ntd|j|ƒ}| |¡dS)Nrz Oldest framerzInvalid frame count (%s))rVrrÑr×Úmaxrÿ)r-r¨röÚnewframerrrÚdo_up¢s  z Pdb.do_upcCs–|jdt|jƒkr"| d¡dSyt|p,dƒ}Wn"tk rT| d|¡dSX|dkrnt|jƒd}ntt|jƒd|j|ƒ}| |¡dS)Nrz Newest framezInvalid frame count (%s)r)rVrÐrUrrÑr×Úminrÿ)r-r¨rörrrrÚdo_down¶s z Pdb.do_downcCsf|rPy t|ƒ}Wn"tk r2| d|¡dSX||jjkrT| d¡dSnd}| |j|¡dS)NzError in argument: %rz7"until" line number is smaller than current line numberr)rÑr×rrWrkZ set_until)r-r¨rrrrÚdo_untilÊs   z Pdb.do_untilcCs | ¡dS)Nr)rP)r-r¨rrrÚdo_stepâsz Pdb.do_stepcCs| |j¡dS)Nr)Zset_nextrW)r-r¨rrrÚdo_nextìs z Pdb.do_nextcCs<|r4ddl}tjdd…}| |¡t_|tjdd…<t‚dS)Nrr)ÚshlexrÚargvr–r)r-r¨rZargv0rrrÚdo_runõs  z Pdb.do_runcCs| |j¡dS)Nr)Z set_returnrW)r-r¨rrrÚ do_returns z Pdb.do_returncCs>|js2yt tj|j¡t_Wntk r0YnX| ¡dS)Nr)r@r†r‡rRr r…r×Z set_continue)r-r¨rrrÚ do_continueszPdb.do_continuec Cs¾|jdt|jƒkr"| d¡dSy t|ƒ}Wntk rL| d¡YnnXy:||j_|j|jd|f|j|j<| |j|j¡Wn0tk r¸}z| d|¡Wdd}~XYnXdS)Nrz)You can only jump within the bottom framez)The 'jump' command requires a line numberrzJump failed: %s) rVrÐrUrrÑr×rWrkrq)r-r¨ÚerrrÚdo_jump s   z Pdb.do_jumpcCs¼t d¡|jj}|j}t|j|j|jƒ}d|j   ¡|_ |  d¡yt  |j |||f¡Wn<tk r˜t ¡dd…}| tj|Žd  ¡¡YnX|  d¡t |j¡|j|_dS)Nz(%s) zENTERING RECURSIVE DEBUGGERrŒruzLEAVING RECURSIVE DEBUGGER)rÚsettracerWr!r]r rKrLrMr7rdrOÚ call_tracingrr³ryrrwrxZtrace_dispatchrp)r-r¨r‘rÚpryrrrÚdo_debug=s    z Pdb.do_debugcCsd|_| ¡dS)NTr)Ú_user_requested_quitÚset_quit)r-r¨rrrÚdo_quitTsz Pdb.do_quitcCs| d¡d|_| ¡dS)Nr1Tr)rOrr)r-r¨rrrÚdo_EOF_s z Pdb.do_EOFcCs’|jj}|j}|j|j}|jtj@r.|d}|jtj@rB|d}xJt |ƒD]>}|j |}||krz|  d|||f¡qL|  d|f¡qLWdS)Nrz%s = %rz%s = *** undefined ***) rWrZr]Ú co_argcountÚco_kwonlyargcountÚco_flagsr Z CO_VARARGSZCO_VARKEYWORDSÚrangeÚ co_varnamesrO)r-r¨ÚcoÚdictrÇr*ÚnamerrrÚdo_argshs    z Pdb.do_argscCs.d|jkr | t|jdƒ¡n | d¡dS)NrszNot yet returned!)r]rOrˆr)r-r¨rrrÚ do_retvalys z Pdb.do_retvalcCsNyt||jj|jƒSt ¡dd…}| tj|Žd  ¡¡‚YnXdS)NrŒru) rØrWr!r]rryrrwrxrd)r-r¨ryrrrÚ_getvalƒs z Pdb._getvalcCshy.|dkrt||jj|jƒSt||j|jƒSWn4t ¡dd…}tj|Žd  ¡}t d|ƒSdS)NrŒruz** raised %s **) rØrWr!r]r"rryrwrxrdr,)r-r¨rQryrärrrr‚‹szPdb._getval_exceptcCs*y| t| |¡ƒ¡Wn YnXdS)N)rOrˆr!)r-r¨rrrÚdo_p–szPdb.do_pcCs,y| t | |¡¡¡Wn YnXdS)N)rOÚpprintZpformatr!)r-r¨rrrÚdo_ppŸsz Pdb.do_ppcCsdd|_d}|rš|dkršy^d|krX| d¡\}}t| ¡ƒ}t| ¡ƒ}||krr||}nt| ¡ƒ}td|dƒ}WqÊtk r–| d|¡dSXn0|jdks¬|dkrÀtd|jj dƒ}n |jd}|dkrÚ|d}|jj j }|  |¡}yZt  ||jj¡}| ||d|…|||j¡t|t|ƒƒ|_t|ƒ|krF| d¡Wntk r^YnXdS) Nr&rÆr®rézError in argument: %ré z[EOF])rpr–rÑrdrr×rrrWrkrZrjÚget_file_breaksrìÚgetlinesr!Ú _print_linesrrÐrOrN)r-r¨ZlastÚfirstrÚ breaklistr$rrrÚdo_list¬s>        z Pdb.do_listc Csj|jjj}| |¡}yt|jƒ\}}Wn,tk rR}z| |¡dSd}~XYnX| ||||j¡dS)N)rWrZrjr'r%rrr))r-r¨rr+r$rrärrrÚ do_longlistßs   zPdb.do_longlistc Csly| |¡}Wn dSyt|ƒ\}}Wn0ttfk rZ}z| |¡dSd}~XYnX| ||¡dS)N)r!r%rÚ TypeErrorrr))r-r¨r#r$rrärrrÚ do_sourceís z Pdb.do_sourcerc Cs²|r|j}|j |d¡}nd}}xŠt||ƒD]|\}}t|ƒ d¡} t| ƒdkrX| d7} ||krj| d7} n| d7} ||kr„| d7} n||kr”| d7} | | d| ¡¡q.WdS) Nrurèér”ÚBz->z>>ú ) rkr<r€rr˜ÚrjustrÐrOrž) r-r$rrÔrQZcurrent_linenoZ exc_linenorrÚsrrrr)þs    zPdb._print_linescCsÆy| |¡}Wn dSd}y |j}Wntk r<YnX|rV| d|j¡dSy |jj}Wntk rvYnX|r| d|j¡dS|jtkr´| d|j|j f¡dS| t|ƒ¡dS)Nz Function %sz Method %sz Class %s.%s) r!rÚr³rOrÛrÓÚ __class__Útyperr)r-r¨Úvaluer)rrrÚ do_whatiss.   z Pdb.do_whatiscCsp|s<| d¡x\|j |ji¡ ¡D]}| d|¡q$Wn0| |¡}||j |ji¡|<| d||f¡dS)NzCurrently displaying:z%s: %rzdisplay %s: %r)rOr9r€rWrr‚Ú setdefault)r-r¨rëÚvalrrrÚ do_display6s  zPdb.do_displaycCsT|r@y|j |ji¡|=WqPtk r<| d|¡YqPXn|j |jd¡dS)Nznot displaying %s)r9r€rWrËrrc)r-r¨rrrÚ do_undisplayIs zPdb.do_undisplaycs‡fdd„|j |ji¡DƒS)Ncsg|]}| ˆ¡r|‘qSr)r¿)rÀr )r¸rrrÂYsz*Pdb.complete_undisplay..)r9r€rW)r-r¸rr¹rºr)r¸rÚcomplete_undisplayXszPdb.complete_undisplaycCs*|jj ¡}| |j¡tjd|ddS)Nz *interactive*)Zlocal)rWr!rÉrÊr]r)Úinteract)r-r¨rÎrrrÚ do_interact\s  zPdb.do_interactcCs¨| ¡}t|ƒdkrLt|j ¡ƒ}x$|D]}| d||j|f¡q(WdS|d|jkrˆt|ƒdkrˆ| d|d|j|df¡nd |dd…¡|j|d<dS)Nrz%s = %srr”)r–rÐÚsortedr8rÍrOr™)r-r¨rŸrÍr•rrrÚdo_aliasfs  "z Pdb.do_aliascCs6| ¡}t|ƒdkrdS|d|jkr2|j|d=dS)Nr)r–rÐr8)r-r¨rŸrrrÚ do_unalias‰s  zPdb.do_unaliascs‡fdd„|jDƒS)Ncsg|]}| ˆ¡r|‘qSr)r¿)rÀÚa)r¸rrr“sz(Pdb.complete_unalias..)r8)r-r¸rr¹rºr)r¸rÚcomplete_unalias’szPdb.complete_unaliasr rrr rrcCs8yx|jD]}| |¡q WWntk r2YnXdS)N)rUrqrN)r-Ú frame_linenorrrrý¡s  zPdb.print_stack_tracecCs6|\}}||jkrd}nd}| || ||¡¡dS)Nz> z )rWrOZformat_stack_entry)r-rEZ prompt_prefixrQrr}rrrrq¨s  zPdb.print_stack_entrycCs¤|stj ||¡Sy}xtj  |¡r¦t  |¡}qŽWtj ||¡}tj |¡rˆ|SqˆWdS)Nrr1z.py) rBrCÚisabsÚexistsr™rrir:ÚsplitextÚislinkÚreadlink)r-rr_ÚrootZextÚdirnameÚfullnamerrrrÖÞs"   zPdb.lookupmodulec Csrd|_d|_ddl}| |¡\}}}| |j¡|_ddl}|j  ¡|j  d|j|j |j |t dœ¡| |¡dS)NTFrÚ__main__)rÚ__file__Ú __package__Ú __loader__Ú__spec__Ú __builtins__)r;rÚrunpyZ_get_module_detailsrirjr:rTÚ__dict__rXrÊÚparentÚloaderrYr)r-Z module_namerZZmod_nameZmod_specr)rTrrrÚ _runmoduleös  zPdb._runmodulec Cstddl}|j ¡|j d|tdœ¡d|_| |¡|_d|_t |dƒ}d|  ¡|jf}WdQRX|  |¡dS)NrrT)rrUrYTFÚrbzexec(compile(%r, %r, 'exec'))) rTr[rXrÊrYr;rir:rrÚreadr)r-rrTrÚ statementrrrÚ _runscripts    zPdb._runscript)r/NNNFT)r)N)rN)wrrrr…r4rRrSrTrar^rhrmrlrtr~rrr„rgr‰r’r¢rer£rOrr¾rÅr²rÒZcomplete_commandsrårÞZdo_bZcomplete_breakZ complete_bræZcomplete_tbreakrÝrßrðZcomplete_enableròZcomplete_disablerôZcomplete_conditionr÷Zcomplete_ignorerüZdo_clZcomplete_clearZ complete_clrþZdo_wZdo_btrÿrZdo_urZdo_drZdo_untrZdo_srZdo_nr Z do_restartr Zdo_rr Zdo_cZdo_contrZdo_jrZcomplete_debugrZdo_qZdo_exitrrZdo_ar Zdo_rvr!r‚r"r$Zcomplete_printZ complete_pZ complete_ppr,Zdo_lr-Zdo_llr/Zcomplete_sourcer)r8Zcomplete_whatisr;Zcomplete_displayr<r=r?rArBrDr§rýÚ line_prefixrqrFZdo_hrJrKrÖr^rbrrrrr ˆsè -     M ]!!.    1  ! #    ÚwhereZdownZupÚbreakZtbreakrXrñrïrõZ conditionrFÚstepr¡ZuntilZjumpÚreturnZretvalÚcontinuer&ZlonglistrŸrÚppZwhatisÚsourceZdisplayZ undisplayr>r•ZunaliasÚdebugÚquitr¥z cCstƒ |||¡dS)N)r r)rar‘rrrrr7scCstƒ |||¡S)N)r r )Z expressionr‘rrrrr :scCst|||ƒdS)N)r)rar‘rrrrr =scOstƒj||ŽS)N)r r )rŸÚkwdsrrrr As)ÚheadercCs,tƒ}|dk r| |¡| t ¡j¡dS)N)r rOrrÚ _getframeÚf_back)rnÚpdbrrrrDs cCsB|dkrt ¡d}|dkr$tdƒ‚tƒ}| ¡| d|¡dS)NrŒzAA valid traceback must be passed if no exception is being handled)rryr×r rSrg)ÚtrrrrrLs cCsttjƒdS)N)rrÚlast_tracebackrrrrr Zszimport x; x.main()cCs ttƒdS)N)rÚTESTCMDrrrrÚtestbsrucCsddl}| t¡dS)Nr)ÚpydocZpagerrI)rvrrrrfsausage: pdb.py [-c command] ... [-m module | pyfile] [arg] ... Debug the Python program given by pyfile. Alternatively, an executable module or package to debug can be specified using the -m switch. Initial commands are read from .pdbrc files in your home directory and in the current directory, if they exist. Commands supplied with -c are executed after commands from .pdbrc files. To let the script run until an exception occurs, use "-c continue". To let the script run up to a given line X in the debugged file, use "-c 'until X'".c Cs ddl}| tjdd…dddg¡\}}|s>ttƒt d¡g}d}xJ|D]B\}}|dkrnttƒt ¡qL|d kr‚| |¡qL|d krLd }qLW|d}|sÀtj  |¡sÀtd |d ƒt d¡|tjdd…<|sätj  |¡tjd<t ƒ}|j   |¡x y2|r| |¡n | |¡|jr"PtdƒWqútk r`td|dƒtdd |¡ƒYqútk rtdddtt ¡dƒYqútk r¶t ¡t d¡Yqút ¡tdƒtdƒt ¡d} | d| ¡td|dƒYqúXqúWdS)Nrrzmhc:rzcommand=rŒF)z-hz--help)z-cz --command)z-mTzError:zdoes not existz*The program finished and will be restartedZ Restartingzwith arguments:r2r”z/The program exited via sys.exit(). Exit status:)r¤z2Uncaught exception. Entering post mortem debuggingz1Running 'cont' or 'step' will restart the programz#Post mortem debugger finished. The z will be restarted)Úgetoptrr r«Ú_usageÚexitrrBrCrMrRr rArEr^rbrrr™Ú SystemExitryÚ SyntaxErrorrwÚ print_excrg) rwZoptsrŸrFZ run_as_moduleÚoptZoptargr:rqrrrrrÚmainysb              r~rT)NN)NN)N)-rBrrr5r2r'r)r´r#r†r rwrìr³rÚ__all__rr%r+r˜r,rcr3r6r rIZ _help_orderZ_commandrordrJrr r r rrr rtrurrxr~rrqrrrrÚFsr    '  "    C