+
    Biy                       ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHtHt ^ R	IH t  ^ R
I!H"t" Rt# ! R R]$4      t%R t&R t'R t(R t)R t*R t+R t,R t-R t.R t/R t0R t1R t2R t3R t4R t5R t6R t7R  t8R! t9R" t:]Pv                  Px                  '       g   R# t=R$ t>R% t?R& t@R' tAR( tBR) tCR* tDR+ tER, tFR- tGR. tHR/ tI]P                  ! R04      tK]L! R1]KP                  4       R2 tNR3 tOR4 tPR5 tQR6 tRR7 tSR8 tT]#'       g   ]'       d   R9 tUR: tVR; tWR< tXR= tYR> tZR? t[]#'       g   R@ t\RA t]]#'       g   RB t^RC t_RD t`RE taRF tbRG tcRH td]P                  tfRI tgRJ thRK tiRL tjRM tkRN tlRO tmRP tnRQ toRR tpRS tqRT trRU tsRV ttRW tuRX tv]P                  ]P                  ! 4        ! RY RZ]	P                  4      4       4       tz ! R[ R\]	P                  4      t{]P                  ! 4        ! R] R^]	P                  4      4       t|]P                   ! R_ R`]	P                  4      4       t~]P                  ]P                  ! 4        ! Ra Rb]	P                  4      4       4       t]P                  ]P                  ! 4        ! Rc Rd]	P                  4      4       4       tRe t]Rf8X  d   ]	EP                  ! 4        R# R# )g    N)_set_event_loop_policy)	ExitStackredirect_stdout)StringIO)support)has_socket_support	os_helper)import_module)run_pty	FakeInput)kill_python)patchFc                   2   a  ] tR t^ t o R tR tR tRtV tR# )PdbTestInputc                    Wn         R # N)input)selfr   s   &&$/usr/lib/python3.14/test/test_pdb.py__init__PdbTestInput.__init__#   s    
    c                    \         P                  V n        \        V P                  4      \         n        \        \         R 4      '       d   \         P                  ! 4       V n        R# RV n        R# )gettraceN)sysstdin
