
    0hh             
          S r SSKJr  SSKJr  SSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKr
SSKrSSKrSSKrSSKrSSKJr  SSKrSSKJrJrJrJrJrJrJr  SSKJrJr  SSKJrJ r   SS	K!J"r"  SS
KJ#r#J$r$  SSK%r%SSK&r&SSK'r'SSK(J)r)  SSK*J+r+  SSK,r,\-S:X  a  \- S3OSr.\" SSS/5      r/S \/l0        \" S/ SQ5      r1\" S/ SQ5      r2\+" \35      Rh                  S-  r5 " S S\
Rl                  5      r7 " S S5      r8 " S S5      r9 " S S \95      r:\" 5        " S! S"5      5       r;\" 5       \$ " S# S$\8\;\
Rl                  5      5       5       r<\\" 5       \$ " S% S&\9\;\
Rl                  5      5       5       5       r=\\" 5       \$ " S' S(\:\;\
Rl                  5      5       5       5       r> " S) S*5      r?S+r@S,rA\R                  " S-\R                  " \@5      < S.\R                  " \A5      < S/35      rD\$ " S0 S1\
Rl                  \?5      5       rE\\$ " S2 S3\
Rl                  \?5      5       5       rF " S4 S55      rG\$ " S6 S7\G\
Rl                  5      5       rH\$ " S8 S9\G\
Rl                  5      5       rI " S: S;\
Rl                  5      rJ " S< S=\
Rl                  5      rK " S> S?\
Rl                  5      rL " S@ SA\
Rl                  5      rM " SB SC5      rN " SD SE\O5      rP " SF SG\Q5      rR " SH SI\
Rl                  5      rS " SJ SK\
Rl                  5      rTSrU " SL SM5      rV " SN SO\8\V\
Rl                  5      rW\ " SP SQ\9\V\
Rl                  5      5       rX " SR SS\
Rl                  5      rY " ST SU\
Rl                  5      rZ\-S:X  a  \
R                  " 5         gg)VzTest cases for traceback module    )
namedtuple)StringION)support)Errorcaptured_outputcpython_only	ALWAYS_EQrequires_debug_rangeshas_no_debug_rangesrequires_subprocess)TESTFNunlink)assert_python_okassert_python_failure)forget)force_not_colorizedforce_not_colorized_test_class)partial)Path__main__. codeco_filenameco_namec                     [        S/5      $ )N)   r   r   r   )iter)_s    </opt/python-3.13.8/usr/lib/python3.13/test/test_traceback.py<lambda>r!   $   s    4#7    frame)f_code	f_globalsf_localstb)tb_frame	tb_linenotb_nexttb_lastizlevenshtein_examples.jsonc                   @  ^  \ rS rSrU 4S jrU 4S jrS rS rS rS r	S r
S	 rS
 rS rS rS r\S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#\$" 5       \S! 5       5       r%S" r&S# r'S$ r(S% r)S& r*S' r+S( r,S) r-S*r.U =r/$ )+TracebackCases,   c                 b   > [         TU ]  5         [        R                  U l        S[        l        g NF)supersetUp	_colorizeCOLORIZEcolorizeself	__class__s    r    r2   TracebackCases.setUp/   s!    !**"	r"   c                 L   > [         TU ]  5         U R                  [        l        g N)r1   tearDownr5   r3   r4   r6   s    r    r<   TracebackCases.tearDown4   s    !]]	r"   c                 z     U" 5         [        S5      e! U a   n[        R                  " X#5      s S nA$ S nAff = f)Nzcall did not raise exception)
ValueError	tracebackformat_exception_only)r7   funcexcvalues       r    get_exception_format#TracebackCases.get_exception_format8   s=    	=F ;<<  	?223>>	?s    :5::c                     [        SSS5        g )Nzdef fact(x):
	return x!
?execcompiler7   s    r    syntax_error_with_caret&TracebackCases.syntax_error_with_caret@   s    -sF;r"   c                     [        SSS5        g )Nz1 +
rH   rI   rJ   rL   s    r    syntax_error_with_caret_2(TracebackCases.syntax_error_with_caret_2C   s    f%r"   c                     [        SSS5        g )Nzf(x, y for y in range(30), z)rH   rI   rJ   rL   s    r    syntax_error_with_caret_range,TracebackCases.syntax_error_with_caret_rangeF   s    /f=r"   c                     [        SSS5        g )Nz def spam():
  print(1)
 print(2)rH   rI   rJ   rL   s    r    syntax_error_bad_indentation+TracebackCases.syntax_error_bad_indentationI   s    4c6Br"   c                     [        SSS5        g )Nu   Python = "Ṕýţĥòñ" +rH   rI   rJ   rL   s    r    !syntax_error_with_caret_non_ascii0TracebackCases.syntax_error_with_caret_non_asciiL   s    =sFKr"   c                     [        SSS5        g )Nz	 print(2)rH   rI   rJ   rL   s    r    syntax_error_bad_indentation2,TracebackCases.syntax_error_bad_indentation2O   s    S&)r"   c                     [        SSS5        g )Nz
blech  (  rH   rI   rJ   rL   s    r     tokenizer_error_with_caret_range/TracebackCases.tokenizer_error_with_caret_rangeR   s    c6*r"   c                 X   U R                  U R                  [        5      nU R                  [	        U5      S5        U R                  US   R                  5       S:H  5        U R                  SUS   5        U R                  US   R                  S5      US   R                  S5      5        U R                  US   R                  S5      S5        U R                  U R                  [        5      nU R                  SUS   5        U R                  US   R                  S5      S5        U R                  US   R                  S5      S-   US   R                  S5      5        U R                  US   R                  S5      S5        U R                  U R                  [        5      nU R                  SUS   5        U R                  US   R                  S5      S5        U R                  US   R                  S5      S-   US   R                  S5      5        U R                  US   R                  S5      S5        U R                  U R                  [        5      nU R                  SUS   5        U R                  US   R                  S5      S5        U R                  US   R                  S	5      US   R                  S5      5        U R                  US   R                  S5      [	        S
5      5        U R                  U R                  [        5      nU R                  SUS   5        U R                  US   R                  S5      S5        U R                  US   R                  S5      US   R                  S5      5        U R                  US   R                  S5      S5        g )N      z	return x!^   !
+yzy for y in range(30)()rE   rM   SyntaxErrorassertEquallen
assertTruestripassertInfindcountrP   rY   rS   r_   r7   errs     r    
test_caretTracebackCases.test_caretU   s   ''(D(D(35S1%A+56c3q6"QS)3q6;;s+;<Qc*A.''(F(F(35c3q6"Qd+Q/QS)A-s1v{{3/?@Qc*A.''(N(N(35c3q6"Qd+Q/QS)A-s1v{{3/?@Qc*A.''(J(J(35c3q6"Qd+Q/QS)3q6;;s+;<Qc*C0F,GH''(M(M(35c3q6"Qd+Q/QS)3q6;;s+;<Qc*A.r"   c                     [        SS5      n[        R                  " [         U5      nU R                  [	        U5      S5        U R                  US   R                  5       S5        g )Nerrorzx.py   N
bad syntax   rc   r{   )rk   r@   rA   rl   rm   ro   r7   rC   rt   s      r    test_nocaretTracebackCases.test_nocaretz   sO    '#CD--k3?S1%Q6r"   c                     [        [        S5       nUR                  S5        S S S 5        [        SS[        5      u    p#UR	                  5       nU R                  [        U5      S5        U R                  US   S5        U R                  SUS	   5        U R                  US
   S5        U R                  US   S5        [        [        5        g ! , (       d  f       N= f! [        [        5        f = f)Nwz
x = 1 / 0
-Xno_debug_rangesrb   r   "   Traceback (most recent call last):s   line 1, in <module>rc   re          x = 1 / 0r|   #   ZeroDivisionError: division by zero)	openr   writer   
splitlinesrl   rm   rp   r   )r7   fr   stderrliness        r    'test_no_caret_with_no_debug_ranges_flag6TracebackCases.test_no_caret_with_no_debug_ranges_flag   s    	fc"a& # 1'1LAq %%'ESZ+U1X'LMMM0%(;U1X'78U1X'MN6N #" 6Ns"   C  CBC  
CC   C1c                    [         R                  " S5      n [        [        S5       nUR	                  U5        S S S 5        [        SS[        5      u    p4UR                  5       nU R                  [        U5      S5        U R                  US   S5        U R                  SUS	   5        U R                  US
   S5        U R                  US   S5        [        [        5        g ! , (       d  f       N= f! [        [        5        f = f)Nz
            import traceback
            try:
                x = 1 / 0
            except ZeroDivisionError:
                traceback.print_exc()
            r   r   r   rb   r   r   s   line 4, in <module>rc   re   r   r|   r   )textwrapdedentr   r   r   r   r   rl   rm   rp   r   )r7   r   r   r   r   r   s         r    8test_no_caret_with_no_debug_ranges_flag_python_tracebackGTracebackCases.test_no_caret_with_no_debug_ranges_flag_python_traceback   s       	fc"a # ,'1LAq %%'ESZ+U1X'LMMM0%(;U1X'78U1X'MN6N #" 6Ns"   C6 C%BC6 %
C3/C6 6Dc                 8   [         R                  " S5      n [        [        S5       nUR	                  U5        S S S 5        [        [        5      u  n  nU R                  US5        [        [        5        g ! , (       d  f       NC= f! [        [        5        f = f)Na>  
                import sys
                from weakref import ref

                sys.setrecursionlimit(15)

                def f():
                    ref(lambda: 0, [])
                    f()

                try:
                    f()
                except RecursionError:
                    pass
        r   r   )r   r   r   r   r   r   rl   r   )r7   r   r   rcr   s        r    %test_recursion_error_during_traceback4TracebackCases.test_recursion_error_during_traceback   sr       	fc"a # (/HB1R#6N #" 6Ns!   B A7-B 7
BB Bc                    U R                  U R                  [        5      nU R                  [	        U5      S5        U R                  US   R                  5       S5        U R                  SUS   5        U R                  US   R                  S5      S-   US   R                  S5      5        U R                  U R                  [        5      nU R                  [	        U5      S5        U R                  US   R                  5       S5        g )Nrb   rc   zprint(2)rd   re   )r|   )	rE   rV   IndentationErrorrl   rm   ro   rp   rq   r\   rs   s     r    test_bad_indentation#TracebackCases.test_bad_indentation   s    ''(I(I(8:S1%Q4c3q6"QS)A-s1v{{3/?@ ''(J(J(8:S1%Q4r"   c                     [        5       n[        R                  " UR                  U5      nU R	                  US/5        g )NzKeyboardInterrupt
)KeyboardInterruptr@   rA   r8   rl   )r7   elsts      r    test_base_exception"TracebackCases.test_base_exception   s4    --akk1=456r"   c                 T    " S S[         5      n[        R                  " X" 5       5      nU R                  [	        U5      S5        SnUR
                  S;   a  UR                  nO'SR                  UR
                  UR                  /5      nU R                  US   U< SU< S	35        g )
Nc                       \ rS rSrS rSrg)?TracebackCases.test_format_exception_only_bad__str__.<locals>.X   c                     SS-    g Nrc   r    rL   s    r    __str__GTracebackCases.test_format_exception_only_bad__str__.<locals>.X.__str__   	    !r"   r   N__name__
__module____qualname____firstlineno__r   __static_attributes__r   r"   r    Xr          r"   r   rc   <exception str() failed>)r   builtinsr   r   : rg   )	Exceptionr@   rA   rl   rm   r   r   joinr7   r   rt   	str_valuestr_names        r    %test_format_exception_only_bad__str__4TracebackCases.test_format_exception_only_bad__str__   s    		 	 --a5S1%.	<<33~~Hxxq~~ >?HQx!CDr"   c                     [        S[        S5      /5      n[        R                  " U5      nU R	                  US/5        g )NAB$ExceptionGroup: A (1 sub-exception)
ExceptionGroupr?   r@   rA   rl   r7   egrt   s      r    .test_format_exception_group_without_show_group=TracebackCases.test_format_exception_group_without_show_group   s9    C*S/!23--b1FGHr"   c                     [        S[        S5      /5      n[        R                  " USS9nU R	                  USS/5        g Nr   r   T
show_groupr      ValueError: B
r   r   s      r    test_format_exception_group*TracebackCases.test_format_exception_group   sB    C*S/!23--bTB3 
 	r"   c                     [        S[        S5      /5      n[        R                  " USS9nU R	                  USS/5        g )Nr   r   Tr   z(BaseExceptionGroup: A (1 sub-exception)
z   BaseException: B
)BaseExceptionGroupBaseExceptionr@   rA   rl   r   s      r     test_format_base_exception_group/TracebackCases.test_format_base_exception_group   sC    mC&8%9:--bTB7#
 	r"   c                     [        S5      nUR                  S5        [        SU/5      n[        R                  " USS9nU R                  U/ SQ5        g )Nr   Noter   Tr   )r   r   z   Note
)r?   add_noter   r@   rA   rl   r7   rC   r   rt   s       r    %test_format_exception_group_with_note4TracebackCases.test_format_exception_group_with_note   sL    oVC#'--bTB 
 	r"   c                     [        S[        S5      /5      n[        R                  " [         USS9nU R	                  USS/5        g r   r   r   s      r    *test_format_exception_group_explicit_class9TracebackCases.test_format_exception_group_explicit_class  sD    C*S/!23--nbTR3 
 	r"   c                     [        S[        S5      [        S5      /5      n[        R                  " USS9nU R                  U/ SQ5        g )Nr   r   CTr   )%ExceptionGroup: A (2 sub-exceptions)
r   z   TypeError: C
)r   r?   	TypeErrorr@   rA   rl   r   s      r    /test_format_exception_group_multiple_exceptions>TracebackCases.test_format_exception_group_multiple_exceptions  sB    C*S/9S>!BC--bTB 
 	r"   c                     [        S[        S5      /5      n[        R                  " USS9nU R	                  U/ SQ5        g )NA
1zB
2Tr   )&ExceptionGroup: A
1 (1 sub-exception)
r      2
r   r   s      r    .test_format_exception_group_multiline_messages=TracebackCases.test_format_exception_group_multiline_messages  s=    FZ%7$89--bTB 
 	r"   c                     [        S5      nUR                  S5        [        SU[        S5      /5      n[        R
                  " USS9nU R                  U/ SQ5        g )NzB

2
z
C

3zA

1
DTr   )
z)ExceptionGroup: A

1
 (2 sub-exceptions)
r      
r   r   r   z   C
r   z   3
z   IndexError: D
)r?   r   r   
IndexErrorr@   rA   rl   r   s       r    /test_format_exception_group_multiline2_messages>TracebackCases.test_format_exception_group_multiline2_messages   sT    $Z Jjo(>?--bTB 
 	r"   c                     [        SS5      n[        SU/5      n[        R                  " USS9nU R	                  U/ SQ5        g )Nrx   ry   r   Tr   )r   z     File "x.py", line 23
z       bad syntax
z   SyntaxError: error
)rk   r   r@   rA   rl   r   s       r    (test_format_exception_group_syntax_error7TracebackCases.test_format_exception_group_syntax_error2  sD    '#CDFSE*--bTB 
 	r"   c                     [        S5      nUR                  S5        [        S[        S5      [        SU[	        S5      /5      [        S5      /5      n[        R                  " USS	9nU R                  U/ S
Q5        g )Nr   zNote
multiliner   r   r   EFTr   )z%ExceptionGroup: A (3 sub-exceptions)
r   z(   ExceptionGroup: C (2 sub-exceptions)
z      IndexError: D
z      Note
z      multiline
z      LookupError: E
z   TypeError: F
)	r   r   r   r?   LookupErrorr   r@   rA   rl   r   s       r    -test_format_exception_group_nested_with_notes<TracebackCases.test_format_exception_group_nested_with_notes=  st    o&'CsO3k#&6 78cN"
 
 --bTB 	
 		r"   c           	          S nS n[        SU" 5       [        SU" 5       /5      /5      n[        R                  " USS9nU R                  U/ SQ5        g )Nc                  B     SS-    g ! [          a  n U s S n A $ S n A ff = fr   ZeroDivisionErrorr   s    r    r   ETracebackCases.test_format_exception_group_with_tracebacks.<locals>.fR  s#    A$ s    
c                  L     [        S5      e! [          a  n U s S n A $ S n A ff = fNgr   r   s    r    r  ETracebackCases.test_format_exception_group_with_tracebacks.<locals>.gX  s&    n$ s    
###r   r   Tr   )r   z'   ZeroDivisionError: division by zero
z'   ExceptionGroup: B (1 sub-exception)
z      TypeError: g
r   r@   rA   rl   )r7   r   r  r   rt   s        r    +test_format_exception_group_with_tracebacks:TracebackCases.test_format_exception_group_with_tracebacksQ  s[    		 CC3&"
  --bTB 
 	r"   c                     S n[        SU" 5       /5      n[        R                  " USS9nU R                  USS/5        g )Nc                  v      SS-    g ! [          a    [        S5      ef = f! [         a  n U s S n A $ S n A ff = fr   )r   r?   r   r   s    r    r   @TracebackCases.test_format_exception_group_with_cause.<locals>.fk  s@    (E( ($Q-'( s   	 " 
8388r   Tr   r   z   ValueError: 0
r  )r7   r   r   rt   s       r    &test_format_exception_group_with_cause5TracebackCases.test_format_exception_group_with_causej  sF    	 C!#'--bTB3 
 	r"   c                 b   [        SS5      [        SS /S-  5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS /S-  5      [        SS5      [        SS	5      4	 H  nU R                  US
9   [        R                  " USS9nUR                  b?  U R                  [        U5      S5        U R                  US   R                  S5      5        OU R                  [        U5      S5        U R                  US   S5        S S S 5        M     g ! , (       d  f       M  = f)Nrx   abcdrb   )rc   re   r|   rb   )rc   abre   abcdefr   )rc   re   r|   rb      r   )rc   r  r  re   cdrC   Tr   re   r     Filerc   zSyntaxError: error
)	rk   subTestr@   rA   linenorl   rm   rn   
startswithr}   s      r    ;test_format_exception_group_syntax_error_with_custom_valuesJTracebackCases.test_format_exception_group_syntax_error_with_custom_values{  s    ($!,..!12*$!,!34!;<
C #&55cdK::)$$SXq1OOCF$5$5h$?@$$SXq1  R*@A '&
 '&s    BD
D.	c                   ^ ^^^	 SS K m	SS KmTR                  T	R                  SS/TR                  TR
                  S9nUR                  5       u  p#[        US5      R                  5       S   mUU UU	4S jnU" SSSS	5        S
 Hb  nUS:X  a  SnOUS:X  a  SnOSnU" SR                  U5      XeS5        U" SR                  U5      XeS5        U" SR                  U5      XeS5        Md     U" SSSS5        g )Nr   -cz&import sys; print(sys.stdout.encoding)stdoutr   asciic                 N  >  [        [        SUS9 nUR                  SR                  X5      5        S S S 5        TR	                  TR
                  [        /TR                  TR                  S9nUR                  5       u  pgUR                  T5      R                  5       n[        [        5        UR                  TS5      nUR                  T5      n	SR                  U	5      n
SR                  U	5      nTR                  SU-  US	   S
R                  US	   U5      5        TR                  US   R                  U
5      SR                  US   U
5      5        US   nTR                  X:H  SR                  X5      5        g ! , (       d  f       GNU= f! [        [        5        f = f)Nr   )encodingz}{0}if 1:
                        import traceback;
                        raise RuntimeError('{1}')
                        r  backslashreplacezraise RuntimeError('{0}')zRuntimeError: {0}zline %src   z)Invalid line number: {0!r} instead of {1}re   z.Invalid traceback line: {0!r} instead of {1!r}r|   z-Invalid error message: {0!r} instead of {1!r})r   r   r   formatPopen
executablePIPESTDOUTcommunicatedecoder   r   encoderp   rn   endswith)
firstlinesmessagecharsetr  outputprocessr  r   encoded_messagemessage_asciierr_lineerr_msgactual_err_msgoutput_encodingr7   
subprocesssyss                r    do_test1TracebackCases.test_encoded_file.<locals>.do_test  s   &#8FLL " #F:79 9 %**CNNF+C%??:3D3D + F!(!4!4!67BBDv &nn_-?AO ,22?CM299-HH)00?GMM9v-q	;BB1Iv'( OOF1I..x8@GG1Ix)* $AYNOON5?FF"-.; 98 vs"   F !FA.F 
FF F$r   foor|   )r   z
iso-8859-1utf-8GBKr>  u   丂儀u   hé hoz# coding: {0}
rb   z#!shebang
# coding: {0}
r  z 	
# coding: {0}
zx=0
# coding: GBK
r=  )
r9  r8  r%  r&  r'  r(  r)  strr   r$  )
r7   r1  r  r   r:  r/  textr7  r8  r9  s
   `      @@@r    test_encoded_file TracebackCases.test_encoded_file  s    	
 ""CNND$L$N*4//*4*;*; # = !,,.fg.99;A>"	. "	.H 	E7A&>G'!E!%!%,,W51&077@1&,33G<1& ? 	&
GQ?r"   c                     [         R                  " S5      n[        SU5      u  p#n/ SQnU R                  UR	                  5       U5        g )Na  
            import sys
            import traceback

            class PrintExceptionAtExit(object):
                def __init__(self):
                    try:
                        x = 1 / 0
                    except Exception as e:
                        self.exc = e
                        # self.exc.__traceback__ contains frames:
                        # explicitly clear the reference to self in the current
                        # frame to break a reference cycle
                        self = None

                def __del__(self):
                    traceback.print_exception(self.exc)

            # Keep a reference in the module namespace to call the destructor
            # when the module is unloaded
            obj = PrintExceptionAtExit()
        r  )r   s&     File "<string>", line 8, in __init__r   s           ^^^^^r   )r   r   r   rl   r   )r7   r   r   r  r   expecteds         r    test_print_traceback_at_exit+TracebackCases.test_print_traceback_at_exit  sL        , .dD9F<
 	**,h7r"   c                     [        5       n[        R                  " [        [        S5      S US9  U R	                  UR                  5       S5        g N	projectorfileException: projector
r   r@   print_exceptionr   rl   getvaluer7   r0  s     r    test_print_exception#TracebackCases.test_print_exception  s?    !!y-t&	
 	*,DEr"   c                     [        5       n[        R                  " [        S5      US9  U R	                  UR                  5       S5        g rH  rM  rP  s     r    test_print_exception_exc'TracebackCases.test_print_exception_exc  s6    !!)K"8vF*,DEr"   c                     [         R                  " [        S[        S5      5         [	        5       n[
        R                  " US9  U R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nlast_exc*   rJ  zValueError: 42
)	r   	swap_attrr9  r?   r   r@   
print_lastrl   rO  rP  s     r    test_print_lastTracebackCases.test_print_last  sR    sJ
2?ZF  f-V__.0BC @??s   ?A..
A<c                 H   [        S5      n[        R                  " U5      nU R                  US/5        U R	                  [
        S5         [        R                  " UR                  U5        S S S 5        U R	                  [
        S5         [        R                  " UR                  UR                  S9  S S S 5        U R	                  [        S5         [        R                  " US9  S S S 5        g ! , (       d  f       N= f! , (       d  f       NS= f! , (       d  f       g = f)NrI  rL  zBoth or neitherr'   zrequired positional argumentr  )	r   r@   format_exceptionrl   assertRaisesRegexr?   r8   __traceback__r   )r7   r   r0  s      r    test_format_exception_exc(TracebackCases.test_format_exception_exc  s    k"++A.":!;<##J0AB&&q{{A6 C##J0AB&&q{{qG C##I/MN&&1- ON	 CBBBNNs$   "C1*DD1
C?
D
D!c                 h    [         R                  " [        S5      5      nU R                  US/5        g )NrI  rL  )r@   rA   r   rl   rP  s     r    test_format_exception_only_exc-TracebackCases.test_format_exception_only_exc  s+    00;1GH":!;<r"   c                    Sn[        5       n[        R                  " S US9  U R                  UR	                  5       U5        [        5       n[        R                  " S S S US9  U R                  UR	                  5       U5        [        5       n[        R
                  " S US9  U R                  UR	                  5       U5        U R                  [        R                  " S 5      U5        U R                  [        R                  " S 5      U/5        U R                  [        R                  " S S S 5      U/5        U R                  [        R                  " S 5      U/5        U R                  [        R                  " S S 5      U/5        g )NzNoneType: None
rJ  )	r   r@   rN  rl   rO  	print_exc
format_excr_  rA   )r7   NONE_EXC_STRINGexcfiles      r    test_exception_is_None%TracebackCases.test_exception_is_None  s@   ,*!!$W5))+_=*!!$dA))+_=*Dw/))+_=--d3_E33D9O;LM&&tT48?:K	M++D1O3D	F++D$7/9J	Lr"   c                 r   U R                  [        [        R                  " [        R
                  5      5      S5        U R                  [        [        R                  " [        R                  5      5      S5        U R                  [        [        R                  " [        R                  5      5      S5        g )NzV(exc, /, value=<implicit>, tb=<implicit>, limit=None, file=None, chain=True, **kwargs)zK(exc, /, value=<implicit>, tb=<implicit>, limit=None, chain=True, **kwargs)z9(exc, /, value=<implicit>, *, show_group=False, **kwargs))rl   r?  inspect	signaturer@   rN  r_  rA   rL   s    r    test_signaturesTracebackCases.test_signatures3  s    !!)";";<=<	>
 	!!)"<"<=>%	'
 	!!)"A"ABCG	Ir"   r5   )0r   r   r   r   r2   r<   rE   rM   rP   rS   rV   rY   r\   r_   ru   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r   rA  rE  rQ  rT  r[  rb  re  rl  rq  r   __classcell__r8   s   @r    r-   r-   ,   s   #
+=<&>CL*+#/J7  &0257EI
	$	(2"B0 C@  C@J8BFF
D	.=L.I Ir"   r-   c                   P    \ rS rSrSS jr\R
                  R                  S-   rSrg)"PurePythonExceptionFormattingMixiniC  c                      U" 5         U R                  S5        g ! [         a(    [        R                  " 5       R	                  5       X# s $ f = f)NNo exception thrown.)failr   r@   ri  r   )r7   callableslice_start	slice_ends       r    get_exception0PurePythonExceptionFormattingMixin.get_exceptionD  sK    	.J II,-  	N'')446{MM	Ns    /AAre   r   Nr   r  )	r   r   r   r   r~  __code__co_firstlinenocallable_liner   r   r"   r    rw  rw  C  s    . "**99A=Mr"   rw  c                   T    \ rS rSrSrSS jr\R                  R                  S-   rSr	g)CAPIExceptionFormattingMixiniO  r   c                     SSK Jn   U" 5         U R                  S5        g ! [         ab  n[	        S5       nU" XPR
                  5        S S S 5        O! , (       d  f       O= fWR                  5       R                  5       X# s S nA$ S nAff = f)Nr   exception_printry  r   )	_testcapir  rz  r   r   LEGACYrO  r   )r7   r{  r|  r}  r  r   tbstderrs          r    r~  *CAPIExceptionFormattingMixin.get_exceptionR  sn    -	KJII,- 	K *h;;/ +**$$&113KJJ	Ks1   ! 
BBA		B
A 	&BBBr|   r   Nr  )
r   r   r   r   r  r~  r  r  r  r   r   r"   r    r  r  O  s%    FK "**99A=Mr"   r  c                       \ rS rSrSrSrg)"CAPIExceptionFormattingLegacyMixini^  rc   r   N)r   r   r   r   r  r   r   r"   r    r  r  ^  s    Fr"   r  c                      \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S.r0g/)0#TracebackErrorLocationCaretTestBaseia  z>
Tests for printing code error expressions as part of PEP 657
c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      [        S5      e)Nzbasic caret testsr?   r   r"   r    r   ?TracebackErrorLocationCaretTestBase.test_basic_caret.<locals>.fi  s    %&9::r"   +Traceback (most recent call last):
  File "", line 9, in get_exception
    callable()
    ~~~~~~~~^^
  File "rc   zm, in f
    if True: raise ValueError("basic caret tests")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r  r  __file__r  r~  rl   r   )r7   r   lineno_f
expected_fresult_liness        r    test_basic_caret4TracebackErrorLocationCaretTestBase.test_basic_caretf  s    	; ::,,j););(< =  j! 5C	C 	 ))!,'<'<'>?r"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      [        S5      e)Nu   Ĥellö Wörldr  r   r"   r    f_with_unicodeRTracebackErrorLocationCaretTestBase.test_line_with_unicode.<locals>.f_with_unicode|  s    %&677r"   r  r  r  rc   uq   , in f_with_unicode
    if True: raise ValueError("Ĥellö Wörld")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r  )r7   r  r  r  r  s        r    test_line_with_unicode:TracebackErrorLocationCaretTestBase.test_line_with_unicodey  s    	8 "**99j););(< =  j! 5=	= 	 )).9'<'<'>?r"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                  &    S[         S[        4S jn g )Nr  returnc                     g)Nr   r   r  s    r    r<  cTracebackErrorLocationCaretTestBase.test_caret_in_type_annotation.<locals>.f_with_type.<locals>.foo  s    r"   )THIS_DOES_NOT_EXISTintr<  s    r    f_with_typeVTracebackErrorLocationCaretTestBase.test_caret_in_type_annotation.<locals>.f_with_type  s    *  r"   r  r  r  rc   za, in f_with_type
    def foo(a: THIS_DOES_NOT_EXIST ) -> int:
               ^^^^^^^^^^^^^^^^^^^
r  )r7   r  r  r  r  s        r    test_caret_in_type_annotationATracebackErrorLocationCaretTestBase.test_caret_in_type_annotation  s    	 ''66j););(< =  j! 53	3 	 ))+6'<'<'>?r"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      [        S5      e)Nzerror over multiple linesr  r   r"   r    f_with_multiline]TracebackErrorLocationCaretTestBase.test_caret_multiline_expression.<locals>.f_with_multiline  s    %+ r"   r  r  r  rc   z, in f_with_multiline
    if True: raise ValueError(
             ^^^^^^^^^^^^^^^^^
        "error over multiple lines"
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^r  r7   r  r  r  r  s        r    test_caret_multiline_expressionCTracebackErrorLocationCaretTestBase.test_caret_multiline_expression  s    	
 $,,;;j););(< =  j! 5	
 	 ))*:;'<'<'>?r"   c           	        ^ [         R                  " S5      mU4S jnUR                  R                  nS[         SU R
                   S[         SUS-    S3	nU R                  U5      nU R                  XCR                  5       5        [         R                  " S5      mU4S	 jnUR                  R                  nS[         SU R
                   S[         SUS-    S
3	nU R                  U5      nU R                  XCR                  5       5        g )Nz
        def foo(*args, **kwargs):
            pass

        a, b, c = 1, 2, 3

        foo(a, z
                for z in
                    range(10), b, c)
        c                     > [        T SS5      $ NrH   rI   rJ   r   s   r    r  jTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_syntax_error.<locals>.f_with_multiline      4f--r"   r  r  r  re   zh, in f_with_multiline
    return compile(code, "?", "exec")
  File "?", line 7
    foo(a, z
           ^zX
        dummy_call(
            "dummy value"
            foo="bar",
        )
        c                     > [        T SS5      $ r  rJ   r  s   r    r  r    r  r"   zr, in f_with_multiline
    return compile(code, "?", "exec")
  File "?", line 3
    "dummy value"
    ^^^^^^^^^^^^^)	r   r   r  r  r  r  r~  rl   r   )r7   r  r  r  r  r   s        @r    ,test_caret_multiline_expression_syntax_errorPTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_syntax_error  s)     	  		. $,,;;j););(< =  j! 5	 	 ))*:;'<'<'>?    	. $,,;;j););(< =  j! 5 	  	 ))*:;'<'<'>?r"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      SSS-  -   $ Nre   rc   r   r   r   r"   r    r  dTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_bin_op.<locals>.f_with_multiline  s    A r"   r  r  r  re   z9, in f_with_multiline
    2 + 1 /
        ~~^
    0
    ~r  r  s        r    &test_caret_multiline_expression_bin_opJTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_bin_op  s    	 $,,;;j););(< =  j! 5	 	 ))*:;'<'<'>?r"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn SU S-  -   S-   $ N   
   r      r   divisors    r    f_with_binary_operatorcTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators.<locals>.f_with_binary_operator  s    G!#b((r"   r  r  r  re   zY, in f_with_binary_operator
    return 10 + divisor / 0 + 30
                ~~~~~~~~^~~
r  r7   r  r  expected_errorr  s        r    test_caret_for_binary_operatorsCTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators  s    	) *22AAj););(< =  j! 5,	, 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn SU S-  -   S-   $ r  r   )   áóís    r    r  pTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_unicode.<locals>.f_with_binary_operator"  s    F
?R''r"   r  r  r  re   uT   , in f_with_binary_operator
    return 10 + áóí / 0 + 30
                ~~~~^~~
r  r  s        r    ,test_caret_for_binary_operators_with_unicodePTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_unicode!  s    	( *22AAj););(< =  j! 5(	( 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn SU S-  -   S-   $ r  r   r  s    r    r  lTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_two_char.<locals>.f_with_binary_operator4  s    G1$r))r"   r  r  r  re   z[, in f_with_binary_operator
    return 10 + divisor // 0 + 30
                ~~~~~~~~^^~~
r  r  s        r    (test_caret_for_binary_operators_two_charLTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_two_char3  s    	* *22AAj););(< =  j! 5-	- 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn S=pX-   U-   $ Nrc   r   r   r  r  r  s      r    r  TracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_spaces_and_parenthesis.<locals>.f_with_binary_operatorF  s    AJA<!##r"   r  r  r  r|   zP, in f_with_binary_operator
    return ( a   )   +b + c
           ~~~~~~~~~~^~
r  r  s        r    ;test_caret_for_binary_operators_with_spaces_and_parenthesis_TracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_spaces_and_parenthesisE  s    	$
 *22AAj););(< =  j! 5(	( 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn SnU U-   nU$ r  r   r  r  r  s      r    r  mTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_multiline.<locals>.f_with_binary_operatorY  s     AAA Hr"   r  r  r  r|   zn, in f_with_binary_operator
       a = b    \
           ~~~~~~
    +\
    ^~
          c  # test
          ~
r  r  s        r    )test_caret_for_binary_operators_multilineMTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_multilineX  s    	 *22AAj););(< =  j! 5	
 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn SnU U-  nU$ r  r   r  s      r    r  vTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_multiline_two_char.<locals>.f_with_binary_operators  s%    AA   Hr"   r  r  r  rb   z, in f_with_binary_operator
        (b  # test +
        ~~~~~~~~~~~~
            )  \
            ~~~~
        # +
        ~~~
    << (c  # test
    ^^~~~~~~~~~~~
        \
        ~
    )  # test
    ~
r  r  s        r    2test_caret_for_binary_operators_multiline_two_charVTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_multiline_two_charr  s    	 *22AAj););(< =  j! 5	 	& ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn SU -   nU$ )Nrc   u
   ááááár   )r  r  s     r    r  zTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_multiline_with_unicode.<locals>.f_with_binary_operator  s    AAHr"   r  r  r  re   ug   , in f_with_binary_operator
    a = ("ááá" +
        ~~~~~~~~
        "áá") + b
        ~~~~~~^~~
r  r  s        r    6test_caret_for_binary_operators_multiline_with_unicodeZTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_multiline_with_unicode  s    	 *22AAj););(< =  j! 5"	" 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                  $    SSS 00n U S   S   S   $ Nxri   zr   	some_dicts    r    f_with_subscriptVTracebackErrorLocationCaretTestBase.test_caret_for_subscript.<locals>.f_with_subscript  s$    sDk*IS>#&s++r"   r  r  r  re   z^, in f_with_subscript
    return some_dict['x']['y']['z']
           ~~~~~~~~~~~~~~~~~~~^^^^^
r  r7   r  r  r  r  s        r    test_caret_for_subscript<TracebackErrorLocationCaretTestBase.test_caret_for_subscript  s    	, $,,;;j););(< =  j! 54	4 	 ))*:;'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                  2    SSSSS0000n U S   S   S   S   $ )N   ó   á   íthetarc   betar   r  s    r    r  ^TracebackErrorLocationCaretTestBase.test_caret_for_subscript_unicode.<locals>.f_with_subscript  s3    tgq\&:;<IT?4(.v66r"   r  r  r  re   uq   , in f_with_subscript
    return some_dict['ó']['á']['í']['beta']
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
r  r  s        r     test_caret_for_subscript_unicodeDTracebackErrorLocationCaretTestBase.test_caret_for_subscript_unicode  s    	7 $,,;;j););(< =  j! 5<	< 	 ))*:;'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      / n S=pX   U-   $ Nrc   r   r  s      r    r  xTracebackErrorLocationCaretTestBase.test_caret_for_subscript_with_spaces_and_parenthesis.<locals>.f_with_binary_operator  s    AIA?Q&&r"   r  r  r  r|   zV, in f_with_binary_operator
    return b     [    a  ] + c
           ~~~~~~^^^^^^^^^
r  r  s        r    4test_caret_for_subscript_with_spaces_and_parenthesisXTracebackErrorLocationCaretTestBase.test_caret_for_subscript_with_spaces_and_parenthesis  s    	'
 *22AAj););(< =  j! 5+	+ 	 ))*@A'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                  "    0 n SnSnU UU-      nU$ )Nrc   re   r   )bbbbbcccdddr  s       r    r  `TracebackErrorLocationCaretTestBase.test_caret_for_subscript_multiline.<locals>.f_with_subscript  s-    ECCA Hr"   r  r  r  rb   z, in f_with_subscript
    b = bbbbb \
        ~~~~~~~
        [  ccc # test
        ^^^^^^^^^^^^^
    
    
         + ddd  \
         ^^^^^^^^
    
    
        ] # test
        ^
r  r  s        r    "test_caret_for_subscript_multilineFTracebackErrorLocationCaretTestBase.test_caret_for_subscript_multiline  s    
	 $,,;;j););(< =  j! 5	 	& ))*:;'@'@'BCr"   c                     S nUR                   R                  nS[         SU R                   S[         SUS-    S[         SUS-    S3nU R	                  U5      nU R                  XCR                  5       5        g )	Nc                  0    S n U " S5      " S5      " S5      $ )Nc                     S nU$ )Nc                     [        S5      eNrz  RuntimeErrorr  s    r    f2dTracebackErrorLocationCaretTestBase.test_caret_for_call.<locals>.f_with_call.<locals>.f1.<locals>.f2      &v..r"   r   r  r$  s     r    f1XTracebackErrorLocationCaretTestBase.test_caret_for_call.<locals>.f_with_call.<locals>.f1
      /	r"   r  ri   r  r   r(  s    r    f_with_callLTracebackErrorLocationCaretTestBase.test_caret_for_call.<locals>.f_with_call	  s     c73<$$r"   r  r  r  r  zN, in f_with_call
    return f1("x")("y")("z")
           ~~~~~~~^^^^^
  File "r|   ', in f2
    raise RuntimeError("fail")
