e-cSrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK r SSK r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJr SSK Jr "SS\5r/SQrS rS rS r "S S \!5r""SS5r#"SS\#5r$"SS\#5r%"SS\#5r&"SS\RN5r(Sr)"SS\RT\RV5r,\bR/SQr-\-H-r.\\/"\,S\.-5RRa5S-- rM/ \\,RbR- rC-C.S-Sjr2S-Sjr3S r4S!r5SS".S#jr6S.S$jr7S%r8S&r9S'r:S(r;S)r\?S,:XaSSK@r@\@R|"5 gg)/a The Python Debugger Pdb ======================= To use the debugger in its simplest form: >>> import pdb >>> pdb.run('') The debugger's prompt is '(Pdb) '. This will stop in the first function call in . Alternatively, if a statement terminated with an unhandled exception, you can use pdb's post-mortem facility to inspect the contents of the traceback: >>> >>> import pdb >>> pdb.pm() The commands recognized by the debugger are listed in the next section. Most can be abbreviated as indicated; e.g., h(elp) means that 'help' can be typed as 'h' or 'help' (but not as 'he' or 'hel', nor as 'H' or 'Help' or 'HELP'). Optional arguments are enclosed in square brackets. Alternatives in the command syntax are separated by a vertical bar (|). A blank line repeats the previous command literally, except for 'list', where it lists the next 11 lines. Commands that the debugger doesn't recognize are assumed to be Python statements and are executed in the context of the program being debugged. Python statements can also be prefixed with an exclamation point ('!'). This is a powerful way to inspect the program being debugged; it is even possible to change variables or call functions. When an exception occurs in such a statement, the exception name is printed but the debugger's state is not changed. The debugger supports aliases, which can save typing. And aliases can have parameters (see the alias help entry) which allows one a certain level of adaptability to the context under examination. Multiple commands may be entered on a single line, separated by the pair ';;'. No intelligence is applied to separating the commands; the input is split at the first ';;', even if it is in the middle of a quoted string. If a file ".pdbrc" exists in your home directory or in the current directory, it is read in and executed as if it had been typed at the debugger prompt. This is particularly useful for aliases. If both files exist, the one in the home directory is read first and aliases defined there can be overridden by the local file. This behavior can be disabled by passing the "readrc=False" argument to the Pdb constructor. Aside from aliases, the debugger is not directly programmable; but it is implemented as a class from which you can derive your own debugger class, which you can make as fancy as you like. Debugger commands ================= N)contextmanager) Completer)CodeTypec\rSrSrSrSrg)RestartazBCauses a debugger to be restarted for the debugged python program.N)__name__ __module__ __qualname____firstlineno____doc____static_attributes__r )/opt/imh/python3.13/lib/python3.13/pdb.pyrrasLrr) runpmPdbrunevalrunctxruncall set_trace post_mortemhelpcSn[R"U5HUnUbMURS:Xa=URRbURRs $UR s $UnMW UR $)zTry to find the first executable line of the code object. Equivalently, find the line number of the instruction that's after RESUME Return code.co_firstlineno if no executable line is found. NRESUME)disget_instructionsopname positionslinenoco_firstlineno)codeprevinstrs rfind_first_executable_liner&isn D%%d+   x 7%%1---&& & ,   rc^[R"S[R"T5-5n[R"U5nSnSnU [USS9H|upxURU5(aXxpVO U(aXX- nU(dM2[XQS5n [U4SjU R55n [!U 5n TXU -S- 4s sSSS5 $ SSS5 g![ aG [ R"U5nU(dg[R"SRU55nNf=f![a Mf=f!,(df  g=f)Nzdef\s+%s(\s*\[.+\])?\s*[(])startexecc3z># UH0n[U[5(dMURT:XdM,Uv M2 g7fN) isinstancerco_name).0cfuncnames r find_function..s4 S>a *1h 7!"<=IIs ;; ;)recompileescapetokenizeopenOSError linecachegetlinesioStringIOjoin enumeratematch SyntaxErrornext co_constsr&) r2filenamecrefplinesfuncdef funcstartr!liner#funccode lineno_offsets ` r find_functionrNzs1 **2RYYx5HH IC) ]]8 $ GI %b2LFyy%+7w"7f=D  S4>> SS :8 D }+Dq+HHH! 2 " 3 )""8, [[ ( )$# " sMC 9E D45EE 'D1 %D10D14 E>EEE Ec[[R"U55nUR5 UHup4X:dM Us $ gNr)listrfindlinestartsreverse)r#lasti linestartsir!s r lasti2linenorWs>c((./J  :M  rc\rSrSrSrSrSrg)_rstrz#String that doesn't quote its repr.cU$r-r selfs r__repr___rstr.__repr__s rr N)r r r r rr^rr rrrYrYs -rrYc:\rSrSr%\\S'\\-\S'\\S'Srg)_ExecutableTargetrEr# namespacer N) r r r r str__annotations__rdictrr rrrarasM S.OrracP\rSrSrSrSr\S5r\S5r\S5r Sr g) _ScriptTargetcL[RRU5Ul[RR UR5(d%[ SUS35 [ R"S5 [RRUR5(a%[ SUS35 [ R"S5 [ RR(d;[RRUR5[ RS'gg)NzError: z does not existr)z is a directoryr) ospathrealpath_targetexistsprintsysexitisdirflags safe_pathdirname)r]targets r__init___ScriptTarget.__init__sww''/ ww~~dll++ GF8?3 4 HHQK 77== & & GF8?3 4 HHQKyy""''//$,,7CHHQK#rcUR$r-rnr\s rr^_ScriptTarget.__repr__ ||rcUR$r-r{r\s rrE_ScriptTarget.filenames ||rc[R"UR5nSUR5<SUR<S3sSSS5 $!,(df  g=f)Nz exec(compile(z, z , 'exec')))r= open_codernread)r]rGs rr#_ScriptTarget.codes?\\$,, '2"2779-r$,,1AL( ' 's #A Ac6[SUR[SS9$)N__main__)r __file__ __builtins____spec__)rfrnrr\s rrc_ScriptTarget.namespaces\\%   rr{N r r r r rxr^propertyrEr#rcrr rrrhrhsJ 8MM   rrhcP\rSrSrSrSr\S5r\S5r\S5r Sr g) _ModuleTargetcLXlSSKnURUR5uo0lUlg![ a.n[ SU35 [R"S5 SnAgSnAf[a. [R"5 [R"S5 gf=fNrz ImportError: r)) rnrunpy_get_module_details_spec_code ImportErrorrprqrr Exception traceback print_excr]rwr_es rrx_ModuleTarget.__init__sw  (-(A(A$,,(O %Az4:  M!% & HHQKK     ! HHQK s(5 B#$A((8B#"B#cUR$r-r{r\s rr^_ModuleTarget.__repr__r}rc.URR$r-r co_filenamer\s rrE_ModuleTarget.filenamezz%%%rcUR$r-rr\s rr#_ModuleTarget.code zzrc [S[RR[RR UR 55UR RUR RUR [S9$Nr)r r __package__ __loader__rr rfrkrlnormcaseabspathrErparentloaderrr\s rrc_ModuleTarget.namespaceYWW%%bggoodmm&DE ))zz((ZZ%   rrrrnNrr rrrrsH &&  rrcP\rSrSrSrSr\S5r\S5r\S5r Sr g) _ZipTargetcSSKn[RRU5Ul[ RR SUR5 UR5uo0lUl g![a.n[SU35 [ R"S5 SnAgSnAf[a. [R"5 [ R"S5 gf=fr)rrkrlrmrnrqinsert_get_main_module_detailsrrrrprrrrrrs rrx_ZipTarget.__init__sww''/  4<<( (-(F(F(H %Az4:  M!% & HHQKK     ! HHQK sA22 C <$B%%8C C cUR$r-r{r\s rr^_ZipTarget.__repr__ r}rc.URR$r-rr\s rrE_ZipTarget.filename rrcUR$r-rr\s rr#_ZipTarget.coderrc [S[RR[RR UR 55UR RUR RUR [S9$rrr\s rrc_ZipTarget.namespacerrrNrr rrrrsH &&  rrc.^\rSrSrU4SjrSrSrU=r$)_PdbInteractiveConsolei c.>X l[TU] USS9 g)NT)locals local_exit)_messagesuperrx)r]nsmessage __class__s rrx_PdbInteractiveConsole.__init__!s  t4rc$URUSS9 g)Nr(endr)r]datas rwrite_PdbInteractiveConsole.write%s d #rr)r r r r rxrr __classcell__rs@rrr s5$$rrz -> c@^\rSrSrSrSr0rSdSjrSrSr Sr Sr S r S r \ rS rS rS rSrSrSrSr\S5rSrSr\S5rSrSrSrSrSrSr SeSjr!Sr"Sr#U4Sjr$S r%S!r&S"r'S#r(S$r)S%r*\&r+SfS&jr,S'r-\,r.\%r/\%r0S(r1\%r2S)r3S*r4S+r5\&r6S,r7\&r8S-r9\&r:S.r;\&r\%r?\%r@S0rA\ArB\ArCS1rDS2rES3rF\FrGS4rH\HrIS5rJ\JrKS6rL\LrMS7rN\NrOS8rP\PrQS9rR\RrSS:rT\T=rUrVS;rW\WrXS<rY\'rZS=r[\[r\\[r]S>r^S?r_\_r`S@ra\arbSArcSgSBjrdSCreSDrfSErgSFrhSGri\'rj\'rk\'rlSHrm\mrnSIro\orpSJrq\'rrShSKjrsSLrt\'ruSMrv\'rwSNrxSOrySPrzSQr{SRr|SSr}/STQr~SUr\4SVjrSWr\rSXrSYrSZrS[\4S\jrS]\4S^jrS_rS`rSiSajrSbrScrU=r$)jri2Nic[RRXS9 [RRXX#5 [ R "S5 U(aSUlSUl0Ul 0Ul SUl SUl 0Ul SSKnURS5 SUlXPl[RR&S-Ul/UlU(a{[+[,R.R1S 5S S 9nUR(R3U5 SSS5 [+S S S 9nUR(R3U5 SSS5 0Ul0Ul0UlSUlSUl[A5Ul!SUl"g![ a Nf=f!,(df  N=f![4a Nf=f!,(df  Ny=f![4a Nf=f) N)skipzpdb.Pdbrz(Pdb) r(Fz `@#%^&*()=+[{]}\|;:'",<>?z=.[](),"'+-*/%@&|<>~^z~/.pdbrczutf-8)encodingz.pdbrc)#bdbBdbrxcmdCmdrqaudit use_rawinputpromptaliases displaying mainpyfile_wait_for_mainpyfile tb_linenoreadlineset_completer_delimsr allow_kbdintnosigint identcharsrcLinesr9rkrl expanduserextendr:commandscommands_dopromptcommands_silentcommands_defining commands_bnumtuple_chained_exceptions_chained_exception_index) r] completekeystdinstdoutrrreadrcrrcFiles rrx Pdb.__init__;s ) E: )  !D   $)!    ) )*L M" '',,/GG  "'',,Z87KvLL''/L (W5LL''/6  !#!!&!$)7 ()%C   LK  65  sr F 'F5F$#F5, G6GG F! F!$ F2.F52F55 GG GGG G#"G#cUR(a[eURS5 UR5 UR U5 g)Nz- Program interrupted. (Use 'cont' to resume).)rKeyboardInterruptrset_stepr)r]signumframes rsigint_handlerPdb.sigint_handlerps3   # # EF  urcb[RRU5 UR5 gr-)rrresetforgetr\s rr Pdb.resetws  d rcSUl/UlSUl[US5(a7UR(a&URR R SS5 SUl0UlURR5 g)Nrcurframe__pdb_convenience_variables) r!stackcurindexhasattrr  f_globalspopcurframe_localsrclearr\s rr Pdb.forget{sd   4 $ $ MM # # ' '(Et L ! rcfUR5 URX5uUlUlU(aW[ UR R UR5nX0RUR 'URnU(aMWURURSUl URRUl URURSUR5 UR(a4URURSURUR5 UR (agUR Vs/sHBnUR#5(dMUR#5R%S5(aM@UPMD snUl/Ulggs snf)Nr_frame _exception#)r get_stackr r rWtb_framef_codetb_lastirtb_nextr f_localsrset_convenience_variablerrrstrip startswithcmdqueue)r]ftbr!rKs rsetup Pdb.setups? $(NN1$9! DM""++"4"4bkkBF*0NN2;; 'B b 4==1!4  $}}55 %%dmmXt}}M  # #  ) ) (()F)FG  <>% LL $   UD ) !rcLUR(a;URURURR5:wagSUlUR (aUR cUR5 gURU5(aURUS5 gg)z;This function is called when we stop or break at this line.NF) rrcanonicrr trace_opcodesf_lineno set_stepinstr bp_commandsr')r]rs r user_line Pdb.user_lines  $ $4<< 0H0H#II(-D %   ~~%""$   E " "   UD ) #rc[USS5(aURUR;aURnSUlURnUR US5 URUHnUR U5 M X0lUR U(d(URURUR5 URU(aUR5 UR5 gg)zCall every command that was set for the current active breakpoint (if there is one). Returns True if the normal interaction function must be called, False otherwise. currentbpFrNr)) getattrr4rlastcmdr#onecmdrprint_stack_entryr r r_cmdloopr)r]rr4 lastcmd_backrKs rr0Pdb.bp_commandss 4e , ,~~.IDN< I#I I>  " "#6 7 JJu ! MM != > MMO}}r!26R!R !!# KKM8 7  8 7s3D,B D<, D98D9< E c@UbUR[U55 gg)zkCustom displayhook for the exec in default(), which prevents assignment of the _ variable in the builtins. N)rrepr)r]objs r displayhookPdb.displayhookws ? LLc # rc#r# URnURUlSv Xlg!Xlf=f7fr-) completenamescompletedefault)r]rs r_disable_command_completionPdb._disable_command_completions8**  /!%!5!5D  !. "/ s 7,747c*^ [USS5n[SUR55(dg[U5m S0S.T S'[USS5 S U-nS [ R "US 5-S -S -S-nSS RST 55-S -S-S RST 55-S -[ R "US5-S -S-n0n[U0U5 US"5n[U 4SjUR55n[XBT US9 T SnUSRS5 URUS5 USn U b[[U 55 g![a GNf=f![a gf=f![a gf=f)zRun source code in closure so code object created within source can find variables in locals correctly returns True if the source is executed, False otherwise r+c3B# UHn[U[5v M g7fr-)r.r)r0consts rr3'Pdb._exec_in_closure..sKN5:eX..NsFN)result write_back __pdb_eval__evalz__pdb_eval__['result'] = ztry:   z finally: z' __pdb_eval__['write_back'] = locals()zdef __pdb_outer(): c3.# UH nSUS3v M g7f)rz = NoneNr r0vars rr3rs(Rks2cU'):ksz def __pdb_scope(): c3,# UH nSU3v M g7f)z nonlocal Nr rs rr3rs(V+3=)>+sz z return __pdb_scope.__code__ __pdb_outerc3n># UH*n[R"TRU55v M, g7fr-)typesCellTyperZ)r0r locals_copys rr3rs(WFVsenn[__S%9::FVs25)closurerrT)r6anyrDrfrBtextwrapindentr?r+rr co_freevarsrupdaterpr) r]sourceglobalsrr#source_with_closurercellspdb_eval eval_resultrs @r_exec_in_closurePdb._exec_in_closuresvz62KDNNKKK6l ' N#  : FJ /169F//&$/0267<< 6#yy(Rk(RR SUY Z7 8 $yy(V+(VV WZ^ ^ (vv>  ?BF  F ?  ?  $b" -- "WdFVFVWW   U ; ~. "">2  h|,-x(  " ${# $o   @    s6 E$ E5 F$ E21E25 FF FFcUSSS:XaUSSR5nURnURRnUn[R "US-SS5=nGc7UR 5 UnSn[R "USS5=ncUR(a [U5nOURRU5 URR5 UR R#5n[%U5(dFSUl URRS5 URR5 SSS5 gUR'S5nUSU-- n[R "USS5=ncMX@l SSS5 [(Rn[(R n[(R*n UR [(lUR[(l UR*[(lUR-XCU5(d [/XSU5 U[(l U[(lU [(lg![[4a SUl [S5 SSS5 gf=f!,(df  N=f!U[(l U[(lU [(lf=f! UR15 g=f) Nr)!rsinglez... r(z )rrr rcodeopcompile_commandrrinputEOFErrorrr6rprrflushrrrjrstriprqrrr+ _error_exc) r]rKrrbufferr#continue_prompt save_stdout save_stdinsave_displayhooks rdefault Pdb.defaults= 8s?48>>#3D%%--))* F..td{IxPPY557!F&.O#)#9#9&)X#VV4_,,'',_'= !KK--o> KK--/#'::#6#6#8D#&t99/1 $ 1 1$ 7 $ 1 1 3 &'87*(,{{6':$+-'$*#9#9&)X#VV4_($*L/80**KJ"  3 JJ ![[ "&"2"2,,VfEE/( & "2;%-.?#@'/1 %d &87'87D) & "2  OO sz1J411I=# I .BI= J44I= I=8J4 A"J+!J4 "I:/I=0J49I::I== J J4#J11J44Kc4SU;aU$S=p#/n[R"[R"U5R5H^nUupgpn U[ R :Xa US:XaXp2M'X:XdM.U[ R:XdMDURUSU SU45 M` U(dU$Sn /n UH"upn U RXUSU S3-5 U n M$ U RXS5 SRU 5$![Ra Us$f=f) zReplace the convenience variables in 'line' with their values. e.g. $foo is replaced by __pdb_convenience_variables["foo"]. Note: such pattern in string literals will be skipped$rxr)rz__pdb_convenience_variables["z"]Nr() r8generate_tokensr=r>rtokenOPNAMErf TokenErrorr?)r]rK dollar_start dollar_endreplace_variablest token_type token_stringr*rrlast_end line_piecesnames r_replace_convenience_variables"Pdb._replace_convenience_variables s& d?K$&&  --bkk$.?.H.HI:;7 %a)lc.A/4*(Z5::-E%,,l1os1v|-TU J!K 1 E   tU38UVZU[[]6^^ _H!2 4 ?+ww{##"" K sAC>1C>C>>DDc8UR5(dU$UR5nUSUR;aURUSn[SS5HnSU3U;aBU[ U5:aUR SUSS35 gUR SU3X#5nMNSU;dMVU[ U5:aUR S USS35 g O UR SS RUSS 55nUR5nUSUR;aMUSS :wa[URS 5nUS:aDXS-S R5nURRSU5 US UR5nURU5nU$)z*Handle alias expansion and ';;' separator.rr) %z Not enough arguments for alias ''r%*zToo many arguments for alias ' Naliasz;;)rsplitrrangerjerrorreplacer?findlstripr rrr)r]rKargsidxmarkerrCs rprecmd Pdb.precmd.szz||Kzz|1g%<<Q(DQ|se9$c$i' %Ed1gYa#PQ"<>$- -**40 0rcURU5up#nU(dgUS:XaSURUR'gUS:XagURURnU(aUR US-U-5 OUR U5 [ USU-5nURUR;aSURUR'gg![ a URnNMf=f)z8Handles one command line during command list definition.FsilentTrrdo_) rrrrrfr5AttributeErrorrr commands_resumingr)r]rKrrcmdlistfuncs rrPdb.handle_command_defes-$ (?7;D !3!3 4 E\-- 2 23  NN3s73; ' NN3  4-D ==D22 29>D " "4#5#5 6  <[TU]XX45nURH,nURU5(dMUR U5 M. U(aU$UR XX45nU(aU$UR XX45$r-)rrrrrf_complete_expressionr) r]textrKbegidxendidxrr expressionsrs rrPdb.completenamessy7(VD\\E%%&" O33DOK""''FC Crc<UR5RS5(a/$URXX45n[R"[R "U5S-5nUHn[ RRU5(aURUS-5 M=[ RRU5(dMcUR5RS5(dMURUS-5 M U$![a /nNf=f)N):,*/).pyz.pywr) rendswithrrglobr7rkrlrsrfisfilelower)r]rrKrrretglobsfns r_complete_locationPdb._complete_locations ::<  , ,I ++DGC $++d+c12Bww}}R   28$## (;(;O(L(L 28$    C sD DDc[[RR5VVs/sH6upVUcM [ U5R U5(dM+[ U5PM8 snn$s snnfr-)r@r Breakpoint bpbynumberrdr)r]rrKrrrVbps r_complete_bpnumberPdb._complete_bpnumbersZ%.cnn.G.G$H?$H51&)!f&7&7&=A$H? ??s A(A(A(cUR(d/$0URREUREnURS5(aVURRR S05nUVs/sH"owRUSS5(dMSU3PM$ sn$SU;aUR S5nXXSn USSHn [ X5n M SRUSS5S-n [U 5V s/sH!oRUS5(dMX-PM# sn $UR5V s/sHoRU5(dMU PM sn $s snf![[4a /s$f=fs sn fs sn f)Nrr r).rrx) r rrrrZrr5KeyErrorrr?dirkeys) r]rrKrrr conv_varsrdottedrpartrJns rrPdb._complete_expressions`}}IA '' @4+?+? @ ??3   //334QSUVI+4R94QR8QJavJ9R R $;ZZ_F m"1RLD!#,C)XXfSbk*S0F(+CM1LL4LJFJM M "wwy?y!LL,>Ay? ?!Sn-   N@s68E! E!<E&>E>E>;FF&E;:E;cURS5(aVURRRS05nUVs/sH"ofRUSS5(dMSU3PM$ sn$Sn/n[ URRUR -5n U R X5=n b,URU 5 US- nU R X5=n bM,U$s snf)Nrr r)r)rr rrZrrcompleterf) r]rrKrrrrstatematches completerrAs rrPdb.completedefaults ??3   //334QSUVI+4R94QR8QJavJ9R Rdmm558L8LLM !**477uD NN5 ! QJE"**477uDSs C! CctURURUR5 UR5 gr-)r8r r rar]rs rrwPdb._pdbcmd_print_frame_statuss) tzz$--89 rcU(d'[[RR5S- nO [ U5nUR U5 X l X R;a-URUURUURU4nOSn/URU'SURU'SURU'URnSUl SUlUR5 SUlXPl g! UR U5 g=f![anURSU-5 SnAgSnAff=f![ ay U(a7USURU'USURU'USURU'O'URU URU URU URS 5 Nf=f!SUlXPl f=f) aR(Pdb) commands [bpnumber] (com) ... (com) end (Pdb) Specify a list of commands for breakpoint number bpnumber. The commands themselves are entered on the following lines. Type a line containing just 'end' to terminate the commands. The commands are executed when the breakpoint is hit. To remove all commands from a breakpoint, type commands and follow it immediately with end; that is, give no commands. With no bpnumber argument, commands refers to the last breakpoint set. You can use breakpoint commands to start your program up again. Simply use the continue command, or step, or any other command that resumes execution. Specifying any command resuming execution (currently continue, step, next, return, jump, quit and their abbreviations) terminates the command list (as if that command was immediately followed by end). This is because any time you resume execution (even with a simple next or step), you may encounter another breakpoint -- which could have its own command list, leading to ambiguities about which list to execute. If you use the 'silent' command in the command list, the usual message about stopping at a breakpoint is not printed. This may be desirable for breakpoints that are to print a specific message and then continue. If none of the other commands print anything, you will see no sign that the breakpoint was reached. r)Nzcannot set commands: %sTFz(com) rrz1command definition aborted, old commands restored)rjrrrint_print_invalid_argget_bpbynumberr|rrrrrrrrNr)r]rbnumerrold_command_defs prompt_backs r do_commandsPdb.do_commandssJs~~001A5D 3x     % " == $ d 3 $ 6 6t < $ 4 4T : <  $   d'+t$%*T"kk  !% & LLN&+D "%KO '',  JJ036 7  *! L&6q&9 d#/?/B&&t,-=a-@$$T*MM$'**40((. JJJ K L&+D "%KsG C7DD:7D  D7D22D7:BF=:G<F==GGc8U(dlUR(aZURS5 [RRH+nU(dM URUR 55 M- gSnSnSnUR S5nUS:aZXS-SR5nURU5=n(aURSU<SU<35 gUSUR5nURS5n Sn U S:adUSU R5nURU5n U (dURS U-5 gU nXS-SR5n[U5nO [U5nU(dUR55nUR7XE5nU(axUR9UUX&U 5nU(aURU5 gUR;UU5S nURSUR<UR>UR@4-5 gg![a URS U-5 gf=f![a [UUR R"UR$5n O ! Un O=f['U S 5(a U R(n U R*n U R,n [/U 5nU R0nGN\! UR3U5upnU(dURS U-5 gUn [U5nGN=ff=f)a[b(reak) [ ([filename:]lineno | function) [, condition] ] Without argument, list all breaks. With a line number argument, set a break at this line in the current file. With a function name, set a break at the first executable line of that function. If a second argument is present, it is a string specifying an expression which must evaluate to true before the breakpoint is honored. The line number may be prefixed with a filename and a colon, to specify a breakpoint in another file (probably one that hasn't been loaded yet). The file is searched for on sys.path; the .py suffix may be omitted. z!Num Type Disp Enb WhereNrrr)Invalid condition rXrz%r not found from sys.pathzBad lineno: %s__func__zJThe specified object %r is not a function or was not found along sys.path.rxzBreakpoint %d at %s:%d)!breaksrrrrbpformatrr_compile_error_messagerrrfind lookupmoduler*r|rr rrr r5__code__r/r&rlineinfo defaultFile checkline set_break get_breaksnumberrrK)r]r temporaryrrEr!condcommar.colonr2r!rr#oklnrKs rdo_break Pdb.do_breakEs {{ @A..33Br R[[]34   19Qwx='')D11$77s7 sCDfu+$$&C # A:6E{))+H!!(+A 7(BCAgh-&&(C S  %S4'')H~~h/ ..4(KC 3__Xt4R8 5 ii"'':;< I  +c12  % $ 7 7 $ 4 46DD%tZ00#}}==D $||H7=F#//H%)-s);&R2 $FHK$LM!H WF1 %s[ H) IH=<H= L +I76L7I=;LA K1LL LLLcURRRnUS:XaUR(a URnU$)zProduce a reasonable default.r)r rrr)r]rEs rr=Pdb.defaultFiles3==''33 z !dooHrc(URUS5 g)ztbreak [ ([filename:]lineno | function) [, condition] ] Same arguments as break, but sets a temporary breakpoint: it is automatically deleted when first hit. r)N)rHr's r do_tbreak Pdb.do_tbreaks c1rcSnURS5n[U5S:XaUSR5nO%[U5S:XaUSR5nOU$US:XaU$URS5nUSS:XaUS [U5S:XaU$UR5n[U5S:XaUSnO"UR US5nU(aUnUSn[ XpR U55n U =(d U$) N)NNNrr)rr(rr])rrjrr=r:rNr,) r] identifierfailedidstringidpartsfnameitemr!answers rr< Pdb.lineinfos###C( x=A !""$B ]a !""$BM 8F]  8v a5zQ   " u:?8D!!%(+A8Dt\\%%89rc2[USS5nU(a UROSn[R"XU5nU(dUR S5 gUR 5nU(aUSS:XdUSSS:Xd USSS:XaUR S 5 gU$) zCheck whether specified line seems to be executable. Return `lineno` if it is, 0 if not (e.g. a docstring, comment, blank line or EOF). Warning: testing is not comprehensive. r Nz End of filerrrPz"""z'''zBlank or comment)r5rr;getlinerrr)r]rEr!rr rKs rr> Pdb.checklinesj$/#(d  59 LL 'zz|aC2Ah%D!H$5 JJ) * rcUR5nUH9nURU5nUR5 URSU-5 M; g![anUR U5 SnAM_SnAff=f)zoenable bpnumber [bpnumber ...] Enables the breakpoints given as a space separated list of breakpoint numbers. z Enabled %sN)rr,enablerr|rr]rrrVrr.s r do_enable Pdb.do_enablesi yy{A 0((+  \B./  3 A A7A22A7cUR5nUH9nURU5nUR5 URSU-5 M; g![anUR U5 SnAM_SnAff=f)adisable bpnumber [bpnumber ...] Disables the breakpoints given as a space separated list of breakpoint numbers. Disabling a breakpoint means it cannot cause the program to stop execution, but unlike clearing a breakpoint, it remains in the list of breakpoints and can be (re-)enabled. z Disabled %sN)rr,disablerr|rr_s r do_disablePdb.do_disablesiyy{A 1((+  ]R/0  3 rbc URSS5nUSnURU5=n(aURSU<SU<35 gUR USR 55nX5lU(dURSUR-5 gURSUR-5 g![a SnN|f=f![a URS 5 g[anURU5 SnAgSnAff=f) zcondition bpnumber [condition] Set a new condition for the breakpoint, an expression which must evaluate to true before the breakpoint is honored. If condition is absent, any existing condition is removed; i.e., the breakpoint is made unconditional. rr)r4rXNrz#Breakpoint %d is now unconditional.z$New condition set for breakpoint %d.Breakpoint number expected) rr8r IndexErrorr,rrCrrAr|)r]rrrCr.rs r do_conditionPdb.do_conditionsyya  7D11$77s7 sCD8 Q$$T!W]]_5B G BRYYNO CbiiOP D  5 JJ3 4  JJsOO s/6B: "C : C C  D ) D 2DD cdUR5nU(dURS5 g[U5S:XaSnO1[U5S:Xa[US5nOUR U5 gUR USR55nX4lUS:a.US:aSU-nOSnURSXTR4-5 gURS UR-5 g![a UR U5 gf=f![anURU5 SnAgSnAff=f) a_ignore bpnumber [count] Set the ignore count for the given breakpoint number. If count is omitted, the ignore count is set to 0. A breakpoint becomes active when the ignore count is zero. When non-zero, the count is decremented each time the breakpoint is reached and the breakpoint is not disabled and any associated condition evaluates to true. rhNr)rrz %d crossingsz 1 crossingz%Will ignore next %s of breakpoint %d.z-Will stop next time breakpoint %d is reached.) rrrjr*r|r+r,rignorerrA)r]rrcountrcountstrr.s r do_ignore Pdb.do_ignore9s yy{ JJ3 4  t9>E Y!^ DG   # #C (  *$$T!W]]_5BIqy19-5H+H D& 234 L!yy)*) '',   JJsOO s* C)."D )DD D/D**D/cU(d[S5nUR5R5nUS;a_[R R Vs/sH o3(dM UPM nnUR5 UHnURSU-5 M gSU;aURS5nUSUnXS-Sn[U5nURXg5SSnURXg5nU(aURU5 gWHnURSU-5 M gUR5n U H:nUR!U5nUR#U5 URSU-5 M< g![a SnGNof=fs snf![a SU-nNf=f![anURU5 SnAMSnAff=f) acl(ear) [filename:lineno | bpnumber ...] With a space separated list of breakpoint numbers, clear those breakpoints. Without argument, clear all breaks (but first ask confirmation). With a filename:lineno argument, clear all breaks at that line in that file. zClear all breaks? no)yyesz Deleted %sNrr)zInvalid line number (%s))rrrr rrrclear_all_breaksrr9r*r@ clear_breakr|rrr,clear_bpbynumber) r]rreplyrbplistrVrEr!r. numberlists rdo_clear Pdb.do_cleares 23KKM'')E $'*~~'@'@G'@B"'@G%%' BLL!23!  #: #A2AwHcd)C 9S:1=&&x8 3 !BLL!23! YY[ A 0((+%%a( \B./9  H 7036 7  3 sG E4 F"F< F 9F!4 FF FF! G+GGcVU(aURU5 gUR5 g)zw(here) Print a stack trace, with the most recent frame at the bottom. An arrow indicates the "current frame", which determines the context of most commands. 'bt' is an alias for this command. N)r+print_stack_tracer's rdo_where Pdb.do_wheres$   # #C (   rc~SUs=::a[UR5:de eXlURURSUlURRUlUR URSUR5 URURUR5 SUlg)Nrr) rjr r r rrrr8r!)r]rAs r _select_framePdb._select_framesF,S_,,,,,  4==1!4 #}}55 %%dmmXt}}M tzz$--89 rc<UR(dURS5 gU(d[UR5Hsup#X R:XaSOSn[ U5n[ U5S:aUSSS-nURUR cSOUS nURUSUSU35 Mu g[U5nS Us=::a[ UR5:aO OURUR cURS 5 gXplURSURUR 5 URURUR5 gURS 5 g![a URS 5 gf=f)a2exceptions [number] List or change current exception in an exception chain. Without arguments, list all the current exception in the exception chain. Exceptions will be numbered, with the current exception indicated with an arrow. If given an integer as argument, switch to the exception at that index. zDid not find chained exceptions. To move between exceptions, pdb/post_mortem must be given an exception object rather than a traceback.N>rPMz...z -z>3zArgument must be an integerrz;This exception does not have a traceback, cannot jump to itzNo exception with that number)rrr@rrrjrer*r|rr#r8r r )r]rixexcrrep indicatorrAs r do_exceptionsPdb.do_exceptionssy'' LL3  $T%=%=> "&C&C C3is8b=cr(U*C//3AAIr7  xq 1SE:;? SF:S!9!9::++F3AAIJJ\]06- 4!9!9&!A!O!OP&&tzz$--'@A :;  89 s9 E==FFc URS:XaURS5 g[U=(d S5nUS:aSnO[ SURU- 5nUR U5 g![a URSU-5 gf=f)zku(p) [count] Move the current frame count (default one) levels up in the stack trace (to an older frame). rz Oldest frameNr)Invalid frame count (%s))r rr*r|maxrr]rrnnewframes rdo_up Pdb.do_ups ==A  JJ~ &  qME 19H1dmme34H 8$  JJ1C7 8  sA,,B  B cURS-[UR5:XaURS5 g[ U=(d S5nUS:a[UR5S- nO/[ [UR5S- URU-5nURU5 g![ a URSU-5 gf=f)znd(own) [count] Move the current frame count (default one) levels down in the stack trace (to a newer frame). r)z Newest frameNrr)r rjr rr*r|minrrs rdo_down Pdb.do_downs ==1 DJJ / JJ~ &  qME 194::*H3tzz?Q. 0EFH 8$  JJ1C7 8  sB..CCcU(a8[U5nX RR::aURS5 gOSnUR URU5 g![a URSU-5 gf=f)aunt(il) [lineno] Without argument, continue execution until the line with a number greater than the current one is reached. With a line number, continue execution until a line with a number greater or equal to that is reached. In both cases, also stop when the current frame returns. Error in argument: %rNz7"until" line number is smaller than current line numberr))r*r|rr r. set_until)r]rr!s rdo_until Pdb.do_until s  S/// )*0 F t}}f-  2S89 s AB?BcVU(aURU5 gUR5 g)zs(tep) Execute the current line, stop at the first possible occasion (either in a function that is called or in the current function). Nr))r+rr's rdo_step Pdb.do_step"s$   # #C (  rclU(aURU5 gURUR5 g)zan(ext) Continue execution until the next line in the current function is reached or it returns. Nr))r+set_nextr r's rdo_next Pdb.do_next0s+   # #C (  dmm$rcU(aESSKn[RSSnURU5[lU[RSS&[ e![a#nUR SU<SU<35 SnAgSnAff=f)zrun [args...] Restart the debugged python program. If a string is supplied it is split with "shlex", and the result is used as the new sys.argv. History, breakpoints, actions and debugger options are preserved. "restart" is an alias for "run". rNr)z Cannot run rX)shlexrqargvrr|rr)r]rrargv0rs rdo_run Pdb.do_run=sj  HHQqME  ;;s+!CHHRaL   #q9: sA BA;;BclU(aURU5 gURUR5 g)zAr(eturn) Continue execution until the current function returns. Nr))r+ set_returnr r's r do_return Pdb.do_returnSs+   # #C (   &rc U(aURU5 gUR(d9[R"[RUR5[ lUR5 g![a Nf=f)zNc(ont(inue)) Continue execution, only stop when a breakpoint is encountered. Nr)) r+rrzr{rrryr| set_continuer's r do_continuePdb.do_continue_sk   # #C ( }} MM&--1D1DE,     s8A55 BBcURS-[UR5:waURS5 g[ U5nXR lURURSU4URUR'URURUR5 g![anURSU-5 SnAgSnAff=f![a URS5 gf=f)adj(ump) lineno Set the next line that will be executed. Only available in the bottom-most frame. This lets you jump back and execute code again, or jump forward to skip code that you don't want to run. It should be noted that not all jumps are allowed -- for instance it is not possible to jump into the middle of a for loop or out of a finally clause. r)z)You can only jump within the bottom frameNrzJump failed: %sz)The 'jump' command requires a line number) r rjr rr*r r.r8r|)r]rrs rdo_jump Pdb.do_jumpus ==1 DJJ / JJB C  2c(C 2*- &,0JJt}},Ea,H#,M 4==)&&tzz$--'@A 2 ,q011 2 D JJB C Ds* CA-B44 C>CCC=<C=c<[R"S5 URRnURn[ UR URUR5nSURR5-Ul URS5 [R"URXU45 URS5 [R"UR 5 UR"Ulg![a UR5 N_f=f)zdebug code Enter a recursive debugger that steps through the code argument (which is an arbitrary expression or statement to be executed in the current environment). Nz(%s) zENTERING RECURSIVE DEBUGGERzLEAVING RECURSIVE DEBUGGER)rqsettracer rrrrrrrrr call_tracingrrrtrace_dispatchr6)r]rrrps rdo_debug Pdb.do_debugs T--))%%   $**dkk :T[[..00 23    QUUS6$: ; 12 T(()yy   OO  s#C>>DDc2SUlUR5 g)zNq(uit) | exit Quit from the debugger. The program being executed is aborted. Tr))_user_requested_quitset_quitr's rdo_quit Pdb.do_quits %)! rcTURS5 SUlUR5 g)z.EOF Handles the receipt of EOF as a command. r(Tr))rrrr's rdo_EOF Pdb.do_EOFs$ R$(! rc U(aURU5 gURRnURnURUR -nUR [R-(aUS-nUR [R-(aUS-n[U5HXnURUnXc;a,URU<SURX6U5<35 MCURU<S35 MZ g)z9a(rgs) Print the argument list of the current function. Nr) = z = *** undefined ***)r+r rr co_argcountco_kwonlyargcountco_flagsinspect CO_VARARGSCO_VARKEYWORDSr co_varnamesrr])r]rcorfrrVrs rdo_args Pdb.do_argss   # #C (  ]] ! !## NNR11 1 ;;++ +1Q ;;// /QqSqA>>!$D| $ D0QRS ?@ rcU(aURU5 gSUR;a/URURURSS55 gUR S5 g)zBretval Print the return value for the last return of a function. Nr=retvalzNot yet returned!)r+rrr]rr's r do_retval Pdb.do_retvalsU   # #C (  4// / LL)=)=l)KXV W JJ* +rc[XRRUR5$! UR 5 e=fr-)rr rrrr's r_getval Pdb._getvals8 ]]44d6J6JK K  OO  s),?cUc*[XRRUR5$[XRUR5$![ a'n[ SURU5-5sSnA$SnAff=f)Nz** raised %s **)rr rrrrdrYrE)r]rrrs rr\Pdb._getval_exceptsm D}C!8!8$:N:NOOC%..AA D*T-=-=c-BBC C Ds",AA BA;5B;Bcn[R"5nURURU55 gr-)rq exceptionrrEr]rs rrPdb._error_excs$mmo 4##C()rcURU5nURU"U55 g! g=f! UR5 g=fr-)rrr)r]rrvals r _msg_val_funcPdb._msg_val_funcsD ,,s#C  LLc #    OO s,30Ac [U5$![a+n[SUSURU5S35sSnA$SnAff=f)Nz *** repr(z ) failed: z ***)rrrYrE)r]rr^rs rr]Pdb._safe_reprsJ P9  P9TF*T5E5Ea5H4INO O Ps A =AAc0URU[5 g)z1p expression Print the value of the expression. N)rrr's rdo_pPdb.do_ps 3%rcDURU[R5 g)z9pp expression Pretty-print the value of the expression. N)rpprintpformatr's rdo_pp Pdb.do_pps 3/rcHSUlSnU(aUS:waSU;aOURS5up2[UR55n[UR55nX#:aX2-nOo[UR55n[ SUS- 5nOFURbUS:Xa$[ SURRS- 5nOURS-nUcUS-nURRRnURS 5(a<URRRS 5n[U[ 5(aUnUR#U5n[$R&"X@RR5nUR)XsS- UX6UR5 [+U[-U55Ul[-U5U:aUR/S 5 gg![ a UR SU-5 gf=f![0a gf=f) aXl(ist) [first[, last] | .] List source code for the current file. Without arguments, list 11 lines around the current line or continue the previous listing. With . as argument, list 11 lines around the current line. With one argument, list 11 lines starting at that line. With two arguments, list the given range; if the second argument is less than the first, it is a count. The current line in the current frame is indicated by "->". If an exception is being debugged, the line where the exception was originally raised or propagated is indicated by ">>", if it differs from the current line. rQNrrr)rrzz>> N) r.rrZr@rdrjustrjrr) r]rHr*r6rcurrent_lineno exc_linenor!rKss rrPdb._print_linesvs "^^N++E26J*, ,N%e3LFF !!!$A1vzSSS'T %T  LLTDKKM1 24rcURU5nSnURRnU(aUR SUR -5 gURnU(aUR SUR -5 gUR [La.UR SUR<SUR<35 gUR [U55 g! g=f![a Nf=f![a Nf=f)z3whatis expression Print the type of the argument. Nz Method %sz Function %szClass r) rr5r;rrr/rtyper r )r]rrr#s r do_whatis Pdb.do_whatiss  LL%E >>**D  LLt||3 4  >>D  LL5 6  ??d " LL%*:*:E