real_stdinr   r   hasattrr   
orig_tracer   s   &r   	__enter__PdbTestInput.__enter__&   s<    ))djj)	,3C,D,D#,,.$r   c                    V P                   \        n        V P                  '       d#   \        P                  ! V P                  4       R # R # r   )r   r   r   r   settrace)r   excs   &*r   __exit__PdbTestInput.__exit__+   s+    OO	???LL) r   )r   r   r   N)	__name__
__module____qualname____firstlineno__r   r!   r&   __static_attributes____classdictcell____classdict__s   @r   r   r       s     O
* *r   r   c                      R # r    r1   r   r   test_pdb_displayhookr2   1       r   c                      R # r   r1   r1   r   r   test_pdb_basic_commandsr5   M   r3   r   c                      R # r   r1   r1   r   r   test_pdb_breakpoint_commandsr7      r3   r   c                      R # r   r1   r1   r   r   (test_pdb_breakpoint_ignore_and_conditionr9   j  r3   r   c                      R # r   r1   r1   r   r   -test_pdb_breakpoint_on_annotated_function_defr;     r3   r   c                      R # r   r1   r1   r   r   test_pdb_commandsr=     r3   r   c                      R # r   r1   r1   r   r   !test_pdb_breakpoint_with_filenamer?     r3   r   c                      R # r   r1   r1   r   r   $test_pdb_breakpoint_on_disabled_linerA     r3   r   c                      R # r   r1   r1   r   r   :test_pdb_breakpoints_preserved_across_interactive_sessionsrC   -  r3   r   c                      R # r   r1   r1   r   r   test_pdb_break_anywhererE   o  r3   r   c                      R # r   r1   r1   r   r   test_pdb_pp_repr_excrG     r3   r   c                      R # r   r1   r1   r   r   test_pdb_empty_linerI     r3   r   c                      R # r   r1   r1   r   r   
do_nothingrK     r3   r   c                      \        ^*4       R# )*   N)printr1   r   r   do_somethingrO     s	    	"Ir   c                      R # r   r1   r1   r   r   test_list_commandsrQ     r3   r   c                      R # r   r1   r1   r   r   test_pdb_whatis_commandrS   6  r3   r   c                      R # r   r1   r1   r   r   test_pdb_display_commandrU   _  r3   r   c                      R # r   r1   r1   r   r   test_pdb_alias_commandrW     r3   r   c                      R # r   r1   r1   r   r   test_pdb_where_commandrY     r3   r   c                      R # r   r1   r1   r   r   test_pdb_restart_commandr[   B  r3   r   c                      R # r   r1   r1   r   r    test_pdb_commands_with_set_tracer]   W  r3   r   c                      R # r   r1   r1   r   r   test_pdb_interact_commandr_   f      r   c                      R # r   r1   r1   r   r   test_convenience_variablesrb     r3   r   c                      R # r   r1   r1   r   r   test_post_mortem_chainedrd     r3   r   c                      R # r   r1   r1   r   r   !test_post_mortem_cause_no_contextrf   G  r3   r   c                      R # r   r1   r1   r   r   %test_post_mortem_context_of_the_causerh     r3   r   c                      R # r   r1   r1   r   r   test_post_mortem_from_nonerj     r3   r   c                      R # r   r1   r1   r   r   test_post_mortem_from_no_stackrl     r3   r   c                      R # r   r1   r1   r   r    test_post_mortem_single_no_stackrn     r3   r   c                      R # r   r1   r1   r   r   test_post_mortem_complexrp   (  r3   r   c                      R # r   r1   r1   r   r   test_post_mortemrr     r3   r   c                      R # r   r1   r1   r   r   !test_pdb_return_to_different_filert     r3   r   c                      R # r   r1   r1   r   r   test_pdb_skip_modulesrv     r3   r   c                      R # r   r1   r1   r   r   test_pdb_invalid_argrx     r3   r   module_to_skipz6def foo_pony(callback): x = 1; callback(); return Nonec                      R # r   r1   r1   r   r   #test_pdb_skip_modules_with_callbackr{   E  r3   r   c                      R # r   r1   r1   r   r    test_pdb_continue_in_bottomframer}   t  r3   r   c                 V    \        \        P                  ! R RR7      V 4      ! V4       R# )TF)nosigintreadrcN)getattrpdbPdb)methodargs   &&r   
pdb_invoker     s    CGGT%0&9#>r   c                      R # r   r1   r1   r   r   $test_pdb_run_with_incorrect_argumentr     r3   r   c                      R # r   r1   r1   r   r   test_pdb_run_with_code_objectr     r3   r   c                      R # r   r1   r1   r   r   &test_next_until_return_at_return_eventr     r3   r   c                      R # r   r1   r1   r   r   #test_pdb_next_command_for_generatorr     r3   r   c                      R # r   r1   r1   r   r   test_pdb_asynctaskr   M      r   c                      R # r   r1   r1   r   r   test_pdb_await_supportr   d  r   r   c                      R # r   r1   r1   r   r   test_pdb_await_with_breakpointr     r   r   c                      R # r   r1   r1   r   r   test_pdb_await_contextvarr     r   r   c                      R # r   r1   r1   r   r   #test_pdb_next_command_for_coroutiner   	  r`   r   c                      R # r   r1   r1   r   r   "test_pdb_next_command_for_asyncgenr   J	  r`   r   c                      R # r   r1   r1   r   r   %test_pdb_return_command_for_generatorr   	  r3   r   c                      R # r   r1   r1   r   r   %test_pdb_return_command_for_coroutiner   	  r`   r   c                      R # r   r1   r1   r   r   $test_pdb_until_command_for_generatorr   	  r3   r   c                      R # r   r1   r1   r   r   $test_pdb_until_command_for_coroutiner    
  r`   r   c                      R # r   r1   r1   r   r   +test_pdb_next_command_in_generator_for_loopr   P
  r3   r   c                      R # r   r1   r1   r   r   !test_pdb_next_command_subiteratorr   y
  r3   r   c                      R # r   r1   r1   r   r   test_pdb_breakpoint_with_throwr   
  r3   r   c                      R # r   r1   r1   r   r   test_pdb_multiline_statementr   
  r3   r   c                      R # r   r1   r1   r   r   test_pdb_closurer   
  r3   r   c                      R # r   r1   r1   r   r    test_pdb_show_attribute_and_itemr   .  r3   r   c                      R # r   r1   r1   r   r   test_pdb_with_inline_breakpointr   Z  r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_20766r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_43318r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_91742r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_94215r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_101673r   *  r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_103225r   T  r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_101517r   m  r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_108976r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_127321r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_80731r     r3   r   c                      R # r   r1   r1   r   r   test_pdb_ambiguous_statementsr     r3   r   c                      R # r   r1   r1   r   r   test_pdb_f_trace_linesr     r3   r   c                      R # r   r1   r1   r   r   test_pdb_frame_refleakr     r3   r   c                      R # r   r1   r1   r   r   test_pdb_function_breakr     r3   r   c                      R # r   r1   r1   r   r   test_pdb_issue_gh_65052r   G  r3   r   c                     a  ] tR tRt o R t]P                  ! ]P                  P                  R4      RAR l4       t
RBR ltR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%R! t&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1R- t2R. t3R/ t4R0 t5R1 t6R2 t7R3 t8R4 t9R5 t:R6 t;]<Pz                  R7 4       t>R8 t?R9 t@R: tAR; tBR< tCR= tDR> tER? tFR@tGV tHR# )CPdbTestCasei{  c                N    \         P                  ! \         P                  4       R # r   r	   unlinkTESTFNr    s   &r   tearDownPdbTestCase.tearDown~      ))*r   'PYTHONSAFEPATH changes default sys.pathNc           	        V P                  \        P                  R 4       \        P                  RR.V,           pVe   \
        P                  V,          pM\
        P                  p\        P                  ! V\        P                  \        P                  \        P                  / VCRR/CR7      ;_uu_ 4       pVP                  \        P                  V4      4      w  rRRR4       \        X\        4      '       d   \        P                  V4      MTp\        X	\        4      '       d   \        P                  V	4      MT	p	V P!                  XP"                  VRV RV	 24       W3#   + '       g   i     L; i)	__pycache__-mr   NPYTHONIOENCODINGutf-8stdoutr   stderrenvUnexpected return code
stdout: 	
stderr: )
addCleanupr	   rmtreer   
executableosenviron
subprocessPopenPIPEcommunicatestrencode
isinstancebytesdecodeassertEqual
returncode)
r   pdb_argscommandsexpected_returncode	extra_envcmdr   procr   r   s
   &&&&&     r   _run_pdbPdbTestCase._run_pdb  s!   
 		((-8~~tU+h6 **y(C**C! oo!::0':
 
 !--cjj.BCNF
 *4FE)B)Bf%)3FE)B)Bf%OO.vhjI	

 ~
 
s   :'E))E9	c                   R p\        VR4      ;_uu_ 4       p	V	P                  \        P                  ! V4      4       RRR4       Vec   \        RR4      ;_uu_ 4       p	V	P                  \        P                  ! V4      4       RRR4       V P	                  \
        P                  R4       V P	                  \
        P                  V4       \
        P                  ! 4       ;_uu_ 4       p
V'       d   V
P                  R4       Vf   . pV P                  V.V,           W#V4      w  rRRR4       W3#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     XX3# ; i)main.pywN.pdbrcHOME)
openwritetextwrapdedentr   r	   r   EnvironmentVarGuardunsetr   )r   scriptr   r   r   script_argspdbrcremove_homefilenamefr   r   r   s   &&&&&&&&     r   run_pdb_scriptPdbTestCase.run_pdb_script  s    (C  AGGHOOF+, ! h$$./ %OOI,,h7	(((3**,,		&!" !]]H:+CXdmnNF - ~ !  %$
 -, v~s#   &D0&E(=E0E 	E	E)	c                x   R V n         \        P                  ! V P                   4       V P                   R,           pV P                   R,           p\        P                  ! V P                   4       \        VR4      ;_uu_ 4       p RRR4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! V4      4       RRR4       V P                  \        P                  V P                   4       V P                  RV P                   .V4      #   + '       g   i     L; i  + '       g   i     Lk; i)t_main/__main__.py/__init__.pyr   Nr   )module_namer	   r   r   mkdirr  r  r  r  r   r   )r   r  r   	main_file	init_filer  s   &&&   r   run_pdb_modulePdbTestCase.run_pdb_module  s    #))*$$~5	$$~5	
!!")S!!Q ")S!!QGGHOOF+, "	(($*:*:;}}dD$4$45x@@ "!!!s   D &D)D&	)D9	c                d   \        \        P                  R 4      ;_uu_ 4       pVP                  V4       RRR4       V'       g   RM V^ ,          \        P                  V^,          3pV P	                  V\
        P                  ! V\        P                  4      4       R#   + '       g   i     Lr; i)wbN)r  r	   r   r  r   r   find_function)r   file_content	func_nameexpectedr  s   &&&& r   _assert_find_function!PdbTestCase._assert_find_function  s{    )""D))QGGL! *  (4QK))8A;.8c''	93C3CD	F *)s   BB/	c                ,    V P                  R RR4       R# )r   fooN)r   r    s   &r   test_find_function_empty_file)PdbTestCase.test_find_function_empty_file  s    ""3t4r   c                H    V P                  R P                  4       RR4       R# )u@   def foo():
    pass

def bœr():
    pass

def quux():
    pass
   bœrN)r'     r   r   r    s   &r   test_find_function_found$PdbTestCase.test_find_function_found  s$    ""	 FH	
r   c                J    V P                  R P                  R4      RR4       R# )uV   # coding: iso-8859-15
def foo():
    pass

def bœr():
    pass

def quux():
    pass
ziso-8859-15r'  N)r'     r)  r    s   &r   -test_find_function_found_with_encoding_cookie9PdbTestCase.test_find_function_found_with_encoding_cookie  s'    ""
 F=	
r   c                r    V P                  \        P                  R P                  4       ,           RR4       R# )u   def bœr():
    pass
r'  N)r'     )r   codecsBOM_UTF8r   r    s   &r   !test_find_function_found_with_bom-PdbTestCase.test_find_function_found_with_bom  s2    ""OO  FH 	
r   c                X    R pRpV P                  W4      w  r4V P                  RV4       R# )zJ
            import __main__
            print(__main__.__spec__)
        continueNoneNr  assertInr   r  r   r   _s   &    r   	test_specPdbTestCase.test_spec  s0    
 ''9	ff%r   c                    \         P                  ! R 4      P                  4       pV P                  VRR4       V P                  VRR4       V P                  VRR4       V P                  VRR	4       R# )
a              def foo(): pass

            def bar():
                pass  # line 4

            def baz():
                # comment
                pass  # line 8

            def mul():
                # code on multiple lines
                code = compile(   # line 12
                    'def f()',
                    '<string>',
                    'exec',
                )
        r#  barbazmulN)r#     )r@     )rA     )rB     )r  r  r   r   )r   codes   & r   (test_find_function_first_executable_line4PdbTestCase.test_find_function_first_executable_line  sk       " VX# 	& 	""4
;""4
;""4
;""4<r   c                   \        \        P                  R 4      ;_uu_ 4       pVP                  R4       RRR4       \        P
                  RR\        P                  .p\        P                  ! V\        P                  \        P                  \        P                  R7      pV P                  VP                  P                  4       VP                  R4      w  rEV P                  RVR4       R#   + '       g   i     L; i)	r  s   print("testing my pdb")
Nr   r   )r   r   r   s   quit
s   SyntaxErrorz0Got a syntax error running test script under PDB)r  r	   r   r  r   r   r   r   r   r   r   closer   assertNotInr   r  r   r   r   r   s   &     r   test_issue7964PdbTestCase.test_issue7964   s    )""D))QGG23 *~~tUI,<,<=??//??
 	))*)))4K	M *)s   C00D 	c                    R pRpV P                  W4      w  r4T;'       g    RT;'       g    R,           pV P                  RVR4       V P                  RVR4       R# )z
            def do_testcmdwithnodocs(self, arg):
                pass

            import pdb
            pdb.Pdb.do_testcmdwithnodocs = do_testcmdwithnodocs
        zA
            continue
            help testcmdwithnodocs
         AttributeErrorzCCalling help on a command with no docs should be handled gracefullyz;*** No help for 'testcmdwithnodocs'; __doc__ string missingz<Calling help on a command with no docs should print an errorN)r  rL  r:  )r   r  r   r   r   outputs   &     r   test_issue46434PdbTestCase.test_issue46434/  sg     ,,V>,,B6<<R0)6^	`SU[T	Vr   c                   R pRpRp\        RR4      ;_uu_ 4       pVP                  \        P                  ! V4      4       RRR4       V P	                  \
        P                  R4       V P                  W4      w  rVT P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      R	4       R#   + '       g   i     L; i)
z
            from bar import bar

            def foo():
                bar()

            def nope():
                pass

            def foobar():
                foo()
                nope()

            foobar()
        z
            from bar import bar
            break bar
            continue
            step
            step
            quit
        z5
            def bar():
                pass
        bar.pyr   Nc              3   ,   "   T F
  pR V9   x  K  	  R# 5i)zmain.py(5)foo()->NoneNr1   .0ls   & r   	<genexpr>.PdbTestCase.test_issue13183.<locals>.<genexpr>e  s     J6I'1,6I   TFz+Fail to step into the caller after a return)r  r  r  r  r   r	   r   r  
assertTrueany
splitlines)r   r  r   r@  r  r   r   s   &      r   test_issue13183PdbTestCase.test_issue13183D  s     (C  AGGHOOC() !	(((3,,V>CJf6G6G6IJCCCJf6G6G6IJJ9	;	 ! s   &CC.	c           	     t   \        \        P                  R 4      ;_uu_ 4       pVP                  \        P
                  ! R4      P                  R4      4       RRR4       \        P                  R\        P                  .p\        P                  ! V\        P                  \        P                  \        P                  / \        P                  CRR/CR7      pV P                  VP                  P                   4       VP#                  R4      w  rEV P%                  R	VR
4       R#   + '       g   i     L; i)r  a  
                import threading
                import pdb

                def start_pdb():
                    pdb.Pdb(readrc=False).set_trace()
                    x = 1
                    y = 1

                t = threading.Thread(target=start_pdb)
                t.start()asciiN-ur   r   r   s   cont
   Error*Got an error running test script under PDBr  r	   r   r  r  r  r   r   r   r   r   r   r   r   r   r   rK  r   rL  rM  s   &     r   test_issue13120PdbTestCase.test_issue13120h  s     )""D))QGGHOO 
% 
 %fWo
/ * ~~tY%5%56??//??;2::;17;	 	))*)))46E	G+ *)   5D''D7	c           	     t   \        \        P                  R 4      ;_uu_ 4       pVP                  \        P
                  ! R4      P                  R4      4       RRR4       \        P                  R\        P                  .p\        P                  ! V\        P                  \        P                  \        P                  / \        P                  CRR/CR7      pV P                  VP                  P                   4       VP#                  R4      w  rEV P%                  R	VR
4       R#   + '       g   i     L; i)r  a  
                import threading
                import pdb

                evt = threading.Event()

                def start_pdb():
                    evt.wait()
                    pdb.Pdb(readrc=False).set_trace()

                t = threading.Thread(target=start_pdb)
                t.start()
                pdb.Pdb(readrc=False).set_trace()
                evt.set()
                t.join()re  Nrf  r   r   r   s
   cont
cont
rg  rh  ri  rM  s   &     r   test_issue36250PdbTestCase.test_issue36250  s    )""D))QGGHOO %  $VG_. *  ~~tY%5%56??//??=RZZ=!3W=	 	))*))/:6E	G3 *)rl  c                z    R pRpRpV P                  W4      w  rEV P                  W5RP                  W54      4       R# )zdef f: pass
rQ  zSyntaxError:zE