r  r7   r,  r  r  r  s        r    test_caret_for_call7TracebackErrorLocationCaretTestBase.test_caret_for_call  s    	% ''66j););(< =  j! 5  j! 5// 	 ))+6'@'@'BCr"   c                     S nUR                   R                  nS[         SU R                   S[         SUS-    S[         SUS-    S3nU R	                  U5      nU R                  XCR                  5       5        g )	Nc                  $    S n U " S5      " S5      $ )Nc                     S nU$ )Nc                     [        S5      er   r!  r#  s    r    r$  lTracebackErrorLocationCaretTestBase.test_caret_for_call_unicode.<locals>.f_with_call.<locals>.f1.<locals>.f2"  r&  r"   r   r'  s     r    r(  `TracebackErrorLocationCaretTestBase.test_caret_for_call_unicode.<locals>.f_with_call.<locals>.f1!  r*  r"   r  r  r   r+  s    r    r,  TTracebackErrorLocationCaretTestBase.test_caret_for_call_unicode.<locals>.f_with_call   s     d8D>!r"   r  r  r  r  uK   , in f_with_call
    return f1("ó")("á")
           ~~~~~~~^^^^^
  File "r|   r.  r  r/  s        r    test_caret_for_call_unicode?TracebackErrorLocationCaretTestBase.test_caret_for_call_unicode  s    	" ''66j););(< =  j! 5  j! 5// 	 ))+6'@'@'BCr"   c                     S nUR                   R                  nS[         SU R                   S[         SUS-    S[         SUS-    S3nU R	                  U5      nU R                  XCR                  5       5        g )	Nc                      S n U " S5      S-   $ )Nc                     [        S5      er   r!  r  s    r    r   ~TracebackErrorLocationCaretTestBase.test_caret_for_call_with_spaces_and_parenthesis.<locals>.f_with_binary_operator.<locals>.f8  s    "6**r"   r  re   r   r   s    r    r  sTracebackErrorLocationCaretTestBase.test_caret_for_call_with_spaces_and_parenthesis.<locals>.f_with_binary_operator7  s    +c$q((r"   r  r  r  r|   zb, in f_with_binary_operator
    return f     (    "x"  ) + 2
           ~~~~~~^^^^^^^^^^^
  File "re   &, in f
    raise RuntimeError("fail")
r  r  s        r    /test_caret_for_call_with_spaces_and_parenthesisSTracebackErrorLocationCaretTestBase.test_caret_for_call_with_spaces_and_parenthesis6  s    	)
 *22AAj););(< =  j! 5  j! 5// 	 ))*@A'@'@'BCr"   c                     S nUR                   R                  nS[         SU R                   S[         SUS-    S[         SUS-    S3nU R	                  U5      nU R                  XCR                  5       5        g )	Nc                  n   ^  " S S5      mU4S jn U " S5      R                  S5      " S5      " S5      nU$ )Nc                       \ rS rSrS rSrg)aTracebackErrorLocationCaretTestBase.test_caret_for_call_multiline.<locals>.f_with_call.<locals>.CiM  c                     S nU$ )Nc                     [        S5      er   r!  r#  s    r    r   nTracebackErrorLocationCaretTestBase.test_caret_for_call_multiline.<locals>.f_with_call.<locals>.C.y.<locals>.fO  s    *622r"   r   )r7   r  r   s      r    ri   cTracebackErrorLocationCaretTestBase.test_caret_for_call_multiline.<locals>.f_with_call.<locals>.C.yN  s    3Hr"   r   N)r   r   r   r   ri   r   r   r"   r    r   rG  M  s    r"   r   c                    > T" 5       $ r;   r   )r  r   s    r    r  aTracebackErrorLocationCaretTestBase.test_caret_for_call_multiline.<locals>.f_with_call.<locals>.gR  s
    s
r"   rc   re   r|   rb   )ri   )r  r  r   s     @r    r,  VTracebackErrorLocationCaretTestBase.test_caret_for_call_multiline.<locals>.f_with_callL  s>     
1A Hr"   r  r  r     zf, in f_with_call
    a = (g(1).y)(
        ~~~~~~~~~
        2
        ~
    )(3)(4)
    ~^^^
  File "rb   rA  r  r/  s        r    test_caret_for_call_multilineATracebackErrorLocationCaretTestBase.test_caret_for_call_multilineK  s    	 ''66j););(< =  j! 5  j! 5// 	 ))+6'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn U S-  n g Nrc   aar   r  s    r    r   >TracebackErrorLocationCaretTestBase.test_many_lines.<locals>.fm  s    AQr"   r  r  r  re   zW, in f
    if True: x += (
             ^^^^^^
    ...<2 lines>...
    )  # test
    ^
r  r7   r   r  r  r  s        r    test_many_lines3TracebackErrorLocationCaretTestBase.test_many_linesl  s}    	 ::,,j););(< =  j! 5		 	 ))!,'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                      Sn U S-  n g rT  r   rV  s    r    r   GTracebackErrorLocationCaretTestBase.test_many_lines_no_caret.<locals>.f  s    AAr"   r  r  r  re   z,, in f
    x += (
    ...<2 lines>...
    )
r  rX  s        r    test_many_lines_no_caret<TracebackErrorLocationCaretTestBase.test_many_lines_no_caret  s}    	 ::,,j););(< =  j! 5	 	 ))!,'@'@'BCr"   c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                  *    Sn SnU U -   UU-   U-   -   nU$ )Nrc   r  r   r  s      r    r  ]TracebackErrorLocationCaretTestBase.test_many_lines_binary_op.<locals>.f_with_binary_operator  s:    AA 	A Hr"   r  r  r  r|   z, in f_with_binary_operator
    a = (
        ~
        b +
        ~~~
        b
        ~
    ) + (
    ~~^~~
        c +
        ~~~
    ...<2 lines>...
    )
    ~
