a 3êdg3õã@sœddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZGdd„deƒZgd¢Zdd„Zdd„Zd d „ZGd d „d eƒZd ZGdd„dejejƒZedurgd¢ZeD] Zeeedeƒj ¡d7Zqèeej j7Z[[d+dd„Z!d,dd„Z"dd„Z#dd„Z$ddœdd„Z%d-dd„Z&d d!„Z'd"Z(d#d$„Z)d%d&„Z*d'Z+d(d)„Z,e-d*kr˜ddl.Z.e. ,¡dS).éNc@s eZdZdS)ÚRestartN)Ú__name__Ú __module__Ú __qualname__©rrú/usr/local/lib/python3.9/pdb.pyrWsr) ÚrunÚpmÚPdbÚrunevalÚrunctxÚruncallÚ set_traceÚ post_mortemÚhelpcCsœt dt |¡¡}zt |¡}Wnty6YdS0|Lt|ddD].\}}| |¡rJ|||fWdƒSqJWdƒn1sŽ0YdS)Nzdef\s+%s\s*[(]é)Ústart)ÚreÚcompileÚescapeÚtokenizeÚopenÚOSErrorÚ enumerateÚmatch)ÚfuncnameÚfilenameZcreÚfpÚlinenoÚlinerrrÚ find_function^s  <r cCsXt |¡\}}t |¡r,|j|jur,|dfSt |¡r>|dfSt ||d…¡|dfS©Nr)ÚinspectZ findsourceZisframeÚ f_globalsÚf_localsZismoduleZgetblock)ÚobjÚlinesrrrrÚgetsourcelinesks  r'cCs8tt |¡ƒ}| ¡|D]\}}||kr|SqdS©Nr)ÚlistÚdisZfindlinestartsÚreverse)ÚcodeZlastiZ linestartsÚirrrrÚ lasti2linenots   r.c@seZdZdd„ZdS)Ú_rstrcCs|S©Nr©ÚselfrrrÚ__repr__sz_rstr.__repr__N)rrrr3rrrrr/}sr/z -> c@s$eZdZdZd¢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„ZWdtdu„ZXdvdw„ZYeZZeZ[eZ\dxdy„Z]e]Z^dzd{„Z_e_Z`d|d}„ZaeZbd¥dd€„Zcdd‚„ZdeZedƒd„„ZfeZgd…d†„Zhd‡dˆ„Zid‰dŠ„Zjd‹dŒ„ZkddŽ„Zldd„Zmgd‘¢Znd’d“„Zoepfd”d•„Zqd–d—„ZrerZsd˜d™„Ztdšd›„Zudœd„ZvdždŸ„Zwd d¡„ZxdS)¦r NÚtabFTc Csbtjj||dtj ||||¡t d¡|r6d|_d|_i|_ i|_ d|_ d|_ i|_ zddl}| d¡Wnty‚Yn0d|_||_g|_|r@z@ttj d¡ƒ}|j |¡Wdƒn1sÐ0YWntyîYn0z:td ƒ}|j |¡Wdƒn1s0YWnty>Yn0i|_i|_i|_d|_d|_dS) N)Úskipzpdb.Pdbrz(Pdb) ÚFz `@#$%^&*()=+[{]}\|;:'",<>?z~/.pdbrcz.pdbrc)ÚbdbÚBdbÚ__init__ÚcmdÚCmdÚsysÚauditZ 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) r2Ú completekeyÚstdinÚstdoutr5rGZreadrcrDZrcFilerrrr9ŽsF  .  0z Pdb.__init__cCs*|jr t‚| d¡| ¡| |¡dS)Nz- Program interrupted. (Use 'cont' to resume).)rFÚKeyboardInterruptÚmessageÚset_stepr)r2ÚsignumÚframerrrÚsigint_handler½s  zPdb.sigint_handlercCstj |¡| ¡dSr0)r7r8ÚresetÚforgetr1rrrr[Äs z Pdb.resetcCs&d|_g|_d|_d|_|j ¡dSr()rÚstackÚcurindexÚcurframerCÚclearr1rrrr\Ès z Pdb.forgetcCsh| ¡| ||¡\|_|_|rDt|jj|jƒ}||j|j<|j }q|j|jd|_ |j j |_ |  ¡Sr()r\Z get_stackr]r^r.Útb_frameÚf_codeÚtb_lastirCÚtb_nextr_r$Úcurframe_localsÚ execRcLines)r2ÚfÚtbrrrrÚsetupÏs  z Pdb.setupcCsd|js dS|j}| ¡g|_|r`| ¡ ¡}|r|ddkr| |¡r|jt|ƒ7_dSqdS)Nrú#T)rHr+ÚpopÚstripÚonecmdÚreversed)r2rHrrrrrfás  zPdb.execRcLinescCs.|jr dS| |¡r*| d¡| |d¡dS)Nz--Call--)rBZ stop_hererVÚ interaction)r2rYZ argument_listrrrÚ user_callõs   z Pdb.user_callcCsH|jr.|j| |jj¡ks$|jdkr(dSd|_| |¡rD| |d¡dS)NrF)rBrAÚcanonicrbÚ co_filenameÚf_linenoÚ bp_commandsro)r2rYrrrÚ user_lineþsÿ z Pdb.user_linecCs”t|ddƒr|j|jvr|j}d|_|j}| |d¡|j|D]}| |¡q@||_|j|sr| |j|j ¡|j |r„|  ¡|  ¡dSdS)NÚ currentbpFrr) ÚgetattrrvrMÚlastcmdrirmrOÚprint_stack_entryr]r^rNÚ_cmdloopr\)r2rYrvZ lastcmd_backrrrrrts"  ÿ    zPdb.bp_commandscCs.|jr dS||jd<| d¡| |d¡dS)NÚ __return__z --Return--)rBr$rVro)r2rYZ return_valuerrrÚ user_return s   zPdb.user_returncCsh|jr dS|\}}}||f|jd<|s2|tur2dnd}| d|t ||¡d ¡f¡| ||¡dS)NZ __exception__z Internal r6z%s%séÿÿÿÿ)rBr$Ú StopIterationrVÚ tracebackÚformat_exception_onlyrlro)r2rYÚexc_infoÚexc_typeÚ exc_valueÚ exc_tracebackÚprefixrrrÚuser_exception(s ÿÿÿzPdb.user_exceptioncCs@zd|_| ¡d|_Wq\}}| |¡}||ur||kr|||<| d|||f¡qdS)Nzdisplay %s: %r [old: %r])r@Úgetr_ÚitemsÚ_getval_exceptrV)r2r@ÚexprZoldvalueZnewvaluerrrÚpreloopIs ÿz Pdb.preloopcCsrtjr4zt tjtj¡Wnty,Yn0dt_| ||¡rL| ¡dS| |j|j ¡|  ¡| ¡dSr0) r Ú_previous_sigint_handlerÚsignalÚSIGINTÚ ValueErrorrir\ryr]r^rz)r2rYrrrrroVs  zPdb.interactioncCs|dur| t|ƒ¡dSr0)rVÚrepr)r2r%rrrÚ displayhookhszPdb.displayhookcCsº|dd…dkr|dd…}|j}|jj}zvt|dddƒ}tj}tj}tj}z:|jt_|jt_|jt_t|||ƒW|t_|t_|t_n|t_|t_|t_0Wn|  ¡Yn0dS)Nrú!Ú zZsingle) rer_r#rr<rTrSr’ÚexecÚ _error_exc)r2rÚlocalsÚglobalsr,Z save_stdoutZ save_stdinZsave_displayhookrrrÚdefaultps*þ z Pdb.defaultcCsØ| ¡s |S| ¡}|d|jvr†|j|d}d}|dd…D] }| dt|ƒ|¡}|d7}q@| dd |dd…¡¡}| ¡}q|ddkrÔ| d¡}|dkrÔ||dd… ¡}|j  |¡|d|…  ¡}|S) Nrrú%z%*ú Úaliasz;;é) rlÚsplitr?ÚreplaceÚstrÚjoinÚfindÚlstripÚcmdqueueÚappendÚrstrip)r2rÚargsÚiiZtmpArgZmarkerÚnextrrrÚprecmd…s(ÿ     z Pdb.precmdcCs"|jstj ||¡S| |¡SdSr0)rPr:r;rmÚhandle_command_def)r2rrrrrmžsz Pdb.onecmdcCsÂ| |¡\}}}|sdS|dkr0d|j|j<dS|dkrBg|_dS|j|j}|rf| |d|¡n | |¡zt|d|ƒ}Wntyš|j}Yn0|j |j vr¾d|j |j<g|_dSdS)NZsilentTÚendrr›Údo_F) Z parselinerOrQr¤rMr¥rwÚAttributeErrorr™rÚcommands_resumingrN)r2rr:ÚargZcmdlistÚfuncrrrr«ªs,       zPdb.handle_command_defcCst||jddS)N©Úfile©ÚprintrT©r2ÚmsgrrrrVÈsz Pdb.messagecCstd||jddS)Nz***r²r´r¶rrrÚerrorËsz Pdb.errorcCs¤| ¡ d¡rgSz| ||||¡}Wnty<g}Yn0t t |¡d¡}|D]H}tj |¡rv|  |d¡qVtj  |¡rV|  ¡ d¡rV|  |d¡qV|S)N)ú:ú,Ú*ú/)ú.pyz.pywr¹) rlÚendswithÚ_complete_expressionÚ ExceptionÚglobrrIrJÚisdirr¥ÚisfileÚlower)r2ÚtextrÚbegidxÚendidxÚretÚglobsÚfnrrrÚ_complete_locationÑs   zPdb._complete_locationcs‡fdd„ttjjƒDƒS)Ncs.g|]&\}}|durt|ƒ ˆ¡rt|ƒ‘qSr0)r Ú startswith)Ú.0r-Úbp©rÅrrÚ ès ÿz*Pdb._complete_bpnumber..)rr7Ú BreakpointÚ bpbynumber©r2rÅrrÆrÇrrÏrÚ_complete_bpnumberäszPdb._complete_bpnumberc s¾|js gSi|jj¥|j¥}dˆvr¤ˆ d¡‰z,|ˆd}ˆdd…D]}t||ƒ}qHWnttfytgYS0d ˆdd…¡d‰‡‡fdd„t|ƒDƒS‡fdd„|  ¡DƒSdS)NÚ.rrr}cs"g|]}| ˆd¡rˆ|‘qS)r}©rÌ©rÍÚn)Údottedr…rrrÐÿóz,Pdb._complete_expression..csg|]}| ˆ¡r|‘qSrrÖr×rÏrrrÐrÚ) r_r#reržrwÚKeyErrorr®r¡ÚdirÚkeys)r2rÅrrÆrÇÚnsr%Úpartr)rÙr…rÅrr¿ës   zPdb._complete_expressioncCs6|sttjjƒd}n&z t|ƒ}Wn| d¡YdS0||_||jvrj|j||j||j |f}nd}g|j|<d|j|<d|j |<|j }d|_ d|_ z„z |  ¡Wnft y|rì|d|j|<|d|j|<|d|j |<n|j|=|j|=|j |=| d¡Yn0Wd|_ ||_ nd|_ ||_ 0dS) Nrz.Usage: commands [bnum] ... endTFz(com) rrz1command definition aborted, old commands restored)Úlenr7rÑrÒÚintr¸rQrMrNrOr>rPr‡rU)r2r°ZbnumZold_command_defsZ prompt_backrrrÚ do_commandssF%   þ    ÿzPdb.do_commandsrc Cs>|s8|jr4| d¡tjjD]}|r| | ¡¡qdSd}d}d}| d¡}|dkrz||dd… ¡}|d|… ¡}|  d¡}d} |dkr|d|… ¡}|  |¡} | sÂ|  d|¡dS| }||dd… ¡}z t |ƒ}Wn$t y |  d|¡YdS0n¾z t |ƒ}Wn°t yÊzt||jj|jƒ} Wn|} Yn0z.t| dƒrf| j} | j} | j} | j}| j}WnD| |¡\} }}| s´|  d |¡YYdS| } t |ƒ}Yn0Yn0|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.r}zBreakpoint %d at %s:%d) ÚbreaksrVr7rÑrÒZbpformatr¢r£r¦ÚrfindÚ lookupmoduler¸rárÚevalr_r#reÚhasattrrãÚ__code__Úco_nameÚco_firstlinenorrÚlineinfoÚ defaultFileÚ checklineZ set_breakÚ get_breaksÚnumberr³r)r2r°Z temporaryrÎrrÚcondZcommaÚcolonrrgr±r,ÚokZlnrÚerrrrrÚdo_breakWs„         þ   ÿ  ÿz Pdb.do_breakcCs"|jjj}|dkr|jr|j}|S)Nz)r_rbrrrA)r2rrrrrí´s zPdb.defaultFilecCs| |d¡dSr!)rõ©r2r°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ér6rÕr2)ržràrlrírær ) r2Z identifierZfailedZidstringÚidÚpartsZfnameÚitemrgZanswerrrrrìÉs,          z Pdb.lineinfocCs„t|ddƒ}|r|jnd}t |||¡}|s:| d¡dS| ¡}|rr|ddksr|dd…dksr|dd…dkr€| d¡dS|S) Nr_z End of filerrjrùz"""z'''zBlank or comment)rwr#Ú linecacheÚgetlinerVrlr¸)r2rrrYrÉrrrrrîês  ÿÿ z Pdb.checklinec Csj| ¡}|D]X}z| |¡}Wn.tyL}z| |¡WYd}~q d}~00| ¡| d|¡q dS)Nz Enabled %s)ržÚget_bpbynumberrr¸ÚenablerV©r2r°r§r-rÎrôrrrÚ do_enables z Pdb.do_enablec Csj| ¡}|D]X}z| |¡}Wn.tyL}z| |¡WYd}~q d}~00| ¡| d|¡q dS)Nz Disabled %s)ržrÿrr¸ÚdisablerVrrrrÚ do_disables zPdb.do_disablec CsÀ| dd¡}z |d}Wnty.d}Yn0z| |d ¡¡}WnHtyb| d¡YnZtyŽ}z| |¡WYd}~n6d}~00||_|s¬| d|j¡n| d|j¡dS)Nr›rrúBreakpoint number expectedz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.) ržÚ IndexErrorrÿrlr¸rrñrVrð)r2r°r§rñrÎrôrrrÚ do_condition%s      zPdb.do_conditionc CsÜ| ¡}zt|d ¡ƒ}Wnd}Yn0z| |d ¡¡}WnHty`| d¡YnxtyŒ}z| |¡WYd}~nTd}~00||_|dkrÈ|dkr®d|}nd}| d||j f¡n| d|j ¡dS)Nrrrz %d crossingsz 1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.) ržrárlrÿrr¸rÚignorerVrð)r2r°r§ÚcountrÎrôZcountstrrrrÚ do_ignore@s,     ÿÿz Pdb.do_ignorec Cs†|srz tdƒ}Wnty&d}Yn0| ¡ ¡}|dvrndd„tjjDƒ}| ¡|D]}| d|¡qZdSd|vr|  d¡}|d|…}||dd…}z t |ƒ}Wnt yÈd |}Yn"0|  ||¡dd…}|  ||¡}|rú| |¡n|D]}| d|¡qþdS| ¡} | D]^}z| |¡}Wn0t yd}z| |¡WYd}~n"d}~00| |¡| d|¡q"dS) NzClear all breaks? Úno)ÚyZyescSsg|] }|r|‘qSrr)rÍrÎrrrrÐqrÚz Pdb.do_clear..z Deleted %sr¹rzInvalid line number (%s))ÚinputÚEOFErrorrlrÄr7rÑrÒZclear_all_breaksrVrårárrïZ clear_breakr¸ržrÿZclear_bpbynumber) r2r°ZreplyZbplistrÎr-rrrôZ numberlistrrrÚdo_clearcsF             z Pdb.do_clearcCs | ¡dSr0)Úprint_stack_tracerörrrÚdo_where–sz Pdb.do_wherecCs>||_|j|jd|_|jj|_| |j|j¡d|_dSr()r^r]r_r$reryr)r2rðrrrÚ _select_frame s  zPdb._select_framecCsx|jdkr| d¡dSzt|p"dƒ}Wn"tyJ| d|¡YdS0|dkrZd}ntd|j|ƒ}| |¡dS)Nrz Oldest framerúInvalid frame count (%s))r^r¸rárÚmaxr©r2r°r ZnewframerrrÚdo_up¨s   z Pdb.do_upcCs–|jdt|jƒkr"| d¡dSzt|p,dƒ}Wn"tyT| d|¡YdS0|dkrnt|jƒd}ntt|jƒd|j|ƒ}| |¡dS)Nrz Newest framerr)r^ràr]r¸rárÚminrrrrrÚdo_down¼s  z Pdb.do_downcCsf|rPz t|ƒ}Wn"ty2| d|¡YdS0||jjkrT| d¡dSnd}| |j|¡dS)NúError in argument: %rz7"until" line number is smaller than current line numberr)rárr¸r_rsZ set_until)r2r°rrrrÚdo_untilÐs    z Pdb.do_untilcCs | ¡dSr!)rWrörrrÚdo_stepèsz Pdb.do_stepcCs| |j¡dSr!)Zset_nextr_rörrrÚdo_nextòs z Pdb.do_nextcCs<|r4ddl}tjdd…}| |¡t_|tjdd…<t‚dS)Nrr)Úshlexr<Úargvržr)r2r°rZargv0rrrÚdo_runûs  z Pdb.do_runcCs| |j¡dSr!)Z set_returnr_rörrrÚ do_return s z Pdb.do_returncCs<|js0zt tj|j¡t_Wnty.Yn0| ¡dSr!)rGrŽrrZr rrZ set_continuerörrrÚ do_continuesÿ zPdb.do_continuec Cs¾|jdt|jƒkr"| d¡dSz t|ƒ}WntyJ| d¡Ynp0z:||j_|j|jd|f|j|j<| |j|j¡Wn2ty¸}z| d|¡WYd}~n d}~00dS)Nrz)You can only jump within the bottom framez)The 'jump' command requires a line numberrzJump failed: %s) r^ràr]r¸rárr_rsry)r2r°ÚerrrÚdo_jump&s    z Pdb.do_jumpcCsšt d¡|jj}|j}t|j|j|jƒ}d|j   ¡|_ |  d¡zt  |j |||f¡Wntyv| ¡Yn0|  d¡t |j¡|j|_dS)Nz(%s) zENTERING RECURSIVE DEBUGGERzLEAVING RECURSIVE DEBUGGER)r<Úsettracer_r#rer rRrSrTr>rlrVÚ call_tracingrrÀr–Ztrace_dispatchrx)r2r°r˜r—ÚprrrÚdo_debugCs     z Pdb.do_debugcCsd|_| ¡dS)NTr)Ú_user_requested_quitÚset_quitrörrrÚdo_quitYsz Pdb.do_quitcCs| d¡d|_| ¡dS)Nr6Tr)rVr(r)rörrrÚdo_EOFds z Pdb.do_EOFcCsŽ|jj}|j}|j|j}|jtj@r.|d}|jtj@rB|d}t |ƒD]>}|j |}||vrx|  d|||f¡qJ|  d|f¡qJdS)Nrz%s = %rz%s = *** undefined ***) r_rbreÚ co_argcountÚco_kwonlyargcountÚco_flagsr"Z CO_VARARGSZCO_VARKEYWORDSÚrangeÚ co_varnamesrV)r2r°ÚcoÚdictrØr-ÚnamerrrÚdo_argsms   z Pdb.do_argscCs.d|jvr | t|jdƒ¡n | d¡dS)Nr{zNot yet returned!)rerVr‘r¸rörrrÚ do_retval~s z Pdb.do_retvalcCs0zt||jj|jƒWS| ¡‚Yn0dSr0)rçr_r#rer–rörrrÚ_getvalˆs z Pdb._getvalcCsrz2|durt||jj|jƒWSt||j|jƒWSWn:t ¡dd…}tj|Žd  ¡}t d|ƒYS0dS)Nrr}z** raised %s **) rçr_r#rer$r<rrr€rlr/)r2r°rYrrôrrrrŠszPdb._getval_exceptcCs,t ¡dd…}| tj|Žd ¡¡dS)Nrr})r<rr¸rr€rl)r2rrrrr–šszPdb._error_exccCsJz| |¡}WnYdS0z| ||ƒ¡Wn| ¡Yn0dSr0)r6rVr–)r2r°r±ÚvalrrrÚ _msg_val_funcžszPdb._msg_val_funccCs| |t¡dSr0)r8r‘rörrrÚdo_p¨szPdb.do_pcCs| |tj¡dSr0)r8ÚpprintZpformatrörrrÚdo_pp®sz Pdb.do_ppcCsbd|_d}|rš|dkršz^d|vrX| d¡\}}t| ¡ƒ}t| ¡ƒ}||krr||}nt| ¡ƒ}td|dƒ}WqÊty–| d|¡YdS0n0|jdus¬|dkrÀtd|jj dƒ}n |jd}|durÚ|d}|jj j }|  |¡}zZt  ||jj¡}| ||d|…|||j¡t|t|ƒƒ|_t|ƒ|krF| d¡Wnty\Yn0dS) Nr)rÕrºréré z[EOF])rxržrárlrrr¸rr_rsrbrrÚget_file_breaksrýÚgetlinesr#Ú _print_linesrràrVrU)r2r°ZlastÚfirstrÚ breaklistr&rrrÚdo_list¸s@          ÿz Pdb.do_listc Csn|jjj}| |¡}zt|jƒ\}}Wn0tyV}z| |¡WYd}~dSd}~00| ||||j¡dSr0)r_rbrrr>r'rr¸r@)r2r°rrBr&rrôrrrÚ do_longlistës   zPdb.do_longlistc Cstz| |¡}WnYdS0zt|ƒ\}}Wn4ttfyb}z| |¡WYd}~dSd}~00| ||¡dSr0)r6r'rÚ TypeErrorr¸r@)r2r°r%r&rrôrrrÚ do_sourceùs z Pdb.do_sourcerc Cs®|r|j}|j |d¡}nd}}t||ƒD]|\}}t|ƒ d¡} t| ƒdkrV| d7} ||vrh| d7} n| d7} ||kr‚| d7} n||kr’| d7} | | d| ¡¡q,dS) Nr}rùér›ÚBz->z>>ú ) rsrCrˆrr ÚrjustràrVr¦) r2r&rrärYZcurrent_linenoZ exc_linenorrÚsrrrr@ s    zPdb._print_linescCsÆz| |¡}WnYdS0d}z |jj}Wnty@Yn0|rZ| d|j¡dSz |j}WntyvYn0|r| d|j¡dS|jtur´| d|j|j f¡dS| t|ƒ¡dS)Nz Method %sz Function %sz Class %s.%s) r6rãrérÀrVrêÚ __class__Útyperr)r2r°Úvaluer,rrrÚ do_whatiss.     z Pdb.do_whatiscCsl|s8| d¡|j |ji¡ ¡D]}| d|¡q"n0| |¡}||j |ji¡|<| d||f¡dS)NzCurrently displaying:z%s: %rzdisplay %s: %r)rVr@rˆr_r‰rŠÚ setdefault)r2r°rür7rrrÚ do_displayBs  zPdb.do_displaycCsR|r>z|j |ji¡|=WqNty:| d|¡YqN0n|j |jd¡dS)Nznot displaying %s)r@rˆr_rÛr¸rkrörrrÚ do_undisplayUs  zPdb.do_undisplaycs‡fdd„|j |ji¡DƒS)Ncsg|]}| ˆ¡r|‘qSrrÖ)rÍr"rÏrrrÐes ÿz*Pdb.complete_undisplay..)r@rˆr_rÓrrÏrÚcomplete_undisplaydszPdb.complete_undisplaycCs$i|jj¥|j¥}tjd|ddS)Nz *interactive*)Úlocal)r_r#rer,Úinteract)r2r°rÞrrrÚ do_interacthszPdb.do_interactcCs¤| ¡}t|ƒdkrHt|j ¡ƒ}|D]}| d||j|f¡q&dS|d|jvr„t|ƒdkr„| d|d|j|df¡nd |dd…¡|j|d<dS)Nrz%s = %srr›)ržràÚsortedr?rÝrVr¡)r2r°r§rÝrœrrrÚdo_aliasqs "z Pdb.do_aliascCs6| ¡}t|ƒdkrdS|d|jvr2|j|d=dSr()ržràr?)r2r°r§rrrÚ do_unalias”szPdb.do_unaliascs‡fdd„|jDƒS)Ncsg|]}| ˆ¡r|‘qSrrÖ)rÍÚarÏrrrОrÚz(Pdb.complete_unalias..)r?rÓrrÏrÚcomplete_unaliasszPdb.complete_unalias)r!rrr r*r#cCs2z|jD]}| |¡qWnty,Yn0dSr0)r]ryrU)r2Ú frame_linenorrrr¬s   zPdb.print_stack_tracecCs6|\}}||jurd}nd}| || ||¡¡dS)Nz> z )r_rVZformat_stack_entry)r2r\Z prompt_prefixrYrr…rrrry³s  ÿzPdb.print_stack_entrycCs¤|stj ||¡Sz>zt|d|ƒ}|ƒWWStyLt|d|ƒ}Yn0Wn typ| d|¡Yn00tjjdkr| d|¡dS|  |j   ¡¡dS)NZhelp_r­zNo help for %rrzJNo help for %r; please do not run Python with -OO if you need command help) r:r;Údo_helprwr®r¸r<ÚflagsÚoptimizerVÚ__doc__r¦)r2r°ZtopicZcommandrrrr]¾s     ÿz Pdb.do_helpcCs| |jjpd ¡¡dS)Nr6)rVÚ help_execr`rlr1rrrraØs z Pdb.help_execcCs tƒdSr0)rr1rrrÚhelp_pdbäsz Pdb.help_pdbcCsÊtj |¡rtj |¡r|Stj tjd|¡}tj |¡rP| |¡|jkrP|Stj |¡\}}|dkrp|d}tj |¡r€|StjD]>}tj  |¡r¢t  |¡}qŠtj ||¡}tj |¡r†|Sq†dS)Nrr6r½) rIrJÚisabsÚexistsr¡r<rqrAÚsplitextÚislinkÚreadlink)r2rrgÚrootÚextÚ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__)rBr(ÚrunpyZ_get_module_detailsrqrrrArlÚ__dict__r`ÚupdateÚparentÚloaderrqr)r2Ú module_namerrZmod_nameZmod_specr,rlrrrÚ _runmodules  úzPdb._runmodulecCsˆddl}|j ¡|j d|tdœ¡d|_| |¡|_d|_t   |¡"}d|  ¡|jf}Wdƒn1sp0Y|  |¡dS)Nrrl)rrmrqTFzexec(compile(%r, %r, 'exec'))) rlrsr`rtrqrBrqrAr(ÚioÚ open_codeÚreadr)r2rrlrÚ statementrrrÚ _runscripts þ    ÿ"zPdb._runscript)r4NNNFT)r)N)rN)yrrrrr9rZr[r\rirfrprurtr|r†rzrŒror’r™rªrmr«rVr¸rËrÔr¿râZcomplete_commandsrõríZdo_bZcomplete_breakZ complete_br÷Zcomplete_tbreakrìrîrZcomplete_enablerZcomplete_disablerZcomplete_conditionr Zcomplete_ignorerZdo_clZcomplete_clearZ complete_clrZdo_wZdo_btrrZdo_urZdo_drZdo_untrZdo_srZdo_nrZ do_restartr Zdo_rr!Zdo_cZdo_contr#Zdo_jr'Zcomplete_debugr*Zdo_qZdo_exitr+r4Zdo_ar5Zdo_rvr6rŠr–r8r9r;Zcomplete_printZ complete_pZ complete_pprCZdo_lrDZdo_llrFZcomplete_sourcer@rOZcomplete_whatisrQZcomplete_displayrRrSrVrXrYr[r¯rÚ line_prefixryr]Zdo_hrarbrærxr}rrrrr Šsìÿ /     M ]!!.   1  ! #    r )"rÚwhereZdownZupÚbreakZtbreakr`rrrZ conditionrMÚstepr©ZuntilZjumpÚreturnZretvalrÚcontinuer)Zlonglistr§r&ÚppZwhatisÚsourceZdisplayZ undisplayrUrœZunaliasÚdebugÚquitr­z cCstƒ |||¡dSr0)r r©r|r˜r—rrrrBsrcCstƒ |||¡Sr0)r r )Z expressionr˜r—rrrr Esr cCst|||ƒdSr0)rrˆrrrr Hsr cOstƒj|i|¤ŽSr0)r r )r§Úkwdsrrrr Lsr )ÚheadercCs,tƒ}|dur| |¡| t ¡j¡dSr0)r rVrr<Ú _getframeÚf_back)rŠÚpdbrrrrOs rcCsB|durt ¡d}|dur$tdƒ‚tƒ}| ¡| d|¡dS)NrzAA valid traceback must be passed if no exception is being handled)r<rrr r[ro)Útr&rrrrWs rcCsttjƒdSr0)rr<Úlast_tracebackrrrrr esr zimport x; x.main()cCs ttƒdSr0)rÚTESTCMDrrrrÚtestmsr‘cCsddl}| t¡dSr()ÚpydocZpagerr`)r’rrrrqsrausage: 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 Csddl}| tjdd…dddg¡\}}|s>ttƒt d¡g}d}|D]B\}}|dvrlttƒt ¡qJ|d vr€| |¡qJ|d vrJd }qJ|d}|s¼tj  |¡s¼td |d ƒt d¡|tjdd…<|sìtj  |¡}tj  |¡tjd<t ƒ}|j  |¡z6|r| |¡n | |¡|jr*WqtdƒWqþtyptd|dƒtdd tjdd…¡ƒYqþtyžtdddtt ¡dƒYqþtyÂt ¡t d¡Yqþt ¡tdƒtdƒt ¡d} | d| ¡td|dƒYqþ0qþdS)Nrrzmhc:rzcommand=rF)z-hz--help)z-cz --command)z-mTzError:zdoes not existz*The program finished and will be restartedZ Restartingzwith arguments:rIr›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)Úgetoptr<rrµÚ_usageÚexitr¥rIrJrdÚrealpathrjr rHrLrxr}r(rr¡Ú SystemExitrÚ SyntaxErrorrÚ print_excro) r“Zoptsr§rMZ run_as_moduleÚoptZoptargrArrŽrrrÚmain„sd                 ÿr›rl)NN)NN)N)/rIryrr<r:r7r*r,rÁr:rŽr"rrrýrÀrÚ__all__r r'r.r r/r~r8r;r r`Z _help_orderZ_commandrwrlrarr r r rrr rr‘rr”r›rrrrrrÚFsl    0     D