Expected:
{}
Got:
{}
Fail to handle a syntax error in the debuggee.N)r  r:  format)r   r  r   r  r   r   s   &     r   test_issue16180PdbTestCase.test_issue16180  sE     !,,
 	h=VH%	'r   c                    R pRpV P                  W4      w  r4V P                  VP                  R4      ^4       V P                  VP                  R4      ^4       R# )z!import ast; ast.literal_eval('')
zA
            continue
            where
            quit
        zast.literal_eval('')N)r  r   countr   r  r   r   r   s   &    r   test_issue84583PdbTestCase.test_issue84583  sX    5
 ,,V>
 	&<=qA&<=qAr   c                    R pRpV P                  W4      w  r4RP                  VP                  4        Uu. uF  qUP                  4       NK  	  up4      pV P	                  VR4       V P	                  VR4       R# u upi )zprint('hello')z[
            continue
            run a b c
            run d e f
            quit
        
z#Restarting .* with arguments:
a b cz#Restarting .* with arguments:
d e fN)r  joinra  stripassertRegex)r   r  r   r   r   xress   &      r   test_issue26053PdbTestCase.test_issue26053  sv    ! ,,V>iiF,=,=,?@,?q,?@ADEDE As   A:c                   R pRpRp\        RR4      ;_uu_ 4       pVP                  \        P                  ! V4      4       RRR4       V P	                  \
        P                  R4       V P                  W4      w  rVVP                  4       pV P                  RV4       V P                  RV4       R#   + '       g   i     Ly; i)z~
            import bar
            def foo():
                ret = bar.bar()
                pass
            foo()
        zv
            b bar.bar
            c
            b main.py:5
            c
            p ret
            quit
        z:
            def bar():
                return 42
        rW  r   N-> passz(Pdb) 42)
r  r  r  r  r   r	   r   r  ra  r:  )r   r  r   r@  r  r   r   liness   &       r   test_issue58956PdbTestCase.test_issue58956  s     (C  AGGHOOC() !	(((3,,V>!!#i'j%( ! s   &B22C	c                |    R pRpV P                  W4      w  r4V P                  RV4       V P                  RV4       R# )zx = 1zM
            step
            step
            step
            quit
        zThe program finishedzbdb.pyNr  r:  rL  r;  s   &    r   test_step_into_botframe#PdbTestCase.test_step_into_botframe  sC      ''9	,f56*r   c                    \         P                  ! R 4      p\         P                  ! R4      pV P                  VRVRR7      w  r4V P                  RV4       V P	                  RV4       V P	                  RV4       R# )	z-
            a = 1
            b = 2
        zU
            # Comments should be fine
            n
            p f"{a+8=}"
        q
Tr
  r  SyntaxErrorza+8=9-> b = 2N)r  r  r  rL  r:  r   r  r
  r   r   s   &    r   test_pdbrc_basicPdbTestCase.test_pdbrc_basic  st     " 
  !  ,,VU%UY,Z/gv&j&)r   c                    \         P                  ! R 4      p\         P                  ! R4      pV P                  VRVRR7      w  r4V P                  RV4       V P	                  RV4       R# )z?
            a = 1
            b = 2
            c = 3
        z
            n

        r  Tr  zb = 2zc = 3N)r  r  r  r:  rL  r  s   &    r   test_pdbrc_empty_line!PdbTestCase.test_pdbrc_empty_line
  sh      "   ! 
 ,,VU%UY,Zgv&&)r   c                    \         P                  ! R 4      p\         P                  ! R4      pV P                  VRVRR7      w  r4V P                  RV4       R# )
            class A:
                def __init__(self):
                    self.attr = 1
            a = A()
            b = 2
        z
            alias pi for k in %1.__dict__.keys(): print(f"%1.{k} = {%1.__dict__[k]}")
            until 6
            pi a
        r  Tr  z
a.attr = 1Nr  r  r  r:  r  s   &    r   test_pdbrc_aliasPdbTestCase.test_pdbrc_alias  sV     "   !  ,,VU%UY,ZlF+r   c                    \         P                  ! R 4      p\         P                  ! R4      pV P                  VRVRR7      w  r4V P                  RV4       R# )r  z
            b 5;;c;;n
        r  Tr  r  Nr  r  s   &    r   test_pdbrc_semicolon PdbTestCase.test_pdbrc_semicolon.  sV     "   !  ,,VU%UY,Zj&)r   c                    \         P                  ! R 4      p\         P                  ! R4      pV P                  VRVRR7      w  r4V P                  RV4       R# )r  zK
            b 6
            commands 1 ;; p a;; end
            c
        r  Tr  z<__main__.A object atNr  r  s   &    r   test_pdbrc_commandsPdbTestCase.test_pdbrc_commands>  sW     "   !  ,,VU%UY,Z-v6r   c                    \         P                  ! R 4      pV P                  VRRRR7      w  r#V P                  RV4       R# )z$
            print('hello')
        r  invalidTr  z(NameError: name 'invalid' is not definedNr  )r   r  r   r   s   &   r   test_readrc_kwargPdbTestCase.test_readrc_kwargP  sB     "  ,,VU)Y],^@&Ir   c                   \         P                  ! 4       ;_uu_ 4       pVP                  R 4       \         P                  ! 4       ;_uu_ 4       p\	        R4      ;_uu_ 4        \
        P                  P                  VR4      pV\
        P                  P                  n	        \        VR4      ;_uu_ 4       pVP                  R4       RRR4       V P                  \        P                  ! 4       P                  ^ ,          R4       RRR4       RRR4       RRR4       R#   + '       g   i     L`; i  + '       g   i     L5; i  + '       g   i     L@; i  + '       g   i     R# ; i)r  zos.path.expanduserr   r   r  N)r	   r  r  temp_dirr   r   pathr{  