r  r  s        r    test_many_lines_binary_op=TracebackErrorLocationCaretTestBase.test_many_lines_binary_op  s    	 *22AAj););(< =  j! 5	 	( ))*@A'@'@'BCr"   c           	         [        S[        S5      n[        [        S5       nUR                  S5        S S S 5        U R	                  [
        [        5        [        [        U5      nU R                  U5      nUR                  nS[         SU R                   S[         SU S3	nU R                  XFR                  5       5        g ! , (       d  f       N= f)	Nz1 / 0 / 1 / 2
rI   r   z1 $ 0 / 1 / 2
r  r  r  z*, in <module>
    1 $ 0 / 1 / 2
    ^^^^^
)rK   r   r   r   
addCleanupr   r   rI   r~  r  r  r  rl   r   )r7   bytecoderK  rB   r  r  r  s          r    /test_traceback_specialization_with_syntax_errorSTracebackErrorLocationCaretTestBase.test_traceback_specialization_with_syntax_error  s    ,ff=&#$JJ()  	'tX&))$/**j););(< = hhxj 1	 	 	'@'@'BC% s   C
Cc                    Sn[        U[        S5      n[        [        S5       nUR                  U5        S S S 5        U R	                  [
        [        5        [        [        U5      nU R                  U5      nUR                  nS[         SU R                   S[         SU SU SS	[        S
5      -  S-    S3nU R                  XWR                  5       5        g ! , (       d  f       N= f)Na	  if True: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarI   r   r  r  r  z, in <module>
    z
     z	if True: a   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rg   )rK   r   r   r   rf  r   r   rI   r~  r  r  r  rm   rl   r   )r7   sourcerg  rK  rB   r  r  r  s           r    test_traceback_very_long_lineATracebackErrorLocationCaretTestBase.test_traceback_very_long_line  s    (6662&#$JJv 'tX&))$/**j););(< = hhxj 1( s;'''12"6 	 	'@'@'BC# s   C
C)c           	          S nUR                   R                  nS[         SU R                   S[         SUS-    S3	nU R	                  U5      nU R                  XCR                  5       5        g )Nc                  &    SSS 00n U S   S   S     g r  r   r  s    r    r  ]TracebackErrorLocationCaretTestBase.test_secondary_caret_not_elided.<locals>.f_with_subscript  s!    sDk*IcN3$r"   r  r  r  re   zP, in f_with_subscript
    some_dict['x']['y']['z']
    ~~~~~~~~~~~~~~~~~~~^^^^^
r  r  s        r    test_secondary_caret_not_elidedCTracebackErrorLocationCaretTestBase.test_secondary_caret_not_elided  s    	% $,,;;j););(< =  j! 5-	- 	 ))*:;'@'@'BCr"   c           	          S nS[          SU R                   S[          SUR                  R                  S-    S3	nU R	                  U5      nU R                  X2R                  5       5        g )Nc                  B    [        S[        S5      [        S5      /5      eNr   rc   re   r   r?   r   r   r"   r    rC   KTracebackErrorLocationCaretTestBase.test_caret_exception_group.<locals>.exc  s    )$A	!0MNNr"   C  + Exception Group Traceback (most recent call last):
  |   File "r  zE, in get_exception
  |     callable()
  |     ~~~~~~~~^^
  |   File "rc   aB  , in exc
  |     if True: raise ExceptionGroup("eg", [ValueError(1), TypeError(2)])
  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  | ExceptionGroup: eg (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
)r  r  r  r  r~  rl   r   )r7   rC   r  r  s       r    test_caret_exception_group>TracebackErrorLocationCaretTestBase.test_caret_exception_group  s{    
	O$:Xd.@.@-A B %:Xcll.I.IA.M-N O$	% 	 ))#.'@'@'BCr"   c                 p    U R                  U5      nUS   nU R                  UR                  5       U5        g )Nr  )r~  rl   lstrip)r7   rB   expected_specializationr  specialization_lines        r    assertSpecialized5TracebackErrorLocationCaretTestBase.assertSpecialized  s8    ))$/*2.,3357NOr"   c                 >   U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S	 S5        U R                  S
 S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        U R                  S S5        g )Nc                      SS-  $ r   r   r   r"   r    r!   TTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>   s    qsr"   z~^~c                      SS-  S-  $ Nrc   r   r|   r   r   r"   r    r!   r  "  s    qs1ur"   c                      SS-  $ r   r   r   r"   r    r!   r  $      q1ur"   z~~^~~c                      SS-  S-  $ r  r   r   r"   r    r!   r  &  s    q1uqyr"   c                      SS-  $ r   r   r   r"   r    r!   r  (      q!tr"   z~^~~c                      SS-  S-  $ r  r   r   r"   r    r!   r  *  s    q!tAvr"   c                      SS-  $ r   r   r   r"   r    r!   r  ,  s    qqyr"   z	~~~~~^~~~c                      SS-  S-  $ )Nrc   r   r  r   r   r"   r    r!   r  .  s    qqyQr"   c                      SS-  $ r   r   r   r"   r    r!   r  0  r  r"   z~~^~c                      SS-  $ r   r   r   r"   r    r!   r  2  r  r"   z~^^~c                      SS-  S-  $ Nrc   r   rb   r   r   r"   r    r!   r  4  s    q!tQwr"   c                      SS-  $ r   r   r   r"   r    r!   r  6  s    qAvr"   z~~^^~~c                      SS-  S-  $ r  r   r   r"   r    r!   r  8  s    qAv{r"   c                      SS-  $ r   r   r   r"   r    r!   r  :  r  r"   z~~^^~c                      SS-  $ r   r   r   r"   r    r!   r  <  r  r"   z~^^~~)r  rL   s    r    test_specialization_variationsBTracebackErrorLocationCaretTestBase.test_specialization_variations  s#   {&+	-}&+	-}&-	/0&-	/|&,	.~&,	.0&1	36&1	3|&,	.|&,	.&,	.~&.	02&.	0}&-	/}&-	/r"   c                 8  ^^	 S mS m	UU	4S jnU R                  U5      nUR                  R                  nTR                  R                  nS[         SU R                   S[         SUS-    S[         SUS-    S	3nU R                  X%R                  5       5        UU	4S
 jnU R                  U5      nUR                  R                  nS[         SU R                   S[         SUS-    S[         SUS-    S	3nU R                  X%R                  5       5        g )Nc                     [         er;   r  rB   s    r    	dec_error`TracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.dec_error@  s    Or"   c                     U $ r;   r   r  s    r    dec_fine_TracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.dec_fineB  s    Kr"   c                      > TTS 5       5       n g )Nc                      g r;   r   r   r"   r    r  kTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs.<locals>.gE  s    r"   r   )r  r  r  s    r    	applydecs`TracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecsD  s      r"   r  r  r  rc   z5, in applydecs
    @dec_error
     ^^^^^^^^^
  File "z#, in dec_error
    raise TypeError
c                  .   > TT " S S5      5       5       n g )Nc                       \ rS rSrSrg)qTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs_class.<locals>.AiY  r   Nr   r   r   r   r   r   r"   r    r   r  Y  s    r"   r   r   )r   r  r  s    r    applydecs_classfTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs_classX  s    M  r"   z;, in applydecs_class
    @dec_error
     ^^^^^^^^^
  File ")r~  r  r  r  r  rl   r   )
r7   r  r  lineno_applydescslineno_dec_errorr  r  lineno_applydescs_classr  r  s
           @@r    )test_decorator_application_lineno_correctMTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct?  sU   			 )))4%..==$--<<j););(< =  j):Q)>(? @  j)9A)=(> ?$$ 	 	'@'@'BC	 ))/:"1":":"I"Ij););(< =  j)@1)D(E F  j)9A)=(> ?$$ 	 	'@'@'BCr"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
S/nU R                  X#5        g )Nc                  $    S R                  5         g r;   methodr   r"   r    r   KTracebackErrorLocationCaretTestBase.test_multiline_method_call_a.<locals>.fl  s     r"   "Traceback (most recent call last):  File "r  , in get_exception    callable()    ~~~~~~~~^^re   , in fz    .methodz     ^^^^^^r~  r  r  r  r  rl   r7   r   actualrD  s       r    test_multiline_method_call_a@TracebackErrorLocationCaretTestBase.test_multiline_method_call_ak  s{    	 ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
/nU R                  X#5        g )Nc                  $    S R                  5         g r;   r  r   r"   r    r   KTracebackErrorLocationCaretTestBase.test_multiline_method_call_b.<locals>.f}  s     r"   r  r  r  r  r  r  re   r  z
    methodr  r  s       r    test_multiline_method_call_b@TracebackErrorLocationCaretTestBase.test_multiline_method_call_b|  sx    	 ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
S/nU R                  X#5        g )Nc                  $    S R                  5         g r;   r  r   r"   r    r   KTracebackErrorLocationCaretTestBase.test_multiline_method_call_c.<locals>.f  s    & r"   r  r  r  r  r  r  re   r  z    . methodz      ^^^^^^r  r  s       r    test_multiline_method_call_c@TracebackErrorLocationCaretTestBase.test_multiline_method_call_c  s{    	 ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
/nU R                  X#5        g )Nc                      [           g r;   widthr   r"   r    r   hTracebackErrorLocationCaretTestBase.test_wide_characters_unicode_with_problematic_byte_offset.<locals>.f  s    r"   r  r  r  r  r  r  rc   r  u       ｗｉｄｔｈr  r  s       r    9test_wide_characters_unicode_with_problematic_byte_offset]TracebackErrorLocationCaretTestBase.test_wide_characters_unicode_with_problematic_byte_offset  sx    	 ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP!
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
/nU R                  X#5        g )Nc                      Sn [        U 5      er  r  r  s    r    r   [TracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_middle.<locals>.f  s    O_--r"   r  r  r  r  r  r  re   r  u%       raise ValueError(ｗｉｄｔｈ)r  r  s       r    ,test_byte_offset_with_wide_characters_middlePTracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_middle  sx    	. ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP3
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
SSS/	nU R                  X#5        g )Nc                  0    Sn Sn[        SU " U5      5        g r   print)wwwths     r    r   ITracebackErrorLocationCaretTestBase.test_byte_offset_multiline.<locals>.f  s     IF!Y r"   r  r  r  r  r  r  rb   r  u       print(1, ｗｗｗ(z             ~~~~~~^u               ｔｈ))z            ^^^^^r  r  s       r    test_byte_offset_multiline>TracebackErrorLocationCaretTestBase.test_byte_offset_multiline  s    	 ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP%""

 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
S/nU R                  X#5        g )Nc                      Sn SnX-  $ r   r   )   说明说明   şçöğıĤellös     r    r   cTracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_term_highlight.<locals>.f  s    L !33r"   r  r  r  r  r  r  r|   r  u+       return 说明说明 / şçöğıĤellöz            ~~~~~~~~~^~~~~~~~~~~~r  r  s       r    4test_byte_offset_with_wide_characters_term_highlightXTracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_term_highlight  s{    	4
 ##A&0z4+=+=*>>PQz1::+D+Dq+H*IP9.
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
S/nU R                  X#5        g )Nc                  &    S[        SS5      -   S-   $ )Nu   ✨🐍u   📗🚛   🐍)   func_说明说明r   r"   r    r   ZTracebackErrorLocationCaretTestBase.test_byte_offset_with_emojis_term_highlight.<locals>.f  s$    0  $% %r"   r  r  r  r  r  r  rc   r  u4       return "✨🐍" + func_说明说明("📗🚛",z!                    ^^^^^^^^^^^^^r  r  s       r    +test_byte_offset_with_emojis_term_highlightOTracebackErrorLocationCaretTestBase.test_byte_offset_with_emojis_term_highlight  s{    	% ##A&0z4+=+=*>>PQz1::+D+Dq+H*IPB/
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
S/nU R                  X#5        g )Nc                  4    SSSS 000n U S   S   S   S   S   $ )Nu
   ✨🚛✨u   说明u   🐍🐍🐍r  u   🐍🐍r   )my_dcts    r    r   TTracebackErrorLocationCaretTestBase.test_byte_offset_wide_chars_subscript.<locals>.f  s?    &F ,'1&9(CJOOr"   r  r  r  r  r  r  rO  r  uG       return my_dct["✨🚛✨"]["说明"]["🐍"]["说明"]["🐍🐍"]z)           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^r  r  s       r    %test_byte_offset_wide_chars_subscriptITracebackErrorLocationCaretTestBase.test_byte_offset_wide_chars_subscript  s|    	P ##A&0z4+=+=*>>PQz1::+D+Dq+H*IPU7
 	*r"   c           	          S nU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S-    S	3S
/nU R                  X#5        g )Nc                      [        5       er;   )MemoryErrorr   r"   r    r   @TracebackErrorLocationCaretTestBase.test_memory_error.<locals>.f  s
    -r"   r  r  r  r  r  r  rc   r  z    raise MemoryError()r  r  s       r    test_memory_error5TracebackErrorLocationCaretTestBase.test_memory_error  sx    	  ##A&8xj););(<<NOxj)B)BQ)F(GvN%' 	*r"   c                   ^ S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SS[         STR                  R                  S	-    S3SS/	nU R                  X#5        S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SSS[         STR                  R                  S	-    S3SS/
nU R                  X#5        S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SSSS[         STR                  R                  S	-    S3SS/nU R                  X#5        S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SSSSSSS[         STR                  R                  S	-    S3SS/nU R                  X#5        g )Nc                      SS-    g r   r   r   r"   r    r  cTracebackErrorLocationCaretTestBase.test_anchors_for_simple_return_statements_are_elided.<locals>.g  	    aCr"   c                     > T " 5       $ r;   r   r  s   r    r   cTracebackErrorLocationCaretTestBase.test_anchors_for_simple_return_statements_are_elided.<locals>.f  s
    3Jr"   r  r  r  r  r  r  rc   r  z    return g(), in g    1/0    ~^~c                      SS-    g r   r   r   r"   r    r  r  .  r  r"   c                     > T " 5       S-   $ r  r   r  s   r    r   r   1  s    37Nr"   z    return g() + 1z           ~^^c                      SS-    g r   r   argss    r    r  r  B  r  r"   c                     > T " SSSS5      $ Nrc   re   rb   r  r   r  s   r    r   r   E  s    Q r"   z    return g(1,z             2, 4,z             5)c                      SS-    g r   r   r  s    r    r  r  Y  r  r"   c                      > T " SSSS5      S-   $ r
  r   r  s   r    r   r   \  s"    Q r"   z           ~^^^z             ^^^^^z             5) + 1z             ^^r  r7   r   r  rD  r  s       @r    4test_anchors_for_simple_return_statements_are_elidedXTracebackErrorLocationCaretTestBase.test_anchors_for_simple_return_statements_are_elided  s   		 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IPz1::+D+Dq+H*IP	
 	0		 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IP z1::+D+Dq+H*IP

 	0		
 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IP z1::+D+Dq+H*IP
 	0		
 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IP  !z1::+D+Dq+H*IP
 	0r"   c                   ^ S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SS[         STR                  R                  S	-    S3SS/	nU R                  X#5        S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SSSS[         STR                  R                  S	-    S3SS/nU R                  X#5        S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SSS[         STR                  R                  S	-    S3SS/
nU R                  X#5        S mU4S jnU R                  U5      nSS[         SU R                   S3SSS[         SUR                  R                  S	-    S
3SSSSSSS[         STR                  R                  S	-    S3SS/nU R                  X#5        g ) Nc                      SS-    g r   r   r   r"   r    r  cTracebackErrorLocationCaretTestBase.test_anchors_for_simple_assign_statements_are_elided.<locals>.gt  r  r"   c                     > T" 5       n g r;   r   r  r  s    r    r   cTracebackErrorLocationCaretTestBase.test_anchors_for_simple_assign_statements_are_elided.<locals>.fw  s
    Ar"   r  r  r  r  r  r  rc   r  z    x = g()r  r  r  c                      SS-    g r   r   r  s    r    r  r    r  r"   c                     > T" SSSS5      n g Nrc   re   r|   rb   r   r  s    r    r   r    s    !QAr"   z    x = g(1,z          2, 3,z          4)c                      SS-    g r   r   r   r"   r    r  r    r  r"   c                     > T" 5       =pg r;   r   r  ri   r  s     r    r   r    s    CKAr"   z    x = y = g()z            ~^^c                      SS-    g r   r   r  s    r    r  r    r  r"   c                     > T" SSSS5      =pg r  r   r  s     r    r   r    s    a Ar"   z    x = y = g(1,z            ~^^^z              2, 3,z              ^^^^^z              4)z              ^^r  r  s       @r    4test_anchors_for_simple_assign_statements_are_elidedXTracebackErrorLocationCaretTestBase.test_anchors_for_simple_assign_statements_are_elideds  s   		 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IPz1::+D+Dq+H*IP	
 	0		
 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IPz1::+D+Dq+H*IP
 	0		 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IPz1::+D+Dq+H*IP

 	0		
 ))!,8z4+=+=*>>PQz1::+D+Dq+H*IP!!z1::+D+Dq+H*IP
 	0r"   r   N)1r   r   r   r   __doc__r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r9  rB  rP  rY  r^  rc  rh  rm  rr  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r"   r    r  r  a  s   @&@&@$@2>@@@0D$D$D$D&D4#DJD,D$D$D&"DHD.D.D*DBD0D,$DLD.D.D&D2P
/@*DX+"+ +"+ + +,+$+"+.+W1rW1r"   r  c                       \ rS rSrSrSrg)"PurePythonTracebackErrorCaretTestsi  h
Same set of tests as above using the pure Python implementation of
traceback printing in traceback.py.
r   Nr   r   r   r   r   r   r   r"   r    r"  r"    s    r"   r"  c                       \ rS rSrSrSrg)CPythonTracebackErrorCaretTestsi  K
Same set of tests as above but with Python's internal traceback printing.
r   Nr$  r   r"   r    r&  r&        r"   r&  c                       \ rS rSrSrSrg)%CPythonTracebackLegacyErrorCaretTestsi  zR
Same set of tests as above but with Python's legacy internal traceback printing.
r   Nr$  r   r"   r    r*  r*    r(  r"   r*  c                       \ rS rSrSrS rS rS r\SS j5       r	S r
S	 rS
 rS rS r\" 5       S 5       rS r\S 5       rS r\S 5       rS r\S 5       rS rSrg)TracebackFormatMixini  Tc                     [        S5      e)Nblah)KeyErrorrL   s    r    some_exception#TracebackFormatMixin.some_exception  s    vr"   c                     U Vs/ s H-  n[        UR                  5       5      [        S5      ::  a  M+  UPM/     sn$ s  snf )Nz^~)setro   )r7   rD  lines      r    _filter_debug_ranges)TracebackFormatMixin._filter_debug_ranges  s0    !)PTZZ\1Bc$i1OPPPs   *<<c                 J    U R                   (       d  U R                  U5      $ U$ r;   )DEBUG_RANGESr5  )r7   rD  s     r    _maybe_filter_debug_ranges/TracebackFormatMixin._maybe_filter_debug_ranges  s!      ,,X66r"   Nc                    SSK Jn   U R                  5         [        S5      e! [         Gan  nUR
                  nUb  U" UR                  5        SSR                  [        R                  " U5      5      -   nSR                  U R                  UR                  5       5      5      S-   n[        5       nU" XF5        UR                  5       n[        S5       n[        R                  " U5        S S S 5        O! , (       d  f       O= f[        5       n	[        R                  " XIS9  [        S5       n
[        R                   " 5         S S S 5        O! , (       d  f       O= f[        R"                  " 5       n[        5       n[        R                   " US9   S nAOS nAff = fU R%                  XW5        U R%                  WR                  5       U	R                  5       5        U R%                  W
R                  5       UR                  5       5        U R%                  XR                  5       5        UR                  5       nUS   nU R%                  ['        U5      S	5        US
   US   nnU R)                  UR+                  S5      5        U R)                  UR+                  S5      5        U R)                  UR+                  S5      5        g )Nr   )traceback_printz&unable to create test traceback stringz#Traceback (most recent call last):
r   rg   r   rJ  r  r  	Tracebackr  z	    raise)r  r<  r0  r   r/  ra  r*   r   r@   	format_tbr5  r   r   rO  r   print_tbrh  ri  rl   rm   rn   r  )r7   cleanup_funcr<  r   r'   traceback_fmtfile_
python_fmtr  tbfile	excstderrexcfmtrk  tb_linesbannerlocationsource_lines                    r    check_traceback_format+TracebackFormatMixin.check_traceback_format  s)   -	B!6 @AA5  	.B'RZZ(BGGI$7$7$;<=M !II))-*B*B*DEM JEB&..*J *h""2& +**ZFr/ *i##% +**))+FjGW-1	.: 	3**,foo.?@++-w/?/?/AB!1!1!34 ((*!X* (hrl+))+67++H56..{;<sE   # FB'FC5,	F5
D	?0F/E	F
E	:FFc                 $    U R                  5         g r;   rL  rL   s    r    test_traceback_format*TracebackFormatMixin.test_traceback_format3  s    ##%r"   c                 ,    S nU R                  U5        g )Nc                 8    U R                   R                  5         g r;   )r(   clearr^  s    r    
cleanup_tbRTracebackFormatMixin.test_traceback_format_with_cleared_frames.<locals>.cleanup_tb8  s    KKr"   rO  )r7   rU  s     r    )test_traceback_format_with_cleared_frames>TracebackFormatMixin.test_traceback_format_with_cleared_frames6  s    	 ##J/r"   c                    [        S5       n[        R                  " [        R                  " S5      5        S S S 5        [        5       n[        R                  " [        R                  " S5      US9  U R                  WR                  5       UR                  5       5        [        R                  " [        R                  " S5      5      nU R                  UR                  5       SR                  U5      5        g ! , (       d  f       N= f)Nr   rc   rJ  r   )
r   r@   print_stackr9  	_getframer   rl   rO  format_stackr   )r7   ststderrstfilestfmts       r    test_stack_format&TracebackFormatMixin.test_stack_format<  s     X&(!!#--"23 'cmmA.V<**,foo.?@&&s}}Q'78**,bggen= '&s   +C::
Dc           	      (   S n[        S5       nU" 5         S S S 5        UR                  R                  nU R                  WR	                  5       R                  5       SS  S[        US-   4-  SS[        US-   4-  S	/5        g ! , (       d  f       Nr= f)
Nc                  .    [         R                  " 5         g r;   )r@   rZ  r   r"   r    prn2TracebackFormatMixin.test_print_stack.<locals>.prnJ  s    !!#r"   r   z)  File "%s", line %d, in test_print_stackr|   z	    prn()z  File "%s", line %d, in prnrc   z    traceback.print_stack())r   r  r  rl   rO  r   r  )r7   rd  r   r  s       r    test_print_stack%TracebackFormatMixin.test_print_stackI  s    	$X&&E ',,*557<78VAX:NN*hq-AA)	?
 	 '&s   B
Bc                 b  ^^^ S U l         U4S jm[        S5       n T" 5         U R                  S5        S S S 5        TR                  R
                  nS[         SUS-    S[         SUS-    S	[         SUS-    S	[         SUS-    S
3nU R                  UR                  5       5      nWR                  5       R                  5       nU R                  US S US S 5        U R                  US   US   5        U R                  US   US   5        [        R                  " 5       nU R                  [        [         R"                  " SUS   5      R%                  5       5      ['        US-
  U5      5        S$U4S jjm[        S5       n T" 5         U R                  S5        S S S 5        TR                  R
                  n	S[         SU	S-    S[         SU	S-    S[         SU	S-    S[         SU	S-    S3n
S[         SU	S-    S3nU R                  X-   R                  5       5      nWR                  5       R                  5       nU R                  Xe5        S$UU4S jjm[        S5       n T" 5         U R                  S5        S S S 5        TR                  R
                  nS[         SUS-    S[         SUS-    S[         SUS-    S[         SUS-    S[         SUS-    S3nU R                  X-   R                  5       5      nWR                  5       R                  5       nU R                  Xe5        [        S5       n T" [*        R,                  5        U R                  S5        S S S 5        S[         SU	S-    S[         SU	S-    S[         SU	S-    S[         SU	S-    S3n
S[         SU	S-    S 3nU R                  X-   R                  5       5      nUR                  5       R                  5       nU R                  Xe5        [        S5       n T" [*        R,                  S-   5        U R                  S5        S S S 5        S[         SU	S-    S[         SU	S-    S[         SU	S-    S![         SU	S-    S3n
S[         SU	S"-    S#3nU R                  X-   R                  5       5      nUR                  5       R                  5       nU R                  Xe5        g ! [         a    U" 5          GNf = f! , (       d  f       GN= f! [(         a    U" 5          GN}f = f! , (       d  f       GN= f! [(         a    U" 5          GNf = f! , (       d  f       GN= f! [(         a    U" 5          GNf = f! , (       d  f       GN= f! [(         a    U" 5          GN\f = f! , (       d  f       GNg= f)%Nc                     > T " 5         g r;   r   r?  s   r    r   BTracebackFormatMixin._check_recursive_traceback_display.<locals>.f^  s    Cr"   r   zno recursion occurredr  r  r  z@, in _check_recursive_traceback_display
    f()
    ~^^
  File "rc   z, in f
    f()
    ~^^
  File "zv, in f
    f()
    ~^^
  \[Previous line repeated (\d+) more times\]
RecursionError: maximum recursion depth exceeded
r=  r  z\d+<   c                 :   > U (       a  T" U S-
  5      S-   $ [         er  r  )rr   r  s    r    r  BTracebackFormatMixin._check_recursive_traceback_display.<locals>.g  s    qzA~%r"   zno value error was raisedr  re   z?, in g
    return g(count-1) + 1
           ~^^^^^^^^^
  File "zg, in g
    return g(count-1) + 1
           ~^^^^^^^^^
  [Previous line repeated 7 more times]
  File "r|   z', in g
    raise ValueError
ValueError
   z8, in _check_recursive_traceback_display
    g()
    ~^^
c                 8   > U (       a  T" U S-
  5      $ T" 5         g r  r   )rr   r  hs    r    rq  BTracebackFormatMixin._check_recursive_traceback_display.<locals>.h  s    qz!Cr"   z@, in _check_recursive_traceback_display
    h()
    ~^^
  File "z%, in h
    return h(count-1)
  File "zM, in h
    return h(count-1)
  [Previous line repeated 7 more times]
  File "z, in h
    g()
    ~^^
zno error raisedM   zn, in _check_recursive_traceback_display
    g(traceback._RECURSIVE_CUTOFF)
    ~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
zf, in g
    return g(count-1) + 1
           ~^^^^^^^^^
  [Previous line repeated 1 more time]
  File "m   zv, in _check_recursive_traceback_display
    g(traceback._RECURSIVE_CUTOFF + 1)
    ~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)r  )maxDiffr   rz  RecursionErrorr  r  r  r9  r   rO  rl   assertRegexrp   r9  getrecursionlimitr  researchgroupranger?   r@   _RECURSIVE_CUTOFF)r7   
render_excstderr_fr  result_frD  r  	rec_limitstderr_glineno_gresult_gtb_linestderr_hlineno_hresult_hr   r  rq  s                  @@@r    "_check_recursive_traceback_display7TracebackFormatMixin._check_recursive_traceback_displayW  s    	 X&(3 		12 ' ::,,j! 5  j! 5  j! 5  j! 5AA 	, 2283F3F3HI""$//1 	hsm4Xb\2hrlF2J/ ))+	c"))FF2J7==?@%	RTV_B`a	
 X&(7 		56 ' ::,,xj! 5  j! 5  j! 5  j! 5 	 j! 5 	 22G4F3R3R3TU""$//1*	 	
 X&(7 		56 ' ::,,j! 5  j! 5j! 5j! 5  j! 5 	  22H4G3S3S3UV""$//1* X&(-)--. 		+, ' xj! 5  j! 5  j! 5  j! 5 	j" 633 	 22G4F3R3R3TU""$//1* X&(-)--12 		+, ' xj! 5  j! 5  j! 5  j! 5 	 j# 777 	 22G4F3R3R3TU""$//1*i "  '&l   '&V   '&B   '&F   '&s   S7SS7T!T	T!)U+T32U U5UU5VV.VS40S73S44S77
T	TT!TT!!
T03UUUU
UU2.U51U22U55
VVVVV
V.c                    ^ U R                   (       a   U R                  [        R                  5        g SSKJm  U4S jnU R                  U5        g )Nr   r  c                  <   > T " [         R                  " 5       5        g r;   )r9  	exceptionr  s   r    r~  ATracebackFormatMixin.test_recursive_traceback.<locals>.render_exc   s    0r"   )r8  r  r@   rh  r  r  )r7   r~  r  s     @r    test_recursive_traceback-TracebackFormatMixin.test_recursive_traceback  s6    33I4G4GH1133J?r"   c                     S nU" 5       nUR                   R                  nU R                  USS  S[        US-   4-  S[        US-   4-  /5        g )Nc                  ,    [         R                  " 5       $ r;   )r@   r\  r   r"   r    fmt3TracebackFormatMixin.test_format_stack.<locals>.fmt%  s    ))++r"   r=  z>  File "%s", line %d, in test_format_stack
    result = fmt()
re   zA  File "%s", line %d, in fmt
    return traceback.format_stack()
rc   )r  r  rl   r  )r7   r  resultr  s       r    test_format_stack&TracebackFormatMixin.test_format_stack$  se    	,,,#&.q%9:47?6JK'
 	r"   c                 &   SSK Jn   " S S[        5      nU" S5      nU" S5      n XCe! U a     Ue! U a  nUn S nA OS nAff = ff = f[        S5       nU" U5        S S S 5        O! , (       d  f       O= fWR	                  5       R                  5       R                  5       nU R                  S[        U5      5        U R                  [        R                  5       US	   5        U R                  S
US   5        U R                  SUS   5        g )Nr   r  c                       \ rS rSrS rSrg)ATracebackFormatMixin.test_unhashable.<locals>.UnhashableExceptioni4  c                     gNTr   r7   others     r    __eq__HTracebackFormatMixin.test_unhashable.<locals>.UnhashableException.__eq__5      r"   r   Nr   r   r   r   r  r   r   r"   r    UnhashableExceptionr  4      r"   r  ex1ex2r      r  zUnhashableException: ex2r|   zUnhashableException: ex1r  )r  r  r   r   rO  ro   r   rl   rm   context_messagerp   )	r7   r  r  r  r  r   exc_valr  r'   s	            r    test_unhashable$TracebackFormatMixin.test_unhashable0  s    -	) 	 "%(!%(	" 		& 	 X&(G$ '&&  &&(335SW%..0"Q%80"Q%80"R&9s4   ) A	2AA A	 AA		A))
A7c                 Z    [        S5      n[        S5       H  n[        SU/5      nM     U$ )Nrc     r   )r   r|  r   )r7   r   is      r    deep_egTracebackFormatMixin.deep_egK  s,    aLtAtaS)A r"   c                 p   SSK Jn  SnU R                  5       n[        S5       n[        R
                  " US9   U" U5        S S S 5        S S S 5        WR                  5       nU R                  SU5        U R                  UR                  S5      U5        g ! , (       d  f       NZ= f! , (       d  f       Nc= f)Nr   r  K   r   	max_depthr   )
r  r  r  r   r   infinite_recursionrO  rp   assertLessEqualrr   )r7   r  LIMITr   r  r0  s         r    (test_exception_group_deep_recursion_capi=TracebackFormatMixin.test_exception_group_deep_recursion_capiQ  s    -\\^X&(++e<# = ' ""$&/V\\*:;UC	 =< '&s"   B'	BB'
B$	 B''
B5c                    SnU R                  5       n[        S5       n[        R                  " US9   [        R
                  " [        U5      X"R                  5        S S S 5        S S S 5        WR                  5       nU R                  SU5        U R                  UR                  S5      U5        g ! , (       d  f       NZ= f! , (       d  f       Nc= f)Nr  r   r  r   )r  r   r   r  r@   rN  typera  rO  rp   r  rr   )r7   r  r   r  r0  s        r    -test_exception_group_deep_recursion_tracebackBTracebackFormatMixin.test_exception_group_deep_recursion_traceback]  s    \\^X&(++e<))$r(B8H8HI = ' ""$&/V\\*:;UC	 =< '&s"   C+B2C2
C 	<C
Cc                    SSK Jn  [        S5       n[        R                  " 5          U" S5        S S S 5        S S S 5        U R                  WR                  5       S5        g ! , (       d  f       N7= f! , (       d  f       N@= f)Nr   r  r   rX  zFTypeError: print_exception(): Exception expected for value, int found
)r  r  r   r   catch_unraisable_exceptionrl   rO  )r7   r  r   s      r    "test_print_exception_bad_type_capi7TracebackFormatMixin.test_print_exception_bad_type_capig  s^    -X&&335# 6 ' 	OO9	
 65 '&s!   A3	A"A3"
A0	,A33
Bc                     SnU R                  [        U5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)Nz'Exception expected for value, int foundrX  )r`  r   r@   rN  )r7   msgs     r    $test_print_exception_bad_type_python9TracebackFormatMixin.test_print_exception_bad_type_pythons  s1    7##Is3%%b) 433s	   9
A)ru  r;   )r   r   r   r   r8  r0  r5  r9  r   rL  rP  rW  r`  rg  r  r
   r  r  r  r  r  r  r  r  r   r   r"   r    r,  r,    s    LQ
 /= /=b&0>A+F @ @
 : :4 	D 	DD 	
 	
*r"   r,  zG
The above exception was the direct cause of the following exception:

zF
During handling of the above exception, another exception occurred:

rj   |r   c                       \ rS rSrSrg)TestTracebackFormati  r   Nr  r   r"   r    r  r    s    r"   r  c                   @   ^  \ rS rSrSrSU 4S jjrSU 4S jjrSrU =r$ )TestFallbackTracebackFormati  Fc                    > [         R                  U l        S [         l        [        R                  U l        S [        l        [        TU ]  5       $ )Nc                      g r;   r   r  s    r    r!   3TestFallbackTracebackFormat.setUp.<locals>.<lambda>  s    4r"   c                      SS-  $ r   r   r  s    r    r!   r    s    1r"   )r9  unraisablehookoriginal_unraisable_hookr@   _print_exception_bltinoriginal_hookr1   r2   r6   s    r    r2   !TestFallbackTracebackFormat.setUp  s;    (+(:(:%/&==+<	(w}r"   c                 t   > U R                   [        l        U R                  [        l        [        TU ]  5       $ r;   )r  r@   r  r  r9  r  r1   r<   r6   s    r    r<   $TestFallbackTracebackFormat.tearDown  s-    +/+=+=	(!::w!!r"   )r  r  )r  N)	r   r   r   r   r8  r2   r<   r   rt  ru  s   @r    r  r    s     L" "r"   r  c                       \ rS rSrS r\R
                  R                  S-   rS rS r	S r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S  r$S! r%S"r&g#)$BaseExceptionReportingTestsi  c                 t    [        U[        5      (       a  U$  U" 5         g ! [         a  nUs S nA$ S nAff = fr;   )
isinstancer   r   )r7   exception_or_callabler   s      r    r~  )BaseExceptionReportingTests.get_exception  s6    +];;((	!# 	H	s   ! 
7277rb   c                     SS-    g r   r   rL   s    r    zero_div$BaseExceptionReportingTests.zero_div  s	    	!r"   c                 r   UR                  5       n[        5       (       a9  U R                  US   R                  S5      5        U R	                  SUS   5        O8U R                  US   R                  S5      5        U R	                  SUS   5        U R                  US   R                  S5      US   5        g )Nr  z1/0 # In zero_divr=  rf  r  r   )r   r   rn   r  rp   )r7   r  r   s      r    check_zero_div*BaseExceptionReportingTests.check_zero_div  s       OOE"I00:;MM-uRy9OOE"I00:;MM-uRy9b	,,-@A59Mr"   c                 P    SS-    U R                  W5      R                  5       n[        5       (       a?  U R	                  [        U5      S5        U R                  US   R                  S5      5        O>U R	                  [        U5      S5        U R                  US   R                  S5      5        U R                  US   R                  S5      5        U R                  US   R                  S5      5        U R                  S	US
   5        g ! [          a  nUn S nAGNS nAff = f)Nrc   r   rb   r|   r   r  r>  r  z1/0 # Markerre   )	r   
get_reportr   r   rl   rm   rn   r  rp   r7   r   r   r   s       r    test_simple'BaseExceptionReportingTests.test_simple  s    	aC "--/  SZ+OOE!H//0CDESZ+OOE!H//0CDEa++K89a++H56neAh/ ! 	A	s   D 
D%D  D%c                 "  ^ ^ U 4S jmU4S jn[         R                  T R                  U5      5      nT R                  [	        U5      S5        T R                  US   [
        5        T R                  US   5        T R                  SUS   5        g )Nc                  Z   >  TR                  5         g ! [         a  n [        U eS n A ff = fr;   r  r   r/  )r   r7   s    r    inner_raise;BaseExceptionReportingTests.test_cause.<locals>.inner_raise  s)    &$ &A%&s    
*%*c                     > T " 5         g r;   r   r  s   r    outer_raise;BaseExceptionReportingTests.test_cause.<locals>.outer_raise      Mr"   r|   rc   r   inner_raise() # Markerre   
boundariessplitr  rl   rm   cause_messager  rp   r7   r  blocksr  s   `  @r    
test_cause&BaseExceptionReportingTests.test_cause  ss    	&
	!!$//+">?Va(M2F1I&.q	:r"   c                 "  ^ ^ U 4S jmU4S jn[         R                  T R                  U5      5      nT R                  [	        U5      S5        T R                  US   [
        5        T R                  US   5        T R                  SUS   5        g )Nc                  P   >  T R                  5         g ! [         a    [        ef = fr;   r  rL   s   r    r  =BaseExceptionReportingTests.test_context.<locals>.inner_raise  s%    $ s    %c                     > T " 5         g r;   r   r  s   r    r  =BaseExceptionReportingTests.test_context.<locals>.outer_raise  r  r"   r|   rc   r   r  re   )r  r  r  rl   rm   r  r  rp   r  s   `  @r    test_context(BaseExceptionReportingTests.test_context  ss    	
	!!$//+">?Va(O4F1I&.q	:r"   c                      [         e! [          a    [        S ef = f! [         a  nUn S nAOS nAff = fU R                  U5      R                  5       nU R	                  [        U5      S5        U R                  US   R                  S5      5        U R                  US   R                  S5      5        U R                  US   R                  S5      5        U R                  SUS	   5        g )
Nrb   r|   r   r   r>  rc   r  zZeroDivisionError from Nonere   )	r   r   r  r   rl   rm   rn   r  rp   r  s       r    test_context_suppression4BaseExceptionReportingTests.test_context_suppression  s    	2 2'T12  	A	"--/UQ'a++,?@Aa++K89a++H563U1X>s   	  
4/4c                 "  ^ ^ U 4S jmU4S jn[         R                  T R                  U5      5      nT R                  [	        U5      S5        T R                  US   [
        5        T R                  US   5        T R                  SUS   5        g )Nc                     >  TR                  5          [          g ! [         a  n U n S n A NS n A ff = f! [         a    [        Wef = fr;   )r  r   xyzzy	NameErrorr/  )_er   r7   s     r    r  GBaseExceptionReportingTests.test_cause_and_context.<locals>.inner_raise  sH    & %   &A%&s    4 
1,1Ac                     > T " 5         g r;   r   r  s   r    r  GBaseExceptionReportingTests.test_cause_and_context.<locals>.outer_raise  r  r"   r|   rc   r   r  re   r  r  s   `  @r    test_cause_and_context2BaseExceptionReportingTests.test_cause_and_context  ss    	&	!!$//+">?Va(M2F1I&.q	:r"   c                 v  ^ ^ U 4S jmU4S jn[         R                  T R                  U5      5      nT R                  [	        U5      S5        T R                  US   [
        5        T R                  SUS   5        T R                  SUS   5        T R                  SUS	   5        T R                  US	   5        g )
Nc                     >   TR                  5         g ! [         a  n U n[        U eS n A ff = f! [         a  n WU eS n A ff = fr;   r  )r   r  r7   s     r    r  EBaseExceptionReportingTests.test_cause_recursive.<locals>.inner_raise	  sK    *MMO( *A")*  Qs"    
-	(-0 
A=Ac                     > T " 5         g r;   r   r  s   r    r  EBaseExceptionReportingTests.test_cause_recursive.<locals>.outer_raise
	  r  r"   r|   rc   zraise KeyError from er   z1/0r  re   )	r  r  r  rl   rm   r  rp   assertNotInr  r  s   `  @r    test_cause_recursive0BaseExceptionReportingTests.test_cause_recursive 	  s    		!!$//+">?Va(M2-vay9q	* 	.q	:F1I&r"   c                     S nU R                  U5      R                  5       nU R                  US   S5        S nU R                  U5      R                  5       nU R                  US   S5        g )Nc                      [        SS5      e)Nr   )r   r   r  hello)rk   r   r"   r    r   FBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.e	  s    b"566r"   r=  z	        ^c                      [        S5        g )Nzx = 5 | 4 |)rI   r   r"   r    r   r  	  s
    r"   z               ^)r  r   rl   r7   r   r  s      r    test_syntax_error_offset_at_eol;BaseExceptionReportingTests.test_syntax_error_offset_at_eol	  sc    	7ooa ++-R+.	 ooa ++-R"45r"   c                    [        S5      nU R                  U5      R                  5       nU R                  US/5        SUl        U R                  U5      R                  5       nU R                  USS/5        [        S5      nSUl        U R                  U5      R                  5       nU R                  US/5        SUl        U R                  U5      R                  5       nU R                  USS/5        g )Nr{   zSyntaxError: bad syntaxd   z  File "<string>", line 100z	myfile.pyz#SyntaxError: bad syntax (myfile.py)z  File "myfile.py", line 100)rk   r  r   rl   r  filenamer  s      r    test_syntax_error_no_lineno7BaseExceptionReportingTests.test_syntax_error_no_lineno"	  s     %ooa ++-&'	)ooa ++-*,EF	H % 
ooa ++-23	5ooa ++-+-FG	Ir"   c                 b   U R                  [        S 5      5      nU R                  SU5        U R                  [        S5      5      nU R                  SU5        U R                  [        5       5      nU R                  SU5        U R                  [        S5      5      nU R                  SU5        g )NzException: None
Nonez
Exception
r   )r  r   rp   rs   s     r    test_message_none-BaseExceptionReportingTests.test_message_none;	  s    ooio.)3/ooi/0)3/ooik*mS)ooim,mS)r"   c                 (   [        SS5       GH  nS GHv  nSU-  SU-  -   nS/nUS:  a#  UR                  SUR                  5       -  5        OUS	::  am  UR                  SUR                  5       -  5        [        S[	        UR                  5       5      U-
  S-   5      nUR                  S
SUS-
  -  < SU-  < 35        Oc[        S[	        UR                  5       5      S-
  5      nUR                  SUR                  5       -  5        UR                  S
S< SU-  < 35        UR                  S5        UR                  S5        U R                  [        SSSX-   U45      5      nSR                  U5      nU R                  Xv5        GMy     GM     g )Nr  )r   re   rk  ztext%dz  File "file.py", line 1rc   z    %sr       rd   rb   z     zSyntaxError: msgr   r  zfile.pyrg   )	r|  appendr}  maxrm   r  rk   r   rl   )r7   offsetaddr@  rD  caret_lengthrt   exps           r    !test_syntax_error_various_offsets=BaseExceptionReportingTests.test_syntax_error_various_offsetsF	  sR   BmFSy8f#4467A:OOHt{{}$<=q[OOHt{{}$<=#&q#dkkm*<v*E*I#JLOO#!2DcLFX$YZ#&q#dkkm*<q*@#ALOOHt{{}$<=OO'3;M$NO 23#ook%)QVZ9[&\]ii)  *%  $r"   c                    [        S5      nU R                  U5      nUR                  S5        U R                  U R                  U5      US-   5        U?UR                  S5        U R                  U R                  U5      US-   5        U?UR                  S5        U R                  U R                  U5      US-   5        U?U R                  U R                  U5      U5        g )N{   zMy NotezMy Note
r   rg   z	Your Notez
Your Note
)r?   r  r   rl   	__notes__r7   r   vanillas      r    test_exception_with_note4BaseExceptionReportingTests.test_exception_with_note\	  s    sO//!$	

9+W{-BCK	

2+Wt^<K	

;+W}-DEK+W5r"   c                 n   [        S5      nU R                  U5      n " S S5      n " S S5      nU" 5       Ul        SnU R                  U R                  U5      X%-   S-   5        U" 5       Ul        SnU R                  U R                  U5      X&-   S-   5        U" 5       S	/Ul        S
nU R                  U R                  U5      X'-   S-   5        U" 5       S	/Ul        SnU R                  U R                  U5      X&-   S-   5        SUl        SnU R                  U R                  U5      X&-   S-   5        SUl        SnU R                  U R                  U5      X&-   S-   5         " S S[        5      nU" S5      nU R                  U5      nSUl        U R                  U R                  U5      US-   5        g )Nr4  c                        \ rS rSrS rS rSrg)OBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThingis	  c                     g)Nbad strr   rL   s    r    r   WBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThing.__str__t	  s     r"   c                     g)Nbad reprr   rL   s    r    __repr__XBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThing.__repr__w	  s    !r"   r   Nr   r   r   r   r   rB  r   r   r"   r    BadThingr<  s	  s    !"r"   rE  c                       \ rS rSrS rSrg)RBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.Unprintablei{	  c                     [        S5      eN	bad valuer  rL   s    r    rB  [BaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.Unprintable.__repr__|	  s     --r"   r   N)r   r   r   r   rB  r   r   r"   r    UnprintablerG  {	  s    .r"   rL  rA  rg   z<__notes__ repr() failed>z
Final Noter>  z
Final Note
z<note str() failed>zplease do not explode mez'please do not explode me's    please do not show me as numbersz#b'please do not show me as numbers'c                       \ rS rSrSrS rSrg)VBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BrokenExceptioni	  Fc                 B    U R                   (       a  [        SU 35      eg )Nzno )brokenr?   r7   names     r    __getattr__bBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BrokenException.__getattr__	  s    ;;$s4&\22 r"   r   N)r   r   r   r   rP  rS  r   r   r"   r    BrokenExceptionrN  	  s    F3r"   rU  Tz<Ignored error getting __notes__: ValueError('no __notes__')
)r?   r  r5  rl   r   rP  )	r7   r   r7  rE  rL  
notes_reprr5  bad_noterU  s	            r    !test_exception_with_invalid_notes=BaseExceptionReportingTests.test_exception_with_invalid_notesn	  s   sO//!$	" 	"	. 	. j
+W-AD-HI!m-+W->-EF !
L1+W-?BR-RS $|4'+W->AQ-QR1.+W->-EF:7+W->-EF	3i 	3 C //!$OOAUU	Wr"   c                 *   [        S5      [        S5      4 H  nU R                  US9   U R                  U5      nUR	                  S5        UR	                  S5        UR	                  S5        U R                  U R                  U5      US-   S-   S	-   5        U?UR	                  S
5        U?UR	                  S5        UR	                  S5        U R                  U R                  U5      US-   S-   5        S S S 5        M     g ! , (       d  f       M  = f)NrX  r{   r   zNote 1zNote 2zNote 3zNote 1
zNote 2
zNote 3
zNote 4zNote 5zNote 6zNote 5
zNote 6
)r?   rk   r  r  r   rl   r5  r6  s      r    "test_exception_with_multiple_notes>BaseExceptionReportingTests.test_exception_with_multiple_notes	  s    R.+l";<A"//!,

8$

8$

8$  OOA&j(:5
BD K

8$K

8$

8$  OOA&j(:57# #" =""s   CD
D	c                 R    " S S5      nU R                  UR                  R                  5       5      nSnSR                  UR                  R                  R                  UR                  R                  R
                  /5      nU< SU< S3nU R                  U[        U-   5        g )Nc                   (    \ rS rSr " S S5      rSrg)>BaseExceptionReportingTests.test_exception_qualname.<locals>.Ai	  c                   *    \ rS rSr " S S\5      rSrg)@BaseExceptionReportingTests.test_exception_qualname.<locals>.A.Bi	  c                       \ rS rSrS rSrg)BBaseExceptionReportingTests.test_exception_qualname.<locals>.A.B.Xi	  c                     gNI am Xr   rL   s    r    r   JBaseExceptionReportingTests.test_exception_qualname.<locals>.A.B.X.__str__	  s    'r"   r   Nr   r   r"   r    r   rc  	  s    (r"   r   r   N)r   r   r   r   r   r   r   r   r"   r    r   ra  	  s    (	 (r"   r   r   N)r   r   r   r   r   r   r   r"   r    r   r_  	  s    ( (r"   r   rf  r   r   rg   )r  r   r   r   r   r   rl   MODULE_PREFIX)r7   r   rt   r   r   r0  s         r    test_exception_qualname3BaseExceptionReportingTests.test_exception_qualname	  sy    	( 	( ooacceeg&	88QSSUU--qssuu/A/ABC$i0mc12r"   c                 n    " S S[         5      nS H  nX!l        U R                  US9   U R                  U" 5       5      nSnUS;   a  UR                  nO'SR                  UR                  UR                  /5      nU< SU< S	3nU R                  Xc5        S S S 5        M     g ! , (       d  f       M  = f)
Nc                       \ rS rSrS rSrg)@BaseExceptionReportingTests.test_exception_modulename.<locals>.Xi	  c                     gre  r   rL   s    r    r   HBaseExceptionReportingTests.test_exception_modulename.<locals>.X.__str__	      r"   r   Nr   r   r"   r    r   rm  	       r"   r   )r   r   some_module)
modulenamerf  )r   r   r   r   rg   )r   r   r  r  r   r   rl   )r7   r   rs  rt   r   r   r0  s          r    test_exception_modulename5BaseExceptionReportingTests.test_exception_modulename	  s    	 	 	  @J%L4ooac*$	!99 ~~H"xxq~~(FGH$,i8  * 54 @44s   A.B%%
B4	c                     [         R                  " S5      n[        USS5      n0 0 pC[        X#U5        U R	                  US   5      nSnU R                  Xe5        g )Nz~
            try:
                raise ValueError(42)
            except Exception as e:
                exc = e
            z<does not exist>rI   rC   z>  File "<does not exist>", line 3, in <module>
ValueError: 42
)r   r   rK   rI   r  rp   )r7   srcr   r  lrt   r0  s          r    'test_exception_angle_bracketed_filenameCBaseExceptionReportingTests.test_exception_angle_bracketed_filename	  sZ    oo   s.721Taooah'Pcr"   c                      " S S[         5      nSUl        U R                  U" 5       5      nSUR                   S3nU R	                  X25        g )Nc                       \ rS rSrS rSrg)LBaseExceptionReportingTests.test_exception_modulename_not_unicode.<locals>.Xi	  c                     gre  r   rL   s    r    r   TBaseExceptionReportingTests.test_exception_modulename_not_unicode.<locals>.X.__str__	  rp  r"   r   Nr   r   r"   r    r   r}  	  rq  r"   r   rX  z
<unknown>.z	: I am X
)r   r   r  r   rl   )r7   r   rt   r0  s       r    %test_exception_modulename_not_unicodeABaseExceptionReportingTests.test_exception_modulename_not_unicode	  sH    	 	 	  ooac"1>>**5"r"   c                      " S S[         5      nU R                  U" 5       5      nSnSR                  UR                  UR                  /5      nU R                  [        U-   U SU S35        g )Nc                       \ rS rSrS rSrg)@BaseExceptionReportingTests.test_exception_bad__str__.<locals>.Xi	  c                     SS-    g r   r   rL   s    r    r   HBaseExceptionReportingTests.test_exception_bad__str__.<locals>.X.__str__	  r   r"   r   Nr   r   r"   r    r   r  	  r   r"   r   r   r   r   rg   )r   r  r   r   r   rl   rh  r   s        r    test_exception_bad__str__5BaseExceptionReportingTests.test_exception_bad__str__	  sb    		 	 ooac".	88Q\\1>>:;,
"YKr.JKr"   c           	          S nS[          SU R                   S[          SUR                  R                  S-    S3	nU R	                  U5      nU R                  X25        g )Nc                  B    [        S[        S5      [        S5      /5      erv  rw  r   r"   r    rC   CBaseExceptionReportingTests.test_exception_group_basic.<locals>.exc
  s     
1y|'DEEr"   ry  r  _, in get_exception
  |     exception_or_callable()
  |     ~~~~~~~~~~~~~~~~~~~~~^^
  |   File "rc   a  , in exc
  |     raise ExceptionGroup("eg", [ValueError(1), TypeError(2)])
  | ExceptionGroup: eg (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
    +------------------------------------
r  r  r  r  r  rl   r7   rC   rD  reports       r    test_exception_group_basic6BaseExceptionReportingTests.test_exception_group_basic
  sp    	F$:Xd.@.@-A B %:Xcll.I.IA.M-N O;	< 	 %*r"   c                     S nS[          SUR                  R                  S-    S[          SU R                   S[          SUR                  R                  S-    S3nU R	                  U5      nU R                  X25        g )	Nc                      [         n  U " S[        S5      [        S5      /5      e! [         a#  nU " S[        S5      [        S5      /5      UeS nAff = f)Neg1rc   re   eg2r|   rb   r   r?   r   r   )EGr   s     r    rC   CBaseExceptionReportingTests.test_exception_group_cause.<locals>.exc
  sU    BFA	! =>> FA	! =>AEFs   % 
AAAry  r  r|   a  , in exc
  |     raise EG("eg1", [ValueError(1), TypeError(2)])
  | ExceptionGroup: eg1 (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
    +------------------------------------

The above exception was the direct cause of the following exception:

  + Exception Group Traceback (most recent call last):
  |   File "r  r  a  , in exc
  |     raise EG("eg2", [ValueError(3), TypeError(4)]) from e
  | ExceptionGroup: eg2 (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 3
    +---------------- 2 ----------------
    | TypeError: 4
    +------------------------------------
r  r  r  r  r  rl   r  s       r    test_exception_group_cause6BaseExceptionReportingTests.test_exception_group_cause
  s    	F##+*HS\\5P5PST5T4U V# $,*HT5G5G4H I# $,*HS\\5P5PST5T4U VB!C2 %*r"   c                 B   S nS[          SUR                  R                  S-    S[          SUR                  R                  S-    S[          SU R                   S[          SUR                  R                  S	-    S
3nU R	                  U5      nU R                  X25        g )Nc                      [         n   U " S[        S5      [        S5      /5      e! U  a    U " S[        S5      [        S5      /5      ef = f! U  a    [        S5      ef = f)Nr  rc   re   r  r|   rb   r  )r   r?   r   ImportError)r  s    r    rC   RBaseExceptionReportingTests.test_exception_group_context_with_context.<locals>.exc<
  so    B%CUZ]IaL$ABB CUZ]IaL$ABBC %!!n$%s   & $A

A Ary  r  rb   a  , in exc
  |     raise EG("eg1", [ValueError(1), TypeError(2)])
  | ExceptionGroup: eg1 (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
    +------------------------------------

During handling of the above exception, another exception occurred:

  + Exception Group Traceback (most recent call last):
  |   File "r   a  , in exc
  |     raise EG("eg2", [ValueError(3), TypeError(4)])
  | ExceptionGroup: eg2 (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 3
    +---------------- 2 ----------------
    | TypeError: 4
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "zS, in get_exception
    exception_or_callable()
    ~~~~~~~~~~~~~~~~~~~~~^^
  File "rO  z1, in exc
    raise ImportError(5)
ImportError: 5
r  r  s       r    )test_exception_group_context_with_contextEBaseExceptionReportingTests.test_exception_group_context_with_context;
  s    	%$:Xcll.I.IA.M-N O %:Xcll.I.IA.M-N O !z$*<*<)= > !z#,,*E*E*I)J K 9! 	B %*r"   c                 B   S nS[          SUR                  R                  S-    S[          SUR                  R                  S-    S[          SU R                   S[          SUR                  R                  S	-    S
3nU R	                  U5      nU R                  X25        g )Nc                      [         n [        n[        n  U " SU" S5      U" S5      /5      e! [         a  nUn S nAOS nAff = fU " SU" S5      XA" S5      /5      e! U  a    U " SU" S5      /5      ef = f)	Nnestedre   r|   r   rc   rb   topr  r  )r  VETEr   rC   s        r    rC   DBaseExceptionReportingTests.test_exception_group_nested.<locals>.exck
  s    BBB)X1r!u~66  C1sBqE233 )A(()s#   , 
A=A AA A3ry  r  	   a  , in exc
  |     raise EG("eg", [VE(1), exc, VE(4)])
  | ExceptionGroup: eg (3 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | Exception Group Traceback (most recent call last):
    |   File "r   a  , in exc
    |     raise EG("nested", [TE(2), TE(3)])
    | ExceptionGroup: nested (2 sub-exceptions)
    +-+---------------- 1 ----------------
      | TypeError: 2
      +---------------- 2 ----------------
      | TypeError: 3
      +------------------------------------
    +---------------- 3 ----------------
    | ValueError: 4
    +------------------------------------

During handling of the above exception, another exception occurred:

  + Exception Group Traceback (most recent call last):
  |   File "r  r  z, in exc
  |     raise EG("top", [VE(5)])
  | ExceptionGroup: top (1 sub-exception)
  +-+---------------- 1 ----------------
    | ValueError: 5
    +------------------------------------
r  r  s       r    test_exception_group_nested7BaseExceptionReportingTests.test_exception_group_nestedj
  s    	)##+*HS\\5P5PST5T4U V% &.Jhs||7R7RUV7V6W X# $,*HT5G5G4H I# $,*HS\\5P5PSU5U4V WB5CB %*r"   c                     / n[        S5       H  nUR                  [        U5      5        M     [        SU5      nSnU R	                  U5      nU R                  XT5        g )N  r   a>    | ExceptionGroup: eg (1000 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 0
    +---------------- 2 ----------------
    | ValueError: 1
    +---------------- 3 ----------------
    | ValueError: 2
    +---------------- 4 ----------------
    | ValueError: 3
    +---------------- 5 ----------------
    | ValueError: 4
    +---------------- 6 ----------------
    | ValueError: 5
    +---------------- 7 ----------------
    | ValueError: 6
    +---------------- 8 ----------------
    | ValueError: 7
    +---------------- 9 ----------------
    | ValueError: 8
    +---------------- 10 ----------------
    | ValueError: 9
    +---------------- 11 ----------------
    | ValueError: 10
    +---------------- 12 ----------------
    | ValueError: 11
    +---------------- 13 ----------------
    | ValueError: 12
    +---------------- 14 ----------------
    | ValueError: 13
    +---------------- 15 ----------------
    | ValueError: 14
    +---------------- ... ----------------
    | and 985 more exceptions
    +------------------------------------
)r|  r+  r?   r   r  rl   )r7   excsr  r   rD  r  s         r     test_exception_group_width_limit<BaseExceptionReportingTests.test_exception_group_width_limit
  sX    tAKK
1& D$'!BF $*r"   c           	          [        S5      n[        S5       H(  n[        SU 3[        U5      U[        U* 5      /5      nM*     SnU R	                  U5      nU R                  XC5        g )Nbad typer  r   a    | ExceptionGroup: eg999 (3 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 999
    +---------------- 2 ----------------
    | ExceptionGroup: eg998 (3 sub-exceptions)
    +-+---------------- 1 ----------------
      | ValueError: 998
      +---------------- 2 ----------------
      | ExceptionGroup: eg997 (3 sub-exceptions)
      +-+---------------- 1 ----------------
        | ValueError: 997
        +---------------- 2 ----------------
        | ExceptionGroup: eg996 (3 sub-exceptions)
        +-+---------------- 1 ----------------
          | ValueError: 996
          +---------------- 2 ----------------
          | ExceptionGroup: eg995 (3 sub-exceptions)
          +-+---------------- 1 ----------------
            | ValueError: 995
            +---------------- 2 ----------------
            | ExceptionGroup: eg994 (3 sub-exceptions)
            +-+---------------- 1 ----------------
              | ValueError: 994
              +---------------- 2 ----------------
              | ExceptionGroup: eg993 (3 sub-exceptions)
              +-+---------------- 1 ----------------
                | ValueError: 993
                +---------------- 2 ----------------
                | ExceptionGroup: eg992 (3 sub-exceptions)
                +-+---------------- 1 ----------------
                  | ValueError: 992
                  +---------------- 2 ----------------
                  | ExceptionGroup: eg991 (3 sub-exceptions)
                  +-+---------------- 1 ----------------
                    | ValueError: 991
                    +---------------- 2 ----------------
                    | ExceptionGroup: eg990 (3 sub-exceptions)
                    +-+---------------- 1 ----------------
                      | ValueError: 990
                      +---------------- 2 ----------------
                      | ... (max_group_depth is 10)
                      +---------------- 3 ----------------
                      | ValueError: -990
                      +------------------------------------
                    +---------------- 3 ----------------
                    | ValueError: -991
                    +------------------------------------
                  +---------------- 3 ----------------
                  | ValueError: -992
                  +------------------------------------
                +---------------- 3 ----------------
                | ValueError: -993
                +------------------------------------
              +---------------- 3 ----------------
              | ValueError: -994
              +------------------------------------
            +---------------- 3 ----------------
            | ValueError: -995
            +------------------------------------
          +---------------- 3 ----------------
          | ValueError: -996
          +------------------------------------
        +---------------- 3 ----------------
        | ValueError: -997
        +------------------------------------
      +---------------- 3 ----------------
      | ValueError: -998
      +------------------------------------
    +---------------- 3 ----------------
    | ValueError: -999
    +------------------------------------
)r   r|  r   r?   r  rl   )r7   rC   r  rD  r  s        r     test_exception_group_depth_limit<BaseExceptionReportingTests.test_exception_group_depth_limit
  si    
#tA QCAZ^46C 
FBP %*r"   c                 B   S nS[          SU R                   S[          SUR                  R                  S-    S[          SUR                  R                  S-    S[          SUR                  R                  S-    S	3nU R	                  U5      nU R                  X25        g )
Nc                      / n S H  n [        U5      e   [        SU 5      e! [          a0  nUR                  SU 35        U R                  U5         S nAMR  S nAff = f! [         a  nUR                  S5        e S nAff = f)NrJ  zterrible valuethe r  t>> Multi line note
>> Because I am such
>> an important exception.
>> empty lines work too

(that was an empty line)r?   r   r+  r   r  r  r   s      r    rC   HBaseExceptionReportingTests.test_exception_group_with_notes.<locals>.exc  s    :C'(o- ; %Xt44 & '

T#<0A' " 

 7 9 s<   A  #A  
A%AA  AA   
B*A<<Bry  r  r  r  aQ  , in exc
  |     raise ExceptionGroup("nested", excs)
  | ExceptionGroup: nested (2 sub-exceptions)
  | >> Multi line note
  | >> Because I am such
  | >> an important exception.
  | >> empty lines work too
  | 
  | (that was an empty line)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "r  z, in exc
    |     raise ValueError(msg)
    | ValueError: bad value
    | the bad value
    +---------------- 2 ----------------
    | Traceback (most recent call last):
    |   File "z, in exc
    |     raise ValueError(msg)
    | ValueError: terrible value
    | the terrible value
    +------------------------------------
r  r  s       r    test_exception_group_with_notes;BaseExceptionReportingTests.test_exception_group_with_notes  s    	&##+*HT5G5G4H I# $,*HS\\5P5PST5T4U V% &.Jhs||7R7RUV7V6W X% &.Jhs||7R7RUV7V6W XB+C6 %*r"   c                 B   S nS[          SU R                   S[          SUR                  R                  S-    S[          SUR                  R                  S-    S[          SUR                  R                  S-    S	3nU R	                  U5      nU R                  X25        g )
Nc                  R    / n S H  n [        U5      e   [        SU 5      e! [          aD  nUR                  SU 35        UR                  SU 35        U R                  U5         S nAMf  S nAff = f! [         a(  nUR                  S5        UR                  S5        e S nAff = f)Nr  r  zGoodbye r  r  zGoodbye!r  r  s      r    rC   QBaseExceptionReportingTests.test_exception_group_with_multiple_notes.<locals>.excM  s    :C'(o- ; %Xt44	 & '

T#<0

XcU#34A'
 " 

 7 9 

:&s<   A4 #A4 
A19A,&A4 ,A11A4 4
B&>#B!!B&ry  r  r  r  a^  , in exc
  |     raise ExceptionGroup("nested", excs)
  | ExceptionGroup: nested (2 sub-exceptions)
  | >> Multi line note
  | >> Because I am such
  | >> an important exception.
  | >> empty lines work too
  | 
  | (that was an empty line)
  | Goodbye!
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "r  z, in exc
    |     raise ValueError(msg)
    | ValueError: bad value
    | the bad value
    | Goodbye bad value
    +---------------- 2 ----------------
    | Traceback (most recent call last):
    |   File "z, in exc
    |     raise ValueError(msg)
    | ValueError: terrible value
    | the terrible value
    | Goodbye terrible value
    +------------------------------------
r  r  s       r    (test_exception_group_with_multiple_notesDBaseExceptionReportingTests.test_exception_group_with_multiple_notesL  s    	*##+*HT5G5G4H I# $,*HS\\5P5PSU5U4V W% &.Jhs||7R7RUV7V6W X% &.Jhs||7R7RUV7V6W XB/C< %*r"   c                     S nS[          SU R                   S[          SUR                  R                  S-    S[          SUR                  R                  S-    S3nU R	                  U5      nU R                  X25        g )	Nc                  b     [        S5      e! / =[          =b	  n e S n A P  PO  P8=c     g s f = f)NrX  r   r   s    r    rC   KBaseExceptionReportingTests.test_exception_group_wrapped_naked.<locals>.exc  s)    m#I s    .	.ry  r  r  r|   z, in exc
  |     except* Exception as e:
  |         raise
  | ExceptionGroup:  (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "re   ze, in exc
    |     raise Exception(42)
    | Exception: 42
    +------------------------------------
r  r  s       r    "test_exception_group_wrapped_naked>BaseExceptionReportingTests.test_exception_group_wrapped_naked  s    	##+*HT5G5G4H I# $,*HS\\5P5PST5T4U V% &.Jhs||7R7RUV7V6W XBC %*r"   c                 ~   S nS nU" 5       nSnUR                   R                  n[        R                  " X#XE5      n[	        5       nXgl        S[         SU S3nU R                  U5      n	SR                  U	R                  S5       V
s/ s H  oR                  5       PM     sn
5      n	U R                  X5        g s  sn
f )Nc                  ,    [         R                  " 5       $ r;   r9  r[  r   r"   r    r   TBaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frame.<locals>.f  s    ==?"r"   r   r  r  z', in f
    def f():

KeyboardInterrupt
rg   )r  r  typesTracebackTyper   ra  r  r  r   r  rstriprl   )r7   r   r*   r#   lastir  r'   rC   rD  r  rx  s              r    -test_KeyboardInterrupt_at_first_line_of_frameIBaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frame  s    	# **  ?!'j 9*+ %T0BC0B1HHJ0BCD* Ds   B:r   N)'r   r   r   r   r~  r  r  r  r  r  r  r  r   r  r  r  r  r"  r&  r1  r8  rX  r[  ri  rt  ry  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r"   r    r  r    s     "**99A=MN0 ;;?;('.	6I2	*+,6$7Wr7.3+" 	#L+*"+H-+^0+d*+XP+d0+d5+n+6+r"   r  c                       \ rS rSrS rSrg)PyExcReportingTestsi  c                 x   U R                  U5      nSR                  [        R                  " [	        U5      XR
                  5      5      n[        S5       n[        R                  " [	        U5      XR
                  5        S S S 5        U R                  WR                  5       U5        U$ ! , (       d  f       N0= f)Nr   r   )
r~  r   r@   r_  r  ra  r   rN  rl   rO  )r7   r   ssios       r    r  PyExcReportingTests.get_report  s    q!GG&&tAw??CEX&#%%d1gq//B '+ '&s   +B++
B9r   N)r   r   r   r   r  r   r   r"   r    r  r    s    r"   r  c                   $    \ rS rSr\S 5       rSrg)CExcReportingTestsi  c                     SSK Jn  U R                  U5      n[        S5       nU" U5        S S S 5        UR	                  5       $ ! , (       d  f       WR	                  5       $ = f)Nr   r  r   )r  r  r~  r   rO  )r7   r   r  r  s       r    r  CExcReportingTests.get_report  sM    -q!X&!A 'zz| '&zz|s   	A
A!r   N)r   r   r   r   r   r  r   r   r"   r    r  r    s      r"   r  c                   f    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)
LimitTestsi  z\Tests for limit argument.
It's enough to test extact_tb, extract_stack and format_exception c                     [        S5      e)NzLast raisedr  rL   s    r    last_raises1LimitTests.last_raises1  s    &&r"   c                 $    U R                  5         g r;   )r  rL   s    r    last_raises2LimitTests.last_raises2      r"   c                 $    U R                  5         g r;   )r  rL   s    r    last_raises3LimitTests.last_raises3  r  r"   c                 $    U R                  5         g r;   )r  rL   s    r    last_raises4LimitTests.last_raises4  r  r"   c                 $    U R                  5         g r;   )r  rL   s    r    last_raises5LimitTests.last_raises5  r  r"   c                 ,    [         R                  " 5       $ r;   r  rL   s    r    last_returns_frame1LimitTests.last_returns_frame1  s    }}r"   c                 "    U R                  5       $ r;   )r  rL   s    r    last_returns_frame2LimitTests.last_returns_frame2      ''))r"   c                 "    U R                  5       $ r;   )r  rL   s    r    last_returns_frame3LimitTests.last_returns_frame3  r  r"   c                 "    U R                  5       $ r;   )r  rL   s    r    last_returns_frame4LimitTests.last_returns_frame4  r  r"   c                 "    U R                  5       $ r;   )r  rL   s    r    last_returns_frame5LimitTests.last_returns_frame5  r  r"   c                 B  ^ ^ T R                  5       mU4S jnU 4S jn[        R                  " [        SS5         U" 5       nT R	                  [        U5      S5        T R                  U" SS9USS  5        U" U" S	S9US
S  S5        T R                  U" SS9US S 5        U" U" S
S9US S	 [        U5      S-
  S-
  5        T R                  U" SS9/ 5        [        ?U" U" 5       US5        S[        l        T R                  U" 5       USS  5        T R                  U" SS9USS  5        T R                  U" SS9US S 5        S[        l        T R                  U" 5       / 5        S[        l        T R                  U" 5       / 5        S S S 5        g ! , (       d  f       g = f)Nc                  2   > [         R                  " T40 U D6$ r;   r@   extract_stack)kwargsr#   s    r    extract.LimitTests.test_extract_stack.<locals>.extract  s    **5;F;;r"   c                    > TR                  U S U US U 5        TR                  XS-   S  XS-   S  5        TR                  [        U 5      [        U5      5        g r  )rl   rm   )r  rD  ignorer7   s      r    assertEqualExcept8LimitTests.test_extract_stack.<locals>.assertEqualExcept  sZ    VGV_hw.?@V1HI.0CDS[#h-8r"   tracebacklimitr  r  re   limitr=  r   iirc   r   r|   r  r  )r  r   rY  r9  assertGreaterrm   rl   r  )r7   r  r	  nolimr#   s   `   @r    test_extract_stackLimitTests.test_extract_stack  sz   ((*	<	9
 s$4d;IEs5z1-W1-uRSz:gC0%,EW2.bq	:gD15#;E
1QOW1-r2"gi5!"CWYbc
3W1-uRSz:W2.bq	:!"CWY+!#CWY+# <;;s   EF
Fc                   ^  U R                  5         U4S jn[        R                  " [
        SS5         U" 5       nU R                  [        U5      S5        U R                  U" SS9US S 5        U R                  U" SS9U5        U R                  U" SS9USS  5        U R                  U" S	S9U5        U R                  U" S
S9/ 5        [
        ?U R                  U" 5       U5        S[
        l        U R                  U" 5       US S 5        U R                  U" SS9US S 5        U R                  U" SS9USS  5        S
[
        l        U R                  U" 5       / 5        S[
        l        U R                  U" 5       / 5        S S S 5        g ! [         a  nUR                  m S nAGNS nAff = f! , (       d  f       g = f)Nc                  2   > [         R                  " T40 U D6$ r;   )r@   
extract_tb)r  r'   s    r    r  +LimitTests.test_extract_tb.<locals>.extract  s    ''5f55r"   r  r  r   re   r  r  r=  r   r|   r  r  )	r  r   ra  r   rY  r9  rl   rm   r  )r7   r   r  r  r'   s       @r    test_extract_tbLimitTests.test_extract_tb  s   	!	6 s$4d;IESZ-W1-uRay9W2.6W2.bc
;W3/7W1-r2"WY.!"CWYbq	2W1-uRay9W2.bc
;!"CWY+!#CWY+# <;  	!B	!
 <;s#   F EF1
F.F))F.1
F?c                 p  ^  U R                  5         U4S jn[        R                  " [        SS5         U" 5       nU R                  [        U5      S5        U R                  U" SS9US S 5        U R                  U" SS9U5        U R                  U" SS9USS  5        U R                  U" S	S9U5        U R                  U" S
S9/ 5        [        ?U R                  U" 5       U5        S[        l        U R                  U" 5       US S 5        U R                  U" SS9US S 5        U R                  U" SS9USS  5        S
[        l        U R                  U" 5       / 5        S[        l        U R                  U" 5       / 5        S S S 5        g ! [         a  nUm S nAGNS nAff = f! , (       d  f       g = f)Nc                  8   > [         R                  " T40 U D6SS $ )Nrc   r  )r@   r_  )r  rC   s    r    r  1LimitTests.test_format_exception.<locals>.extract9  s     --c<V<QrBBr"   r  r  r   re   r  r  r=  r  r   r|   r  r  )r  r   r   rY  r9  rl   rm   r  )r7   r   r  r  rC   s       @r    test_format_exception LimitTests.test_format_exception2  s   	
	C s$4d;IESZ-W1-uRay9W2.6W2.bc
;W3/7W1-r2"WY.!"CWYbq	2W1-uRay9W2.bc
;!"CWY+!#CWY+# <;  	C	 <;s#   F EF'
F$FF$'
F5r   N)r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r"   r    r  r    sI    N'****,8,6,r"   r  c                        \ rS rSrS rS rSrg)MiscTracebackCasesiP  c                   ^^ U4S jnU4S jmS m U" 5         WR                  R                  R                  R                  nU R	                  [        UR                  5      S5        [        R                  " U5        U R	                  [        UR                  5      S5        g ! [          a  nUR                  n S nANS nAff = f)Nc                     > T " 5         g r;   r   )middles   r    outer,MiscTracebackCases.test_clear.<locals>.outerV  s    Hr"   c                     > T " 5         g r;   r   )inners   r    r"  -MiscTracebackCases.test_clear.<locals>.middleX  s    Gr"   c                      Sn SS-    g r   r   )r  s    r    r&  ,MiscTracebackCases.test_clear.<locals>.innerZ  s    AaCr"   rc   r   )	r   ra  r*   r(   rl   rm   r&   r@   clear_frames)r7   r#  r   r'   inner_framer&  r"  s        @@r    
test_clearMiscTracebackCases.test_clearU  s    				!G
 jj((0099[112A6 	r" 	[112A6  	!B	!s   B% %
C/C  Cc                     S nU" 5       nUR                   R                  nU R                  USS  [        US-   SS4[        US-   SS4/5        U R                  [	        US	   5      S
5        g )Nc                  ,    [         R                  " 5       $ r;   r  r   r"   r    r  6MiscTracebackCases.test_extract_stack.<locals>.extractn  s    **,,r"   r=  re   r  zresult = extract()rc   r  z return traceback.extract_stack()r   rb   )r  r  rl   r  rm   )r7   r  r  r  s       r    r  %MiscTracebackCases.test_extract_stackm  sw    	-!!00vax!57KLvax,NO' 	 	VAY+r"   r   N)r   r   r   r   r,  r  r   r   r"   r    r  r  P  s    
70	,r"   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)		TestFrameiy  c                 H   [         R                  " 5         [         R                  " S[        5       5        [        R
                  " SSS5      nU R                  US5        U R                  [        U5      S5        U R                  U[        R
                  " SSS5      5        U R                  U[        U5      5        U R                  [        U5      U5        U R                  UR                  5        U R                  U[        5       5        U R                  U[        5        g )Nr   rc   dummy)r   rc   r5  %"""Test cases for traceback module""")	linecache
clearcache	lazycacheglobalsr@   FrameSummaryrl   tupleassertIsNonelocalsassertNotEqualobjectr	   r7   r   s     r    test_basicsTestFrame.test_basics{  s    C+""373F	HqF	HI2237CDE!H% 	q1%!((#Avx(I&r"   c                 
   [         R                  " 5         [        R                  " SSSSS9nU R	                  S UR
                  5        [         R                  " S[        5       5        U R	                  SUR                  5        g )Nr   rc   r5  F)lookup_liner6  )	r7  r8  r@   r;  rl   _linesr9  r:  r4  rA  s     r    test_lazy_linesTestFrame.test_lazy_lines  sb    ""37Fqxx(C+3FF	r"   c                 l    [         R                  " SS S5      nU R                  UR                  S 5        g )Nr   r5  r@   r;  rl   r4  rA  s     r    test_no_lineTestFrame.test_no_line  s*    ""3g6&r"   c                 j    [         R                  " SSSSS9nU R                  SUR                  5        g )Nr   rc   r5  r4  r4  rJ  rA  s     r    test_explicit_lineTestFrame.test_explicit_line  s,    ""37@(r"   c                 h    [         R                  " SSSSS9nU R                  [        U5      S5        g )Nr   rc   r5  r4  rN  rb   )r@   r;  rl   rm   rA  s     r    test_lenTestFrame.test_len  s,    ""37@Q#r"   r   N)
r   r   r   r   rB  rG  rK  rO  rR  r   r   r"   r    r3  r3  y  s    '"')$r"   r3  c                   n    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)	TestStacki  c                     S n[        [        R                  " S 5      5      nU" 5       nU R                  [	        U5      [	        U5      -
  S5        U R                  USS  U5        g )Nc                  @    [        [        R                  " S 5      5      $ r;   )listr@   
walk_stackr   r"   r    deeper)TestStack.test_walk_stack.<locals>.deeper  s    	,,T233r"   rc   )rX  r@   rY  rl   rm   )r7   rZ  s1s2s       r    test_walk_stackTestStack.test_walk_stack  sV    	4)&&t,-XR3r7*A.AB$r"   c                      SS-    [        [        R                  " W5      5      nU R                  [        U5      S5        g ! [          a  nUR                  n S nANVS nAff = fr   )r   ra  rX  r@   walk_tbrl   rm   )r7   r   r'   r  s       r    test_walk_tbTestStack.test_walk_tb  sT    	!aC ""2&'Q#  	!B	!s   A 
A"AA"c                     [         R                  R                  [         R                  " S 5      5      nU R	                  U[         R                  5        g r;   )r@   StackSummaryr  rY  assertIsInstancer7   r  s     r    r  TestStack.test_extract_stack  s9    ""**9+?+?+EFa!7!78r"   c                     [         R                  R                  [         R                  " S 5      SS9nU R	                  [        U5      S5        g )Nr  r  )r@   re  r  rY  rl   rm   rg  s     r    test_extract_stack_limit"TestStack.test_extract_stack_limit  s<    ""**9+?+?+EQ*OQ#r"   c                 Z   [         R                  " 5         [         R                  " S[        5       5        [	        SS5      n[        US S 5      n[        R                  R                  [        US4/5      SS9n[         R                  " 5         U R                  US   R                  S5        g )N/foo.pyr  r   Tlookup_linesr   
import sys)r7  r8  updatecacher:  	test_code
test_framer@   re  r  r   rl   r4  r7   r  r   r  s       r    test_extract_stack_lookup_lines)TestStack.test_extract_stack_lookup_lines  s    i3i*q$%""**4!Q>*M1L1r"   c                 p   [         R                  " 5         [        SS5      n[        US S 5      n[        R
                  R                  [        US4/5      SS9nU R                  0 [         R                  5        [         R                  " S[        5       5        U R                  US   R                  S5        g )Nrm  r  r   Frn  r   rp  )r7  r8  rr  rs  r@   re  r  r   rl   cacherq  r:  r4  rt  s       r    *test_extract_stackup_deferred_lookup_lines4TestStack.test_extract_stackup_deferred_lookup_lines  s    i*q$%""**4!Q>*NY__-i31L1r"   c                     [         R                  R                  S/5      nU R                  S/UR	                  5       5        g Nfoo.pyrc   fredr4  z*  File "foo.py", line 1, in fred
    line
r@   re  	from_listrl   r$  rg  s     r    test_from_listTestStack.test_from_list  s9    "",,.K-LM;<HHJ	r"   c                     [         R                  R                  S/5      nSUS'   [         R                  R                  U5      nU R                  S/UR	                  5       5        g )Nr}  )r~  re   r  r4  r   z*  File "foo.py", line 2, in fred
    line
r  )r7   r  r]  s      r    test_from_list_edited_stack%TestStack.test_from_list_edited_stack  sX    "",,.K-LM,!##--a0;<IIK	r"   c                     [         R                  R                  S/5      nU R                  S/UR	                  5       5        g r|  r  rg  s     r    test_format_smokeTestStack.test_format_smoke  s;     "",,.K-LM;<HHJ	r"   c                    [         R                  " S[        5       5        [        SS5      n[	        U[        5       SS05      n[
        R                  R                  [        US4/5      SS9nU R                  US   R                  SS	05        g )
Nrm  r  	somethingrc   r   Tcapture_localsr   1r7  rq  r:  rr  rs  r@   re  r  r   rl   r>  rt  s       r    test_localsTestStack.test_locals  sw    i3i*q')k1%56""**4!Q>$*O1{C&89r"   c                    [         R                  " S[        5       5        [        SS5      n[	        U[        5       SS05      n[
        R                  R                  [        US4/5      5      nU R                  US   R                  S 5        g )Nrm  r  r  rc   r   r   r  rt  s       r    test_no_localsTestStack.test_no_locals  sm    i3i*q')k1%56""**4!Q>:1d+r"   c                     S nU" SS5      nU R                  S[        UR                  R                  S-   4-  /UR	                  5       5        g )Nc                 p    SnSn[         R                  R                  [         R                  " S 5      SSS9$ )Nrc   re   T)r  r  )r@   re  r  rY  )kvr  r  s       r    
some_inner0TestStack.test_format_locals.<locals>.some_inner  s>    AA))11$$T*4q 2 J Jr"   r|   rb   zw  File "%s", line %d, in some_inner
    return traceback.StackSummary.extract(
    a = 1
    b = 2
    k = 3
    v = 4
)rl   r  r  r  r$  )r7   r  r  s      r    test_format_localsTestStack.test_format_locals  sZ    	J
 q!
 '
(;(;(J(JQ(NOP  xxz	r"   c                    ^  " S S[         R                  5      mU4S jnU" 5       nU R                  UR                  5       [         SUR
                  R                  S-    3/5        g )Nc                       \ rS rSrSS jrSrg)>TestStack.test_custom_format_frame.<locals>.CustomStackSummaryi  c                 8    UR                    SUR                   3$ )N:)r!  r  )r7   frame_summaryr5   s      r    format_frame_summarySTestStack.test_custom_format_frame.<locals>.CustomStackSummary.format_frame_summary  s!    '001=3G3G2HIIr"   r   NF)r   r   r   r   r  r   r   r"   r    CustomStackSummaryr    s    Jr"   r  c                  L   > T R                  [        R                  " S 5      SS9$ )Nrc   r  )r  r@   rY  )r  s   r    r  6TestStack.test_custom_format_frame.<locals>.some_inner  s+    %--$$T*! . 5 5r"   r  rc   )r@   re  rl   r$  r  r  r  )r7   r  r  r  s      @r    test_custom_format_frame"TestStack.test_custom_format_frame  s`    	J!7!7 	J	5 LHHJz:..==ABCD	Fr"   c                 f  ^ S mU4S jnU" 5       n " S S[         R                  5      nUR                  [         R                  " U5      5      R	                  5       nU R                  [        U5      S5        TR                  R                  S-   nU R                  US   S[         SU S	35        g )
Nc                      SS-    g r   r   r   r"   r    r   )TestStack.test_dropping_frames.<locals>.f  r  r"   c                  \   >  T" 5         g ! [          a  n U R                  s S n A $ S n A ff = fr;   )r   ra  )r   r   s    r    r  )TestStack.test_dropping_frames.<locals>.g  s'    ' '&'s    
+&++c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ ).TestStack.test_dropping_frames.<locals>.Skip_Gi  c                 D   > UR                   S:X  a  g [        TU ]	  U5      $ r   )rR  r1   r  )r7   r  r5   r8   s      r    r  CTestStack.test_dropping_frames.<locals>.Skip_G.format_frame_summary  s$     %%,w3MBBr"   r   r  )r   r   r   r   r  r   rt  ru  s   @r    Skip_Gr    s    C Cr"   r  rc   r   r  r  z, in f
    1/0
)
r@   re  r  ra  r$  rl   rm   r  r  r  )r7   r  r'   r  stacklnor   s         @r    test_dropping_framesTestStack.test_dropping_frames  s    		' S	CY++ 	C b!##)68 	 	UQ'jj''!+!Hxj->?	
r"   c                    SnUR                  S5      nU[        S5      -   nSnU R                  [        [        5        [        [        S5       nUR                  U5        S S S 5        [        R                  " [        0 5         [        [        U[        S5      5        g ! , (       d  f       NE= f! [         Ga  n[        R                  R                  U5      R                  nU R!                  U[        R"                  5        [$        R&                  R(                  R+                  USUR,                  S9 nU R/                  [        U5      S5        U R1                  UR3                  US	   5      R5                  5       S
[         S3SU 3/5        UR7                  X#U/S 5        S S S 5         S nAg ! , (       d  f        S nAg = fS nAff = f)Nzabcdef = 1 / 0 and 2.0z1 / 0z)# this line will be used during renderingr   rI   _should_show_carets)wrapsre   rc   r  z", line 1, in <module>r*  )indexrm   rf  r   r   r   r   r7  rq  rI   rK   r   r@   TracebackExceptionfrom_exceptionr  rf  re  unittestmockpatchr@  r  rl   assertListEqualr  r   assert_called_with)	r7   	statementcolno	end_colnocached_linerK  rC   r  ffs	            r    test_summary_should_show_carets)TestStack.test_summary_should_show_carets,  s    -	(CL(	 B'&#$JJ{# fb)	MFF34  ! 	M ,,;;C@FFA!!!Y%;%;<$$++A/D232G2G , ILN  Q+$$**1Q40;;="6(*@A{m, %%etLI I I I	MsD   BB0 
B-0G;A<G7A/F3&G3
G	=GGGr   N)r   r   r   r   r^  rb  r  rj  ru  ry  r  r  r  r  r  r  r  r  r  r   r   r"   r    rU  rU    sO    %$9$22:, F
8!Mr"   rU  c                   "    \ rS rSrS\4S jrSrg)UnrepresentableiO  r  c                     [        S5      e)Nr  r  rL   s    r    rB  Unrepresentable.__repr__P  s    )**r"   r   N)r   r   r   r   r?  rB  r   r   r"   r    r  r  O  s    +# +r"   r  c                       \ rS rSrS rSrg)FalseyExceptioniV  c                     gr0   r   rL   s    r    __bool__FalseyException.__bool__W      r"   r   Nr   r   r   r   r  r   r   r"   r    r  r  V      r"   r  c                       \ rS rSrS rSrg)FalseyExceptionGroupi[  c                     gr0   r   rL   s    r    r  FalseyExceptionGroup.__bool__\  r  r"   r   Nr  r   r"   r    r  r  [  r  r"   r  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS r\" 5       S 5       rS rSrg)TestTracebackExceptioni`  c                     Ue! [          ah  nUn[        R                  R                  U5      n[        R                  R                  [        R                  " UR                  5      5      n S nAOS nAff = fU R                  S UR                  5        U R                  S UR                  5        U R                  SUR                  5        U R                  XQR                  5        U R                  [        5         U R                  [        U5      UR                   5        S S S 5        O! , (       d  f       O= fU R                  X!R"                  5        U R                  [%        U5      [%        U5      5        g r0   )r   r@   r  r  re  r  ra  ra  rl   	__cause____context____suppress_context__r  assertWarnsDeprecationWarningr  exc_typeexc_type_strr?  )r7   rC   expected_type_strr   exc_objexpected_stacks         r    do_test_smoke$TestTracebackException.do_test_smokea  s   	4I 	4G..==a@C&33;;!!!//24N	4
 	s}}-s/ 8 89301T']CLL9 211*,<,<=Ws3x0s!    
A6AA11A6=&D,,
D:c                 :    U R                  [        S5      S5        g )NrX  r?   )r  r?   rL   s    r    test_smoke_builtin)TestTracebackException.test_smoke_builtinr  s    :b><8r"   c                 p     " S S[         5      n[        S:X  a  SnOSnU R                  U" S5      U5        g )Nc                       \ rS rSrSrg)ETestTracebackException.test_smoke_user_exception.<locals>.MyExceptioniv  r   Nr  r   r"   r    MyExceptionr  v      r"   r  r   r  zYtest.test_traceback.TestTracebackException.test_smoke_user_exception.<locals>.MyExceptionzbad things happened)r   r   r  )r7   r  rD  s      r    test_smoke_user_exception0TestTracebackException.test_smoke_user_exceptionu  s>    	) 	 z!IHIH;'<=xHr"   c                 ~   S n U" 5         U R                  nU R                  nU R                  S UR                  5        U R                  S UR                  5        U R                  SUR                  5        U R                  XVR                  5        U R                  [         5         U R                  [#        W5      UR$                  5        S S S 5        U R                  [#        W5      R&                  UR(                  5        U R                  [+        U5      [+        U5      5        g ! [          aw  nUnUR                  n[        R                  R	                  [        R
                  " U5      SSSS9U l        [        R                  R                  USSSS9U l	         S nAGNS nAff = f! , (       d  f       N= f)Nc                      SS-    g r   r   r   r"   r    r<  7TestTracebackException.test_from_exception.<locals>.foo  r  r"   rc   FT)r  ro  r  )r   ra  r@   re  r  ra  r  r  r  rC   rl   r  r  r  r  r  r  r  r  r   r  r?  )r7   r<  r   r  r'   r  rC   s          r    test_from_exception*TestTracebackException.test_from_exception  sg   			EE ,,hhs}}-s/ 8 89301T']CLL9 2g//1A1ABWs3x0#  	EGB"+"8"8"@"@!!"%QU# #A #%D !33BBt C EDHH	E 21s$   D* (&F.*
F+4A,F&&F+.
F<c                      SS-    [         R                  " 5       n[        R                  R	                  U5      n[        S5      n[        S5      Ue! [         R                  " 5       n[        R                  R	                  U5      n[        S5      n[        S5      Ue= f! [
         ah  nUn[        R                  R	                  U5      n[        R                  R                  [        R                  " UR                  5      5      n S nAOS nAff = f[        R                  " [
        WS 5      nU R                  XqR                  5        U R                  WUR                  5        U R                  SUR                  5        U R                  XaR                  5        U R                  [         5         U R                  [#        U5      UR$                  5        S S S 5        O! , (       d  f       O= fU R                  [#        U5      R&                  UR(                  5        U R                  [+        U5      [+        U5      5        g )Nrc   r   causeuh ohTr9  r  r@   r  r  r   re  r  ra  ra  rl   r  r  r  r  r  r  r  r  r   r  r?  )r7   rC   exc_contextr  r   r  r  	exc_causes           r    r  !TestTracebackException.test_cause  s   	44!mmo'::II#N!'*(e3 mmo'::II#N!'*(e3 	4G..==a@C&33;;!!!//24N	4
 00E4H	MM2coo6s778301T']CLL9 211g//1A1ABWs3x0s7   A AB" ABB" "
D,ADD6&G%%
G3c                 .     SS-    [         R                  " 5       n[        R                  R	                  U5      n[        S5      e! [         R                  " 5       n[        R                  R	                  U5      n[        S5      e= f! [
         ah  nUn[        R                  R	                  U5      n[        R                  R                  [        R                  " UR                  5      5      n S nAOS nAff = fU R                  S UR                  5        U R                  WUR                  5        U R                  SUR                  5        U R                  XQR                  5        U R                  [         5         U R                  [#        U5      UR$                  5        S S S 5        O! , (       d  f       O= fU R                  [#        U5      R&                  UR(                  5        U R                  [+        U5      [+        U5      5        g )Nrc   r   r  Fr  r7   rC   r  r   r  r  s         r    r   #TestTracebackException.test_context  s~   	4)!mmo'::II#N(( mmo'::II#N(( 	4G..==a@C&33;;!!!//24N	4
 	s}}-coo6 8 89301T']CLL9 211g//1A1ABWs3x0s6   A ?B
 A BB
 

C<AC77C<&F22
G c           	      
  ^ U4S jm T" 5         U R                  S5        [        R                  R	                  W5      n[        UR                  5       5      nU R                  [        U5      [        R                  " 5       5        U R                  [        U Vs/ s H  nSU;   d  M  UPM     sn5      [        R                  " 5       S-  5        U R                  SUS   5        g ! [         a  nUn S nANS nAff = fs  snf )Nc                  @   >  SS-    g ! [          a
    T " 5          g f = fr   r   r?  s   r    r   9TestTracebackException.test_long_context_chain.<locals>.f  s#    !$ s   	 zException not raisedzZeroDivisionError:g      ?z0RecursionError: maximum recursion depth exceededr  )rz  rv  r@   r  r  rX  r$  r  rm   r9  rx  rp   )r7   r   r  teresrx  r   s         @r    test_long_context_chain.TestTracebackException.test_long_context_chain  s    		.C II,-))88A299; 	3s8S%:%:%<=C=Cq#71#<C=>!!#c)	+ 	>B	I  	G	 >s#   C' 
D )D '
C=1C88C=c                      SS-    [        S5      n[        S5      Ue! [        S5      n[        S5      Ue= f! [          ag  nUn[        R                  R                  USS9n[        R                  R                  [        R                  " UR                  5      5      n S nAOS nAff = f[        R                  " [         WS 5      nU R                  XdR                  5        U R                  S UR                  5        U R                  SUR                  5        U R                  XTR                  5        U R                  [        5         U R                  [        U5      UR                   5        S S S 5        O! , (       d  f       O= fU R                  [        U5      R"                  UR$                  5        U R                  ['        U5      ['        U5      5        g )Nrc   r   r  r  Tcompact)r   r@   r  r  re  r  ra  ra  rl   r  r  r  r  r  r  r  r  r   r  r?  )r7   r  r   r  rC   r  r  s          r    test_compact_with_cause.TestTracebackException.test_compact_with_cause  sm   
	:4!!'*(e3 "'*(e3 	:G..==gt=TC&33;;!!'"7"78:N	:
 00E4H	MM2s/s778301T']CLL9 211g//1A1ABWs3x0s.    : 7: 
B+AB&&B+&E<<
F
c                 ,     SS-    [         R                  " 5       n[        R                  R	                  U5      n[        S5      e! [         R                  " 5       n[        R                  R	                  U5      n[        S5      e= f! [
         ag  nUn[        R                  R	                  USS9n[        R                  R                  [        R                  " UR                  5      5      n S nAOS nAff = fU R                  S UR                  5        U R                  WUR                  5        U R                  SUR                  5        U R                  XQR                  5        U R                  [         5         U R                  [#        U5      UR$                  5        S S S 5        O! , (       d  f       O= fU R                  [#        U5      R&                  UR(                  5        U R                  [+        U5      [+        U5      5        g )Nrc   r   r  Tr  Fr  r  s         r    test_compact_no_cause,TestTracebackException.test_compact_no_cause  s   	:)!mmo'::II#N(( mmo'::II#N(( 	:G..==a=NC&33;;!!'"7"78:N	:
 	s}}-coo6 8 89301T']CLL9 211g//1A1ABWs3x0s6   A ?B
 A BB
 

C;AC66C;&F11
F?c                     SS-    [        R                  R                  WSS9nU R	                  [
        5         U R                  UR                  5        S S S 5        g ! [          a  nUn S nANiS nAff = f! , (       d  f       g = f)Nrc   r   F)save_exc_type)r   r@   r  r  r  r  r=  r  )r7   r   rC   r  s       r    test_no_save_exc_type,TestTracebackException.test_no_save_exc_type  sy    	aC ))88E 9 +01bkk* 21  	C	
 21s"   A A8
A5)A00A58
Bc                     SS-    [        R                  " W5      n[        R                  " UR                  5      n[        R
                  R                  U5      nU R                  [        R                  " U5      U5        U R                  [        R                  " UR                  5      U5        g ! [          a  nUn S nANS nAff = fr   )r   r9  getrefcountra  r@   r  r  rl   )r7   r   r  refcnt1refcnt2rC   s         r    /test_no_refs_to_exception_and_traceback_objectsFTestTracebackException.test_no_refs_to_exception_and_traceback_objects  s    	aC //'*//'"7"78**99'B17;)>)>?I  	G	s   B3 3
C	=CC	c                 d    SS-    U R	                  WW5        U R                  X45        U R                  U[        5       5        U R                  U[        5        g ! [          aJ  nUn[        R                  R                  U5      n[        R                  R                  U5      n S nANS nAff = fr   )	r   r@   r  r  assertIsNotrl   r?  r@  r	   )r7   r   r  rC   exc2s        r    test_comparison_basic,TestTracebackException.test_comparison_basic$  s    	HaC
 	d##C*i(  	HG..==gFC//>>wGD	Hs   A 
B/%A B**B/c                   ^ S mU4S jn U" 5         [        R                  R                  W5      n[        R                  R                  USS9n[        R                  R                  USS9nU R	                  XE5        U R                  XF5        [        R                  R                  USS9nU R                  XG5        [        R                  R                  USS9n[        R                  R                  USSS	9n	U R	                  X5        [        R                  R                  US
S9n
[        R                  R                  US
SS	9nU R                  X5        g ! [          a  nUn S nAGN[S nAff = f)Nc                  8     [        S5      e! [          a    e f = frI  r  r   r"   r    	raise_excKTestTracebackException.test_comparison_params_variations.<locals>.raise_exc1  s$     -- s    c                     > Su  pT" 5         g )N)rc   re   r   )r  ri   r#  s     r    raise_with_localsSTestTracebackException.test_comparison_params_variations.<locals>.raise_with_locals7  s    DAKr"   r  r  re   Tr  r  )r  r  r=  )r   r@   r  r  rl   r?  )r7   r&  r   r  rC   exc1r  exc3exc4exc5exc6exc7r#  s               @r    !test_comparison_params_variations8TestTracebackException.test_comparison_params_variations0  sW   			 **99'B++::7":M++::7!:L#C& ++::7SW:XC& ++::7":M++::7"]a:b$ ++::7":M++::7"]a:bD'-  	G	s   E 
E3&E..E3c                    / n[        S5       H	  n SS-    M     U R                  US   US   5        U R                  [        US   R                  5       5      [        US   R                  5       5      5        g ! [         a9  nUR                  [        R                  R                  U5      5         S nAM  S nAff = fr  )	r|  r   r+  r@   r  r  rl   rX  r$  )r7   r  r   r   s       r    /test_comparison_equivalent_exceptions_are_equalFTestTracebackException.test_comparison_equivalent_exceptions_are_equalU  s    qAL! 
 	a$q'*d1gnn./d1gnn6F1GH  LI88GGJKKLs   A::
B=.B88B=c                 R    " S S[         5      nU" S5      nU" S5      n X2e! U a     Ue! U a  nUn S nA OS nAff = ff = f[        R                  R                  U5      n[	        UR                  5       5      nU R                  SUS   5        U R                  SUS   5        g )	Nc                       \ rS rSrS rSrg)CTestTracebackException.test_unhashable.<locals>.UnhashableExceptioni`  c                     gr  r   r  s     r    r  JTestTracebackException.test_unhashable.<locals>.UnhashableException.__eq__a  r  r"   r   Nr  r   r"   r    r  r5  `  r  r"   r  r  r  zUnhashableException: ex2
re   zUnhashableException: ex1
r   )r   r@   r  r  rX  r$  rp   )r7   r  r  r  r   r  rC   	formatteds           r    r  &TestTracebackException.test_unhashable_  s    	) 	 "%(!%(	" 		& 	
 **99'B&	2IaLA2IaLAs#   # A,?:A?Ac                 >  ^ U4S jm T" S5        U R                  WWR                  5        g ! [          ad  n[        R                  R                  USS9n[        R                  R                  [        R                  " UR                  5      SS9n S nANS nAff = f)Nc                 6   > U (       a  T" U S-
  5        g SS-    g r   r   )nrecurses    r    r=  2TestTracebackException.test_limit.<locals>.recurses  s    !!r"   r  r  r  )
r   r@   r  r  re  r  ra  ra  rl   r  )r7   r   rC   r  r=  s       @r    
test_limit!TestTracebackException.test_limitr  s    	
	=BK
 	3	  	=..==aq=IC&33;;!!!//2! < =N	=s   . 
BABBc                    [         R                  " 5         [        S5      n[        SS5      n[	        US S 5      n[        USS S5      n[        R                  " [        XSS9nU R                  [         R                  0 5        [         R                  " S[        5       5        U R                  UR                  S   R                  S5        g )	Nr  rm  r  r   r   Frn  rp  )r7  r8  r   rr  rs  test_tbr@   r  rl   rx  rq  r:  r  r4  r7   r   r  r   r'   rC   s         r    test_lookup_lines(TestTracebackException.test_lookup_lines  s    gi*q$%Q4#**9a%P"-i31**L9r"   c                 \   [         R                  " S[        5       5        [        S5      n[	        SS5      n[        U[        5       SS[        5       S.5      n[        USS S5      n[        R                  " [        XS	S
9nU R                  UR                  S   R                  SSSS.5        g )Nrm  r  r  rc   string)r  r  unrepresentabler   r   Tr  r  z'string'z<local repr() failed>)r7  rq  r:  r   rr  rs  r  rB  r@   r  rl   r  r>  rC  s         r    r  "TestTracebackException.test_locals  s    i3gi*q')1x\k\m%noQ4#**qT3IIaL
G^_	ar"   c                 B   [         R                  " S[        5       5        [        S5      n[	        SS5      n[        U[        5       SS05      n[        USS S5      n[        R                  " [        X5      nU R                  UR                  S   R                  S 5        g )Nrm  r  r  r  rc   r   r   )r7  rq  r:  r   rr  rs  rB  r@   r  rl   r  r>  rC  s         r    r  %TestTracebackException.test_no_locals  s    i3gi*q')k1%56Q4#**9a<1,,d3r"   c                     [         R                  " [        [        S5      S 5      nU R                  [	        UR                  5       5      S/5        g )NhavenzException: haven
)r@   r  r   rl   rX  r$  )r7   rC   s     r    test_traceback_header,TestTracebackException.test_traceback_header  s<     **9i6H$Ocjjl+.B-CDr"   c                     S n[         R                  R                  U" 5       SS9n[        5       nUR	                  US9  U R                  UR                  5       R                  S5      SS  / SQ5        g )Nc                  F    Sn  U S-    g ! [          a  nUs S nA$ S nAff = f)N   r   r  )r  r   s     r    r   ,TestTracebackException.test_print.<locals>.f  s(    A! s   
 
   Tr  rJ  rg   r)  )z    x/0r  z
    x = 12z#ZeroDivisionError: division by zeror   )r@   r  r  r   r  rl   rO  r  )r7   r   rC   r0  s       r    
test_print!TestTracebackException.test_print  sj    	 **99!#d9S		v	OO##D)"#.	r"   c                 V    [         [        e! [          a4  nU R                  [        [        R
                  " U5      5         S nAOS nAff = f  SS-    g ! [         a    [         ef = f! [          a4  nU R                  [        [        R
                  " U5      5         S nAg S nAff = fr   )r  r/  rp   r  r@   r_  r   r  )r7   r   s     r    6test_dont_swallow_cause_or_context_of_falsey_exceptionMTestTracebackException.test_dont_swallow_cause_or_context_of_falsey_exception  s    
	H!x/ 	HMM-)C)CA)FGG	H	J&!$ &%%& 	JMM/9+E+Ea+HII	Js8    
A*AAA A''A* *
B(4*B##B()rC   r  N)r   r   r   r   r  r  r  r  r  r   r  r  r  r  r  r  r.  r1  r  r?  rD  r  r  rN  r
   rT  rW  r   r   r"   r    r  r  `  s    1"9
I12101,I21,1,	+
J
)#(JIB&4	:
a4E  $Jr"   r  c                   ^   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rSrU =r$ )&TestTracebackException_ExceptionGroupsi  c                 L   > [         TU ]  5         U R                  5       U l        g r;   )r1   r2   _get_exception_groupr   r6   s    r    r2   ,TestTracebackException_ExceptionGroups.setUp  s    ++-r"   c                    S nS nUR                   R                  U l        UR                   R                  U l           U" 5          U" S5        [        SWW/5      e! [         a  nUn S nAN(S nAff = f! [         a  nUn S nAN8S nAff = f! [
         a  nUn S nAOS nAff = f U" S5        O! [         a  nUn S nAOS nAff = f[        SUW/5      e! [
         a  nUs S nA$ S nAff = f)Nc                      SS-    g r   r   r   r"   r    r   FTestTracebackException_ExceptionGroups._get_exception_group.<locals>.f  r  r"   c                     [        U 5      er;   r  r  s    r    r  FTestTracebackException_ExceptionGroups._get_exception_group.<locals>.g  s    Q-r"   rX  r     r  )r  r  lno_flno_gr   r   rz  )	r7   r   r  r   r(  r  r)  r*  r   s	            r    r\  ;TestTracebackException_ExceptionGroups._get_exception_group  s    		  ZZ..
ZZ..
	CbE %UT4L99 ! D ! D " "  t55 	I	s    A A7 B 
A4(A/*B /A44B 7
BBB BB 
B&B!C !B&&C *B3 2C 3
C	=C?C C		C 
C0$C+%C0+C0c                     U R                   n[        R                  " [        U5      XR                  5      n[        R                  R                  U5      nU R                  X#5        U R                  X#5        g r;   )r   r@   r  r  ra  r  r  rl   )r7   r   teg1teg2s       r    !test_exception_group_constructionHTestTracebackException_ExceptionGroups.test_exception_group_construction  sY    WW++DHb:J:JK++::2>$$r"   c                     [         R                  R                  U R                  5      nSR	                  UR                  5       5      R                  S5      nSR                  S5      nU R                  X#5        g )Nr   rg   z'ExceptionGroup: eg2 (2 sub-exceptions)
r@   r  r  r   r   rA   r  rl   r7   tegr8  rD  s       r    *test_exception_group_format_exception_onlyQTestTracebackException_ExceptionGroups.test_exception_group_format_exception_only  s\    **99$''BGGC5578>>tD	=CCDI-r"   c                     [         R                  R                  U R                  5      nSR	                  UR                  SS95      R                  S5      n/ SQnU R                  X#5        g )Nr   Tr   rg   )z&ExceptionGroup: eg2 (2 sub-exceptions)z)   ExceptionGroup: eg1 (2 sub-exceptions)z)      ZeroDivisionError: division by zeroz      ValueError: 42z   ValueError: 24r   rn  ro  s       r    5test_exception_group_format_exception_onlyi_recursive\TestTracebackException_ExceptionGroups.test_exception_group_format_exception_onlyi_recursive  sZ    **99$''BGGC555FGMMdS	 	-r"   c                 |   [         R                  R                  U R                  5      nSR	                  UR                  5       5      R                  S5      nU R                  nU R                  n/ SPS[         SUS-    S3PSPS	PS
PSPS[         SUS-    S3PSPSPSPSPS[         SUS-    S3PSPSPS[         SUS-    S3PSPSPSPSPSPS[         SUS-    S3PSPSPS[         SUS-    S3PS PS!PS"PS#PS$PS[         SUS%-    S3PS&PS'PS[         SUS-    S3PS(PS)PS*PSPnU R                  X%5        g )+Nr   rg   6  + Exception Group Traceback (most recent call last):z  |   File "r  rz   z, in _get_exception_groupz1  |     raise ExceptionGroup("eg2", [exc3, exc4])z*  | ExceptionGroup: eg2 (2 sub-exceptions)(  +-+---------------- 1 ----------------z8    | Exception Group Traceback (most recent call last):z    |   File "   z3    |     raise ExceptionGroup("eg1", [exc1, exc2])z,    | ExceptionGroup: eg1 (2 sub-exceptions)*    +-+---------------- 1 ----------------z*      | Traceback (most recent call last):z      |   File "r  z      |     f()z      |     ~^^rc   r  z      |     1/0z      |     ~^~z+      | ZeroDivisionError: division by zero*      +---------------- 2 ----------------   z      |     g(42)z      |     ~^^^^r  z      |     raise ValueError(v)z      | ValueError: 42+      +------------------------------------(    +---------------- 2 ----------------(    | Traceback (most recent call last):r  z    |     g(24)z    |     ~^^^^z    |     raise ValueError(v)z    | ValueError: 24)    +------------------------------------)r@   r  r  r   r   r$  r  re  rf  r  rl   )r7   rp  r8  re  rf  rD  s         r    test_exception_group_formatBTestTracebackException_ExceptionGroups.test_exception_group_format  s   **99$''BGGCJJL)//5	



%L%"8*HU2XJ>WX% H% A	%
 ?% O% %XJhuRxj@YZ% J% C% A% A% 'xjq	AZ[% &% &% 'xjq	H%  &!%" &#%$ B%%& A'%( A)%* 'xjr
B[\+%, (-%. (/%0 'xjq	H1%2 63%4 -5%6 B7%8 ?9%: ?;%< %XJhuRxj@YZ=%> &?%@ &A%B %XJhuQwivFC%D 4E%F +G%H @I%J K%N 	-r"   c                    / n/ n[        S5       H  nUR                  [        U5      5        M     [        S5       H  nUR                  [        U5      5        M     [        nU" SU" SU5      U" SU5      /5      n[
        R                  R                  USS9nSR                  UR                  5       5      R                  S	5      n/ S
QnU R                  Xx5        g )Nr|   r  r   r  r  re   )max_group_widthr   rg   )z)  | ExceptionGroup: eg (2 sub-exceptions)rx  z,    | ExceptionGroup: eg1 (3 sub-exceptions)rz  z      | ValueError: 0r{        | ValueError: 1,      +---------------- ... ----------------z      | and 1 more exceptionr}  r~  z-    | ExceptionGroup: eg2 (10 sub-exceptions)rz  z      | TypeError: 0r{  z      | TypeError: 1r  z      | and 8 more exceptionsr}  r   )r|  r+  r?   r   r   r@   r  r  r   r$  r  rl   )	r7   excs1excs2r  r  r   rp  r8  rD  s	            r    test_max_group_width;TestTracebackException_ExceptionGroups.test_max_group_width=  s    qALLA' rALL1&  r%'E5)9:;**99"a9PGGCJJL)//5	, 	-r"   c           	      D   [        S5      n[        S5       H%  n[        S[        U* 5      U[        U5      /5      nM'     [        R
                  R                  USS9nSR                  UR                  5       5      R                  S5      n/ SQnU R                  XE5        g )	Nr  r|   rC   re   )max_group_depthr   rg   )z*  | ExceptionGroup: exc (3 sub-exceptions)rx  z    | ValueError: -2r~  z,    | ExceptionGroup: exc (3 sub-exceptions)rz  z      | ValueError: -1r{  z"      | ... (max_group_depth is 2)z*      +---------------- 3 ----------------r  r}  z(    +---------------- 3 ----------------z    | ValueError: 2r  r   )r   r|  r   r?   r@   r  r  r   r$  r  rl   )r7   rC   r  rp  r8  rD  s         r    test_max_group_depth;TestTracebackException_ExceptionGroups.test_max_group_depthc  s    
#qA QBjm(LMC  **99#q9QGGCJJL)//5	$ 	-r"   c                     U R                   e! [         a  nUn S nAOS nAff = f[        S5       H  n Ue! [         a  nUn S nAM  S nAff = f   [        R
                  R                  W5      n[        R
                  R                  U5      n[        R
                  R                  USS9n[        R
                  R                  USS9nU R                  X%5        U R                  X%5        U R                  X&5        U R                  X'5        U R                  U[        5       5        U R                  U[        5        g )Nr  i,  r  r|   )r   r   r|  r   r@   r  r  r  rl   r?  r@  r	   )r7   r   rC   r   r  r  r)  nes           r    test_comparison6TestTracebackException_ExceptionGroups.test_comparison  s   	''M 	C	qA	  
 **99'B++::7C++::7#:N))888J###C$C*i(s%    
$$8
AA

Ac                     [        S[        5       [        5       45      e! [         aS  nSR	                  [
        R                  " U5      5      nU R                  SU5        U R                  SU5         S nAOS nAff = fSn [        S[        5       [        U5      45      e! [         aH  n[
        R                  " U5      nU R                  [        R                   SU 3US   5         S nAg S nAff = f)	NGihr   z$+---------------- 1 ----------------z$+---------------- 2 ----------------boolGahr   r=  )
r  r/  r  r   r   r@   r_  rp   r  r   )r7   eestr_excr  s       r    8test_dont_swallow_subexceptions_of_falsey_exceptiongroup_TestTracebackException_ExceptionGroups.test_dont_swallow_subexceptions_of_falsey_exceptiongroup  s    
	K&uxz9;.GHH 	Kggi88<=GMM@'JMM@'JJ	K 	M&uxz?3;O.PQQ 	M004GMM_556b>LL	Ms-     
A=A	A88A=B" "
C4,>C//C4)r   re  rf  )r   r   r   r   r2   r\  rk  rq  rt  r  r  r  r  r  r   rt  ru  s   @r    rZ  rZ    s?    .*@%....`$.L.8)*M Mr"   rZ  c                       \ rS rSrS)S jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S(r)g)*SuggestionFormattingTestBasei  Nc                 L   ^^ Tb  UU4S jnOTnU R                  USS S9nUS   $ )Nc                     > [        TT 5        g r;   getattr)	attr_nameobjs   r    r{  =SuggestionFormattingTestBase.get_suggestion.<locals>.callable  s    Y'r"   r  r|  r}  r   )r~  )r7   r  r  r{  r  s    ``  r    get_suggestion+SuggestionFormattingTestBase.get_suggestion  s=     ( H))" * 
 Ar"   c           	      &    " S S5      n " S S5      n " S S5      n " S S5      n " S	 S
5      n " S S5      n " S S5      nUS4US4US4US4US4US4US4US44 H-  u  pU R                  U" 5       S5      n
U R                  X5        M/     g )Nc                   (    \ rS rSrS=r=r=rrSrSr	g)KSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.Substitutioni  Nr   )
r   r   r   r   noise
more_noiser  bcblechr   r   r"   r    Substitutionr    s    *..E.J.REr"   r  c                   (    \ rS rSrS=r=r=rrSrSr	g)JSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.Eliminationi  Nr   )
r   r   r   r   r  r  r  r  blchr   r   r"   r    Eliminationr    s    *..E.J.RDr"   r  c                   (    \ rS rSrS=r=r=rrSrSr	g)GSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.Additioni  Nr   )
r   r   r   r   r  r  r  r  bluchinr   r   r"   r    Additionr    s    *..E.J.RGr"   r  c                       \ rS rSrSrSrSrg)ZSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.SubstitutionOverEliminationi  Nr   )r   r   r   r   blachblucr   r   r"   r    SubstitutionOverEliminationr    s    EDr"   r  c                       \ rS rSrSrSrSrg)WSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.SubstitutionOverAdditioni  Nr   )r   r   r   r   r  bluchir   r   r"   r    SubstitutionOverAdditionr    s    EFr"   r  c                       \ rS rSrSrSrSrg)VSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.EliminationOverAdditioni  Nr   )r   r   r   r   bluchar  r   r   r"   r    EliminationOverAdditionr    s    FDr"   r  c                        \ rS rSrSrSrSrSrg)YSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.CaseChangeOverSubstitutioni  Nr   )r   r   r   r   LuchfluchBLuchr   r   r"   r    CaseChangeOverSubstitutionr    s    DEEr"   r  
'bluchin'?'blech'?'blch'?'blach'?'bluc'?'BLuch'?bluchr  rp   )r7   r  r  r  r  r  r  r  cls
suggestionr  s              r    test_getattr_suggestions5SuggestionFormattingTestBase.test_getattr_suggestions  s    	 		 		 		 		 		 		 	 |$:&)$|$(*5%z2$i0'4	 
OC ((8FMM*-	 
r"   c           	      \    " S S5      nU R                  SU R                  U" 5       S5      5        U R                  SU R                  U" 5       S5      5        U R                  SU R                  U" 5       S5      5         " S S5      nU R                  S	U R                  U" 5       S
5      5        U R                  S	U R                  U" 5       S5      5        U R                  S	U R                  U" 5       S5      5        U R                  S	U R                  [        U" 5       R                  S
5      5      5        U R                  S	U R                  [        U" 5       R                  S5      5      5        U R                  S	U R                  [        U" 5       R                  S5      5      5        g )Nc                       \ rS rSrSrSrg)LSuggestionFormattingTestBase.test_getattr_suggestions_underscored.<locals>.Ai  Nr   r   r   r   r   r  r   r   r"   r    r   r        Er"   r   'bluch'r  _luch_bluchc                       \ rS rSrSrS rSrg)LSuggestionFormattingTestBase.test_getattr_suggestions_underscored.<locals>.Bi  Nc                     [        X5        g r;   r  rQ  s     r    r  SSuggestionFormattingTestBase.test_getattr_suggestions_underscored.<locals>.B.method  s
    #r"   r   )r   r   r   r   r  r  r   r   r"   r    r   r    s    F$r"   r   '_bluch'_blachr  )rp   r  r  r   r  )r7   r   r   s      r    $test_getattr_suggestions_underscoredASuggestionFormattingTestBase.test_getattr_suggestions_underscored  s<   	 	 	i!4!4QS'!BCi!4!4QS'!BCi!4!4QS(!CD	$ 	$
 	j$"5"5ac8"DEj$"5"5ac7"CDT%8%8g%FGj$"5"5gacjj(6S"TUj$"5"5gacjj'6R"STj$"5"5gacjj'6R"STr"   c                 j     " S S5      nU R                  U" 5       S5      nU R                  SU5        g )Nc                       \ rS rSrSrSrg)cSuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_long_attributes.<locals>.Ai  Nr   r   r   r   r   r  r   r   r"   r    r   r    r  r"   r   somethingverywrongr  r  r  r7   r   r  s      r    ;test_getattr_suggestions_do_not_trigger_for_long_attributesXSuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_long_attributes  s3    	 	 $$QS*>?&)r"   c                 x    " S S5      nS H  nU R                  US9   U R                  X5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  S	U5        U R                  S
U5        S S S 5        M     g ! , (       d  f       M  = f)Nc                   (    \ rS rSrS=r=r=r=rrSr	g)oSuggestionFormattingTestBase.test_getattr_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.MyClassi  Nr   )
r   r   r   r   vvvmomr   idpythor   r   r"   r    MyClassr    s    )--C-#--Br"   r  r  r  mpyrR  Did you meanz'vvv'mom''id''w''pytho'r  r  r  )r7   r  rR  r  s       r    Atest_getattr_error_bad_suggestions_do_not_trigger_for_small_names^SuggestionFormattingTestBase.test_getattr_error_bad_suggestions_do_not_trigger_for_small_names   s    	. 	. *D4(,,W;  8  0  &1  0  /  F3 )( *((s   A>B**
B9	c                      " S S5      n[        S5       H  n[        USU 3S 5        M     U R                  U" 5       S5      nU R                  SU5        g )Nc                       \ rS rSrSrSrg)]SuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_big_dicts.<locals>.Ai  Nr   r  r   r"   r    r   r    r  r"   r   r  index_r  r  )r|  setattrr  r  )r7   r   r  r  s       r    5test_getattr_suggestions_do_not_trigger_for_big_dictsRSuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_big_dicts  sU    	 	 4[EAw'. ! $$QS'2&)r"   c                      " S S5      nU R                  U" 5       S5      nU R                  SU5         " S S5      nU R                  U" 5       S5      nU R                  SU5        g )Nc                       \ rS rSrSrS rSrg)HSuggestionFormattingTestBase.test_getattr_suggestions_no_args.<locals>.Ai  Nc                     [        5       er;   AttributeErrorr7   attrs     r    rS  TSuggestionFormattingTestBase.test_getattr_suggestions_no_args.<locals>.A.__getattr__  s    $&&r"   r   r   r   r   r   r  rS  r   r   r"   r    r   r    s    E'r"   r   r  r  c                       \ rS rSrSrS rSrg)r  i"  Nc                     [         er;   r  r  s     r    rS  r  $  s    $$r"   r   r  r   r"   r    r   r  "  s    E%r"   r  r  s      r     test_getattr_suggestions_no_args=SuggestionFormattingTestBase.test_getattr_suggestions_no_args  s^    	' 	'
 $$QS'2gv&	% 	%
 $$QS'2gv&r"   c                    ^  " S S5      m " U4S jS5      n " S S5      n " S S5      nXU4 H,  nU R                  U" 5       S	5      nU R                  S
U5        M.     g )Nc                       \ rS rSrSrSrSrg)]SuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.NonStringifyClassi+  Nr   rD  r   r"   r    NonStringifyClassr  +  s    GHr"   r  c                   &   > \ rS rSrSrU 4S jrSrg)MSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.Ai/  Nc                 $   > [        T" 5       5      er;   r  )r7   r  r  s     r    rS  YSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.A.__getattr__1  s    $%6%899r"   r   r  )r  s   r    r   r  /  s    E: :r"   r   c                       \ rS rSrSrS rSrg)MSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.Bi4  Nc                     [        SS5      e)Nr   rz   r  r  s     r    rS  YSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.B.__getattr__6  s    $Wb11r"   r   r  r   r"   r    r   r!  4  s    E2r"   r   c                       \ rS rSrSrS rSrg)MSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.Ci9  Nc                     [        S5      e)Nrz   r  r  s     r    rS  YSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.C.__getattr__;  s    $R((r"   r   r  r   r"   r    r   r%  9  s    E)r"   r   r  r  r  )r7   r   r   r   r  r  r  s         @r    %test_getattr_suggestions_invalid_argsBSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args*  s]    	 		: 	:
	2 	2
	) 	)
 !9C((8FMM'6* r"   c                 j     " S S5      nU R                  U" 5       S5      nU R                  SU5        g )Nc                       \ rS rSrS rSrg)NSuggestionFormattingTestBase.test_getattr_suggestions_for_same_name.<locals>.AiC  c                     S/$ )Nr  r   rL   s    r    __dir__VSuggestionFormattingTestBase.test_getattr_suggestions_for_same_name.<locals>.A.__dir__D  s
    y r"   r   N)r   r   r   r   r.  r   r   r"   r    r   r,  C  s    !r"   r   r  r  r  r  s      r    &test_getattr_suggestions_for_same_nameCSuggestionFormattingTestBase.test_getattr_suggestions_for_same_nameB  s2    	! 	! $$QS'20r"   c                      " S S5      nU R                  U" 5       S5      nU R                  SU5        U R                  SU5        g )Nc                       \ rS rSrSrS rSrg)NSuggestionFormattingTestBase.test_attribute_error_with_failing_dict.<locals>.TiJ  rc   c                     [        S5      e)Noh no!r  rL   s    r    r.  VSuggestionFormattingTestBase.test_attribute_error_with_failing_dict.<locals>.T.__dir__L  s    $X..r"   r   N)r   r   r   r   r  r.  r   r   r"   r    Tr4  J  s    E/r"   r8  blichr  r6  r  )r7   r8  r  s      r    &test_attribute_error_with_failing_dictCSuggestionFormattingTestBase.test_attribute_error_with_failing_dictI  sB    	/ 	/
 $$QS'2&)6*r"   c                      " S S5      nU" 5       nSUR                   S'   U R                  US5      nU R                  SU5        g )Nc                       \ rS rSrSrSrg)WSuggestionFormattingTestBase.test_attribute_error_with_non_string_candidates.<locals>.TiT  rc   r   Nr  r   r"   r    r8  r>  T      Er"   r8  rc   r   r9  r  )__dict__r  rp   )r7   r8  instancer  s       r    /test_attribute_error_with_non_string_candidatesLSuggestionFormattingTestBase.test_attribute_error_with_non_string_candidatesS  sE    	 	 3 !$$Xw7gv&r"   c                 V    S nU R                  USS S9nU R                  SUS   5        g )Nc                      [        SSS9e)NrR  rz   )rR  r  r  r   r"   r    #raise_attribute_error_with_bad_namelSuggestionFormattingTestBase.test_attribute_error_with_bad_name.<locals>.raise_attribute_error_with_bad_name]  s     bb11r"   r  r  rH   r~  r  r7   rF  r  s      r    "test_attribute_error_with_bad_name?SuggestionFormattingTestBase.test_attribute_error_with_bad_name\  s<    	2 ))/R4 * 
 	l2./r"   c                    ^  " S S5      m " U4S jS5      nU R                  U" 5       S5      nU R                  SU5        U R                  SU5        g )Nc                       \ rS rSrSrSrg)RSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr.<locals>.Aif  rc   r   Nr  r   r"   r    r   rN  f  r?  r"   r   c                   "   > \ rS rSrU 4S jrSrg)RSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr.<locals>.Bii  c                 *   > T" 5       nUR                   $ r;   )r9  )r7   r  r  r   s      r    __getattribute__cSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr.<locals>.B.__getattribute__j  s    Cwwr"   r   N)r   r   r   r   rR  r   )r   s   r    r   rP  i  s     r"   r   r  r  r  r  )r7   r   r  r   s      @r    *test_attribute_error_inside_nested_getattrGSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattre  sI    	 		 	
 $$QS+6nf-gv&r"   c                    [        [        R                  " 5       5      nU R                  [        R
                  U5        [        R                  R                  [        U5      5        U R                  [        R                  R                  5        SR                  [        R                  " [        R                  SS95      nX#S-   -  nUR!                  U5        U$ )Nr   ry  )r  z.py)r   tempfilemkdtemprf  shutilrmtreer9  pathr+  r?  popr   randomchoicesrG  ascii_letters
write_text)r7   r   tmpdirmod_namemodules        r    make_module(SuggestionFormattingTestBase.make_moduler  s    h&&()v.F$%776>>&*>*>"EFe+,$r"   c                    ^ ^^ T R                  U5      mUUU 4S jnT R                  [        T5        T R                  USS S9nUS   $ )Nc                     >  [        ST ST 35        g ! [         a  n U S eS n A f[         a'  n TR                  S[	        U 5       35         S n A g S n A ff = f)Nzfrom z import zExpected ImportError but got )rI   r  r   rz  r  )r   modnamerR  r7   s    r    r{  ISuggestionFormattingTestBase.get_import_from_suggestion.<locals>.callable  s\    EuWIXdV45 "T! E		9$q'CDDEs    
A"AAAr  r  r   )rd  rf  r   r~  )r7   r   rR  r{  r  rh  s   ` `  @r    get_import_from_suggestion7SuggestionFormattingTestBase.get_import_from_suggestion  sQ    ""4(	E 	())" * 
 Ar"   c           	         [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      nUS4US	4US
4US4US4US4US4US44 H(  u  pU R                  US5      n
U R                  X5        M*     g )NzP            noise = more_noise = a = bc = None
            blech = None
        zP
            noise = more_noise = a = bc = None
            blch = None
        zS
            noise = more_noise = a = bc = None
            bluchin = None
        z:
            blach = None
            bluc = None
        z<
            blach = None
            bluchi = None
        z;
            blucha = None
            bluc = None
        zS
            Luch = None
            fluch = None
            BLuch = None
        r  r  r  r  r  r  r  )r   r   rj  rp   )r7   substitutioneliminationadditionsubstitutionOverEliminationsubstitutionOverAdditioneliminationOverAdditioncaseChangeOverSubstitutionr   r  r  s              r    test_import_from_suggestions9SuggestionFormattingTestBase.test_import_from_suggestions  s    ( 
 oo ' 
 ?? $ 
 '/oo 7 '#
 $,?? 4 $ 
 #+// 3 #
 &.__ 6 &" |$:&)$|$(*5%z2$i0'4	!
D 44T7CFMM*-	!
r"   c                    SnU R                  SU R                  US5      5        U R                  SU R                  US5      5        U R                  SU R                  US5      5        SnU R                  SU R                  US5      5        U R                  SU R                  US5      5        U R                  SU R                  US	5      5        g )
Nzbluch = Noner  r  r  r  z_bluch = Noner  r  r  )rp   rj  r  )r7   r   s     r    (test_import_from_suggestions_underscoredESuggestionFormattingTestBase.test_import_from_suggestions_underscored  s    i!@!@w!OPi!@!@w!OPi!@!@x!PQj$"A"A$"QRj$"A"A$"PQT%D%DT7%STr"   c                 t    [         R                  " S5      nU R                  SU R                  US5      5        g )Nz;            globals()[0] = 1
            bluch = 1
        r  r  )r   r   rp   rj  )r7   modWithNonStringAttrs     r    'test_import_from_suggestions_non_stringDSuggestionFormattingTestBase.test_import_from_suggestions_non_string  s5    ' 0   	i!@!@AUW^!_`r"   c                 P    SnU R                  US5      nU R                  SU5        g )Nzblech = Noner  r  r  )r7   r   r  s      r    ?test_import_from_suggestions_do_not_trigger_for_long_attributes\SuggestionFormattingTestBase.test_import_from_suggestions_do_not_trigger_for_long_attributes  s*    $$T+?@&)r"   c                 h   SnS H  nU R                  US9   U R                  X5      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  S	U5        S S S 5        M     g ! , (       d  f       M  = f)
Nz!vvv = mom = w = id = pytho = Noner  r  r  z'vvv'r  r  r  r  )r  rj  r  )r7   r   rR  r  s       r    Etest_import_from_error_bad_suggestions_do_not_trigger_for_small_namesbSuggestionFormattingTestBase.test_import_from_error_bad_suggestions_do_not_trigger_for_small_names  s    2)D4(88D  8  &1  &1  0  /  F3 )( *((s   A>B""
B1	c                     [        S5       Vs/ s H	  nSU S3PM     nnUR                  S5        SR                  U5      nU R                  US5      nU R	                  SU5        g s  snf )N   r  z = z Nonerk  r  r  )r|  r+  r   rj  r  )r7   r  chunksr   r  s        r    >test_import_from_suggestions_do_not_trigger_for_big_namespaces[SuggestionFormattingTestBase.test_import_from_suggestions_do_not_trigger_for_big_namespaces  sd    38:>:%F5'%:>gxx00w?&)	 ?s   A'c                 V    S nU R                  USS S9nU R                  SUS   5        g )Nc                      [        SSSS9e)NrR  rz   r  )rR  r  	name_from)r  r   r"   r    rF  nSuggestionFormattingTestBase.test_import_from_error_with_bad_name.<locals>.raise_attribute_error_with_bad_name  s    22<<r"   r  r  rH   rH  rI  s      r    $test_import_from_error_with_bad_nameASuggestionFormattingTestBase.test_import_from_error_with_bad_name  s<    	= ))/R4 * 
 	l2./r"   c                     S nS nS nS nS nS nUS4US4US	4US
4US4US44 H'  u  pxU R                  U5      n	U R                  X5        M)     g )Nc                  4    S =n =n=p#S n[        [        5        g r;   r  r  )r  r  r  r  r  s        r    r  NSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.Substitution  s     *..E.J.E%Lr"   c                  4    S =n =n=p#S n[        [        5        g r;   r  )r  r  r  r  r  s        r    r  MSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.Elimination  s     *..E.J.D%Lr"   c                  4    S =n =n=p#S n[        [        5        g r;   r  )r  r  r  r  r  s        r    r  JSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.Addition  s     *..E.J.G%Lr"   c                  *    S n S n[        [        5        g r;   r  )r  r  s     r    r  ]SuggestionFormattingTestBase.test_name_error_suggestions.<locals>.SubstitutionOverElimination  s    ED%Lr"   c                  *    S n S n[        [        5        g r;   r  )r  r  s     r    r  ZSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.SubstitutionOverAddition  s    EF%Lr"   c                  *    S n S n[        [        5        g r;   r  )r  r  s     r    r  YSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.EliminationOverAddition  s    FD%Lr"   r  r  r  z	'blucha'?r  r  )
r7   r  r  r  r  r  r  rB   r  r  s
             r    test_name_error_suggestions8SuggestionFormattingTestBase.test_name_error_suggestions  s    	
	
	
	
	
	
 #/
!;!,i 8!)< 8!8+ F!<j I!9: F!HD ((.FMM*-!Hr"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  "    [        [        5        g r;   )r  global_for_suggestior   r"   r    rB   SSuggestionFormattingTestBase.test_name_error_suggestions_from_globals.<locals>.func!  s    &'r"   z'global_for_suggestions'?r  r7   rB   r  s      r    (test_name_error_suggestions_from_globalsESuggestionFormattingTestBase.test_name_error_suggestions_from_globals   s&    	($$T*16:r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  "    [        [        5        g r;   )r  ZeroDivisionErrrrrr   r"   r    rB   TSuggestionFormattingTestBase.test_name_error_suggestions_from_builtins.<locals>.func'  s    $%r"   'ZeroDivisionError'?r  r  s      r    )test_name_error_suggestions_from_builtinsFSuggestionFormattingTestBase.test_name_error_suggestions_from_builtins&  s&    	&$$T*,f5r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  p    [        5       R                  5       n [        U S'   [        [	        SU 5      5        g )N__builtins__r  )r:  copyr   r  eval)custom_globalss    r    rB   lSuggestionFormattingTestBase.test_name_error_suggestions_from_builtins_when_builtins_is_module.<locals>.func-  s*    $Y^^-N-5N>*$+^<=r"   r  r  r  s      r    Atest_name_error_suggestions_from_builtins_when_builtins_is_module^SuggestionFormattingTestBase.test_name_error_suggestions_from_builtins_when_builtins_is_module,  s(    	> $$T*,f5r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  ~    Sn [        5       R                  5       nSUS'   [        [        SU[	        5       5      5        g )Nrc   r   abv)r:  r  r  r  r>  )abcr  s     r    rB   aSuggestionFormattingTestBase.test_name_error_suggestions_with_non_string_candidates.<locals>.func5  s2    C$Y^^-N !N1$unfh78r"   r  r  r  s      r    6test_name_error_suggestions_with_non_string_candidatesSSuggestionFormattingTestBase.test_name_error_suggestions_with_non_string_candidates4  s'    	9
 $$T*eV$r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  &    S n [        [        5        g r;   )r  somethingverywronghe)somethingverywronghehehehehehes    r    rB   dSuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_long_names.<locals>.func>  s    -1*&'r"   somethingverywrongheher  r  s      r    9test_name_error_suggestions_do_not_trigger_for_long_namesVSuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_long_names=  s*    	( $$T*16:r"   c                    S nS nS nS nSU4SU4SU4SU44 H  u  pVU R                  US	9   U R                  U5      nU R                  S
U5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        S S S 5        M     g ! , (       d  f       M  = f)Nc                  "    S =n =n=n=p4[           g r;   r#  r  r  r   r  r  s        r    f_bhSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_bF      )--C-#--Br"   c                  "    S =n =n=n=p4[           g r;   rb  r  s        r    f_vhSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_vJ  r  r"   c                  "    S =n =n=n=p4[           g r;   )r  r  s        r    f_mhSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_mN  r  r"   c                  "    S =n =n=n=p4[           g r;   )r  r  s        r    f_pyiSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_pyR  s    )--C-#--Br"   r  r  r  r  r  zyou meanr  r  r  r  r  r   )r7   r  r  r  r  rR  rB   r  s           r    >test_name_error_bad_suggestions_do_not_trigger_for_small_names[SuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_namesD  s    				  :SzC:d|LJD4(,,T2  V4  /  /  0  /  F3 )( M((s   A>B::
C		c                 P    S nU R                  U5      nU R                  US5        g )Nc                     S =n =n=n=n=n=n=n=n=n=n	=n
=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n =n!=n"=n#=n$=n%=n&=n'=n(=n)=n*=n+=n,=n-=n.=n/=n0=n1=n2=n3=n4=n5=n6=n7=n8=n9=n:=n;=n<=n==n>=n?=n@=nA=nB=nC=nD=nE=nF=nG=nH=nI=nJ=nK=nL=nM=nN=nO=nP=nQ=nR=nS=nT=nU=nV=nW=nX=nY=nZ=n[=n\=n]=n^=n_=n`=na=nb=nc=nd=ne=nf=ng=nh=ni=nj=nk=nl=nm=nn=no=np=nq=nr=ns=nt=nu=nv=nw=nx=ny=nz=n{=n|=n}=n~=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=Gn =Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn	=Gn
=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn =Gn!=Gn"=Gn#=Gn$=Gn%=Gn&=Gn'=Gn(=Gn)=Gn*=Gn+=Gn,=Gn-=Gn.=Gn/=Gn0=Gn1=Gn2=Gn3=Gn4=Gn5=Gn6=Gn7=Gn8=Gn9=Gn:=Gn;=Gn<=Gn==Gn>=Gn?=Gn@=GnA=GnB=GnC=GnD=GnE=GnF=GnG=GnH=GnI=GnJ=GnK=GnL=GnM=GnN=GnO=GnP=GnQ=GnR=GnS=GnT=GnU=GnV=GnW=GnX=GnY=GnZ=Gn[=Gn\=Gn]=Gn^=Gn_=Gn`=Gna=Gnb=Gnc=Gnd=Gne=Gnf=Gng=Gnh=Gni=Gnj=Gnk=Gnl=Gnm=Gnn=Gno=Gnp=Gnq=Gnr=Gns=Gnt=Gnu=Gnv=Gnw=Gnx=Gny=Gnz=Gn{=Gn|=Gn}=Gn~=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn =Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn	=Gn
=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn =Gn!=Gn"=Gn#=Gn$=Gn%=Gn&=Gn'=Gn(=Gn)=Gn*=Gn+=Gn,=Gn-=Gn.=Gn/=Gn0=Gn1=Gn2=Gn3=Gn4=Gn5=Gn6=Gn7=Gn8=Gn9=Gn:=Gn;=Gn<=Gn==Gn>=Gn?=Gn@=GnA=GnB=GnC=GnD=GnE=GnF=GnG=GnH=GnI=GnJ=GnK=GnL=GnM=GnN=GnO=GnP=GnQ=GnR=GnS=GnT=GnU=GnV=GnW=GnX=GnY=GnZ=Gn[=Gn\=Gn]=Gn^=Gn_=Gn`=Gna=Gnb=Gnc=Gnd=Gne=Gnf=Gng=Gnh=Gni=Gnj=Gnk=Gnl=Gnm=Gnn=Gno=Gnp=Gnq=Gnr=Gns=Gnt=Gnu=Gnv=Gnw=Gnx=Gny=Gnz=Gn{=Gn|=Gn}=Gn~=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn =Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn	=Gn
=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=Gn=GnGn[        [        5        g r;   )r  a0(   a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15a16a17a18a19a20a21a22a23a24a25a26a27a28a29a30a31a32a33a34a35a36a37a38a39a40a41a42a43a44a45a46a47a48a49a50a51a52a53a54a55a56a57a58a59a60a61a62a63a64a65a66a67a68a69a70a71a72a73a74a75a76a77a78a79a80a81a82a83a84a85a86a87a88a89a90a91a92a93a94a95a96a97a98a99a100a101a102a103a104a105a106a107a108a109a110a111a112a113a114a115a116a117a118a119a120a121a122a123a124a125a126a127a128a129a130a131a132a133a134a135a136a137a138a139a140a141a142a143a144a145a146a147a148a149a150a151a152a153a154a155a156a157a158a159a160a161a162a163a164a165a166a167a168a169a170a171a172a173a174a175a176a177a178a179a180a181a182a183a184a185a186a187a188a189a190a191a192a193a194a195a196a197a198a199a200a201a202a203a204a205a206a207a208a209a210a211a212a213a214a215a216a217a218a219a220a221a222a223a224a225a226a227a228a229a230a231a232a233a234a235a236a237a238a239a240a241a242a243a244a245a246a247a248a249a250a251a252a253a254a255a256a257a258a259a260a261a262a263a264a265a266a267a268a269a270a271a272a273a274a275a276a277a278a279a280a281a282a283a284a285a286a287a288a289a290a291a292a293a294a295a296a297a298a299a300a301a302a303a304a305a306a307a308a309a310a311a312a313a314a315a316a317a318a319a320a321a322a323a324a325a326a327a328a329a330a331a332a333a334a335a336a337a338a339a340a341a342a343a344a345a346a347a348a349a350a351a352a353a354a355a356a357a358a359a360a361a362a363a364a365a366a367a368a369a370a371a372a373a374a375a376a377a378a379a380a381a382a383a384a385a386a387a388a389a390a391a392a393a394a395a396a397a398a399a400a401a402a403a404a405a406a407a408a409a410a411a412a413a414a415a416a417a418a419a420a421a422a423a424a425a426a427a428a429a430a431a432a433a434a435a436a437a438a439a440a441a442a443a444a445a446a447a448a449a450a451a452a453a454a455a456a457a458a459a460a461a462a463a464a465a466a467a468a469a470a471a472a473a474a475a476a477a478a479a480a481a482a483a484a485a486a487a488a489a490a491a492a493a494a495a496a497a498a499a500a501a502a503a504a505a506a507a508a509a510a511a512a513a514a515a516a517a518a519a520a521a522a523a524a525a526a527a528a529a530a531a532a533a534a535a536a537a538a539a540a541a542a543a544a545a546a547a548a549a550a551a552a553a554a555a556a557a558a559a560a561a562a563a564a565a566a567a568a569a570a571a572a573a574a575a576a577a578a579a580a581a582a583a584a585a586a587a588a589a590a591a592a593a594a595a596a597a598a599a600a601a602a603a604a605a606a607a608a609a610a611a612a613a614a615a616a617a618a619a620a621a622a623a624a625a626a627a628a629a630a631a632a633a634a635a636a637a638a639a640a641a642a643a644a645a646a647a648a649a650a651a652a653a654a655a656a657a658a659a660a661a662a663a664a665a666a667a668a669a670a671a672a673a674a675a676a677a678a679a680a681a682a683a684a685a686a687a688a689a690a691a692a693a694a695a696a697a698a699a700a701a702a703a704a705a706a707a708a709a710a711a712a713a714a715a716a717a718a719a720a721a722a723a724a725a726a727a728a729a730a731a732a733a734a735a736a737a738a739a740a741a742a743a744a745a746a747a748a749a750a751a752a753a754a755a756a757a758a759a760a761a762a763a764a765a766a767a768a769a770a771a772a773a774a775a776a777a778a779a780a781a782a783a784a785a786a787a788a789a790a791a792a793a794a795a796a797a798a799a800s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r    rB   iSuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_too_many_locals.<locals>.funca  sO'   d aPB P Pb P2 P PR P" Pr PB P PPPP!P$'P*-P03P69P<?PBEPPPP!P$'P*-P03P69P<?PBEP P P P "P %(P +.P 14P 7:P =@P CFP 	P 	P 	P "	P %(	P +.	P 14	P 7:	P =@	P CF	P
 P
 P
 P
 "P
 %(P
 +.P
 14P
 7:P
 =@P
 CFP P P P "P %(P +.P 14P 7:P =@P CFP P P P "P %(P +.P 14P 7:P =@P CFP P P P "P %(P +.P 14P 7:P =@P CFP P P P "P %(P +.P 14P 7:P =@P CGP P P P "&P )-P 04P 7;P >BP EIP LPP P P P "&P )-P 04P 7;P >BP EIP LPP P P P "&P )-P 04P 7;P >BP EIP LPP P P P "&P )-P 04P 7;P >BP EIP LPP P P P "&P )-P 04P 7;P >BP EIP LPP P P P "&P )-P 04P 7;P >BP EIP LPP  !P  !P  !P  "&!P  )-!P  04!P  7;!P  >B!P  EI!P  LP!P" #P" #P" #P" "&#P" )-#P" 04#P" 7;#P" >B#P" EI#P" LP#P$ %P$ %P$ %P$ "&%P$ )-%P$ 04%P$ 7;%P$ >B%P$ EI%P$ LP%P& 'P& 'P& 'P& "&'P& )-'P& 04'P& 7;'P& >B'P& EI'P& LP'P( )P( )P( )P( "&)P( )-)P( 04)P( 7;)P( >B)P( EI)P( LP)P* +P* +P* +P* "&+P* )-+P* 04+P* 7;+P* >B+P* EI+P* LP+P, -P, -P, -P, "&-P, )--P, 04-P, 7;-P, >B-P, EI-P, LP-P. /P. /P. /P. "&/P. )-/P. 04/P. 7;/P. >B/P. EI/P. LP/P0 1P0 1P0 1P0 "&1P0 )-1P0 041P0 7;1P0 >B1P0 EI1P0 LP1P2 3P2 3P2 3P2 "&3P2 )-3P2 043P2 7;3P2 >B3P2 EI3P2 LP3P4 5P4 5P4 5P4 "&5P4 )-5P4 045P4 7;5P4 >B5P4 EI5P4 LP5P6 7P6 7P6 7P6 "&7P6 )-7P6 047P6 7;7P6 >B7P6 EI7P6 LP7P8 9P8 9P8 9P8 "&9P8 )-9P8 049P8 7;9P8 >B9P8 EI9P8 LP9P: ;P: ;P: ;P: "&;P: )-;P: 04;P: 7;;P: >B;P: EI;P: LP;P< =P< =P< =P< "&=P< )-=P< 04=P< 7;=P< >B=P< EI=P< LP=P> ?P> ?P> ?P> "&?P> )-?P> 04?P> 7;?P> >B?P> EI?P> LP?P@ AP@ AP@ AP@ "&AP@ )-AP@ 04AP@ 7;AP@ >BAP@ EIAP@ LPAPB CPB CPB CPB "&CPB )-CPB 04CPB 7;CPB >BCPB EICPB LPCPD EPD EPD EPD "&EPD )-EPD 04EPD 7;EPD >BEPD EIEPD LPEPF GPF GPF GPF "&GPF )-GPF 04GPF 7;GPF >BGPF EIGPF LPGPH IPH IPH IPH "&IPH )-IPH 04IPH 7;IPH >BIPH EIIPH LPIPJ KPJ KPJ KPJ "&KPJ )-KPJ 04KPJ 7;KPJ >BKPJ EIKPJ LPKPL MPL MPL MPL "&MPL )-MPL 04MPL 7;MPL >BMPL EIMPL LPMPN OPN OPN OPN "&OPN )-OPN 04OPN 7;OPN >BOPN EIOPN LPOPP QPP QPP QPP "&QPP )-QPP 04QPP 7;QPP >BQPP EIQPP LPQPR SPR SPR SPR "&SPR )-SPR 04SPR 7;SPR >BSPR EISPR LPSPT UPT UPT UPT "&UPT )-UPT 04UPT 7;UPT >BUPT EIUPT LPUPV WPV WPV WPV "&WPV )-WPV 04WPV 7;WPV >BWPV EIWPV LPWPX YPX YPX YPX "&YPX )-YPX 04YPX 7;YPX >BYPX EIYPX LPYPZ [PZ [PZ [PZ "&[PZ )-[PZ 04[PZ 7;[PZ >B[PZ EI[PZ LP[P\ ]P\ ]P\ ]P\ "&]P\ )-]P\ 04]P\ 7;]P\ >B]P\ EI]P\ LP]P^ _P^ _P^ _P^ "&_P^ )-_P^ 04_P^ 7;_P^ >B_P^ EI_P^ LP_P` aP` aP` aP` "&aP` )-aP` 04aP` 7;aP` >BaP` EIaP` LPaPb cPb cPb cPb "&cPb )-cPb 04cPb 7;cPb >BcPb EIcPb LPcPd ePd ePd ePd "&ePd )-ePd 04ePd 7;ePd >BePd EIePd LPePf gPf gPf gPf "&gPf )-gPf 04gPf 7;gPf >BgPf EIgPf LPgPh iPh iPh iPh "&iPh )-iPh 04iPh 7;iPh >BiPh EIiPh LPiPj kPj kPj kPj "&kPj )-kPj 04kPj 7;kPj >BkPj EIkPj LPkPl mPl mPl mPl "&mPl )-mPl 04mPl 7;mPl >BmPl EImPl LPmPn oPn oPn oPn "&oPn )-oPn 04oPn 7;oPn >BoPn EIoPn LPoPp qPp qPp qPp "&qPp )-qPp 04qPp 7;qPp >BqPp EIqPp LPqPr sPr sPr sPr "&sPr )-sPr 04sPr 7;sPr >BsPr EIsPr LPsPt uPt uPt uPt "&uPt )-uPt 04uPt 7;uPt >BuPt EIuPt LPuPv wPv wPv wPv "&wPv )-wPv 04wPv 7;wPv >BwPv EIwPv LPwPx yPx yPx yPx "&yPx )-yPx 04yPx 7;yPx >ByPx EIyPx LPyPz {Pz {Pz {Pz "&{Pz )-{Pz 04{Pz 7;{Pz >B{Pz EI{Pz LP{P| }P| }P| }P| "&}P| )-}P| 04}P| 7;}P| >B}P| EI}P| LP}P~ P~ P~ P~ "&P~ )-P~ 04P~ 7;P~ >BP~ EIP~ LPP@ AP@ AP@ AP@ "&AP@ )-AP@ 04AP@ 7;AP@ >BAP@ EIAP@ LPAPB CPB CPB CPB "&CPB )-CPB 04CPB 7;CPB >BCPB EICPB LPCPD EPD EPD EPD "&EPD )-EPD 04EPD 7;EPD >BEPD EIEPD LPEPF GPF GPF GPF "&GPF )-GPF 04GPF 7;GPF >BGPF EIGPF LPGPH IPH IPH IPH "&IPH )-IPH 04IPH 7;IPH >BIPH EIIPH LPIPJ KPJ KPJ KPJ "&KPJ )-KPJ 04KPJ 7;KPJ >BKPJ EIKPJ LPKPL MPL MPL MPL "&MPL )-MPL 04MPL 7;MPL >BMPL EIMPL LPMPN OPN OPN OPN "&OPN )-OPN 04OPN 7;OPN >BOPN EIOPN LPOPP QPP QPP QPP "&QPP )-QPP 04QPP 7;QPP >BQPP EIQPP LPQPR SPR SPR SPR "&SPR )-SPR 04SPR 7;SPR >BSPR EISPR LPSPT UPT UPT UPT "&UPT )-UPT 04UPT 7;UPT >BUPT EIUPT LPUPV WPV WPV WPV "&WPV )-WPV 04WPV 7;WPV >BWPV EIWPV LPWPX YPX YPX YPX "&YPX )-YPX 04YPX 7;YPX >BYPX EIYPX LPYPZ [PZ [PZ [PZ "&[PZ )-[PZ 04[PZ 7;[PZ >B[PZ EI[PZ LP[P\ ]P\ ]P\ ]P\ "&]P\ )-]P\ 04]P\ 7;]P\ >B]P\ EI]P\ LP]P^ _P^ _P^ _P^ "&_P^ )-_P^ 04_P^ 7;_P^ >B_P^ EI4"Ir"   zNameError.*a1)r  assertNotRegexr  s      r    >test_name_error_suggestions_do_not_trigger_for_too_many_locals[SuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_too_many_locals`  s,    S	j $$T*F$45r"   c                     S nU R                  U5      nU R                  SU5        S nU R                  U5      nU R                  SU5        g )Nc                      S n [        5       er;   r  r  s    r    rB   QSuggestionFormattingTestBase.test_name_error_with_custom_exceptions.<locals>.func  s    E+r"   r  c                      S n [         er;   r
  r
  s    r    rB   r     s    EOr"   r  r  s      r    &test_name_error_with_custom_exceptionsCSuggestionFormattingTestBase.test_name_error_with_custom_exceptions  sP    	 $$T*&)	 $$T*&)r"   c                      " S S5      nU" 5       nU R                  UR                  5      nU R                  SU5        g )Nc                        \ rS rSrS rS rSrg)ESuggestionFormattingTestBase.test_name_error_with_instance.<locals>.Ai  c                     S U l         g r;   r
  rL   s    r    __init__NSuggestionFormattingTestBase.test_name_error_with_instance.<locals>.A.__init__  	    !
r"   c                     Sn[         ng r  r
  )r7   r9  r  s      r    r<  ISuggestionFormattingTestBase.test_name_error_with_instance.<locals>.A.foo  s    r"   r
  Nr   r   r   r   r  r<  r   r   r"   r    r   r    s    "r"   r   
self.blech)r  r<  rp   r7   r   rA  r  s       r    test_name_error_with_instance:SuggestionFormattingTestBase.test_name_error_with_instance  s7    	 	 3$$X\\2lF+r"   c                      " S S5      nU" 5       nU R                  UR                  5      nU R                  SU5        g )Nc                        \ rS rSrS rS rSrg)NSuggestionFormattingTestBase.test_unbound_local_error_with_instance.<locals>.Ai  c                     S U l         g r;   r
  rL   s    r    r  WSuggestionFormattingTestBase.test_unbound_local_error_with_instance.<locals>.A.__init__  r
  r"   c                     SnWnSng r  r   )r7   r9  r  r  s       r    r<  RSuggestionFormattingTestBase.test_unbound_local_error_with_instance.<locals>.A.foo  s    r"   r
  Nr  r   r"   r    r   r    s    "r"   r   r  )r  r<  r  r  s       r    &test_unbound_local_error_with_instanceCSuggestionFormattingTestBase.test_unbound_local_error_with_instance  s9    	 	 3$$X\\2v.r"   c                 (    " S S5      nU R                  U" 5       R                  5      nU R                  SU5        U R                  SU5        U R                  U" 5       R                  5      nU R                  SU5        U R                  SU5        g )Nc                   &    \ rS rSrS rS rS rSrg)QSuggestionFormattingTestBase.test_unbound_local_error_with_side_effect.<locals>.Ai  c                 H    US:X  a  [        S5      eUS:X  a  [        S5      eg )Nr<  spam)r  r?   )r7   keys     r    rS  ]SuggestionFormattingTestBase.test_unbound_local_error_with_side_effect.<locals>.A.__getattr__  s+    %<(//&=$V,, !r"   c                     [           g r;   r  rL   s    r    barUSuggestionFormattingTestBase.test_unbound_local_error_with_side_effect.<locals>.A.bar  s    r"   c                     [           g r;   )r  rL   s    r    bazUSuggestionFormattingTestBase.test_unbound_local_error_with_side_effect.<locals>.A.baz  s    r"   r   N)r   r   r   r   rS  r#  r&  r   r   r"   r    r   r    s    -r"   r   zself.z'foo'z'spam')r  r#  r  rp   r&  )r7   r   r  s      r    )test_unbound_local_error_with_side_effectFSuggestionFormattingTestBase.test_unbound_local_error_with_side_effect  sv    
	 
	 ((1
*-gz*((1
*-h
+r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  "    Sn [        W5        Sng )Nr|   r  )r  	somethongs     r    rB   RSuggestionFormattingTestBase.test_unbound_local_error_does_not_match.<locals>.func  s    I)Ir"   r  r  r  s      r    'test_unbound_local_error_does_not_matchDSuggestionFormattingTestBase.test_unbound_local_error_does_not_match  s)    	
 $$T*f-r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  ,    [         R                  5       n g r;   )ior   streams    r    rB   MSuggestionFormattingTestBase.test_name_error_for_stdlib_modules.<locals>.func  s    [[]Fr"   zforget to import 'io'r  r  s      r    "test_name_error_for_stdlib_modules?SuggestionFormattingTestBase.test_name_error_for_stdlib_modules   s(    	# $$T*-v6r"   c                 P    S nU R                  U5      nU R                  SU5        g )Nc                  ,    [         R                  5       n g r;   )_ior   r3  s    r    rB   USuggestionFormattingTestBase.test_name_error_for_private_stdlib_modules.<locals>.func  s    \\^Fr"   zforget to import '_io'r  r  s      r    *test_name_error_for_private_stdlib_modulesGSuggestionFormattingTestBase.test_name_error_for_private_stdlib_modules  s(    	$ $$T*.7r"   r   r;   )*r   r   r   r   r  r  r  r  r  r  r  r(  r0  r:  rB  rJ  rT  rd  rj  rt  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r(  r.  r6  r<  r   r   r"   r    r  r    s    
).VU**4	*'"+01+'0'"0.d	Ua*4*0&.P;66%;48W6r*
,/,,.78r"   r  c                       \ rS rSrSrSrg)#PurePythonSuggestionFormattingTestsi  r#  r   Nr$  r   r"   r    r?  r?    s    
r"   r?  c                       \ rS rSrSrSrg) CPythonSuggestionFormattingTestsi  r'  r   Nr$  r   r"   r    rA  rA    s    r"   rA  c                   `    \ rS rSrS rS r\R                  " S5      S 5       r\	S 5       r
Srg)	MiscTesti&  c                 ,   [        5       nS1n[        [        5       HT  nUR                  S5      (       d  X2;   a  M   [	        [        U5      n[	        USS 5      S:X  d  MC  UR                  U5        MV     U R                  [        R                  U5        g )N
print_listr   r   r@   )r3  dirr@   r  r  r.  assertCountEqual__all__)r7   rD  denylistrR  module_objects        r    test_allMiscTest.test_all(  sv    5 >	NDs##t'7#It4M}lD9[HT" # 	i//:r"   c                   ^  U 4S jnU" SSS5        U" SSS5        U" SSS5        U" SS	S5        U" S
SS5        U" SSS5        U" SSS5        U" SSS5        U" SSS5        U" SSS5        U" SSS5        U" SSS5        U" SSS5        U" SS S5        U" S!S"S#5        U" S$S%S&5        U" S$S'S(5        U" S)S*S5        U" S)S+S&5        U" S,S-S5        g ).Nc                 V   > [         R                  " XS5      nTR                  X25        g )Ni  )r@   _levenshtein_distancerl   )r  r  rD  r  r7   s       r    CHECK1MiscTest.test_levenshtein_distance.<locals>.CHECK7  s#    44Q4@FV.r"   r   r   r  re   r   rc   AppleApleBananazB@n@n@r   CherryzCherry!z---0---z------r  ri   rU  bbrb   aaaaaAAAAAr  wxyzwXyZwXyZ123rO  PythonJavarR  zC#AbstractFoobarManagerabstract_foobar_managerro  CPythonPyPyr  pypyr  r  AttributeErropAttributeErrorTestsABAAABr   )r7   rP  s   ` r    test_levenshtein_distance"MiscTest.test_levenshtein_distance3  s    	/ 	b"ab#qc3gvq!h!$h	1%i1%eS!dD!gw"ffa fi#h#fdA%'@%Hi$i$ 0!4 5r:eUAr"   cpuc           	      B   [         R                  5       (       d  U R                  [          S35        [         R                  S5       n[        R
                  " U5      nS S S 5        W H  u  p4n[        R                  " X4S5      nU R                  XeX44S9  XUS-   US-   4 H,  n[        R                  " X4U5      nU R                  XX4U4S9  M.     [        U5       H,  n[        R                  " X4U5      n	U R                  XX4U4S9  M.     M     g ! , (       d  f       N= f)Nz. is missing. Run `make regen-test-levenshtein`rr  )r  rc   re   )LEVENSHTEIN_DATA_FILEis_filerz  r   jsonloadr@   rO  rl   r|  r  )
r7   r   examplesr  r  rD  res1	thresholdres2res3s
             r    'test_levenshtein_distance_short_circuit0MiscTest.test_levenshtein_distance_short_circuitP  s   $,,..II() *5 6
 #'',yy|H -&NA(221>DT!8&1hlC	 66qYG  aI5F G D
 #8_	 !66qYG""4y8I"J	 - ' -,s   D
Dc                 D   SS K nU R                  UR                  SS/S5      S5        U R                  UR                  S/S5      S 5         " S S[        5      nU R	                  [
        5         UR                  U" 5       S	5        S S S 5        g ! , (       d  f       g = f)
Nr   r  worldhell
hovercrafteelsc                       \ rS rSrSrg)3MiscTest.test_suggestions_extension.<locals>.MyListi~  r   Nr  r   r"   r    MyListr}  ~  r  r"   r~  r   )_suggestionsrl   _generate_suggestionsrX  assertRaisesr   )r7   r  r~  s      r    test_suggestions_extension#MiscTest.test_suggestions_extensioni  s     	..'" 	
 	.. 	
	T 	 y)..vx< *))s   0B
Br   N)r   r   r   r   rK  rg  r   requires_resourceru  r   r  r   r   r"   r    rC  rC  &  sA    	;: u%K &K0 = =r"   rC  c                   ,    \ rS rSrS rS rS rS rSrg)TestColorizedTracebacki  c                   ^^	^
 S m
U
4S jm	U	4S jmU4S jn U" 5         SR	                  WR                  SS95      n[        R                  R                  n[        R                  R                  n[        R                  R                  nU R                  S	U-   S
-   U-   U-   S-   U-   U5        U R                  SU-   S-   U-   U-   S-   U-   U5        U R                  SU-   S-   U-   U-   S-   U-   S-   U5        U R                  SU5        U R                  SU5        U R                  US-   U-   U-   S-   U-   U5        g ! [          a)  n[        R                  R                  USS9n S nAGNOS nAff = f)Nc                  &    SSS 00nUS   S   S   ng )Nr  r  r  r   )r  r  ri   s      r    r<  <TestColorizedTraceback.test_colorized_traceback.<locals>.foo  s"    c4[!A#sC Ar"   c                  "   > U4S j" SSSS5      $ )Nc                     > T" U 6 $ r;   r   r  r<  s    r    r!   OTestColorizedTraceback.test_colorized_traceback.<locals>.baz2.<locals>.<lambda>  s	    #t*r"   rc   re   r|   rb   r   r  s    r    baz2=TestColorizedTraceback.test_colorized_traceback.<locals>.baz2  s    ,a!A66r"   c                     > T" SSSS5      $ r  r   )r  r  s    r    baz1=TestColorizedTraceback.test_colorized_traceback.<locals>.baz1  s    !Aa= r"   c                     > T " SSSS5      $ r  r   )r  s   r    r#  <TestColorizedTraceback.test_colorized_traceback.<locals>.bar  s    a r"   Tr  r   rs  zy = zx['a']['b']z['c']zreturn z(lambda *args: foo(*args))z	(1,2,3,4)zreturn (lambda *args: r<  z(*args)z
)(1,2,3,4)zreturn baz2(1,2,3,4)z.return baz1(1,
            2,3
            ,4)r#  ())r   r@   r  r  r   r$  r3   
ANSIColorsREDBOLD_REDRESETrp   )r7   r#  r   rC   r   redboldrresetr  r  r<  s           @@@r    test_colorized_traceback/TestColorizedTraceback.test_colorized_traceback  su   	!	7	!		E
 

D
12""&&$$--$$**fsl]2U:UBWLuTV[\i#o(DDuLuTWbbejjlqr.4u<uDuLyX[``cooqvw,e4H%PcEkE)E1D85@%H  	..==$ > C	s   E 
E5E00E5c                 f    [        SSS5        SR                  WR                  SS95      n[        R                  R                  n[        R                  R                  n[        R                  R                  n[        R                  R                  n[        R                  R                  nSR                  SU S	U S
U SU S3	SU SU S3SU SU S3U SU SU SU S3/5      n	U R                  X5        g ! [         a)  n[        R                  R	                  USS9n S nAGNS nAff = f)Nza $ bz<string>rI   Tr  r   rs    File z
"<string>", line r  rg   z    a $z b
z      rd   rk   r   zinvalid syntax)rK   rk   r@   r  r  r   r$  r3   r  r  MAGENTABOLD_MAGENTAr  r  rp   )
r7   r   rC   r  r  magentaboldmr  r  rD  s
             r    test_colorized_syntax_error2TestColorizedTraceback.test_colorized_syntax_error  s5   	GZ0
 T23""&&&&..$$11$$--$$**77
'*UG77)1UG2F
qt$
qr"'UG2gYnUG2F	H 
 	h'!  	..==$ > C	s   C= =
D0D++D0c                    S nSSK Jn   U" 5         U R                  S5        [        R                  R                  n[        R                  R                  n[        R                  R                  n[        R                  R                  n	[        R                  R                   n
UR"                  R$                  nS	S
U S[&         SU
 SU US-    U
 SU SU
 3SU SX-    SU
 3SU SX-    SU
 3S
U S[&         SU
 SU US-    U
 SU SU
 3SU SX-    SX-    SU
 3SU SX-    SX-    SU
 3U	 SU
 SU SU
 3/nU R)                  WU5        g ! [         a  n[	        S5       n[
        R                  R                  SSS9   U" U5        S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= fWR                  5       R                  5       n S nAGNS nAff = f)Nc                      SS-    g r   r   r   r"   r    r<  KTestColorizedTraceback.test_colorized_traceback_is_the_default.<locals>.foo  r  r"   r   r  ry  r   z_colorize.can_colorizeT)return_valuer  r  "r  r  , in 'test_colorized_traceback_is_the_defaultr*  r<  r  ~~~^^rc   r  /0~rd   r   r   division by zero)r  r  rz  r   r   r  r  r  rO  r   r3   r  r  r  r  r  r  r  r  r  rl   )r7   r<  r  r   r  r  r  r  r  r  r  lno_foorD  s                r    r  >TestColorizedTraceback.test_colorized_traceback_is_the_default  s   	 	.	6EII,- ""&&$$--&&..$$11$$**,,--8gYaz5' 29WQYKweG9<cdicjl3%s5;-r%13%s5;-r%1gYaz5' 29WQYKweG9CwH3%qQuyk5':3%qQuyk5':g&ugRy8HP	R 	*-  	6 *h]](()APT(U#A& VUU +** &&(335F		6sG   E 
G-G((F3	F	F3
F'#F3*	G(3
G	=%G((G-c                    S n U" 5         [        R
                  R                  n[        R
                  R                  n[        R
                  R                  n[        R
                  R                  n[        R
                  R                  nUR                  R                  n	SR                  WR                  SS95      R                  5       n
SSU S[          SU S	U U	S
-    U SU SU 3SU SU U SU 3SU SU U SU 3SSU 3S["         S3SU S[          SU S	U U	S-    U SU SU 3SSSU SU SU SU 3SSSU S[          SU S	U U	S -    U SU SU 3S!U S"U U S#U U S$U 3
S!U S%U U S&U U S%U 3
S'S(U S)U SU S*U 3S+/nU R%                  X5        g ! [          a)  n[        R                  R                  USS9n S nAGNS nAff = f),Nc                  z    / n  SS-    [        SU 5      e! [          a  nU R                  U5         S nAN,S nAff = f)Nrc   r   test)r   r+  r   )
exceptions	inner_excs     r    r<  QTestColorizedTraceback.test_colorized_traceback_from_exception_group.<locals>.foo  sE    J-A !44 % -!!),,-s    
:5:Tr  r   rs  rw  z  |   File r  r  r  r  -test_colorized_traceback_from_exception_groupz  |     r<  r  r  r  zK  |     e = ExceptionGroup('test', [ZeroDivisionError('division by zero')])z  |     foo = z  |     self = <zQ.TestColorizedTraceback testMethod=test_colorized_traceback_from_exception_group>r   z0  |     raise ExceptionGroup("test", exceptions)z<  |     exceptions = [ZeroDivisionError('division by zero')]z  | r   r   ztest (1 sub-exception)rx  r  z    |   File r|   z
    |     z1 r  z 0z~~rd   z>    |     exceptions = [ZeroDivisionError('division by zero')]z    | r   r  r  )r   r@   r  r  r3   r  r  r  r  r  r  r  r  r   r$  r   r  r   rl   )r7   r<  r   rC   r  r  r  r  r  r  r  rD  s               r    r  DTestColorizedTraceback.test_colorized_traceback_from_exception_group  s   	5	E ""&&$$--&&..$$11$$**,,--T23>>@L 	8*AeWGG9WUVYKX]W^^cdkcl  mZ  [`  Za  bcU#eWUG2eW=cU#eWUG2eW=`#C5)%hZ  0A  B 	8*AeWGG9WUVYKX]W^^cdkcllopuovwEQ%ugRy@VW\V]^=="7)1XJawggYwWXykZ_Y``efmennqrwqxyuBugeWAeWSEE7KuBugeWAeWSEE7KSE7"3E7"WIEUV[U\]>%A& 	*?  	..==$ > C	s   F' '
G1GGr   N)	r   r   r   r   r  r  r  r  r   r   r"   r    r  r    s    I@(*+@*+r"   r  )\r   collectionsr   r2  r   r7  r9  r  ro  r   r  unittest.mockry  rW  r]  rG  r  r   rY  test.supportr   r   r   r	   r
   r   r   test.support.os_helperr   r   test.support.script_helperr   r   test.support.import_helperr   r   r   rn  r   r@   	functoolsr   pathlibr   r3   r   rh  rr  co_positionsrs  rB  r  parentrl  TestCaser-   rw  r  r  r  r"  r&  r*  r,  r  r  rK   escaper  r  r  r  r  r  r  r  r3  rU  r  r   r  r   r  r  rZ  global_for_suggestionsr  r?  rA  rC  r  mainr   r"   r    <module>r     s   % "   
      	     / / / 2 N - L      "*j"88*Abvy9:	7	 !DE

TK
L X--0KK TIX&& TIn	> 	>> >)E  h1 h1 h1V# &'     '     &'    C* C*N& 
&  ZZ=)299_+EFH
  	(++-A 	  	 "("3"35I "   "]+ ]+@  5x7H7H      4h6G6G   u,"" u,p&,** &,R&$!! &$RkM!! kMZ+ +i 
> 
iJX.. iJXZMX->-> ZMz  `	8 `	8H&     \=x   \=B@+X.. @+D zMMO r"   