expanduserreturn_valuer  r  r   r   r   rcLines)r   r   r  rc_pathr  s   &    r   test_readrc_homedirPdbTestCase.test_readrc_homedirX  s    **,,IIf##%%59M3N3N'',,x:29""/'3''1GGI& (  !2!21!5yA 4O% -,
 (' 4O3N%% -,,sT   /EE	!AD25D>D2E	ED/*D22E=E	EEE)	c                   \        4       pR p\        4       ;_uu_ 4       pVP                  \        RV4      4       VP                  \        P                  ! \
        P                  R4      4       R\
        P                  n        \
        P                  ! VR7       RRR4       V P                  VP                  4       VR,           4       R#   + '       g   i     L9; i)z"Nobody expects... blah, blah, blahz
sys.stdout	set_traceN)headerrz  )r   r   enter_contextr   objectr   r   _last_pdb_instancer  r   getvalue)r   r   r  	resourcess   &   r   test_headerPdbTestCase.test_headerb  s    5[[I##E,$?@##ELL+$FG *.CGG&MM(  	*FTM: [s   A<CC	c                    R pRpV P                  W4      w  r4T P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      V4       R# )zprint("SUCCESS")/
            continue
            quit
        c              3   ,   "   T F
  pR V9   x  K  	  R# 5iSUCCESSNr1   rY  s   & r   r\  .PdbTestCase.test_run_module.<locals>.<genexpr>w       H4GqIN4Gr^  TFNr  r_  r`  ra  rv  s   &    r   test_run_modulePdbTestCase.test_run_modulep  s]    ' ,,V>HF4E4E4GHHF4E4E4GHH&Qr   c                    R pRpV P                  W4      w  r4T P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      V4       R# )zQ
            if __name__ == '__main__':
                print("SUCCESS")
        r  c              3   ,   "   T F
  pR V9   x  K  	  R# 5ir  r1   rY  s   & r   r\  9PdbTestCase.test_module_is_run_as_main.<locals>.<genexpr>  r  r^  TFNr  rv  s   &    r   test_module_is_run_as_main&PdbTestCase.test_module_is_run_as_mainy  s_     ,,V>HF4E4E4GHHF4E4E4GHH&Qr   c                    R pV P                  RR.V^R7       V P                  . ROV4      w  r#V P                  RV4       V P                  . ROV4      w  r#V P                  RV4       R# )z
            continue
        calendarr   r   DecemberN)r   r  1)r   r  z--typetext)r   r:  r   r   r   r<  s   &   r   test_run_module_with_args%PdbTestCase.test_run_module_with_args  sd     	z4((JMM"98D	j&)MM"FQ	j&)r   c                `    R pRpV P                  WRR.R7      w  r4V P                  RV4       R# )z@
            import sys
            print(sys.argv[1:])
        r  z--barr#  )r	  z['--bar', 'foo']Nr9  rv  s   &    r   test_run_script_with_args%PdbTestCase.test_run_script_with_args  s>    
 ,,VGUZK[,\(&1r   c                   R pRpV P                  W4      w  r4T P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      V4       T P                  \        ;QJ d*    R VP                  4        4       F  '       d   K   RM	  RM! R VP                  4        4       4      V4       R# )z{
            if __name__ == '__main__':
                pass
                print("SUCCESS")
                pass
        z*
            b 3
            quit
        c              3   ,   "   T F
  pR V9   x  K  	  R# 5i)zBreakpoint 1 atNr1   rY  s   & r   r\  .PdbTestCase.test_breakpoint.<locals>.<genexpr>       P<Oq-2<Or^  TFc              3   ,   "   T F
  pR V9  x  K  	  R# 5ir  r1   rY  s   & r   r\  r    s     L8K1IQ.8Kr^  N)r  r_  r`  ra  allrv  s   &    r   test_breakpointPdbTestCase.test_breakpoint  s     ,,V>PF<M<M<OPPF<M<M<OPPRXYL8I8I8KLL8I8I8KLLfUr   c                    R pV P                  RR.V4      w  r#V P                  \        P                  VP	                  RR4      4       R# )z(
            c
            quit
        r   r   rQ  N)r   r:  r   _usagereplace)r   r   r   r   s   &   r   test_run_pdb_with_pdb!PdbTestCase.test_run_pdb_with_pdb  sB     e}h?JJNN4$	
r   c                j   R p\         P                  ! V4       VR,           p\        P                  ! V4       \	        VR4      ;_uu_ 4         RRR4       V P                  \         P                  V4       V P                  RV.R^R7      w  r4V P                  RV4       R#   + '       g   i     L\; i)r  r  r   Nr   rQ  r  z-ImportError: No module named t_main.__main__;)r	   r   r   r  r  r   r   r:  )r   r  r  r   r   s   &    r   test_module_without_a_main&PdbTestCase.test_module_without_a_main  s    %.0	
)S!! "	((+6; ' 
 	EvN "!s   B""B2	c                   R pRp\         P                  ! V4       VR,           V,           p\        P                  ! V4       \	        VR,           R4      ;_uu_ 4         RRR4       V P                  \         P                  V4       V P                  RVP                  RR4      .R^R	7      w  rEV P                  R
V4       R#   + '       g   i     Ll; i)t_pkgr  /r  r   Nr   .rQ  r  z;'t_pkg.t_main' is a package and cannot be directly executed)	r	   r   r   makedirsr  r   r   r  r:  )r   pkg_namer  modpathr   r   s   &     r   test_package_without_a_main'PdbTestCase.test_package_without_a_main  s    "S.;.
G'N*C00 1	(((37??3,-rq ' 
 	I	 10s   CC	c                    V P                  R \        P                  .R^R7      w  rV P                  R\        P                   2V4       R# )r   rQ  r  zImportError: No module named N)r   r	   r   r:  r   r   r   s   &  r   test_nonexistent_module#PdbTestCase.test_nonexistent_module  sA    i.>.>'?YZ[5i6F6F5GH&Qr   c                    \         P                  ! 4       ;_uu_ 4       pV P                  V.R ^R7      w  r#V P                  RV R2V4       RRR4       R#   + '       g   i     R# ; i)rQ  r  zError: z is a directoryN)r	   r  r   r:  )r   r  r   r   s   &   r   test_dir_as_scriptPdbTestCase.test_dir_as_script  sQ    !!X!]]H:rq]QNFMMGH:_=vF "!!!s   .AA'	c                   V P                  R .R^R7      w  rV P                  RVP                  R4      ^,          4       V P                  . ROR^R7      w  rV P                  RVP                  R4      ^,          4       R# )z-crQ  r  z8pdb: error: argument -c/--command: expected one argumentrz  z*pdb: error: unrecognized arguments: --spamN)z--spamr   r   )r   r:  splitr  s   &  r   test_invalid_cmd_line_options)PdbTestCase.test_invalid_cmd_line_options  ss    vrqIPSYS_S_`dSefgShi'>XYZBV\\RVEWXYEZ[r   c                    R pRpV P                  W4      w  r4T P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      V4       R# )zY
                #This is a comment, on line 2

                print("SUCCESS")
        z
            quit
        c              3   ,   "   T F
  pR V9   x  K  	  R# 5i)z__main__.py(4)<module>()Nr1   rY  s   & r   r\  =PdbTestCase.test_blocks_at_first_code_line.<locals>.<genexpr>  s      ?*=Q 7 !*=r^  TFNr  rv  s   &    r   test_blocks_at_first_code_line*PdbTestCase.test_blocks_at_first_code_line  so    
 ,,V> ?*0*;*;*=? ?*0*;*;*=? ?@F	Hr   c                |    R pRpV P                  W4      w  r4V P                  RV4       V P                  RV4       R# )$
            print("hello")
        z
            filename = $_frame.f_code.co_filename
            f = open(filename, "w")
            f.write("print('goodbye')")
            import time; time.sleep(1)
            f.close()
            ll
        WARNING:
was editedNr9  rv  s   &    r   "test_file_modified_after_execution.PdbTestCase.test_file_modified_after_execution  s@    
 ,,V>j&)lF+r   c                |    R pRpV P                  W4      w  r4V P                  RV4       V P                  RV4       R# )r  z
            filename = $_frame.f_code.co_filename
            f = open(filename, "w")
            f.write("print('goodbye')")
            import time; time.sleep(1)
            f.close()
            restart
        r  r   N)r  rL  rv  s   &    r   ,test_file_modified_and_immediately_restarted8PdbTestCase.test_file_modified_and_immediately_restarted  sD    
 ,,V>V,v.r   c           	     f   R pRpRp\        VR4      ;_uu_ 4       pVP                  \        P                  ! V4      4       RRR4       V P	                  \
        P                  V4       V P	                  \
        P                  R4       \        P                  V.p\        P                  ! V\        P                  \        P                  \        P                  / \        P                  CRR/CR7      ;_uu_ 4       pVP                  \         P#                  V4      4      w  rxRRR4       X;'       d    \$        P'                  V4      pV P)                  XP*                  ^ 4       V P-                  R	V4       V P-                  R
V4       R#   + '       g   i     ELT; i  + '       g   i     L; i)z
            import pdb; pdb.Pdb().set_trace()
            with open(__file__, "w") as f:
                f.write("print('goodbye')\n" * 5)
                import time; time.sleep(1)
            import pdb; pdb.Pdb().set_trace()
        z3
            continue
            continue
        r   r   Nr   r   r   r   r  r   )r  r  r  r  r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:  )	r   r  r   r  r  r   r   r   r<  s	   &        r   :test_file_modified_after_execution_with_multiple_instancesFPdbTestCase.test_file_modified_after_execution_with_multiple_instances  s9   
 (C  AGGHOOF+, !	(((3	((-8~~x(! oo!AA%7A
 
 ((H)=>IF
 00ELL0!,j&)lF+# !  

 
s   &F<'F F	 F0	c                    R pRpV P                  W4      w  r4V P                  RV4       V P                  RV4       V P                  RV4       R# )z
            import random
            # Any code with a source to step into so this script is not checked
            # for changes when it's being changed
            random.randint(1, 4)
            print("hello")
        aL  
            ll
            n
            s
            filename = $_frame.f_back.f_code.co_filename
            def change_file(content, filename):
                with open(filename, "w") as f:
                    f.write(f"print({content})")

            change_file('world', filename)
            restart
            ll
        helloworldr  Nr  rv  s   &    r   /test_file_modified_after_execution_with_restart;PdbTestCase.test_file_modified_after_execution_with_restart;  sR     ,,V>gv&gv& 	V,r   c                X    R pRpV P                  W4      w  r4V P                  RV4       R# )zZ
            def foo():
                raise ValueError("foo")
            foo()
        zX
            continue
            restart
            continue
            quit
        
RestartingNr9  rv  s   &    r   test_post_mortem_restart$PdbTestCase.test_post_mortem_restartZ  s2     ,,V>lF+r   c                   R V n         \        P                  ! V P                   4       V P                   R,           pV P                   R,           pV P                   R,           pV P                  \        P                  V P                   4       \        P
                  ! V P                   4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! R4      4       RRR4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! R4      4       RRR4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! R4      4       RRR4       R	pV P                  R
V P                   .V4      w  rgT P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      V4       T P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      4       T P                  \        ;QJ d6    R VP                  4        4       F  '       g   K   R4       R# 	  R4       R# ! R VP                  4        4       4      4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i)r  r  r  
/module.pyr   6
                top_var = "VAR from top"
            Nz
                from . import top_var
                from .module import var
                from . import module
                pass # We'll stop here and print the vars
            zY
                var = "VAR from module"
                var2 = "second var"
            zz
            b 5
            c
            p top_var
            p var
            p module.var2
            quit
        r   c              3   ,   "   T F
  pR V9   x  K  	  R# 5izVAR from moduleNr1   rY  s   & r   r\  4PdbTestCase.test_relative_imports.<locals>.<genexpr>  r  r^  TFc              3   ,   "   T F
  pR V9   x  K  	  R# 5i)zVAR from topNr1   rY  s   & r   r\  r    s     M9LANa/9Lr^  c              3   ,   "   T F
  pR V9   x  K  	  R# 5i)z
second varNr1   rY  s   & r   r\  r    s     K7J!LA-7Jr^  r  r	   r   r   r   r  r  r  r  r  r   r_  r`  ra  r   r  r  module_filer  r   r   r<  s   &       r   test_relative_imports!PdbTestCase.test_relative_importsk  s   #))*$$~5	$$~5	&&5	(($*:*:;
!!")S!!QGGHOO %   " )S!!QGGHOO %   " +s##qGGHOO %   $
 MM4)9)9":HE	PF<M<M<OPPF<M<M<OPPRXYM9J9J9LMM9J9J9LMMNKv7H7H7JKLLKv7H7H7JKKL7 "!! "!! $##s$   ?&J?&K&K'?K	K$	'K8	c                l   R V n         \        P                  ! V P                   4       V P                   R,           pV P                   R,           pV P                   R,           pV P                  \        P                  V P                   4       \        P
                  ! V P                   4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! R4      4       RRR4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! R4      4       RRR4       \        VR4      ;_uu_ 4       pVP                  \        P                  ! R4      4       RRR4       R	pV P                  R
V P                   R,           .V4      w  rgT P                  \        ;QJ d*    R VP                  4        4       F  '       g   K   RM	  RM! R VP                  4        4       4      V4       R#   + '       g   i     EL ; i  + '       g   i     L; i  + '       g   i     L; i)r  z	/runme.pyr  r  r   r  Nzl
                from . import module
                pass # We'll stop here and print the vars
            z5
                var = "VAR from module"
            zQ
            b 3
            c
            p module.var
            quit
        r   z.runmec              3   ,   "   T F
  pR V9   x  K  	  R# 5ir  r1   rY  s   & r   r\  DPdbTestCase.test_relative_imports_on_plain_module.<locals>.<genexpr>  r  r^  TFr  r  s   &       r   %test_relative_imports_on_plain_module1PdbTestCase.test_relative_imports_on_plain_module  s   #))*$${2	$$~5	&&5	(($*:*:;
!!")S!!QGGHOO %   " )S!!QGGHOO %   "
 +s##qGGHOO %   $ MM4)9)9H)D"ExP	PF<M<M<OPPF<M<M<OPPRXY) "!! "!
 $#s$   ?&G<&H&H#<H	H 	#H3	c                    R P                  . RO4      pV P                  RVR ,           4      w  r#V P                  VP                  4       R,          . RO4       R# )rz  passrC  NNN)zprint(]zdebug print(zdebug doesnotexistc)
r  zU(Pdb) *** SyntaxError: closing parenthesis ']' does not match opening parenthesis '('!(Pdb) ENTERING RECURSIVE DEBUGGERz%*** SyntaxError: '(' was never closedLEAVING RECURSIVE DEBUGGERr(  z> <string>(1)<module>()z9((Pdb)) *** NameError: name 'doesnotexist' is not definedr)  (Pdb) r{  r  r   ra  r  s   &   r   test_errors_in_command"PdbTestCase.test_errors_in_command  sR    99 
  ''4@	**,R0 3
 	r   c                8   a  V 3R  lpV! RR4       V! RR4       R# )c                    < R P                  RV  2R.4      pSP                  RVR ,           4      w  r4SP                  VP                  4       R,          RRV  RV 2R.4       R	# )
rz  zrun qr%  r&  r  z(Pdb) *** Cannot run z: r*  Nr+  )bad_argmsgr   r   r<  r   s   &&   r   check*PdbTestCase.test_issue34266.<locals>.check  sv    yywi " H ++FHtODIFV..04'y3%87 r   \zNo escaped character"zNo closing quotationNr1   )r   r3  s   f r   test_issue34266PdbTestCase.test_issue34266  s     
	 	d*+c)*r   c                   \         P                  ! R 4      pRp\        P                  ! 4       ;_uu_ 4       pR\        P
                  P                  V4       2pV P                  W4      w  rVV P                  VP                  R4      ^,          P                  R4      V4       RRR4       R#   + '       g   i     R# ; i)Q
            import sys
            print('sys.path[0] is', sys.path[0])
        c
q(Pdb) sys.path[0] is rz  r  N)r  r  r	   temp_cwdr   r  realpathr  r   r  rstrip)r   r  r   cwdr  r   r   s   &      r   test_issue42384PdbTestCase.test_issue42384  s     "  !!S.rww/?/?/D.EFH!00BNFV\\$/299$?J "!!!s   A-B--B>	c           	        \         P                  ! R 4      pRp\        P                  ! 4       ;_uu_ 4       p\        P
                  P                  V4      p\        P
                  P                  VR4      p\        P
                  P                  VR4      pRV 2p\        P                  ! V4       \        \        P
                  P                  VR4      R4      ;_uu_ 4       pVP                  V4       RRR4       \        P                  ! V4       \        P                  ! \        P
                  P                  VR4      \        P
                  P                  VR4      4       V P                  \        P
                  P                  RR4      .V4      w  rV P                  VP                  R4      ^,          P                  R	4      V4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
r:  r;  dir_onedir_twor<  foo.pyr   Nrz  r  )r  r  r	   r=  r   r  r>  r{  r  r  r  symlinkr   r   r  r?  )
r   r  r   r@  rD  rE  r  r  r   r   s
   &         r   test_issue42384_symlink#PdbTestCase.test_issue42384_symlink  sT     "  !!S''""3'Cggll3	2Gggll3	2G.wi8HHHWbggll7H5s;;q <HHWJJrww||GX6Wh8WX!]]BGGLLH,M+NPXYNFV\\$/299$?J "! <; "!!s%   B-G-#G	5CG-G*%G--G>	c                >   \         P                  ! R 4      pRp\        P                  ! 4       ;_uu_ 4       pV P	                  WRR/R7      w  rER\
        P                  P                  V4       2pV P                  Wd4       RRR4       R#   + '       g   i     R# ; i)zk
            import sys
            import random
            print('sys.path[0] is', sys.path[0])
        zc
PYTHONSAFEPATHr  )r   zsys.path[0] is N)	r  r  r	   r=  r  r   r  r>  rL  )r   r  r   r@  r   r<  
unexpecteds   &      r   test_safe_pathPdbTestCase.test_safe_path   s      " 
  !!S++FIY[^H_+`IF*277+;+;C+@*ABJZ0	 "!!!s   ABB	c           	     \   \         P                  ! 4       ;_uu_ 4       p\        R R4      ;_uu_ 4       p\        P                  ! R4      pVP                  V4       RRR4       \        P                  P                  VR4      p\        P                  ! V4       \        P                  ! \        P                  P                  VR4      4       \        P                  P                  VR 4      p\        VR4      ;_uu_ 4       pVP                  R4       RRR4       V P                  R .R4      w  rgRpV P                  VP                  R4      ^,          P                  R	4      V4       RRR4       R#   + '       g   i     EL!; i  + '       g   i     L|; i  + '       g   i     R# ; i)
rF  r   z
                    print('The correct file was executed')

                    import os
                    os.chdir("subdir")
                Nsubdirz$print("The wrong file was executed")zc
c
qz#(Pdb) The correct file was executedrz  r  )r	   r=  r  r  r  r  r   r  r{  r  r   r   r  r?  )	r   r@  r  srP  
wrong_filer   r   r  s	   &        r   test_issue42383PdbTestCase.test_issue42383  s$   !!Sh$$OO %  
 % WW\\#x0FHHVHHRWW\\&(34fh7Jj#&&!>? ' "]]H:yANF<HV\\$/299$?J) "!$$$ '& "!!s<   F(E3	B&FF	AF3F>	FFFF+	c                ~    R p\         P                  ! R4      pV P                  W4      w  r4V P                  V4       R# )z            def func():
                def inner(v): pass
                inner(
                    42
                )
            func()
        zj
            break func
            continue
            next
            next
            jump 2
        N)r  r  r  assertFalserv  s   &    r   test_gh_94215_crashPdbTestCase.test_gh_94215_crash(  s@     ?? $  ,,V> r   c                   R pRpRpRp\        RR4      ;_uu_ 4       pVP                  \        P                  ! V4      4       RRR4       \        RR4      ;_uu_ 4       pVP                  \        P                  ! V4      4       RRR4       V P	                  \
        P                  R4       V P	                  \
        P                  R4       W43 FQ  pV P                  R.V4      w  rxV P                  RVR	4       V P                  R
VR4       V P                  RVR4       KS  	  R#   + '       g   i     L; i  + '       g   i     L; i)za
        def func():
            x = "Sentinel string for gh-93696"
            print(x)
        aL  
        import os
        import sys

        def _create_fake_frozen_module():
            with open('gh93696.py') as f:
                src = f.read()

            # this function has a co_filename as if it were in a frozen module
            dummy_mod = compile(src, "<frozen gh93696>", "exec")
            func_code = dummy_mod.co_consts[0]

            mod = type(sys)("gh93696")
            mod.func = type(lambda: None)(func_code, mod.__dict__)
            mod.__file__ = 'gh93696.py'

            return mod

        mod = _create_fake_frozen_module()
        mod.func()
        zz
            break 20
            continue
            step
            break 4
            list
            quit
        z~
            break 20
            continue
            step
            break 4
            longlist
            quit
        z
gh93696.pyr   Nzgh93696_host.pyz"x = "Sentinel string for gh-93696"zSentinel statement not foundz4 Bzbreakpoint not foundz-> def func():zstack entry not found)	r  r  r  r  r   r	   r   r   r:  )	r   
frozen_srchost_programcommands_listcommands_longlistr  r   r   r<  s	   &        r   test_gh_93696_frozen_list%PdbTestCase.test_gh_93696_frozen_list;  s   

* ,$$GGHOOJ/0 % #S))QGGHOOL12 * 		((,7	((*;< ':H'8&98DIFMM>HfgMM%)?@MM*F4KL	 ; %$ *)s   &D'&D:'D7	:E
	c                    R pRpV P                  W4      w  r4V P                  RV4       V P                  W4      w  r4V P                  RV4       R# )rQ  r  z
main.py(0)z__main__.py(0)N)r  r:  r  r;  s   &    r   test_empty_filePdbTestCase.test_empty_filew  sO     ''9	lF+''9	&/r   c                T   \         P                  P                  \         P                  P                  \        4      R 4      p\         P
                  ! V4       FL  pVP                  R4      '       g   K  V P                  \         P                  P                  W4      .R4       KN  	  R# )encoded_modulesz.pyr0  N)r   r  r{  dirname__file__listdirendswithr   )r   
script_dirr  s   &  r   test_non_utf8_encoding"PdbTestCase.test_non_utf8_encoding  sf    WW\\"''//(";=NO


:.H  ''rww||JABCH /r   c           	     D   \         P                  ! 4       ;_uu_ 4       p\        P                  ! \        P                  P                  VR 4      4       \        P                  ! R4      p\        \        P                  P                  VR R4      R4      ;_uu_ 4       pVP                  V4       RRR4       \        P                  ! \        P                  P                  VR 4      \        P                  P                  VR4      4       V P                  \        P                  P                  VR4      .RP                  . R	O4      4      w  rEV P                  RV4       V P                  RV4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)
sourcezg
                def f(x):
                    return x + 1
                f(21 + 21)
                z__main__.pyr   Nz
zipapp.pyzrz  42zreturn x + 1)zb fr'  zp xr0  )r	   r  r   r  r  r{  r  r  r  r  zipappcreate_archiver   r:  )r   r  r  r  r   r<  s   &     r   test_zipappPdbTestCase.test_zipapp  s   !!XHHRWW\\(H56__F bggll8X}EsKKq L!!"'',,x"B"$'',,x"FHrww||Hl'K&Ldii Y O IF MM$'MM.&1) "! LK "!!s%   A>FE;	.CF;FFF	c                   \         P                  ! 4       ;_uu_ 4       p\        P                  ! \        P                  P                  VR 4      4       \        P                  ! R4      p\        P                  ! R\        \        P                  P                  VR4      4       R24      p\        P                  ! \        P                  P                  VR4      R4      ;_uu_ 4       pVP                  RV4       RRR4       \        \        P                  P                  VR4      R4      ;_uu_ 4       pVP                  V4       RRR4       V P                  \        P                  P                  VR4      .R	P                  . RO4      4      w  rgV P                  R
V4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)rm  zE
                def bar():
                    pass
                z0
                import sys; sys.path.insert(0, zzipmodule.zipzG)
                import foo
                foo.bar()
                r   rF  Nz	script.pyrz  zbreak in bar)nrt  z	b foo.barr'  z&p f"break in {$_frame.f_code.co_name}"r0  )r	   r  r   r  r  r{  r  r  reprzipfileZipFilewritestrr  r  r   r:  )r   r  	zipmoduler  zfr  r   r<  s   &       r   test_zipimportPdbTestCase.test_zipimport  sP   !!XHHRWW\\(H56 I __004RWW\\(O5\0]/^ _F h!H#NNRTHi0 Obggll8[93??1 @ rww||Hk'J&KTYY X N IF MM.&1; "!  ON??% "!!s=   C	G'F.	::G4G	AG.F>9GGGG%	)r  r   N)r   NNNF)Ir(   r)   r*   r+   r   unittestskipIfr   flags	safe_pathr   r  r  r   r$  r*  r.  r4  r=  rH  rN  rT  rb  rj  rn  rr  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r,  r7  rA  r	   skip_unless_symlinkrH  rM  rS  rW  r^  ra  rj  rq  r{  r,   r-   r.   s   @r   r   r   {  s    + __SYY((>@@42AF5
 
"

&=2MV*";HG8G<'B F)<+*"*$,$* 7$JB;R
R
*2V	
O R
G
\H,&/&!,F->,"#MJZ>2+ K ""K #K01"K.!&:Mx0I2.2 2r   r   c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	ChecklineTestsi  c                0    \         P                  ! 4        R # r   )	linecache
clearcacher    s   &r   setUpChecklineTests.setUp  s    r   c                N    \         P                  ! \         P                  4       R # r   r   r    s   &r   r   ChecklineTests.tearDown  r   r   c                .   \        \        P                  R 4      ;_uu_ 4       pVP                  R4       RRR4       \        P
                  ! 4       pV P                  VP                  \        P                  ^4      ^4       R#   + '       g   i     LW; ir   z
print(123)N)r  r	   r   r  r   r   r   	checkliner   r  dbs   &  r   test_checkline_before_debugging.ChecklineTests.test_checkline_before_debugging  s]    )""C((AGGL! )WWYi&6&6:A> )(s   BB	c                N   \        \        P                  R 4      ;_uu_ 4       pVP                  R4       RRR4       \        P
                  ! 4       pVP                  4        V P                  VP                  \        P                  ^4      ^4       R#   + '       g   i     Lg; ir  )	r  r	   r   r  r   r   resetr   r  r  s   &  r   test_checkline_after_reset)ChecklineTests.test_checkline_after_reset  sf    )""C((AGGL! )WWY

i&6&6:A>	 )(s   BB$	c           	     ,   \         P                  ! R 4      p\        \        P                  R4      ;_uu_ 4       pVP                  V4       RRR4       \        VP                  4       4      ^,           p\        \        4       4      ;_uu_ 4        \        P                  ! 4       p\        V4       F2  pV P                  VP                  \        P                  V4      4       K4  	  RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z\
            # Comment
            """ docstring """
            ''' docstring '''

        r   N)r  r  r  r	   r   r  lenra  r   r   r   r   rangerV  r  )r   rQ  r  	num_linesr  linenos   &     r    test_checkline_is_not_executable/ChecklineTests.test_checkline_is_not_executable  s    OO   )""C((AGGAJ )'!+	XZ((B	*  i.>.>!GH + )( )( )((s   C/AD/C?	D	r1   N)r(   r)   r*   r+   r  r   r  r  r  r,   r-   r.   s   @r   r  r    s%     +??I Ir   r  c                      a  ] tR tRt o ]P
                  ! ]P                  P                  R4      R	R l4       t	R t
R tR tRtV tR# )
PdbTestInlinei  r   Nc           	        V P                  \        P                  R 4       Rp\        VR4      ;_uu_ 4       pVP	                  \
        P                  ! V4      4       RRR4       V P                  \        P                  V4       \
        P                  ! V4      p\        P                  R.pVe   \        P                  V,          pM\        P                  p\        P                  ! V\        P                  \        P                  \        P                  / VCRR/CR7      ;_uu_ 4       p	V	P                  \         P#                  V4      4      w  rRRR4       \%        X
\&        4      '       d   \&        P)                  V
4      MT
p
\%        X\&        4      '       d   \&        P)                  V4      MTpV P+                  X	P,                  VRV
 RV 24       W3#   + '       g   i     EL; i  + '       g   i     L; i)	r   r   r   Nr   r   r   r   r   )r   r	   r   r  r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r  r   r   r   r  r  r   r   r   r   r   s   &&&&&       r   _run_scriptPdbTestInline._run_script  sv   
 		((-8(C  AGGHOOF+, !	(((3??8,~~y) **y(C**C! oo!::0':
 
 !--cjj.BCNF
 *4FE)B)Bf%)3FE)B)Bf%OO.vhjI	

 ~5 !  
 
s   &G,'G/G,	/G?	c                
   R pRpV P                  W^R7      w  r4V P                  RV4       V P                  RV4       V P                  RV4       V P                  VR4       V P                  VP	                  R4      ^4       R# )4
            x = 1
            breakpoint()
        z[
            quit
            n
            p x + 1
            quit
            y
        r  2Quit anywayz--rQ  N)r  r:  rL  r   ru  rv  s   &    r   	test_quitPdbTestInline.test_quit	  s    
 ))&PQ)Rc6"mV, 	v&$m4a8r   c                    R pRpV P                  W^R7      w  r4V P                  VR4       V P                  VP                  R4      ^4       V P                  RV4       R# )r  zM
            interact
            quit()
            q
            y
        r  rQ  r  BdbQuitN)r  r   ru  rL  rv  s   &    r   test_quit_after_interact&PdbTestInline.test_quit_after_interact#  sc    
 ))&PQ)R$m4a8F+r   c                    \         P                  ! R 4      pRpV P                  W4      w  r4V P                  RV4       R# )z
            import pdb
            def foo():
                x = 40 + 2
                pdb.Pdb(skip=['__main__']).set_trace()
            foo()
        z'
            p x
            c
        rn  N)r  r  r  r:  r;  s   &    r   test_set_trace_with_skip&PdbTestInline.test_set_trace_with_skip=  s@      "  $$V6	dF#r   r1   r}  )r(   r)   r*   r+   r~  r  r   r  r  r  r  r  r  r,   r-   r.   s   @r   r  r    sF     __SYY((>@@B94,4$ $r   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )PdbTestColorizeiT  c                H    \         P                  V n        R  \         n        R# )c                      R # )Tr1   )argskwargss   *,r   <lambda>'PdbTestColorize.setUp.<locals>.<lambda>Z  s    r   N)	_colorizecan_colorize_original_can_colorizer    s   &r   r  PdbTestColorize.setUpV  s    &/&<&<# ">	r   c                0    V P                   \        n        R # r   )r  r  r  r    s   &r   r   PdbTestColorize.tearDown\  s    !%!<!<	r   c                J   \         P                  ! 4       p\        P                  ! VR R7      pVP	                  RR.R7       V P                  RVP                  4       4       \         P                  ! 4       p\        P                  ! VRR7      pVP	                  RR.R7       V P                  RVP                  4       4       \         P                  ! 4       p\        P                  ! VR7      pVP	                  RR.R7       V P                  RVP                  4       4       R# )	Tr   colorizellr'  r   F)r   N)ior   r   r   r  r:  r  rL  r   rS  ps   &  r   test_code_display!PdbTestColorize.test_code_display_  s    GG6D1	dC[)ffoo/0GG6E2	dC[)!23GG6"	dC[)!23r   c                    \         P                  ! 4       p\        P                  ! VR R7      pVP	                  RR.R7       V P                  RVP                  4       4       R# )Tr  r   r'  r  r  N)r  r   r   r   r  r:  r  r  s   &  r   test_stack_entry PdbTestColorize.test_stack_entryo  sD    GG6D1	c3Z(ffoo/0r   )r  N)
r(   r)   r*   r+   r  r   r  r  r,   r-   r.   s   @r   r  r  T  s     >=4 1 1r   r  c                   &   a  ] tR tRt o R tRtV tR# )TestREPLSessioniv  c                `   ^ RI Hp V! 4       pRpVP                  P                  \        P
                  ! V4      4       \        V4      pV P                  RV4       V P                  RV4       V P                  RV4       V P                  RV4       V P                  VP                  ^ 4       R# )r   )
spawn_replz
            x = 'Spam'
            import pdb
            pdb.set_trace(commands=['x + "During"', 'q'])
            x + 'After'
        
SpamDuringr  r  	SpamAfterN)test.test_replr  r   r  r  r  r   r:  rL  r   r   )r   r  r  
user_inputrS  s   &    r   $test_return_from_inline_mode_to_REPL4TestREPLSession.test_return_from_inline_mode_to_REPLy  s     	.L
 	
hooj12QlF+/i(k6*q)r   r1   N)r(   r)   r*   r+   r  r,   r-   r.   s   @r   r  r  v  s     * *r   r  c                   "  a  ] tR tRt o ]R 4       tR tR tR tR t	R t
]P                  ! ]P                  P                  R4      R	4      R
 4       tR t]P                  ! ]P                  P                  R4      R	4      R 4       tR tRtV tR# )PdbTestReadlinei  c                j    \        R 4      pVP                  R8X  d   \        P                  ! R4      hR# )readlineeditlinez)libedit readline is not supported for pdbN)r
   backendr~  SkipTest)clsr  s   & r   
setUpClassPdbTestReadline.setUpClass  s3     !,z)##$OPP *r   c                    \         P                  ! R 4      pRp\        W4      pV P                  RV4       V P                  RV4       V P                  RV4       V P                  RV4       R# )z
            import pdb; pdb.Pdb().set_trace()
            # Concatenate strings so that the output doesn't appear in the source
            print('hello' + '!')
        s
   co		ntin	
s   commandss	   conditions   continues   hello!Nr  r  r   r:  r   r  r   rS  s   &   r   test_basic_completion%PdbTestReadline.test_basic_completion  s^     "  "'k6*lF+k6*i(r   c                    \         P                  ! R 4      pRpVR,          pVR,          pVR,          p\        W4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )	S
            value = "speci"
            import pdb; pdb.Pdb().set_trace()
           val	 + 'al'
s   p val	 + 'es'
s   $_fra	
   c
   specials   speciess   $_frameNr  r  s   &   r   test_expression_completion*PdbTestReadline.test_expression_completion  sn     "  "$$'j&)j&)j&)r   c                    \         P                  ! R 4      pRpVR,          p\        W4      pV P                  RV4       R# )r  s   pri	val	 + 'al')
r  r  Nr  r  s   &   r   test_builtin_completion'PdbTestReadline.test_builtin_completion  s?     "  ( 	'j&)r   c                    \         P                  ! R 4      pRpVR,          pVR,          p\        W4      pV P                  RV4       V P                  RV4       R# )7
            import pdb; pdb.Pdb().set_trace()
        s   $_fram	
s   $_frame.f_line	 + 100
r  s   <frame at 0xs   102Nr  r  s   &   r   test_convvar_completion'PdbTestReadline.test_convvar_completion  sZ     " 
  	,, 	'ov.ff%r   c                    \         P                  ! R 4      pRpVR,          p\        W4      pV P                  RV4       R# )z
            def f():
                original = "I live Pythin"
                import pdb; pdb.Pdb().set_trace()
            f()
        s   orig	.repl	('i', 'o')
r  s   I love PythonNr  r  s   &   r   test_local_namespace$PdbTestReadline.test_local_namespace  s@     "  - 	'&/r   freebsdz/\x08 is not interpreted as backspace on FreeBSDc                    \         P                  ! R 4      pRpVR,          pVR,          pVR,          pVR,          pVR,          pVR,          pVR,          pVR	,          p\        W4      pV P                  R
V4       R# )r  s
   def f(x):
s
   if x > 0:
s   x += 1
s	   return x
s
   else:
s
   return -x
   
s
   f(-21-21)
r     42Nr  r  s   &   r   test_multiline_auto_indent*PdbTestReadline.test_multiline_auto_indent  s      "  ++'eV$r   c                    \         P                  ! R 4      pRpVR,          pVR,          pVR,          pVR,          p\        W4      pV P                  RV4       R# )r  s   def func():
s   ret	 40 + 2
r  s   fun	()
r  r  Nr  r  s   &   r   test_multiline_completion)PdbTestReadline.test_multiline_completion  s]     "  ! 	""'eV$r   c                    \         P                  ! R 4      p\         P                  ! R4      P                  4       p\        W4      pV P	                  RV4       V P                  RV4       R# )r  z            def func():
            a = 1
            	a += 1
            	a += 1
            	a += 1
            	if a > 0:
            a += 1
            return a

            func()
            c
           5rg  N)r  r  r   r   r:  rL  r  s   &   r    test_multiline_indent_completion0PdbTestReadline.test_multiline_indent_completion  sb      "   !  VX 	 'dF#6*r   c                H   \         P                  ! R 4      pRpVR,          pVR,          pVR,          pVR,          pVR,          pVR,          pVR,          pVR	,          p\        W4      pV P                  R
V4       V P                  RV4       V P                  RV4       R# )r  s	   interact
s   disp	
r  s	   def f():
s   	return 42
r  s   f() * 2
s   exit()
r  s   'disp' is not definedr  s   84Nr  r  s   &   r   test_interact_completion(PdbTestReadline.test_interact_completion:  s     "  ""!!'.7j&)eV$r   r1   N)r(   r)   r*   r+   classmethodr  r  r  r  r  r  r~  r  r   platform
startswithr  r  r  r  r,   r-   r.   s   @r   r  r    s      Q Q)$*** &&0$ __S\\,,Y7GI%I%(%$ __S\\,,Y7GI+I+6% %r   r  c                     ^ RI Hp R pR pVP                  \        P                  ! VV! R4      VR7      4       VP                  \        P                  ! VV! R4      VR7      4       V# )r   )test_pdbc                    a  V 3R  lpV# )c                 4   < ^ RI pVP                  ! S4       R# r}  )r   set_default_backend)testr   r  s   & r   r  2load_tests.<locals>.setUpPdbBackend.<locals>.setUp[  s    ##G,r   r1   )r  r  s   f r   setUpPdbBackend#load_tests.<locals>.setUpPdbBackendZ  s    	- r   c                 <   \        R 4       ^ R IpVP                  P                  4        \        P
                  P                  '       d>   \        P
                  P                  P                  4        R \        P
                  n        \        P                  ! 4        R # r   )
r   bdb
BreakpointclearBreakpointsr   r   r  
stop_tracegccollect)r  r  s   & r   r   load_tests.<locals>.tearDown`  s`     	t$ 	'') 77%%%GG&&113)-CGG& 	

r   
monitoring)r  r   r$   )r  r
  addTestdoctestDocTestSuite)loadertestspatternr
  r  r   s   &&&   r   
load_testsr!  W  sj    2 
MM!,/	
 
MM!*-	
 Lr   __main__)r  r  r  r  r   r   r   typesr2  r~  r   r  r  ro  rv  asyncio.eventsr   
contextlibr   r   r   r  r   test.supportr   r	   test.support.import_helperr
   test.support.pty_helperr   r   test.support.script_helperr   unittest.mockr   SKIP_CORO_TESTSr  r   r2   r5   r7   r9   r;   r=   r?   rA   rC   rE   rG   rI   rK   rO   rQ   rS   rU   rW   rY   r[   r]   r  no_siter_   rb   rd   rf   rh   rj   rl   rn   rp   rr   rt   rv   rx   
ModuleTypemodexec__dict__r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  original_pdb_settracer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   force_not_colorized_test_classrequires_subprocessTestCaser   r  r  force_colorized_test_classr  r  r  r!  r(   mainr1   r   r   <module>r7     s     	 	 	 
 
         1 1   6 4 6 2 *6 *"8WrBH'R D,\B'R@D"H4@	aF'R=~GRYv*	 yy2hYxNb5pGT"J"J*bJ?D0f4!J '( =s|| L,^+\?
 ,=~=~ 	.>	@.	`;	z7r<|9v )V.` .`'R1fB D=~&T  %N08.`CJ(T2("".6,1f'R1h 	''2(## 2  (2D""IX&& "IJ 	l$H%% l$ l$^ 	##1h'' 1 $1B 	''*h'' *  (** 	''E%h'' E%  (E%P0f zMMO r   