Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_traceback.cpython-311.pyc
�

�Ke����2�dZddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZmZmZmZmZmZddlmZmZddlmZmZddlZddlZddlZdd	lmZe d
kre �d�ndZ!ed
ddg��Z"d�e"_#edgd���Z$edgd���Z%Gd�de	j&��Z'e��Gd�de	j&����Z(ee��Gd�de(������Z)Gd�de	j&��Z*dZ+dZ,e
j-de
j.e+���d e
j.e,���d!���Z/Gd"�d#��Z0Gd$�d%e0e	j&��Z1Gd&�d'e0e	j&��Z2Gd(�d)e	j&��Z3Gd*�d+e	j&��Z4Gd,�d-e	j&��Z5Gd.�d/e	j&��Z6Gd0�d1e	j&��Z7Gd2�d3e	j&��Z8Gd4�d5e	j&��Z9e d
kre	j:��dSdS)6zTest 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)�partial�__main__�.��code�co_filename�co_namec�"�tdg��S)N)�rrr)�iter)�_s �=/usr/local/apps/python3/lib/python3.11/test/test_traceback.py�<lambda>rs��4���#7�#7���frame)�f_code�	f_globals�f_locals�tb)�tb_frame�	tb_lineno�tb_next�tb_lastic��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Ze��d���Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TracebackCasesc��	|��td���#|$r}tj||��cYd}~Sd}~wwxYw)Nzcall did not raise exception)�
ValueError�	traceback�format_exception_only)�self�func�exc�values    r�get_exception_formatz#TracebackCases.get_exception_format#sf��	=��D�F�F�F��;�<�<�<���	?�	?�	?��2�3��>�>�>�>�>�>�>�>�����	?���s�
�?�:�?�?c�(�tddd��dS)Nzdef fact(x):
	return x!
�?�exec��compile�r.s r�syntax_error_with_caretz&TracebackCases.syntax_error_with_caret+s���-�s�F�;�;�;�;�;rc�(�tddd��dS)Nz1 +
r4r5r6r8s r�syntax_error_with_caret_2z(TracebackCases.syntax_error_with_caret_2.s�����f�%�%�%�%�%rc�(�tddd��dS)Nzf(x, y for y in range(30), z)r4r5r6r8s r�syntax_error_with_caret_rangez,TracebackCases.syntax_error_with_caret_range1s���/��f�=�=�=�=�=rc�(�tddd��dS)Nz def spam():
  print(1)
 print(2)r4r5r6r8s r�syntax_error_bad_indentationz+TracebackCases.syntax_error_bad_indentation4s���4�c�6�B�B�B�B�Brc�(�tddd��dS)NuPython = "Ṕýţĥòñ" +r4r5r6r8s r�!syntax_error_with_caret_non_asciiz0TracebackCases.syntax_error_with_caret_non_ascii7s���=�s�F�K�K�K�K�Krc�(�tddd��dS)Nz	 print(2)r4r5r6r8s r�syntax_error_bad_indentation2z,TracebackCases.syntax_error_bad_indentation2:s����S�&�)�)�)�)�)rc�(�tddd��dS)Nz
blech  (  r4r5r6r8s r� tokenizer_error_with_caret_rangez/TracebackCases.tokenizer_error_with_caret_range=s����c�6�*�*�*�*�*rc�J	�|�|jt��}|�t	|��d��|�|d���dk��|�d|d��|�|d�d��|d�d����|�|d�	d��d��|�|j
t��}|�d|d��|�|d�	d��d��|�|d�d��dz|d�d����|�|d�	d��d��|�|jt��}|�d|d��|�|d�	d��d��|�|d�d��dz|d�d����|�|d�	d��d��|�|jt��}|�d|d��|�|d�	d��d��|�|d�d	��|d�d����|�|d�	d��t	d
����|�|j
t��}|�d|d��|�|d�	d��d��|�|d�d��|d�d����|�|d�	d��d��dS)N��z	return x!�^��!�
�+�yzy for y in range(30)�()r2r9�SyntaxError�assertEqual�len�
assertTrue�strip�assertIn�find�countr;rAr=rE�r.�errs  r�
test_caretzTracebackCases.test_caret@s����'�'��(D�(3�5�5������S���1�%�%�%�����A������+�5�6�6�6��
�
�c�3�q�6�"�"�"�����Q����S�)�)�3�q�6�;�;�s�+;�+;�<�<�<�����Q����c�*�*�A�.�.�.��'�'��(F�(3�5�5���
�
�c�3�q�6�"�"�"�����Q����d�+�+�Q�/�/�/�����Q����S�)�)�A�-�s�1�v�{�{�3�/?�/?�@�@�@�����Q����c�*�*�A�.�.�.��'�'��(N�(3�5�5���
�
�c�3�q�6�"�"�"�����Q����d�+�+�Q�/�/�/�����Q����S�)�)�A�-�s�1�v�{�{�3�/?�/?�@�@�@�����Q����c�*�*�A�.�.�.��'�'��(J�(3�5�5���
�
�c�3�q�6�"�"�"�����Q����d�+�+�Q�/�/�/�����Q����S�)�)�3�q�6�;�;�s�+;�+;�<�<�<�����Q����c�*�*�C�0F�,G�,G�H�H�H��'�'��(M�(3�5�5���
�
�c�3�q�6�"�"�"�����Q����d�+�+�Q�/�/�/�����Q����S�)�)�3�q�6�;�;�s�+;�+;�<�<�<�����Q����c�*�*�A�.�.�.�.�.rc��tdd��}tjt|��}|�t	|��d��|�|d���d��dS)N�error)zx.py�N�
bad syntax�rHr^)rPr,r-rQrRrT)r.r0rYs   r�test_nocaretzTracebackCases.test_nocaretesh���'�#C�D�D���-�k�3�?�?������S���1�%�%�%�����Q�������6�6�6�6�6rc�h�	ttd��5}|�d��ddd��n#1swxYwYtddt��\}}}|���}|�t
|��d��|�|dd��|�d|d	��|�|d
d��|�|dd
��tt��dS#tt��wxYw)N�wz
x = 1 / 0
�-X�no_debug_rangesrGr�"Traceback (most recent call last):sline 1, in <module>rHrJ�
    x = 1 / 0r_�#ZeroDivisionError: division by zero)	�openr
�writer�
splitlinesrQrRrUr)r.�fr�stderr�liness     r�'test_no_caret_with_no_debug_ranges_flagz6TracebackCases.test_no_caret_with_no_debug_ranges_flagksR��	��f�c�"�"�
'�a����
�&�&�&�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'�1��'��1�1�L�A�q�&��%�%�'�'�E����S��Z�Z��+�+�+����U�1�X�'L�M�M�M��M�M�0�%��(�;�;�;����U�1�X�'7�8�8�8����U�1�X�'M�N�N�N��6�N�N�N�N�N��F�6�N�N�N�N���s)�D�9�D�=�D�=�CD�D1c��tjd��}	ttd��5}|�|��ddd��n#1swxYwYtddt��\}}}|���}|�t|��d��|�|dd��|�	d|d	��|�|d
d��|�|dd
��tt��dS#tt��wxYw)Nz�
            import traceback
            try:
                x = 1 / 0
            except:
                traceback.print_exc()
            rbrcrdrGrresline 4, in <module>rHrJrfr_rg)�textwrap�dedentrhr
rirrjrQrRrUr)r.rrkrrlrms      r�8test_no_caret_with_no_debug_ranges_flag_python_tracebackzGTracebackCases.test_no_caret_with_no_debug_ranges_flag_python_traceback~se���� ����	��f�c�"�"�
�a�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�,��'��1�1�L�A�q�&��%�%�'�'�E����S��Z�Z��+�+�+����U�1�X�'L�M�M�M��M�M�0�%��(�;�;�;����U�1�X�'7�8�8�8����U�1�X�'M�N�N�N��6�N�N�N�N�N��F�6�N�N�N�N���s/�D/�A
�D/�
A�D/�A�CD/�/Ec�j�tjd��}	ttd��5}|�|��ddd��n#1swxYwYtt��\}}}|�|d��tt��dS#tt��wxYw)Na>
                import sys
                from weakref import ref

                sys.setrecursionlimit(15)

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

                try:
                    f()
                except RecursionError:
                    pass
        rbr)rprqrhr
rirrQr)r.rrk�rcrs     r�%test_recursion_error_during_tracebackz4TracebackCases.test_recursion_error_during_traceback�s����� �
�
��	��f�c�"�"�
�a�����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�(��/�/�H�B��1����R��#�#�#��6�N�N�N�N�N��F�6�N�N�N�N���s.�B�A
�B�
A�B�A�1B�B2c��|�|jt��}|�t	|��d��|�|d���d��|�d|d��|�|d�d��dz|d�d����|�|jt��}|�t	|��d��|�|d���d��dS)NrGrHzprint(2)rIrJ�)r_)	r2r?�IndentationErrorrQrRrTrUrVrCrXs  r�test_bad_indentationz#TracebackCases.test_bad_indentation�s���'�'��(I�(8�:�:������S���1�%�%�%�����Q�������4�4�4��
�
�c�3�q�6�"�"�"�����Q����S�)�)�A�-�s�1�v�{�{�3�/?�/?�@�@�@��'�'��(J�(8�:�:������S���1�%�%�%�����Q�������4�4�4�4�4rc��t��}tj|j|��}|�|dg��dS)NzKeyboardInterrupt
)�KeyboardInterruptr,r-�	__class__rQ)r.�e�lsts   r�test_base_exceptionz"TracebackCases.test_base_exception�sA�������-�a�k�1�=�=������4�5�6�6�6�6�6rc�X�Gd�dt��}tj||����}|�t	|��d��d}|jdvr|j}n!d�|j|jg��}|�|d|�d|�d	���dS)
Nc��eZdZd�ZdS)�?TracebackCases.test_format_exception_only_bad__str__.<locals>.Xc��ddzdS�NrHr�r8s r�__str__zGTracebackCases.test_format_exception_only_bad__str__.<locals>.X.__str__�����!����rN��__name__�
__module__�__qualname__r�r�rr�Xr���#������
�
�
�
�
rr�rH�<exception str() failed>)r�builtinsrr�: rL)�	Exceptionr,r-rQrRr�r��join�r.r�rY�	str_value�str_names     r�%test_format_exception_only_bad__str__z4TracebackCases.test_format_exception_only_bad__str__�s���	�	�	�	�	�	�	�	�	��-�a�����5�5������S���1�%�%�%�.�	��<�3�3�3��~�H�H��x�x���q�~� >�?�?�H�����Q��x�x�x����!C�D�D�D�D�Drc�0����	�ddl�	ddl����	jddg�j�j���}|���\}}t|d�����d�����	fd�}|dddd	��d
D]y}|dkrd}n|dkrd}nd
}|d�	|��||d��|d�	|��||d��|d�	|��||d���z|dd
dd��dS)Nr�-cz&import sys; print(sys.stdout.encoding)��stdoutrl�asciic�
��	ttd|���5}|�d�||����ddd��n#1swxYwY���jtg�j�j���}|���\}}|�	�
���
��}tt��n#tt��wxYw|��
d��}|�	�
��}	d�|	��}
d�|	��}��
d|z|d	d
�|d	|������|d�|
��d�|d|
����|d
}��||kd�||����dS)Nrb)�encodingz}{0}if 1:
                        import traceback;
                        raise RuntimeError('{1}')
                        r��backslashreplacezraise RuntimeError('{0}')zRuntimeError: {0}zline %srHz)Invalid line number: {0!r} instead of {1}rJz.Invalid traceback line: {0!r} instead of {1!r}r_z-Invalid error message: {0!r} instead of {1!r})rhr
ri�format�Popen�
executable�PIPE�STDOUT�communicate�decoderjr�encoderUrS�endswith)�
firstlines�message�charset�lineno�output�processr�rl�encoded_message�
message_ascii�err_line�err_msg�actual_err_msg�output_encodingr.�
subprocess�syss             ����r�do_testz1TracebackCases.test_encoded_file.<locals>.do_test�sC���
��&�#��8�8�8�9�F��L�L�"�#�F�:�w�7�7�9�9�9�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9�%�*�*�C�N�F�+C�%�?�:�3D�+�F�F��!(�!4�!4�!6�!6��������7�7�B�B�D�D���v�������v��������&�n�n�_�-?�A�A�O�,�2�2�?�C�C�M�2�9�9�-�H�H�H�)�0�0��?�?�G��M�M�9�v�-��q�	�;�B�B��1�I�v�'�'�
(�
(�
(�
�O�O�F�1�I�.�.�x�8�8�@�G�G��1�I�x�)�)�
*�
*�
*�$�A�Y�N��O�O�N�g�5�?�F�F�"�G�-�-�
.�
.�
.�
.�
.s/�C�*A�C�A�C�A�A/C�C2r�foor_)r�z
iso-8859-1�utf-8�GBKr�u丂儀uhé hoz# coding: {0}
rGz#!shebang
# coding: {0}
�z 	
# coding: {0}
zx=0
# coding: GBK
r�)
r�r�r�r�r�r�r��strrjr�)
r.r�r�rlr�r��textr�r�r�s
`      @@@r�test_encoded_filez TracebackCases.test_encoded_file�s�������
	��������
�"�"�C�N�D�$L�$N�*4�/�*4�*;�#�=�=��!�,�,�.�.�����f�g�.�.�9�9�;�;�A�>��"	.�"	.�"	.�"	.�"	.�"	.�"	.�"	.�H	���E�7�A�&�&�&�>�	&�	&�G��'�!�!�����E�!�!�%���!���G�%�,�,�W�5�5��'�1�
&�
&�
&��G�0�7�7��@�@��'�1�
&�
&�
&��G�,�3�3�G�<�<��'�1�
&�
&�
&�
&�	��&�
�G�Q�?�?�?�?�?rc��tjd��}td|��\}}}gd�}|�|���|��dS)Na%
            import sys
            import traceback

            class PrintExceptionAtExit(object):
                def __init__(self):
                    try:
                        x = 1 / 0
                    except Exception:
                        self.exc_info = sys.exc_info()
                        # self.exc_info[1] (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_info)

            # Keep a reference in the module namespace to call the destructor
            # when the module is unloaded
            obj = PrintExceptionAtExit()
        r�)res&  File "<string>", line 8, in __init__rg)rprqrrQrj)r.rrtr�rl�expecteds      r�test_print_traceback_at_exitz+TracebackCases.test_print_traceback_at_exitsm���� �
�
��,.�d�D�9�9���F�F�<�<�<��	
����*�*�,�,�h�7�7�7�7�7rc���t��}tjttd��d|���|�|���d��dS�N�	projector��file�Exception: projector
�rr,�print_exceptionr�rQ�getvalue�r.r�s  r�test_print_exceptionz#TracebackCases.test_print_exception5s_�������!��y��-�-�t�&�	
�	
�	
�	
�	
������*�*�,D�E�E�E�E�Erc��t��}tjtd��|���|�|���d��dSr�r�r�s  r�test_print_exception_excz'TracebackCases.test_print_exception_exc<sP�������!�)�K�"8�"8�v�F�F�F�F�������*�*�,D�E�E�E�E�Erc�L�td��}tj|��}|�|dg��|�t
d��5tj|j|��ddd��n#1swxYwY|�t
d��5tj|j|j���ddd��n#1swxYwY|�td��5tj|���ddd��dS#1swxYwYdS)Nr�r�zBoth or neither�r#zpositional-only)r0)	r�r,�format_exceptionrQ�assertRaisesRegexr+r|�
__traceback__�	TypeError)r.r}r�s   r�test_format_exception_excz(TracebackCases.test_format_exception_excAs����k�"�"���+�A�.�.������":�!;�<�<�<�
�
#�
#�J�0A�
B�
B�	7�	7��&�q�{�A�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�
�
#�
#�J�0A�
B�
B�	H�	H��&�q�{�q��G�G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�
�
#�
#�I�/@�
A�
A�	.�	.��&�1�-�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s6�A=�=B�B�#!C�C�C�6D�D� Dc�v�tjtd����}|�|dg��dS)Nr�r�)r,r-r�rQr�s  r�test_format_exception_only_excz-TracebackCases.test_format_exception_only_excLs:���0��;�1G�1G�H�H������":�!;�<�<�<�<�<rc�t�d}t��}tjd|���|�|���|��t��}tjddd|���|�|���|��t��}tjd|���|�|���|��|�tjd��|��|�tjd��|g��|�tjddd��|g��|�tjd��|g��|�tjdd��|g��dS)NzNoneType: None
r�)	rr,r�rQr��	print_exc�
format_excr�r-)r.�NONE_EXC_STRING�excfiles   r�test_exception_is_Nonez%TracebackCases.test_exception_is_NonePs���,���*�*���!�$�W�5�5�5�5�����)�)�+�+�_�=�=�=��*�*���!�$��d��A�A�A�A�����)�)�+�+�_�=�=�=��*�*����D�w�/�/�/�/�����)�)�+�+�_�=�=�=�����-�d�3�3�_�E�E�E�����3�D�9�9�O�;L�M�M�M�����&�t�T�4�8�8�?�:K�	M�	M�	M�����+�D�1�1�O�3D�	F�	F�	F�����+�D�$�7�7�/�9J�	L�	L�	L�	L�	Lrc��|�ttjtj����d��|�ttjtj����d��|�ttjtj����d��dS)NzL(exc, /, value=<implicit>, tb=<implicit>, limit=None, file=None, chain=True)zA(exc, /, value=<implicit>, tb=<implicit>, limit=None, chain=True)z(exc, /, value=<implicit>))rQr��inspect�	signaturer,r�r�r-r8s r�test_signatureszTracebackCases.test_signaturesgs��������!�)�";�<�<�=�=�2�	4�	4�	4�
	
�����!�)�"<�=�=�>�>��	�	�	�
	
�����!�)�"A�B�B�C�C�(�	*�	*�	*�	*�	*rN)r�r�r�r2r9r;r=r?rArCrErZr`rnrrruryrr�rr�r�r�r�r�r�r�r�r�rrr)r)s�������=�=�=�<�<�<�&�&�&�>�>�>�C�C�C�L�L�L�*�*�*�+�+�+�#/�#/�#/�J7�7�7����&���0���25�5�5�7�7�7�E�E�E�����C@�C@���C@�J8�8�8�>F�F�F�F�F�F�
	.�	.�	.�=�=�=�L�L�L�.
*�
*�
*�
*�
*rr)c���eZdZdZd�ZejjdzZd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)� TracebackErrorLocationCaretTestszF
    Tests for printing code error expressions as part of PEP 657
    c��	|��|�d��dS#tj�����dd�cYSxYw)N�No exception thrown.���)�failr,r�rj)r.�callables  r�
get_exceptionz.TracebackErrorLocationCaretTests.get_exception|s^��	<��H�J�J�J��I�I�,�-�-�-�-�-��	<��'�)�)�4�4�6�6�s��s�;�;�;�;���s	�#�/ArJc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc� �td���)NTzbasic caret tests�r+r�rrrkz<TracebackErrorLocationCaretTests.test_basic_caret.<locals>.f�s��%�&9�:�:�:r�+Traceback (most recent call last):
  File "�", line �*, in get_exception
    callable()
  File "rHzm, in f
    if True: raise ValueError("basic caret tests")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
��__code__�co_firstlineno�__file__�
callable_liner�rQrj)r.rk�lineno_f�
expected_f�result_liness     r�test_basic_caretz1TracebackErrorLocationCaretTests.test_basic_caret�s���	;�	;�	;��:�,��
C��
C�
C�)-�);�
C�
C� �
C�
C�*2�!��
C�
C�
C�	��)�)�!�,�,������z�'<�'<�'>�'>�?�?�?�?�?rc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc� �td���)NTuĤellö Wörldr�r�rr�f_with_unicodezOTracebackErrorLocationCaretTests.test_line_with_unicode.<locals>.f_with_unicode�s��%�&6�7�7�7rr�r�r�rHuq, in f_with_unicode
    if True: raise ValueError("Ĥellö Wörld")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r�)r.r�r�r�r�s     r�test_line_with_unicodez7TracebackErrorLocationCaretTests.test_line_with_unicode�s���	8�	8�	8�"�*�9��
=��
=�
=�)-�);�
=�
=� �
=�
=�*2�!��
=�
=�
=�	��)�)�.�9�9������z�'<�'<�'>�'>�?�?�?�?�?rc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc�*�dtdtfd�}dS)N�a�returnc��dS)Nrr�)r�s rr�z`TracebackErrorLocationCaretTests.test_caret_in_type_annotation.<locals>.f_with_type.<locals>.foo�s���qr)�THIS_DOES_NOT_EXIST�int)r�s r�f_with_typezSTracebackErrorLocationCaretTests.test_caret_in_type_annotation.<locals>.f_with_type�s/��
�*�
��
�
�
�
�
�
rr�r�r�rHza, in f_with_type
    def foo(a: THIS_DOES_NOT_EXIST ) -> int:
               ^^^^^^^^^^^^^^^^^^^
r�)r.rr�r�r�s     r�test_caret_in_type_annotationz>TracebackErrorLocationCaretTests.test_caret_in_type_annotation�s���	�	�	��'�6��
3��
3�
3�)-�);�
3�
3� �
3�
3�*2�!��
3�
3�
3�	��)�)�+�6�6������z�'<�'<�'>�'>�?�?�?�?�?rc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc� �td���)NTzerror over multiple linesr�r�rr�f_with_multilinezZTracebackErrorLocationCaretTests.test_caret_multiline_expression.<locals>.f_with_multiline�s��%�+���rr�r�r�rHzS, in f_with_multiline
    if True: raise ValueError(
             ^^^^^^^^^^^^^^^^^r��r.rr�r�r�s     r�test_caret_multiline_expressionz@TracebackErrorLocationCaretTests.test_caret_multiline_expression�s���	�	�	�
$�,�;��
-��
-�
-�)-�);�
-�
-� �
-�
-�*2�!��
-�
-�
-�	��)�)�*:�;�;������z�'<�'<�'>�'>�?�?�?�?�?rc	���tjd����fd�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nz�
        def foo(*args, **kwargs):
            pass

        a, b, c = 1, 2, 3

        foo(a, z
                for z in
                    range(10), b, c)
        c�&��t�dd��S)Nr4r5r6)rs�rrzgTracebackErrorLocationCaretTests.test_caret_multiline_expression_syntax_error.<locals>.f_with_multiline�s����4��f�-�-�-rr�r�r�rJz�, in f_with_multiline
    return compile(code, "?", "exec")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "?", line 7
    foo(a, z
           ^)	rprqr�r�r�r�r�rQrj)r.rr�r�r�rs     @r�,test_caret_multiline_expression_syntax_errorzMTracebackErrorLocationCaretTests.test_caret_multiline_expression_syntax_error�s������	 �	
�	
��	.�	.�	.�	.�	.�$�,�;��
��
�
�)-�);�
�
� �
�
�*2�!��
�
�
�	��)�)�*:�;�;������z�'<�'<�'>�'>�?�?�?�?�?rc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc��dddzzS�NrJrHrr�r�rrrzaTracebackErrorLocationCaretTests.test_caret_multiline_expression_bin_op.<locals>.f_with_multiline�s���A����
rr�r�r�rJz-, in f_with_multiline
    2 + 1 /
        ^^^r�rs     r�&test_caret_multiline_expression_bin_opzGTracebackErrorLocationCaretTests.test_caret_multiline_expression_bin_op�s���	�	�	�$�,�;��
��
�
�)-�);�
�
� �
�
�*2�!��
�
�
�	��)�)�*:�;�;������z�'<�'<�'>�'>�?�?�?�?�?rc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc��d}d|dzzdzS�N��
r�r���divisors r�f_with_binary_operatorz`TracebackErrorLocationCaretTests.test_caret_for_binary_operators.<locals>.f_with_binary_operators���G���!��#�b�(�(rr�r�r�rJzY, in f_with_binary_operator
    return 10 + divisor / 0 + 30
                ~~~~~~~~^~~
r��r.rr��expected_errorr�s     r�test_caret_for_binary_operatorsz@TracebackErrorLocationCaretTests.test_caret_for_binary_operatorss���	)�	)�	)�*�2�A��
,��
,�
,�)-�);�
,�
,� �
,�
,�*2�!��
,�
,�
,�	��)�)�*@�A�A������~�'@�'@�'B�'B�C�C�C�C�Crc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc��d}d|dzzdzSrr�)�áóís rrzmTracebackErrorLocationCaretTests.test_caret_for_binary_operators_with_unicode.<locals>.f_with_binary_operators���F����
�?�R�'�'rr�r�r�rJuT, in f_with_binary_operator
    return 10 + áóí / 0 + 30
                ~~~~^~~
r�rs     r�,test_caret_for_binary_operators_with_unicodezMTracebackErrorLocationCaretTests.test_caret_for_binary_operators_with_unicodes���	(�	(�	(�*�2�A��
(��
(�
(�)-�);�
(�
(� �
(�
(�*2�!��
(�
(�
(�	��)�)�*@�A�A������~�'@�'@�'B�'B�C�C�C�C�Crc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc��d}d|dzzdzSrr�rs rrziTracebackErrorLocationCaretTests.test_caret_for_binary_operators_two_char.<locals>.f_with_binary_operator)s���G���1��$�r�)�)rr�r�r�rJz[, in f_with_binary_operator
    return 10 + divisor // 0 + 30
                ~~~~~~~~^^~~
r�rs     r�(test_caret_for_binary_operators_two_charzITracebackErrorLocationCaretTests.test_caret_for_binary_operators_two_char(s���	*�	*�	*�*�2�A��
-��
-�
-�)-�);�
-�
-� �
-�
-�*2�!��
-�
-�
-�	��)�)�*@�A�A������~�'@�'@�'B�'B�C�C�C�C�Crc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc�6�dddii}|dddS�N�xrN�zr���	some_dicts r�f_with_subscriptzSTracebackErrorLocationCaretTests.test_caret_for_subscript.<locals>.f_with_subscript:s$���s�D�k�*�I��S�>�#�&�s�+�+rr�r�r�rJz^, in f_with_subscript
    return some_dict['x']['y']['z']
           ~~~~~~~~~~~~~~~~~~~^^^^^
r��r.r+r�rr�s     r�test_caret_for_subscriptz9TracebackErrorLocationCaretTests.test_caret_for_subscript9s���	,�	,�	,�$�,�;��
4��
4�
4�)-�);�
4�
4� �
4�
4�*2�!��
4�
4�
4�	��)�)�*:�;�;������~�'@�'@�'B�'B�C�C�C�C�Crc	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc�J�dddddiiii}|ddddS)N�ó�á�í�thetarH�betar�r)s rr+z[TracebackErrorLocationCaretTests.test_caret_for_subscript_unicode.<locals>.f_with_subscriptKs3����t�g�q�\�&:�;�<�I��T�?�4�(��.�v�6�6rr�r�r�rJuq, in f_with_subscript
    return some_dict['ó']['á']['í']['beta']
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
r�r,s     r� test_caret_for_subscript_unicodezATracebackErrorLocationCaretTests.test_caret_for_subscript_unicodeJs���	7�	7�	7�$�,�;��
<��
<�
<�)-�);�
<�
<� �
<�
<�*2�!��
<�
<�
<�	��)�)�*:�;�;������~�'@�'@�'B�'B�C�C�C�C�Crc	���tdtd��}ttd��5}|�d��ddd��n#1swxYwY|�t
t��t
t|��}|�|��}|j	}dt�d|j�dt�d|�d�	}|�||�
����dS)	Nz1 / 0 / 1 / 2
r5rbz1 $ 0 / 1 / 2
r�r�r�z*, in <module>
    1 $ 0 / 1 / 2
    ^^^^^
)r7r
rhri�
addCleanuprrr5r�r�r�r�rQrj)r.�bytecoder�r/r�r�rs       r�/test_traceback_specialization_with_syntax_errorzPTracebackErrorLocationCaretTests.test_traceback_specialization_with_syntax_error[s=���,�f�f�=�=��
�&�#�
�
�	*�$��J�J�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	
�����'�'�'��t�X�&�&���)�)�$�/�/���*��
��
�
�)-�);�
�
��
�
�(0�
�
�
�	�	
����~�'@�'@�'B�'B�C�C�C�C�Cs�A�A�Ac��d}t|td��}ttd��5}|�|��ddd��n#1swxYwY|�t
t��t
t|��}|�|��}|j	}dt�d|j�dt�d|�d|�dd	td
��zdz�d�
}|�
||�����dS)
Na	if True: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar5rbr�r�r�z, in <module>
    z
    � z	if True: a^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rL)r7r
rhrir7rrr5r�r�r�r�rRrQrj)r.�sourcer8r�r/r�r�rs        r�test_traceback_very_long_linez>TracebackErrorLocationCaretTests.test_traceback_very_long_lineqsn��(���6�6�6�2�2��
�&�#�
�
�	�$��J�J�v����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������'�'�'��t�X�&�&���)�)�$�/�/���*��
6��
6�
6�)-�);�
6�
6��
6�
6�(0�
6�
6��	
6�
6�
�s�;�'�'�'�'�1�
6�
6�
6�	�	
����~�'@�'@�'B�'B�C�C�C�C�Cs�A�A�Ac	���d�}|jj}dt�d|j�dt�d|dz�d�	}|�|��}|�||�����dS)Nc�:�dddii}|ddddSr&r�r)s rr+zZTracebackErrorLocationCaretTests.test_secondary_caret_not_elided.<locals>.f_with_subscript�s*���s�D�k�*�I��c�N�3���$�$�$�$rr�r�r�rJzP, in f_with_subscript
    some_dict['x']['y']['z']
    ~~~~~~~~~~~~~~~~~~~^^^^^
r�r,s     r�test_secondary_caret_not_elidedz@TracebackErrorLocationCaretTests.test_secondary_caret_not_elided�s���	%�	%�	%�$�,�;��
-��
-�
-�)-�);�
-�
-� �
-�
-�*2�!��
-�
-�
-�	��)�)�*:�;�;������~�'@�'@�'B�'B�C�C�C�C�Crc	���d�}dt�d|j�dt�d|jjdz�d�	}|�|��}|�||�����dS)Nc�Z�tdtd��td��g���)NT�egrHrJ��ExceptionGroupr+r�r�rrr0zHTracebackErrorLocationCaretTests.test_caret_exception_group.<locals>.exc�s#��)�$��A���	�!���0M�N�N�Nr�C  + Exception Group Traceback (most recent call last):
  |   File "r�z2, in get_exception
  |     callable()
  |   File "rHaB, 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�rQrj)r.r0rr�s    r�test_caret_exception_groupz;TracebackErrorLocationCaretTests.test_caret_exception_group�s���
	O�	O�	O�
%�$�
%�
%�.2�.@�
%�
%�%�
%�
%�/2�l�.I�A�.M�
%�
%�
%�	��)�)�#�.�.������~�'@�'@�'B�'B�C�C�C�C�Crc��|�|��}|d}|�|���|��dS)Nr�)r�rQ�lstrip)r.r/�expected_specializationr��specialization_lines     r�assertSpecializedz2TracebackErrorLocationCaretTests.assertSpecialized�sJ���)�)�$�/�/��*�2�.�����,�3�3�5�5�7N�O�O�O�O�Orc��|�d�d��|�d�d��|�d�d��|�d�d��|�d�d��|�d	�d��|�d
�d��|�d�d��|�d
�d��|�d�d��|�d�d��|�d�d��|�d�d��|�d�d��|�d�d��dS)Nc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s
��q��s�rz~^~c��ddzdzS�NrHrr_r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s��q��s�1�u�rc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>��
��q�1�u�rz~~^~~c��ddzdzSrPr�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s��q�1�u�q�y�rc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>��
��q�!�t�rz~^~~c��ddzdzSrPr�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s��q�!�t�A�v�rc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s
��q�q�y�rz	~~~~~^~~~c��ddzdzS)NrHrr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s��q�q�y�Q��rc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�rUrz~~^~c��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�rUrz~^^~c��ddzdzS�NrHrrGr�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s��q�!�t�Q�w�rc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s
��q�A�v�rz~~^^~~c��ddzdzSr\r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�s��q�A�v��{�rc��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�rRrz~~^^~c��ddzSr�r�r�rrrzQTracebackErrorLocationCaretTests.test_specialization_variations.<locals>.<lambda>�rRrz~^^~~)rLr8s r�test_specialization_variationsz?TracebackErrorLocationCaretTests.test_specialization_variations�s������{�{�&+�	-�	-�	-����}�}�&+�	-�	-�	-����}�}�&-�	/�	/�	/����0�0�&-�	/�	/�	/����|�|�&,�	.�	.�	.����~�~�&,�	.�	.�	.����0�0�&1�	3�	3�	3����6�6�&1�	3�	3�	3����|�|�&,�	.�	.�	.����|�|�&,�	.�	.�	.������&,�	.�	.�	.����~�~�&.�	0�	0�	0����2�2�&.�	0�	0�	0����}�}�&-�	/�	/�	/����}�}�&-�	/�	/�	/�	/�	/rc
�&��	�d��d��	��	fd�}|�|��}|jj}�jj}dt�d|j�dt�d|dz�dt�d|dz�d	�
}|�||�������	fd
�}|�|��}|jj}dt�d|j�dt�d|dz�dt�d|dz�d	�
}|�||�����dS)Nc��t��N)r��r/s r�	dec_errorz]TracebackErrorLocationCaretTests.test_decorator_application_lineno_correct.<locals>.dec_error�s���Orc��|Srdr�res r�dec_finez\TracebackErrorLocationCaretTests.test_decorator_application_lineno_correct.<locals>.dec_fine�s���Krc�.����d�����}dS)Nc��dSrdr�r�rr�gzhTracebackErrorLocationCaretTests.test_decorator_application_lineno_correct.<locals>.applydecs.<locals>.g�s���Trr�)rkrfrhs ��r�	applydecsz]TracebackErrorLocationCaretTests.test_decorator_application_lineno_correct.<locals>.applydecs�s#���
�
��M��X��Y��M�Mrr�r�r�rHz5, in applydecs
    @dec_error
     ^^^^^^^^^
  File "z#, in dec_error
    raise TypeError
c�B����Gd�d������}dS)Nc��eZdZdS)�nTracebackErrorLocationCaretTests.test_decorator_application_lineno_correct.<locals>.applydecs_class.<locals>.AN)r�r�r�r�rr�Aro�s�������Trrpr�)rprfrhs ��r�applydecs_classzcTracebackErrorLocationCaretTests.test_decorator_application_lineno_correct.<locals>.applydecs_class�s-���
�
��M�M�M�M�M�M��X��Y��M�Mrz;, in applydecs_class
    @dec_error
     ^^^^^^^^^
  File ")r�r�r�r�r�rQrj)
r.rlr��lineno_applydescs�lineno_dec_errorrrq�lineno_applydescs_classrfrhs
        @@r�)test_decorator_application_lineno_correctzJTracebackErrorLocationCaretTests.test_decorator_application_lineno_correct�s�����	�	�	�	�	�	�	�	�	�	�	�	��)�)�)�4�4��%�.�=��$�-�<��
$��
$�
$�)-�);�
$�
$� �
$�
$�*;�Q�)>�
$�
$� �

$�
$�*:�A�)=�

$�
$�
$�	�	
����~�'@�'@�'B�'B�C�C�C�	�	�	�	�	�	��)�)�/�:�:��"1�":�"I��
$��
$�
$�)-�);�
$�
$� �
$�
$�*A�1�)D�
$�
$� �

$�
$�*:�A�)=�

$�
$�
$�	�	
����~�'@�'@�'B�'B�C�C�C�C�Crc���d�}|�|��}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|�||��dS)Nc�.�d���dSrd��methodr�rrrkzHTracebackErrorLocationCaretTests.test_multiline_method_call_a.<locals>.fs#��
�������r�"Traceback (most recent call last):�  File "r��, in get_exception�    callable()rJ�, in fz    .methodz     ^^^^^^�r�r�r�r�r�rQ�r.rk�actualr�s    r�test_multiline_method_call_az=TracebackErrorLocationCaretTests.test_multiline_method_call_as���	�	�	��#�#�A�&�&��1�Q��Q�Q�4�+=�Q�Q�Q��P��P�P�1�:�+D�q�+H�P�P�P���

��	
�����*�*�*�*�*rc���d�}|�|��}ddt�d|j�d�ddt�d|jjdz�d�d	g}|�||��dS)
Nc�.�d���dSrdrxr�rrrkzHTracebackErrorLocationCaretTests.test_multiline_method_call_b.<locals>.fs#��
�������rrzr{r�r|r}rJr~z
    methodrr�s    r�test_multiline_method_call_bz=TracebackErrorLocationCaretTests.test_multiline_method_call_bs���	�	�	��#�#�A�&�&��1�Q��Q�Q�4�+=�Q�Q�Q��P��P�P�1�:�+D�q�+H�P�P�P��
��	
�����*�*�*�*�*rc���d�}|�|��}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|�||��dS)Nc�.�d���dSrdrxr�rrrkzHTracebackErrorLocationCaretTests.test_multiline_method_call_c.<locals>.f s#��
��&�����rrzr{r�r|r}rJr~z    . methodz      ^^^^^^rr�s    r�test_multiline_method_call_cz=TracebackErrorLocationCaretTests.test_multiline_method_call_cs���	�	�	��#�#�A�&�&��1�Q��Q�Q�4�+=�Q�Q�Q��P��P�P�1�:�+D�q�+H�P�P�P���

��	
�����*�*�*�*�*rc���d�}|�|��}ddt�d|j�d�ddt�d|jjdz�d�d	g}|�||��dS)
Nc��tdSrd��widthr�rrrkzeTracebackErrorLocationCaretTests.test_wide_characters_unicode_with_problematic_byte_offset.<locals>.f0s���O�O�Orrzr{r�r|r}rHr~u    widthrr�s    r�9test_wide_characters_unicode_with_problematic_byte_offsetzZTracebackErrorLocationCaretTests.test_wide_characters_unicode_with_problematic_byte_offset/s���	�	�	��#�#�A�&�&��1�Q��Q�Q�4�+=�Q�Q�Q��P��P�P�1�:�+D�q�+H�P�P�P�"�
��	
�����*�*�*�*�*rc���d�}|�|��}ddt�d|j�d�ddt�d|jjdz�d�d	g}|�||��dS)
Nc�$�d}t|����NrHr�r�s rrkzXTracebackErrorLocationCaretTests.test_byte_offset_with_wide_characters_middle.<locals>.f?s���O��_�-�-�-rrzr{r�r|r}rJr~u%    raise ValueError(width)rr�s    r�,test_byte_offset_with_wide_characters_middlezMTracebackErrorLocationCaretTests.test_byte_offset_with_wide_characters_middle>s���	.�	.�	.��#�#�A�&�&��1�Q��Q�Q�4�+=�Q�Q�Q��P��P�P�1�:�+D�q�+H�P�P�P�4�
��	
�����*�*�*�*�*rc���d�}|�|��}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|�||��dS)Nc�@�d}d}td||����dSr�)�print)�www�ths  rrkzFTracebackErrorLocationCaretTests.test_byte_offset_multiline.<locals>.fNs;���I��F��!�Y�Y����
�
�
�
�
rrzr{r�r|r}rGr~u    print(1, www(z             ^^^^rr�s    r�test_byte_offset_multilinez;TracebackErrorLocationCaretTests.test_byte_offset_multilineMs���	�	�	��#�#�A�&�&��1�Q��Q�Q�4�+=�Q�Q�Q��P��P�P�1�:�+D�q�+H�P�P�P�&� �

��	
�����*�*�*�*�*rN) r�r�r��__doc__r�r�r�r�r�r�rr	rrrr r#r-r5r9r=r@rGrLrarur�r�r�r�r�r�r�rrr�r�ws���������<�<�<�"�*�9�A�=�M�@�@�@�$@�@�@�$@�@�@�"@�@�@�(!@�!@�!@�F@�@�@�*D�D�D�"D�D�D�"D�D�D�"D�D�D�"D�D�D�"D�D�D�,D�D�D�,D�D�D�$D�D�D�0P�P�P�
/�/�/�@(D�(D�(D�T+�+�+� 
+�
+�
+�+�+�+� +�+�+�
+�
+�
+�+�+�+�+�+rr�c�6�eZdZdZd�ZejjdzZdS)�CPythonTracebackErrorCaretTestszS
    Same set of tests as above but with Python's internal traceback printing.
    c�@�ddlm}	|��|�d��dS#t$rj}t	d��5}||��ddd��n#1swxYwY|������dd�cYd}~Sd}~wwxYw)Nr��exception_printr�rlr�)�	_testcapir�r�r�rr�rj)r.r�r�r}�tbstderrs     rr�z-CPythonTracebackErrorCaretTests.get_exceptiongs��-�-�-�-�-�-�	9��H�J�J�J��I�I�,�-�-�-�-�-���	9�	9�	9� ��*�*�
#�h����"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#��$�$�&�&�1�1�3�3�C�R�C�8�8�8�8�8�8�8�����	9���s>�)�
B�B�A�B�A	�B�!A	�"0B�B�Br_N)r�r�r�r�r�r�r�r�r�rrr�r�as9��������9�9�9�"�*�9�A�=�M�M�Mrr�c��eZdZd�Zedd���Zd�Zd�Zd�Zd�Z	d�Z
e��d	���Zee��d
�����Z
d�Zed���Zd
�Zed���Zd�Zed���Zd�ZdS)�TracebackFormatTestsc� �td���)N�blah)�KeyErrorr8s r�some_exceptionz#TracebackFormatTests.some_exceptionvs���v���rNc��ddlm}	|���td���#t$�rStj��\}}}|�||j��dd�tj
|����z}t��}|||��|���}td��5}	tj|��ddd��n#1swxYwYt��}
tj||
���td��5}tj��ddd��n#1swxYwYtj��}t��}
tj|
���YnwxYw|�||��|�|	���|
�����|�|���|
�����|�||
�����|���}|d}|�t'|��d��|d	|d
}}|�|�d����|�|�d����|�|�d
����dS)Nr)�traceback_printz&unable to create test traceback stringz#Traceback (most recent call last):
rrlr�r����r��	Traceback�  Filez	    raise)r�r�r�rr�r��exc_infor&r�r,�	format_tbrr�r�print_tbr�r�rQrjrRrS�
startswith)r.�cleanup_funcr��type_r1r#�
traceback_fmt�file_�
python_fmtr��tbfile�	excstderr�excfmtr��tb_lines�banner�location�source_lines                  r�check_traceback_formatz+TracebackFormatTests.check_traceback_formatysE��-�-�-�-�-�-�	B����!�!�!�,�@�A�A�A��+�	.�	.�	.�"�|�~�~��E�5�"��'���R�Z�(�(�(�B��G�G�I�$7��$;�$;�<�<�=�M��J�J�E��O�B��&�&�&��.�.�*�*�J� ��*�*�
'�h��"�2�&�&�&�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'��Z�Z�F���r��/�/�/�/� ��*�*�
&�i��#�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��)�+�+�F��j�j�G���W�-�-�-�-�-�-�'	.����0	
����
�3�3�3�����*�*�,�,�f�o�o�.?�.?�@�@�@�����+�+�-�-�w�/?�/?�/A�/A�B�B�B������!1�!1�!3�!3�4�4�4��(�(�*�*���!�������X����*�*�*� (���h�r�l�+������)�)�+�6�6�7�7�7�����+�+�H�5�5�6�6�6�����.�.�{�;�;�<�<�<�<�<sX�+�BF	�C'�F	�'C+	�+F	�.C+	�/6F	�%E�9F	�E		�	F	�E		�
9F	�F	c�.�|���dSrd�r�r8s r�test_traceback_formatz*TracebackFormatTests.test_traceback_format�s���#�#�%�%�%�%�%rc�6�d�}|�|��dS)Nc�8�|j���dSrd)r$�clearr�s r�
cleanup_tbzRTracebackFormatTests.test_traceback_format_with_cleared_frames.<locals>.cleanup_tb�s���K�������rr�)r.r�s  r�)test_traceback_format_with_cleared_framesz>TracebackFormatTests.test_traceback_format_with_cleared_frames�s+��	 �	 �	 ��#�#�J�/�/�/�/�/rc�B�td��5}tjtjd����ddd��n#1swxYwYt��}tjtjd��|���|�|���|�����tjtjd����}|�|���d�	|����dS)NrlrHr�r)
rr,�print_stackr��	_getframerrQr��format_stackr�)r.�ststderr�stfile�stfmts    r�test_stack_formatz&TracebackFormatTests.test_stack_format�s ���X�
&�
&�	4�(��!�#�-��"2�"2�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�������c�m�A�.�.�V�<�<�<�<�����*�*�,�,�f�o�o�.?�.?�@�@�@��&�s�}�Q�'7�'7�8�8������*�*�,�,�b�g�g�e�n�n�=�=�=�=�=s�'A�A�
Ac	�F�d�}td��5}|��ddd��n#1swxYwY|jj}|�|������dd�dt|dzfzddt|dzfzd	g��dS)
Nc�,�tj��dSrd)r,r�r�rr�prnz2TracebackFormatTests.test_print_stack.<locals>.prn�s���!�#�#�#�#�#rrl���z)  File "%s", line %d, in test_print_stackr_z	    prn()z  File "%s", line %d, in prnrHz    traceback.print_stack())rr�r�rQr�rjr�)r.r�rlr�s    r�test_print_stackz%TracebackFormatTests.test_print_stack�s���	$�	$�	$�
�X�
&�
&�	�&��C�E�E�E�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���,��������*�*�5�5�7�7����<�7�8�V�A�X�:N�N��*�h��q��-A�A�)�	?
�	�	�	�	�	s�*�.�.c� ����d|_�fd��td��5}	���|�d��n#t$r
|��YnwxYwddd��n#1swxYwY�jj}dt�d|dz�dt�d|dz�d	t�d|dz�d	t�d|dz�d
�}|���}|������}|�	|dd�|dd���|�
|d|d��|�|d|d��tj
��}|�ttjd
|d�������t%|dz
|����d%�fd�	�td��5}	���|�d��n#t&$r
|��YnwxYwddd��n#1swxYwY�jj}	dt�d|	dz�dt�d|	dz�dt�d|	dz�dt�d|	dz�d�}
dt�d|	dz�d�}||
z���}|������}|�	||��d%��fd�	�td��5}	���|�d��n#t&$r
|��YnwxYwddd��n#1swxYwY�jj}
dt�d|
dz�dt�d|
dz�dt�d|
dz�dt�d|
dz�dt�d|
dz�d�}||
z���}|������}|�	||��td��5}	�t(j��|�d��n#t&$r
|��YnwxYwddd��n#1swxYwYdt�d|	dz�dt�d|	dz�dt�d|	dz�dt�d|	dz�d�}
dt�d|	d z�d!�}||
z���}|������}|�	||��td��5}	�t(jdz��|�d��n#t&$r
|��YnwxYwddd��n#1swxYwYdt�d|	dz�dt�d|	dz�dt�d|	dz�d"t�d|	dz�d�}
dt�d|	d#z�d$�}||
z���}|������}|�	||��dS)&Nc������dSrdr��rks�rrkzBTracebackFormatTests._check_recursive_traceback_display.<locals>.f�s���
�A�C�C�C�C�Crrlzno recursion occurredr�r�r�z8, in _check_recursive_traceback_display
    f()
  File "rHz, in f
    f()
  File "zn, in f
    f()
  \[Previous line repeated (\d+) more times\]
RecursionError: maximum recursion depth exceeded
r�r�z\d+�<rc�2��|r�|dz
��St�r�r�)rWrks �rrkzBTracebackFormatTests._check_recursive_traceback_display.<locals>.g�s#����
"��q��q��z�z�!��rzno value error was raisedr{rJz;, in g
    return g(count-1)
           ^^^^^^^^^^
  File "zc, in g
    return g(count-1)
           ^^^^^^^^^^
  [Previous line repeated 7 more times]
  File "r_z', in g
    raise ValueError
ValueError
�z0, in _check_recursive_traceback_display
    g()
c�<��|r�|dz
��S���dSr�r�)rWrk�hs ��rr�zBTracebackFormatTests._check_recursive_traceback_display.<locals>.h%s,����
"��q��q��z�z�!�
�A�C�C�C�C�Crz8, in _check_recursive_traceback_display
    h()
  File "z;, in h
    return h(count-1)
           ^^^^^^^^^^
  File "zc, in h
    return h(count-1)
           ^^^^^^^^^^
  [Previous line repeated 7 more times]
  File "z, in h
    g()
zno error raised�MzK, in _check_recursive_traceback_display
    g(traceback._RECURSIVE_CUTOFF)
zb, in g
    return g(count-1)
           ^^^^^^^^^^
  [Previous line repeated 1 more time]
  File "�lzO, in _check_recursive_traceback_display
    g(traceback._RECURSIVE_CUTOFF + 1)
)r)�maxDiffrr��RecursionErrorr�r�r�rjr�rQ�assertRegexrUr��getrecursionlimitr�re�search�group�ranger+r,�_RECURSIVE_CUTOFF)r.�
render_exc�stderr_fr��result_fr�r��	rec_limit�stderr_g�lineno_g�result_g�tb_line�stderr_h�lineno_h�result_hrkrkr�s               @@@r�"_check_recursive_traceback_displayz7TracebackFormatTests._check_recursive_traceback_display�s�	��������	�	�	�	�	��X�
&�
&�	3�(�
3�������	�	�1�2�2�2�2��"�
�
�
��
������
����	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��:�,��
A��
A�
A�)1�!��
A�
A� �
A�
A�*2�!��
A�
A�
 �
A�
A�
*2�!��
A�
A� �
A�
A�*2�!��
A�
A�
A�	�$�&�&�(�(���"�"�$�$�/�/�1�1��	
��������h�s��s�m�4�4�4�������X�b�\�2�2�2��
�
�h�r�l�F�2�J�/�/�/��)�+�+�	��
�
�c�"�)�F�F�2�J�7�7�=�=�?�?�@�@�%�	�RT��V_�B`�B`�a�a�a�	�	�	�	�	�	�
�X�
&�
&�	7�(�
7�������	�	�5�6�6�6�6���
�
�
��
������
����	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7��:�,��
�x�
�
��!��
�
� �
�
�*2�!��
�
� �

�
�*2�!��

�
� �
�
�*2�!��
�
�
�	� 
��
�
�)1�!��
�
�
�	�
�h�&�2�2�4�4���"�"�$�$�/�/�1�1�������*�*�*�	�	�	�	�	�	�	�
�X�
&�
&�	7�(�
7�������	�	�5�6�6�6�6���
�
�
��
������
����	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7��:�,��
��
�
�)1�!��
�
� �
�
�*2�!��
�
� �

�
�*2�!��

�
� �
�
�*2�!��
�
� �
�
�*2�!��
�
�
�	�"�x�'�3�3�5�5���"�"�$�$�/�/�1�1�������*�*�*��X�
&�
&�	-�(�
-���)�-�.�.�.��	�	�+�,�,�,�,���
�
�
��
������
����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�x�
�
��!��
�
� �
�
�*2�!��
�
� �

�
�*2�!��

�
� �
�
�*2�!��
�
�
�	�
3��
3�
3�)1�"��
3�
3�
3�	�
�h�&�2�2�4�4���"�"�$�$�/�/�1�1�������*�*�*��X�
&�
&�	-�(�
-���)�-��1�2�2�2��	�	�+�,�,�,�,���
�
�
��
������
����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�x�
�
��!��
�
� �
�
�*2�!��
�
� �

�
�*2�!��

�
� �
�
�*2�!��
�
�
�	� 
7��
7�
7�)1�#��
7�
7�
7�	�
�h�&�2�2�4�4���"�"�$�$�/�/�1�1�������*�*�*�*�*s�A'�
A�A'�A�A'�A�A'�'A+�.A+�$H,�&
H�0H,�H�H,�H�H,�,H0�3H0�8M�:
L�M�L1�.M�0L1�1M�M�M�Q�P/�Q�/Q�Q�Q�Q�Q�Q�U$�T>�(U$�>U�U$�U�U$�$U(�+U(c�D�|�tj��dSrd)r�r,r�r8s r�test_recursive_traceback_pythonz4TracebackFormatTests.test_recursive_traceback_python�s���/�/�	�0C�D�D�D�D�Drc�H��ddlm��fd�}|�|��dS)Nrr�c�L��tj��\}}}�|��dSrd�r�r�)�exc_type�	exc_value�exc_tbr�s   �rr�zRTracebackFormatTests.test_recursive_traceback_cpython_internal.<locals>.render_exc�s+���*-�,�.�.�'�H�i���O�I�&�&�&�&�&r)r�r�r�)r.r�r�s  @r�)test_recursive_traceback_cpython_internalz>TracebackFormatTests.test_recursive_traceback_cpython_internal�sL���	.�-�-�-�-�-�	'�	'�	'�	'�	'�	
�/�/�
�;�;�;�;�;rc��d�}|��}|jj}|�|dd�dt|dzfzdt|dzfzg��dS)Nc�(�tj��Srd)r,r�r�rr�fmtz3TracebackFormatTests.test_format_stack.<locals>.fmt�s���)�+�+�+rr�z>  File "%s", line %d, in test_format_stack
    result = fmt()
rJzA  File "%s", line %d, in fmt
    return traceback.format_stack()
rH)r�r�rQr�)r.r��resultr�s    r�test_format_stackz&TracebackFormatTests.test_format_stack�s���	,�	,�	,��������,����������
#�&.��q��%9�
:�
4�7?����6J�
K�'
�	�	�	�	�	rc��ddlm}Gd�dt��}|d��}|d��}	||�#|$r(	|�#|$rtj��\}}}YnwxYwYnwxYwtd��5}||��ddd��n#1swxYwY|���������}	|�	dt|	����|�	t���|	d	��|�d
|	d��|�d|	d
��dS)Nrr�c��eZdZd�ZdS)�ATracebackFormatTests.test_unhashable.<locals>.UnhashableExceptionc��dS�NTr��r.�others  r�__eq__zHTracebackFormatTests.test_unhashable.<locals>.UnhashableException.__eq__�����trN�r�r�r�rr�rr�UnhashableExceptionr��#������
�
�
�
�
rr�ex1�ex2rl�r�zUnhashableException: ex2r_zUnhashableException: ex1r)
r�r�r�r�r�rr�rTrjrQrR�context_messagerU)
r.r�rr
rr��exc_valr�r�r#s
          r�test_unhashablez$TracebackFormatTests.test_unhashable�s���-�-�-�-�-�-�	�	�	�	�	�)�	�	�	�"�!�%�(�(��!�!�%�(�(��	;��3���"�	;�	;�	;�
;��	��&�
;�
;�
;�,/�L�N�N�)��'�6�6�6�
;����#)�6�		;�����X�
&�
&�	%�(��O�G�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��
�
�
 �
 �
&�
&�
(�
(�
3�
3�
5�
5������S��W�W�%�%�%�����.�.�0�0�"�Q�%�8�8�8��
�
�0�"�Q�%�8�8�8��
�
�0�"�R�&�9�9�9�9�9s<�4�A!�<�A�A!�A�A!� A!�3B�B�Bc�j�td��}td��D]}td|g��}�|S)NrHi�rC)r�r�rE)r.r}�is   r�deep_egzTracebackFormatTests.deep_eg�s:���a�L�L���t���	*�	*�A��t�a�S�)�)�A�A��rc��ddlm}d}|���}td��5}t	j|���5||��ddd��n#1swxYwYddd��n#1swxYwY|���}|�d|��|�|�	d��|��dS)Nrr��Krl��	max_depthrE)
r�r�rrr�infinite_recursionr�rU�assertLessEqualrW)r.r��LIMITrCr�r�s      r�(test_exception_group_deep_recursion_capiz=TracebackFormatTests.test_exception_group_deep_recursion_capi�sP��-�-�-�-�-�-���
�\�\�^�^��
�X�
&�
&�	$�(��+�e�<�<�<�
$�
$����#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��"�"�$�$���
�
�&��/�/�/����V�\�\�*:�;�;�U�C�C�C�C�Cs5�A1�A�A1�A	�A1�!A	�"A1�1A5�8A5c���d}|���}td��5}tj|���5t	jt
|��||j��ddd��n#1swxYwYddd��n#1swxYwY|���}|�	d|��|�
|�d��|��dS)NrrlrrE)rrrrr,r��typer�r�rUrrW)r.rrCr�r�s     r�-test_exception_group_deep_recursion_tracebackzBTracebackFormatTests.test_exception_group_deep_recursion_traceback�sm����
�\�\�^�^��
�X�
&�
&�	J�(��+�e�<�<�<�
J�
J��)�$�r�(�(�B��8H�I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J��"�"�$�$���
�
�&��/�/�/����V�\�\�*:�;�;�U�C�C�C�C�Cs4�B�)A1�%B�1A5	�5B�8A5	�9B�B�Bc���ddlm}td��5}|d��ddd��n#1swxYwY|�|���d��dS)Nrr�rl�*zFTypeError: print_exception(): Exception expected for value, int found
)r�r�rrQr�)r.r�rls   r�"test_print_exception_bad_type_capiz7TracebackFormatTests.test_print_exception_bad_type_capi�s���-�-�-�-�-�-�
�X�
&�
&�	 �&��O�B����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �����O�O���9�	
�	
�	
�	
�	
s�.�2�2c��d}|�t|��5tjd��ddd��dS#1swxYwYdS)Nz'Exception expected for value, int foundr)r�r�r,r�)r.�msgs  r�$test_print_exception_bad_type_pythonz9TracebackFormatTests.test_print_exception_bad_type_python�s���7��
�
#�
#�I�s�
3�
3�	*�	*��%�b�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�A�A�Ard)r�r�r�r�rr�r�r�r�r�r�r
r�r�r�rrrrr r#r�rrr�r�ts}����������*=�*=�*=��\�*=�X&�&�&�0�0�0�>�>�>����{+�{+�{+�z����E�E���E������<�<����\�<�
�
�
��:�:��\�:�4����	D�	D��\�	D�D�D�D��
�
��\�
�*�*�*�*�*rr�zG
The above exception was the direct cause of the following exception:

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

rO�|rwc���eZdZd�ZejjdzZd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"dS) �BaseExceptionReportingTestsc�|�t|t��r|S	|��dS#t$r}|cYd}~Sd}~wwxYwrd)�
isinstance�
BaseExceptionr�)r.�exception_or_callabler}s   rr�z)BaseExceptionReportingTests.get_exception�sc���+�]�;�;�	)�(�(�	�!�!�#�#�#�#�#���	�	�	��H�H�H�H�H�H�����	���s�
%�
;�6�;�;rGc��ddzdSr�r�r8s r�zero_divz$BaseExceptionReportingTests.zero_div�s��	�!����rc���|���}t��rK|�|d�d����|�d|d��nJ|�|d�d����|�d|d��|�|d�d��|d��dS)N���r�z1/0 # In zero_divr�r�r��ZeroDivisionError)rjrrSr�rU)r.r"rms   r�check_zero_divz*BaseExceptionReportingTests.check_zero_divs������ � ��� � �	:��O�O�E�"�I�0�0��:�:�;�;�;��M�M�-�u�R�y�9�9�9�9��O�O�E�"�I�0�0��:�:�;�;�;��M�M�-�u�R�y�9�9�9�����b�	�,�,�-@�A�A�5��9�M�M�M�M�Mrc���	ddzn#t$r}|}Yd}~nd}~wwxYw|�|�����}t��rR|�t|��d��|�|d�d����nQ|�t|��d��|�|d�d����|�|d�d����|�|d�d����|�d	|d
��dS)NrHrrGr_r/r�r�r�z1/0 # MarkerrJ)	r/�
get_reportrjrrQrRrSr�rU�r.rr}rms    r�test_simplez'BaseExceptionReportingTests.test_simplesW��	�
�a�C�C�C�� �	�	�	��A�A�A�A�A�A�����	��������"�"�-�-�/�/��� � �	F����S��Z�Z��+�+�+��O�O�E�!�H�/�/�0C�D�D�E�E�E�E����S��Z�Z��+�+�+��O�O�E�!�H�/�/�0C�D�D�E�E�E�����a��+�+�K�8�8�9�9�9�����a��+�+�H�5�5�6�6�6��
�
�n�e�A�h�/�/�/�/�/s��
��c�n����fd���fd�}t���|����}��t	|��d����|dt
����|d����d|d��dS)Nc�f��	����dS#t$r
}t|�d}~wwxYwrd�r,r/r�)r}r.s �r�inner_raisez;BaseExceptionReportingTests.test_cause.<locals>.inner_raises@���
&��
�
�������$�
&�
&�
&��A�%�����
&���s��
0�+�0c������dSrdr��r8s�r�outer_raisez;BaseExceptionReportingTests.test_cause.<locals>.outer_raise"�����K�M�M�M�M�Mrr_rHr�inner_raise() # MarkerrJ��
boundaries�splitr2rQrR�
cause_messager0rU�r.r;�blocksr8s`  @r�
test_causez&BaseExceptionReportingTests.test_causes�����	&�	&�	&�	&�	&�
	�	�	�	�	��!�!�$�/�/�+�">�">�?�?������V���a�(�(�(�������M�2�2�2����F�1�I�&�&�&��
�
�.��q�	�:�:�:�:�:rc�n����fd���fd�}t���|����}��t	|��d����|dt
����|d����d|d��dS)Nc�\��	����dS#t$rt�wxYwrdr7r8s�rr8z=BaseExceptionReportingTests.test_context.<locals>.inner_raise+s9���
��
�
�������$�
�
�
���
���s��+c������dSrdr�r:s�rr;z=BaseExceptionReportingTests.test_context.<locals>.outer_raise0r<rr_rHrr=rJ)r?r@r2rQrRr
r0rUrBs`  @r�test_contextz(BaseExceptionReportingTests.test_context*s�����	�	�	�	�	�
	�	�	�	�	��!�!�$�/�/�+�">�">�?�?������V���a�(�(�(�������O�4�4�4����F�1�I�&�&�&��
�
�.��q�	�:�:�:�:�:rc�D�		t�#td�xYw#t$r}|}Yd}~nd}~wwxYw|�|�����}|�t|��d��|�|d�d����|�|d�d����|�|d�d����|�d|d	��dS)
NrGr_r/rr�rHr�zZeroDivisionError from NonerJ)	r�r/r2rjrQrRrSr�rUr3s    r�test_context_suppressionz4BaseExceptionReportingTests.test_context_suppression8s��	�
2����
2�'�T�1����� �	�	�	��A�A�A�A�A�A�����	��������"�"�-�-�/�/������U���Q�'�'�'�����a��+�+�,?�@�@�A�A�A�����a��+�+�K�8�8�9�9�9�����a��+�+�H�5�5�6�6�6��
�
�3�U�1�X�>�>�>�>�>s�
�
��
-�(�-c�n����fd���fd�}t���|����}��t	|��d����|dt
����|d����d|d��dS)Nc���	����n#t$r}|}Yd}~nd}~wwxYw	tdS#t$r	t|�wxYwrd)r,r/�xyzzy�	NameErrorr�)�_er}r.s  �rr8zGBaseExceptionReportingTests.test_cause_and_context.<locals>.inner_raiseJsv���
��
�
������$�
�
�
������������
����
&�������
&�
&�
&��A�%�
&���s��
.�)�.�;�Ac������dSrdr�r:s�rr;zGBaseExceptionReportingTests.test_cause_and_context.<locals>.outer_raiseSr<rr_rHrr=rJr>rBs`  @r�test_cause_and_contextz2BaseExceptionReportingTests.test_cause_and_contextGs�����	&�	&�	&�	&�	&�	�	�	�	�	��!�!�$�/�/�+�">�">�?�?������V���a�(�(�(�������M�2�2�2����F�1�I�&�&�&��
�
�.��q�	�:�:�:�:�:rc������fd���fd�}t���|����}��t	|��d����|dt
����d|d����d|d����d|d	����|d	��dS)
Nc���		����dS#t$r}|}t|�d}~wwxYw#t$r}||�d}~wwxYwrdr7)r}r(r.s  �rr8zEBaseExceptionReportingTests.test_cause_recursive.<locals>.inner_raise\sr���
�*��M�M�O�O�O�O�O��(�*�*�*��A�"��)�����*������
�
�
��Q������
���s%��
3�
.�3�6�
A�A�Ac������dSrdr�r:s�rr;zEBaseExceptionReportingTests.test_cause_recursive.<locals>.outer_raiseer<rr_rHzraise KeyError from erz1/0r=rJ)	r?r@r2rQrRrArU�assertNotInr0rBs`  @r�test_cause_recursivez0BaseExceptionReportingTests.test_cause_recursive[s�����	�	�	�	�	�	�	�	�	�	��!�!�$�/�/�+�">�">�?�?������V���a�(�(�(�������M�2�2�2��
�
�-�v�a�y�9�9�9������q�	�*�*�*�	
�
�
�.��q�	�:�:�:����F�1�I�&�&�&�&�&rc��d�}|�|�����}|�|dd��d�}|�|�����}|�|dd��dS)Nc�"�tdd���)Nr)rrr��hello)rPr�rrr}zFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.ets���b�"5�6�6�6rr�z	        ^c�$�td��dS)Nzx = 5 | 4 |)r5r�rrr}zFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.exs��������rz               ^)r2rjrQ�r.r}r"s   r�test_syntax_error_offset_at_eolz;BaseExceptionReportingTests.test_syntax_error_offset_at_eolrs���	7�	7�	7��o�o�a� � �+�+�-�-������R��+�.�.�.�	 �	 �	 ��o�o�a� � �+�+�-�-������R��"4�5�5�5�5�5rc�`�td��}|�|�����}|�|dg��d|_|�|�����}|�|ddg��td��}d|_|�|�����}|�|dg��d|_|�|�����}|�|ddg��dS)Nr^zSyntaxError: bad syntax�dz  File "<string>", line 100z	myfile.pyz#SyntaxError: bad syntax (myfile.py)z  File "myfile.py", line 100)rPr2rjrQr��filenamer[s   r�test_syntax_error_no_linenoz7BaseExceptionReportingTests.test_syntax_error_no_lineno}sA��
��%�%���o�o�a� � �+�+�-�-������
&�'�	)�	)�	)�����o�o�a� � �+�+�-�-������
*�,E�F�	H�	H�	H�
��%�%�� ��
��o�o�a� � �+�+�-�-������
2�3�	5�	5�	5�����o�o�a� � �+�+�-�-������
+�-F�G�	I�	I�	I�	I�	Irc���|�td����}|�d|��|�td����}|�d|��|�t����}|�d|��|�td����}|�d|��dS)NzException: None
�Nonez
Exception
r)r2r�rUrXs  r�test_message_nonez-BaseExceptionReportingTests.test_message_none�s����o�o�i��o�o�.�.���
�
�)�3�/�/�/��o�o�i��/�/�0�0���
�
�)�3�/�/�/��o�o�i�k�k�*�*���
�
�m�S�)�)�)��o�o�i��m�m�,�,���
�
�m�S�)�)�)�)�)rc���tdd��D�]Y}dD�]R}d|zd|zz}dg}|dkr+|�d|���z��n�|d	krI|�d|���z��|�d
d|dz
zz��nB|�d|���z��|�d
dz��|�d��|�d
��|�t	ddd||z|f����}d�|��}|�||����T��[dS)N���r)rrJr;ztext%dz  File "file.py", line 1rHz    %srz    %s^z     zSyntaxError: msgrr"zfile.pyrL)r��appendrIr2rPr�rQ)r.�offset�addr�r�rY�exps       r�!test_syntax_error_various_offsetsz=BaseExceptionReportingTests.test_syntax_error_various_offsets�su���B��m�m�	+�	+�F��
+�
+���3�w��F�!2�2��6�7���A�:�:��O�O�H�t�{�{�}�}�$<�=�=�=�=��q�[�[��O�O�H�t�{�{�}�}�$<�=�=�=��O�O�I��f�Q�h��$@�A�A�A�A��O�O�H�t�{�{�}�}�$<�=�=�=��O�O�I��$7�8�8�8���� 2�3�3�3�����#�#�#��o�o�k�%�)�Q��s�
�TX�9Y�&Z�&Z�[�[���i�i��)�)��� � ��c�*�*�*�*�
+�	+�	+rc�2�td��}|�|��}|�d��|�|�|��|dz��|`|�d��|�|�|��|dz��|`|�d��|�|�|��|dz��|`|�|�|��|��dS)N�{zMy NotezMy Note
rrLz	Your Notez
Your Note
�r+r2�add_noterQ�	__notes__�r.r}�vanillas   r�test_exception_with_notez4BaseExceptionReportingTests.test_exception_with_note�s����s�O�O���/�/�!�$�$��	�
�
�9�����������+�+�W�{�-B�C�C�C�
�K�	�
�
�2�����������+�+�W�t�^�<�<�<�
�K�	�
�
�;�����������+�+�W�}�-D�E�E�E�
�K��������+�+�W�5�5�5�5�5rc�~�td��}|�|��}Gd�d��}Gd�d��}|��|_d}|�|�|��||z��|��|_d}|�|�|��||z��|��dg|_d	}|�|�|��||zd
z��|��dg|_d}|�|�|��||zd
z��dS)Nrlc��eZdZd�Zd�ZdS)�OBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThingc��dS)N�bad strr�r8s rr�zWBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThing.__str__�s�� �yrc��dS)N�bad reprr�r8s r�__repr__zXBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThing.__repr__�s��!�zrN)r�r�r�r�rzr�rr�BadThingru�s2������
!�
!�
!�
"�
"�
"�
"�
"rr{c��eZdZd�ZdS)�RBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.Unprintablec� �td����N�	bad valuer�r8s rrzz[BaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.Unprintable.__repr__�s�� ��-�-�-rN)r�r�r�rzr�rr�Unprintabler}�s#������
.�
.�
.�
.�
.rr�ryz<__notes__ repr() failed>z
Final Noterwz
Final Note
z<note str() failed>)r+r2rorQ)r.r}rqr{r��
notes_reprr��bad_notes        r�!test_exception_with_invalid_notesz=BaseExceptionReportingTests.test_exception_with_invalid_notes�st���s�O�O���/�/�!�$�$��	"�	"�	"�	"�	"�	"�	"�	"�	.�	.�	.�	.�	.�	.�	.�	.��h�j�j����
��������+�+�W�z�-A�B�B�B�!�k�m�m���-���������+�+�W�w�->�?�?�?�!��
�
�L�1������������+�+�W�x�-?�BR�-R�S�S�S�$��
�
�|�4���'���������+�+�W�w�->�AQ�-Q�R�R�R�R�Rrc��td��}|�|��}|�d��|�d��|�d��|�|�|��|dzdzdz��|`|�d��|`|�d	��|�d
��|�|�|��|dzdz��dS)
NrzNote 1zNote 2zNote 3zNote 1
zNote 2
zNote 3
zNote 4zNote 5zNote 6zNote 5
zNote 6
rmrps   r�,test_exception_with_note_with_multiple_noteszHBaseExceptionReportingTests.test_exception_with_note_with_multiple_notes�s
���r�N�N���/�/�!�$�$��	�
�
�8����	�
�
�8����	�
�
�8��������O�O�A����j� �:�-�
�:�	<�	<�	<�
�K�	�
�
�8����
�K�	�
�
�8����	�
�
�8��������O�O�A����j� �:�-�	/�	/�	/�	/�	/rc�2�Gd�d��}|�|j�����}d}d�|jjj|jjjg��}|�d|�d�}|�|t|z��dS)Nc�(�eZdZGd�d��ZdS)�>BaseExceptionReportingTests.test_exception_qualname.<locals>.Ac�*�eZdZGd�de��ZdS)�@BaseExceptionReportingTests.test_exception_qualname.<locals>.A.Bc��eZdZd�ZdS)�BBaseExceptionReportingTests.test_exception_qualname.<locals>.A.B.Xc��dS�N�I am Xr�r8s rr�zJBaseExceptionReportingTests.test_exception_qualname.<locals>.A.B.X.__str__s��'�xrNr�r�rrr�r�s#������(�(�(�(�(rr�N)r�r�r�r�r�r�rr�Br�s>������(�(�(�(�(�	�(�(�(�(�(rr�N)r�r�r�r�r�rrrpr�s<������
(�
(�
(�
(�
(�
(�
(�
(�
(�
(rrpr�rr�rL)r2r�r�r�r�r�rQ�
MODULE_PREFIX)r.rprYr�r�ris      r�test_exception_qualnamez3BaseExceptionReportingTests.test_exception_qualname�s���	(�	(�	(�	(�	(�	(�	(�	(��o�o�a�c�e�e�g�g�&�&���	��8�8�Q�S�U�-�q�s�u�/A�B�C�C��$�H�H�i�i�i�0������m�c�1�2�2�2�2�2rc�t�Gd�dt��}dD]�}||_|�|���5|�|����}d}|dvr|j}n!d�|j|jg��}|�d|�d	�}|�||��ddd��n#1swxYwY��dS)
Nc��eZdZd�ZdS)�@BaseExceptionReportingTests.test_exception_modulename.<locals>.Xc��dSr�r�r8s rr�zHBaseExceptionReportingTests.test_exception_modulename.<locals>.X.__str__����xrNr�r�rrr�r�
�#������
 �
 �
 �
 �
 rr�)rr��some_module)�
modulenamer�)r�rrr�rL)r�r��subTestr2r�r�rQ)r.r�r�rYr�r�ris       r�test_exception_modulenamez5BaseExceptionReportingTests.test_exception_modulenames,��	 �	 �	 �	 �	 �	�	 �	 �	 �@�
	+�
	+�J�%�A�L������4�4�
+�
+��o�o�a�a�c�c�*�*��$�	��!9�9�9� �~�H�H�"�x�x���q�~�(F�G�G�H�$,�H�H�i�i�i�8��� � ��c�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��
	+�
	+s�A+B,�,B0	�3B0	c��Gd�dt��}d|_|�|����}d|j�d�}|�||��dS)Nc��eZdZd�ZdS)�LBaseExceptionReportingTests.test_exception_modulename_not_unicode.<locals>.Xc��dSr�r�r8s rr�zTBaseExceptionReportingTests.test_exception_modulename_not_unicode.<locals>.X.__str__r�rNr�r�rrr�r�r�rr�rz
<unknown>.z	: I am X
)r�r�r2r�rQ)r.r�rYris    r�%test_exception_modulename_not_unicodezABaseExceptionReportingTests.test_exception_modulename_not_unicodesz��	 �	 �	 �	 �	 �	�	 �	 �	 �����o�o�a�a�c�c�"�"��5�1�>�5�5�5������c�"�"�"�"�"rc���Gd�dt��}|�|����}d}d�|j|jg��}|�t|z|�d|�d���dS)Nc��eZdZd�ZdS)�@BaseExceptionReportingTests.test_exception_bad__str__.<locals>.Xc��ddzdSr�r�r8s rr�zHBaseExceptionReportingTests.test_exception_bad__str__.<locals>.X.__str__*r�rNr�r�rrr�r�)r�rr�r�rr�rL)r�r2r�r�r�rQr�r�s     r�test_exception_bad__str__z5BaseExceptionReportingTests.test_exception_bad__str__(s���	�	�	�	�	�	�	�	�	��o�o�a�a�c�c�"�"��.�	��8�8�Q�\�1�>�:�;�;�������,��.J�.J�Y�.J�.J�.J�K�K�K�K�Krc	��d�}dt�d|j�dt�d|jjdz�d�	}|�|��}|�||��dS)Nc�Z�tdtd��td��g���)NrCrHrJrDr�rrr0zCBaseExceptionReportingTests.test_exception_group_basic.<locals>.exc5s#�� ��
�1�
�
�y��|�|�'D�E�E�ErrFr��?, in get_exception
  |     exception_or_callable()
  |   File "rHa, in exc
  |     raise ExceptionGroup("eg", [ValueError(1), TypeError(2)])
  | ExceptionGroup: eg (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
    +------------------------------------
�r�r�r�r�r2rQ�r.r0r��reports    r�test_exception_group_basicz6BaseExceptionReportingTests.test_exception_group_basic4s���	F�	F�	F�
<�$�
<�
<�.2�.@�
<�
<�%�
<�
<�/2�l�.I�A�.M�
<�
<�
<�	�����%�%�������*�*�*�*�*rc
���d�}dt�d|jjdz�dt�d|j�dt�d|jjdz�d�
}|�|��}|�||��dS)	Nc���t}	|dtd��td��g���#t$r.}|dtd��td��g��|�d}~wwxYw)N�eg1rHrJ�eg2r_rG�rEr+r�r�)�EGr}s  rr0zCBaseExceptionReportingTests.test_exception_group_cause.<locals>.excIsx���B�
F��b���A���	�!��� =�>�>�>���
F�
F�
F��b���A���	�!��� =�>�>�A�E�����
F���s�(1�
A)�)A$�$A)rFr�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�r2rQr�s    r�test_exception_group_causez6BaseExceptionReportingTests.test_exception_group_causeHs���	F�	F�	F�C�#+�C�C�58�\�5P�ST�5T�C�C�$,�C�C�6:�5G�C�C�$,�C�C�69�\�5P�ST�5T�C�C�C��0����%�%�������*�*�*�*�*rc��d�}dt�d|jjdz�dt�d|jjdz�dt�d|j�dt�d|jjd	z�d
�}|�|��}|�||��dS)Nc���t}		|dtd��td��g���#|dtd��td��g���xYw#td���xYw)Nr�rHrJr�r_rGr�)rEr+r��ImportError)r�s rr0zRBaseExceptionReportingTests.test_exception_group_context_with_context.<locals>.exclsw���B�
%�C��"�U�Z��]�]�I�a�L�L�$A�B�B�B��C��"�U�Z��]�]�I�a�L�L�$A�B�B�B�����
%�!�!�n�n�$���s�(2�*A�A�A0rFr�rGa�, 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 "ra, 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 "z7, in get_exception
    exception_or_callable()
  File "�z1, in exc
    raise ImportError(5)
ImportError: 5
r�r�s    r�)test_exception_group_context_with_contextzEBaseExceptionReportingTests.test_exception_group_context_with_contextks���	%�	%�	%�!�$�!�!�.1�l�.I�A�.M�!�!�%�!�!�/2�l�.I�A�.M�!�!�2!�3!�!�2+/�*<�3!�!�6!�7!�!�6+.�,�*E��*I�7!�!�!�	�@����%�%�������*�*�*�*�*rc��d�}dt�d|jjdz�dt�d|jjdz�dt�d|j�dt�d|jjd	z�d
�}|�|��}|�||��dS)Nc��t}t}t}		|d|d��|d��g���#t$r}|}Yd}~nd}~wwxYw|d|d��||d��g���#|d|d��g���xYw)	N�nestedrJr_rCrHrG�topr�r�)r��VE�TEr}r0s     rr0zDBaseExceptionReportingTests.test_exception_group_nested.<locals>.exc�s����B��B��B�
)���"�X���1���r�r�!�u�u�~�6�6�6�� �����C�C�C�C�C�C����������b����1���s�B�B�q�E�E�2�3�3�3��
)��b����A����(�(�(���s'� 8�
A�A	�A2�	A�$A2�2B
rFr��	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 "ra, 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_nestedz7BaseExceptionReportingTests.test_exception_group_nested�s���	)�	)�	)�C�#+�C�C�58�\�5P�ST�5T�C�C�&.�C�C�8;�|�7R�UV�7V�C�C�.$,�/C�C�.6:�5G�/C�C�2$,�3C�C�269�\�5P�SU�5U�3C�C�C��@����%�%�������*�*�*�*�*rc���g}td��D]$}|�t|�����%td|��}d}|�|��}|�||��dS)N��rCa>  | 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�rfr+rEr2rQ)r.�excsrrCr�r�s      r� test_exception_group_width_limitz<BaseExceptionReportingTests.test_exception_group_width_limit�s~�����t���	'�	'�A��K�K�
�1�
�
�&�&�&�&�
�D�$�
'�
'��!B��F����$�$�������*�*�*�*�*rc	��td��}td��D]3}td|��t|��|t|��g��}�4d}|�|��}|�||��dS)N�bad typer�rCa�  | 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�rEr+r2rQ)r.r0rr�r�s     r� test_exception_group_depth_limitz<BaseExceptionReportingTests.test_exception_group_depth_limit�s����
�#�#���t���	6�	6�A� ��Q����A����Z���^�^�4�6�6�C�C�FB��P����%�%�������*�*�*�*�*rc��d�}dt�d|j�dt�d|jjdz�dt�d|jjdz�dt�d|jjdz�d	�}|�|��}|�||��dS)
Nc�(�	g}dD]U}	t|���#t$r7}|�d|����|�|��Yd}~�Nd}~wwxYwtd|���#t$r}|�d���d}~wwxYw)N�r�zterrible value�the r��t>> Multi line note
>> Because I am such
>> an important exception.
>> empty lines work too

(that was an empty line)�r+rnrfrE�r�r"r}s   rr0zHBaseExceptionReportingTests.test_exception_group_with_notes.<locals>.excIs���
���:�'�'�C�'�(��o�o�-��%�'�'�'��
�
�<�#�<�<�0�0�0����A�������������'����%�X�t�4�4�4��!�
�
�
��
�
�7�9�9�9������
���s7�A,��
A�-A�A,�A�A,�,
B�6B�BrFr�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_notesz;BaseExceptionReportingTests.test_exception_group_with_notesHs���	�	�	�&C�#+�C�C�59�5G�C�C�$,�C�C�69�\�5P�ST�5T�C�C�&.�C�C�8;�|�7R�UV�7V�C�C�(&.�)C�C�(8;�|�7R�UV�7V�)C�C�C��4����%�%�������*�*�*�*�*rc��d�}dt�d|j�dt�d|jjdz�dt�d|jjdz�dt�d|jjdz�d	�}|�|��}|�||��dS)
Nc��	g}dD]m}	t|���#t$rO}|�d|����|�d|����|�|��Yd}~�fd}~wwxYwtd|���#t$r0}|�d��|�d���d}~wwxYw)Nr�r�zGoodbye r�r�zGoodbye!r�r�s   rr0zQBaseExceptionReportingTests.test_exception_group_with_multiple_notes.<locals>.exczs���
���:�'�'�C�'�(��o�o�-��%�'�'�'��
�
�<�#�<�<�0�0�0��
�
�#3�c�#3�#3�4�4�4����A�������������'����%�X�t�4�4�4��!�
�
�
��
�
�7�9�9�9��
�
�:�&�&�&������
���s8�B��
A1�AA,�'B�,A1�1B�
B>�+B9�9B>rFr�r�ra^, 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_noteszDBaseExceptionReportingTests.test_exception_group_with_multiple_notesys���	�	�	�*C�#+�C�C�59�5G�C�C�$,�C�C�69�\�5P�SU�5U�C�C�&.�C�C�8;�|�7R�UV�7V�C�C�,&.�-C�C�,8;�|�7R�UV�7V�-C�C�C��:����%�%�������*�*�*�*�*rc�n�d�}d}|��}d}|jj}tj||||��}t	��}||_dt�d|�d�}|�|��}	d�d�|	�	d��D����}	|�
|	|��dS)Nc�(�tj��Srd�r�r�r�rrrkzTBaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frame.<locals>.f�s���=�?�?�"rrr�r�z', in f
    def f():

KeyboardInterrupt
rLc�6�g|]}|�����Sr�)�rstrip��.0�ls  r�
<listcomp>z]BaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frame.<locals>.<listcomp>�s ��C�C�C�1�A�H�H�J�J�C�C�Cr)r�r��types�
TracebackTyper{r�r�r2r�r@rQ)
r.rkr&r�lastir�r#r0r�r�s
          r�-test_KeyboardInterrupt_at_first_line_of_framezIBaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frame�s���	#�	#�	#������������*��
�
 ��%���
?�
?���!�!�����+�'�+�+�17�+�+�+������%�%�����C�C����T�0B�0B�C�C�C�D�D�������*�*�*�*�*rN)#r�r�r�r�r�r�r�r,r0r4rDrHrJrQrVr\r`rcrjrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr&r&�s����������"�*�9�A�=�M����N�N�N�0�0�0� ;�;�;�;�;�;�
?�
?�
?�;�;�;�('�'�'�.	6�	6�	6�I�I�I�2	*�	*�	*�+�+�+�&6�6�6�$!S�!S�!S�F/�/�/�,3�3�3�+�+�+�"	#�	#�	#�L�L�L�+�+�+�(!+�!+�!+�F,+�,+�,+�\/+�/+�/+�b*+�*+�*+�XP+�P+�P+�d/+�/+�/+�b4+�4+�4+�l+�+�+�+�+rr&c��eZdZd�ZdS)�PyExcReportingTestsc��|�|��}d�tjt	|��||j����}t
d��5}tjt	|��||j��ddd��n#1swxYwY|�|�	��|��|S)Nrrl)
r�r�r,r�rr�rr�rQr�)r.r}�s�sios    rr2zPyExcReportingTests.get_report�s������q�!�!���G�G��&�t�A�w�w��1�?�C�C�
E�
E��
�X�
&�
&�	C�#��%�d�1�g�g�q�!�/�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C����������+�+�+��s� )B�B�BN)r�r�r�r2r�rrr�r��s#����������rr�c�$�eZdZed���ZdS)�CExcReportingTestsc���ddlm}|�|��}td��5}||��ddd��n#1swxYwY|���S)Nrr�rl)r�r�r�rr�)r.r}r�r�s    rr2zCExcReportingTests.get_report�s���-�-�-�-�-�-����q�!�!��
�X�
&�
&�	�!��O�A����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��z�z�|�|�s�A�A�
AN)r�r�r�rr2r�rrr�r��s/������
����\���rr�c�`�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�
LimitTestsze Tests for limit argument.
        It's enough to test extact_tb, extract_stack and format_exception c� �td���)NzLast raised)r�r8s r�last_raises1zLimitTests.last_raises1�s���
�&�&�&rc�.�|���dSrd)r�r8s r�last_raises2zLimitTests.last_raises2�����������rc�.�|���dSrd)r�r8s r�last_raises3zLimitTests.last_raises3�r�rc�.�|���dSrd)r�r8s r�last_raises4zLimitTests.last_raises4�r�rc�.�|���dSrd)r�r8s r�last_raises5zLimitTests.last_raises5�r�rc�(�tj��Srdr�r8s r�last_returns_frame1zLimitTests.last_returns_frame1�s���}���rc�*�|���Srd)r�r8s r�last_returns_frame2zLimitTests.last_returns_frame2�����'�'�)�)�)rc�*�|���Srd)r�r8s r�last_returns_frame3zLimitTests.last_returns_frame3r�rc�*�|���Srd)r�r8s r�last_returns_frame4zLimitTests.last_returns_frame4r�rc�*�|���Srd)rr8s r�last_returns_frame5zLimitTests.last_returns_frame5r�rc�n���������fd�}�fd�}tjtdd��5|��}��t|��d����|d���|dd���||d	���|d
d�d����|d���|dd���||d
���|dd	�t|��dz
dz
����|d
���g��t`||��|d��dt_��|��|dd�����|d���|dd�����|d���|dd���d
t_��|��g��dt_��|��g��ddd��dS#1swxYwYdS)Nc�(��tj�fi|��Srd�r,�
extract_stack)�kwargsrs �r�extractz.LimitTests.test_extract_stack.<locals>.extracts����*�5�;�;�F�;�;�;rc�����|d|�|d|�����||dzd�||dzd�����t|��t|����dSr�)rQrR)r�r��ignorer.s   �r�assertEqualExceptz8LimitTests.test_extract_stack.<locals>.assertEqualExcepts�������V�G�V�G�_�h�w��w�.?�@�@�@����V�F�1�H�I�I�.�������0C�D�D�D����S��[�[�#�h�-�-�8�8�8�8�8r�tracebacklimitr�r�rJ��limitr�r^i����i����rHrr_r.r�)rr�	swap_attrr��
assertGreaterrRrQr)r.rr�nolimrs`   @r�test_extract_stackzLimitTests.test_extract_stack
s������(�(�*�*��	<�	<�	<�	<�	<�	9�	9�	9�	9�	9�
�
�s�$4�d�
;�
;�	,�	,��G�I�I�E����s�5�z�z�1�-�-�-����W�W�1�-�-�-�u�R�S�S�z�:�:�:���g�g�C�0�0�0�%����,��E�E�E����W�W�2�.�.�.��b�q�b�	�:�:�:���g�g�D�1�1�1�5��#��;��E�
�
�1��Q��O�O�O����W�W�1�-�-�-�r�2�2�2��"���g�g�i�i���5�5�5�!"�C�����W�W�Y�Y��b�c�c�
�3�3�3����W�W�1�-�-�-�u�R�S�S�z�:�:�:����W�W�2�.�.�.��b�q�b�	�:�:�:�!"�C�����W�W�Y�Y��+�+�+�!#�C�����W�W�Y�Y��+�+�+�#	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�G!H*�*H.�1H.c���	|���n'#t$rtj��\}}�YnwxYw�fd�}t	jtdd��5|��}|�t|��d��|�|d���|dd���|�|d���|��|�|d���|dd���|�|d	���|��|�|d
���g��t`|�|��|��dt_|�|��|dd���|�|d���|dd���|�|d���|dd���d
t_|�|��g��d
t_|�|��g��ddd��dS#1swxYwYdS)Nc�(��tj�fi|��Srd)r,�
extract_tb)rr#s �rrz+LimitTests.test_extract_tb.<locals>.extract+s����'��5�5�f�5�5�5rrr�rrJr
rr����rr_r.r��	r�r�r�r�rrrQrRr)r.r�r�rrr#s     @r�test_extract_tbzLimitTests.test_extract_tb&s����	5����������	5�	5�	5�&)�l�n�n�#�H�i����	5����	6�	6�	6�	6�	6��
�s�$4�d�
;�
;�	,�	,��G�I�I�E����S��Z�Z��-�-�-����W�W�1�-�-�-�u�R�a�R�y�9�9�9����W�W�2�.�.�.��6�6�6����W�W�2�.�.�.��b�c�c�
�;�;�;����W�W�3�/�/�/��7�7�7����W�W�1�-�-�-�r�2�2�2��"����W�W�Y�Y��.�.�.�!"�C�����W�W�Y�Y��b�q�b�	�2�2�2����W�W�1�-�-�-�u�R�a�R�y�9�9�9����W�W�2�.�.�.��b�c�c�
�;�;�;�!"�C�����W�W�Y�Y��+�+�+�!#�C�����W�W�Y�Y��+�+�+�#	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s��!<�<�GI�I	�I	c�����	|���n'#t$rtj��\���YnwxYw���fd�}t	jtdd��5|��}|�t|��d��|�|d���|dd���|�|d���|��|�|d���|dd���|�|d	���|��|�|d
���g��t`|�|��|��dt_|�|��|dd���|�|d���|dd���|�|d���|dd���d
t_|�|��g��d
t_|�|��g��ddd��dS#1swxYwYdS)Nc�<��tj���fi|��dd�S)NrHr�)r,r�)rr�r�r#s ���rrz1LimitTests.test_format_exception.<locals>.extractHs,����-�h�	�2�P�P��P�P�QR�SU�QU�V�Vrrr�rrJr
rr�rrr_r.r�r)r.rrr�r�r#s   @@@r�test_format_exceptionz LimitTests.test_format_exceptionAs������	5����������	5�	5�	5�&)�l�n�n�#�H�i����	5����	W�	W�	W�	W�	W�	W�	W��
�s�$4�d�
;�
;�	,�	,��G�I�I�E����S��Z�Z��-�-�-����W�W�1�-�-�-�u�R�a�R�y�9�9�9����W�W�2�.�.�.��6�6�6����W�W�2�.�.�.��b�c�c�
�;�;�;����W�W�3�/�/�/��7�7�7����W�W�1�-�-�-�r�2�2�2��"����W�W�Y�Y��.�.�.�!"�C�����W�W�Y�Y��b�q�b�	�2�2�2����W�W�1�-�-�-�u�R�a�R�y�9�9�9����W�W�2�.�.�.��b�c�c�
�;�;�;�!"�C�����W�W�Y�Y��+�+�+�!#�C�����W�W�Y�Y��+�+�+�#	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s��!>�>�#GI	�	I
�I
N)r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�rrr�r��s�������N�N�'�'�'����������������*�*�*�*�*�*�*�*�*�*�*�*�,�,�,�8,�,�,�6,�,�,�,�,rr�c��eZdZd�Zd�ZdS)�MiscTracebackCasesc�l����fd�}�fd��d��	|��n#tj��\}}}YnxYw|jjjj}|�t|j��d��tj|��|�t|j��d��dS)Nc������dSrdr�)�middles�r�outerz,MiscTracebackCases.test_clear.<locals>.outeres����F�H�H�H�H�Hrc������dSrdr�)�inners�rr z-MiscTracebackCases.test_clear.<locals>.middlegs����E�G�G�G�G�Grc��d}ddzdSr�r�)rs rr#z,MiscTracebackCases.test_clear.<locals>.inneris���A�
�a�C�C�C�CrrHr)	r�r�r&r$rQrRr"r,�clear_frames)r.r!r�r1r#�inner_framer#r s      @@r�
test_clearzMiscTracebackCases.test_cleards�����	�	�	�	�	�	�	�	�	�	�	�	�	�	.��E�G�G�G�G��	.�"�|�~�~��E�5�"�"�"�����j�(�0�9������[�1�2�2�A�6�6�6�	��r�"�"�"�	
����[�1�2�2�A�6�6�6�6�6s�
�7c��d�}|��}|jj}|�|dd�t|dzddft|dzddfg��|�t	|d	��d
��dS)Nc�(�tj��Srdrr�rrrz6MiscTracebackCases.test_extract_stack.<locals>.extract}s���*�,�,�,rr�rJrzresult = extract()rHrz return traceback.extract_stack()rrG)r�r�rQr�rR)r.rr�r�s    rrz%MiscTracebackCases.test_extract_stack|s���	-�	-�	-�������!�0����������
�v�a�x�!5�7K�L�
�v�a�x��,N�O�'�	�	�	�	
����V�A�Y����+�+�+�+�+rN)r�r�r�r'rr�rrrr_s2������
7�7�7�0	,�	,�	,�	,�	,rrc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�	TestFramec��tj��tjdt����t	jddd��}|�|d��|�t|��d��|�|t	jddd����|�|t|����|�t|��|��|�|j	��|�
|t����|�|t��dS)NrkrH�dummy)rkrHr-�%"""Test cases for traceback module""")
�	linecache�
clearcache�	lazycache�globalsr,�FrameSummaryrQ�tuple�assertIsNone�locals�assertNotEqual�objectr	�r.rks  r�test_basicszTestFrame.test_basics�s-���������C����+�+�+��"�3��7�3�3������F�	H�	H�	H�����q���F�	H�	H�	H�����I�2�3��7�C�C�D�D�D�����E�!�H�H�%�%�%�	
����q���1�%�%�%����!�(�#�#�#����A�v�x�x�(�(�(�����I�&�&�&�&�&rc�
�tj��tjdddd���}|�d|j��tjdt����|�d|j��dS)NrkrHr-F)�lookup_liner.)	r/r0r,r3rQ�_liner1r2�liner9s  r�test_lazy_lineszTestFrame.test_lazy_lines�s���������"�3��7��F�F�F������q�w�'�'�'���C����+�+�+����3�
�F�	�	�	�	�	rc�h�tjddd��}|�|jd��dS)Nrkr-�r,r3rQr>r9s  r�test_no_linezTestFrame.test_no_line�s4���"�3��g�6�6��������&�&�&�&�&rc�l�tjdddd���}|�d|j��dS)NrkrHr-r>�r>rAr9s  r�test_explicit_linezTestFrame.test_explicit_line�s9���"�3��7��@�@�@��������(�(�(�(�(rc�|�tjdddd���}|�t|��d��dS)NrkrHr-r>rDrG)r,r3rQrRr9s  r�test_lenzTestFrame.test_len�s=���"�3��7��@�@�@������Q����#�#�#�#�#rN)r�r�r�r:r?rBrErGr�rrr+r+�s_������'�'�'�"���'�'�'�)�)�)�$�$�$�$�$rr+c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�	TestStackc��d�}ttjd����}|��}|�t	|��t	|��z
d��|�|dd�|��dS)Nc�D�ttjd����Srd)�listr,�
walk_stackr�rr�deeperz)TestStack.test_walk_stack.<locals>.deeper�s���	�,�T�2�2�3�3�3rrH)rLr,rMrQrR)r.rN�s1�s2s    r�test_walk_stackzTestStack.test_walk_stack�s��	4�	4�	4�
�)�&�t�,�,�
-�
-��
�V�X�X������R���3�r�7�7�*�A�.�.�.�����A�B�B���$�$�$�$�$rc���	ddzn'#t$rtj��\}}}YnwxYwtt	j|����}|�t|��d��dSr�)r�r�r�rLr,�walk_tbrQrR)r.rr#r�s    r�test_walk_tbzTestStack.test_walk_tb�s|��	&�
�a�C�C�C���	&�	&�	&��|�~�~�H�A�q�"�"�"�	&������"�2�&�&�'�'������Q����#�#�#�#�#s��!,�,c��tj�tjd����}|�|tj��dSrd)r,�StackSummaryrrM�assertIsInstance�r.r�s  rrzTestStack.test_extract_stack�sB���"�*�*�9�+?��+E�+E�F�F�����a��!7�8�8�8�8�8rc��tj�tjd��d���}|�t|��d��dS)Nr�r
)r,rVrrMrQrRrXs  r�test_extract_stack_limitz"TestStack.test_extract_stack_limit�sJ���"�*�*�9�+?��+E�+E�Q�*�O�O������Q����#�#�#�#�#rc�z�tj��tjdt����t	dd��}t|dd��}tj�t|dfg��d���}tj��|�
|djd��dS)N�/foo.pyryrT��lookup_linesr�
import sys)r/r0�updatecacher2�	test_code�
test_framer,rVrrrQr>�r.�crkr�s    r�test_extract_stack_lookup_linesz)TestStack.test_extract_stack_lookup_lines�s����������i����3�3�3��i��*�*���q�$��%�%���"�*�*�4�!�Q���>�>��*�M�M�����������1���L�1�1�1�1�1rc��tj��tdd��}t|dd��}tj�t|dfg��d���}|�itj	��tj
dt����|�|djd��dS)Nr\ryrFr]rr_)
r/r0rarbr,rVrrrQ�cacher`r2r>rcs    r�*test_extract_stackup_deferred_lookup_linesz4TestStack.test_extract_stackup_deferred_lookup_lines�s���������i��*�*���q�$��%�%���"�*�*�4�!�Q���>�>��*�N�N������Y�_�-�-�-���i����3�3�3�����1���L�1�1�1�1�1rc��tj�dg��}|�dg|�����dS�N��foo.pyrH�fredr>z*  File "foo.py", line 1, in fred
    line
�r,rV�	from_listrQr�rXs  r�test_from_listzTestStack.test_from_list�sO���"�,�,�.K�-L�M�M�����
;�<�
�H�H�J�J�	�	�	�	�	rc���tj�dg��}d|d<tj�|��}|�dg|�����dS)Nrk)rlrJrmr>rz*  File "foo.py", line 2, in fred
    line
rn)r.r�rPs   r�test_from_list_edited_stackz%TestStack.test_from_list_edited_stack�sn���"�,�,�.K�-L�M�M��,��!��
�
#�
-�
-�a�
0�
0�����
;�<��I�I�K�K�	�	�	�	�	rc��tj�dg��}|�dg|�����dSrjrnrXs  r�test_format_smokezTestStack.test_format_smoke�sQ��
�"�,�,�.K�-L�M�M�����
;�<�
�H�H�J�J�	�	�	�	�	rc�N�tjdt����tdd��}t	|t��ddi��}t
j�t|dfg��d���}|�	|dj
dd	i��dS)
Nr\ry�	somethingrHrT��capture_localsr�1�r/r`r2rarbr,rVrrrQr6rcs    r�test_localszTestStack.test_locals�s�����i����3�3�3��i��*�*���q�'�)�)�k�1�%5�6�6���"�*�*�4�!�Q���>�>�$�*�O�O������1���{�C�&8�9�9�9�9�9rc�F�tjdt����tdd��}t	|t��ddi��}t
j�t|dfg����}|�	|dj
d��dS)Nr\ryrvrHrrrzrcs    r�test_no_localszTestStack.test_no_locals�s�����i����3�3�3��i��*�*���q�'�)�)�k�1�%5�6�6���"�*�*�4�!�Q���>�>�:�:������1���d�+�+�+�+�+rc��d�}|dd��}|�dt|jjdzfzg|�����dS)Nc�r�d}d}tj�tjd��dd���S)NrHrJT)rxr)r,rVrrM)�k�vr��bs    r�
some_innerz0TestStack.test_format_locals.<locals>.some_inner	sA���A��A��)�1�1��$�T�*�*�4�q�2�J�J�
Jrr_rGzw  File "%s", line %d, in some_inner
    return traceback.StackSummary.extract(
    a = 1
    b = 2
    k = 3
    v = 4
)rQr�r�r�r�)r.r�r�s   r�test_format_localszTestStack.test_format_locals	s{��	J�	J�	J�

�J�q�!��������
'�
�(;�(J�Q�(N�O�P�
��x�x�z�z�	�	�	�	�	rc����Gd�dtj����fd�}|��}|�|���t�d|jjdz��g��dS)Nc��eZdZd�ZdS)�>TestStack.test_custom_format_frame.<locals>.CustomStackSummaryc�$�|j�d|j��S)N�:)r_r�)r.�
frame_summarys  r�format_frame_summaryzSTestStack.test_custom_format_frame.<locals>.CustomStackSummary.format_frame_summary	s��'�0�I�I�=�3G�I�I�IrN)r�r�r�r�r�rr�CustomStackSummaryr�	s(������
J�
J�
J�
J�
Jrr�c�V����tjd��d���S)NrHr
)rr,rM)r�s�rr�z6TestStack.test_custom_format_frame.<locals>.some_inner	s0���%�-�-��$�T�*�*�!�.�5�5�
5rr�rH)r,rVrQr�r�r�r�)r.r�r�r�s   @r�test_custom_format_framez"TestStack.test_custom_format_frame	s����	J�	J�	J�	J�	J��!7�	J�	J�	J�	5�	5�	5�	5�	5�
�J�L�L�����
�H�H�J�J��
C�
C�:�.�=��A�
C�
C�D�	F�	F�	F�	F�	Frc���d���fd�}|��}Gd�dtj��}|�tj|d�������}|�t
|��d���jjdz}|�|ddt�d	|�d
���dS)Nc��ddzdSr�r�r�rrrkz)TestStack.test_dropping_frames.<locals>.f 	���
�a�C�C�C�Crc�R��	���dS#tj��cYSxYwrdr�r�s�rrkz)TestStack.test_dropping_frames.<locals>.g#	s2���
&���������
&��|�~�~�%�%�%���s�
�&c���eZdZ�fd�Z�xZS)�.TestStack.test_dropping_frames.<locals>.Skip_Gc�`��|jdkrdSt���|��S)Nrk)�name�superr�)r.r�r|s  �rr�zCTestStack.test_dropping_frames.<locals>.Skip_G.format_frame_summary,	s.��� �%��,�,��4��w�w�3�3�M�B�B�Br)r�r�r�r��
__classcell__�r|s@r�Skip_Gr�+	sA�������
C�
C�
C�
C�
C�
C�
C�
C�
Crr�rJrHrr{r�z, in f
    1/0
)
r,rVrrSr�rQrRr�r�r�)r.rkr�r��stack�lnorks      @r�test_dropping_frameszTestStack.test_dropping_frames	s���	�	�	�	&�	&�	&�	&�	&��1�3�3��	C�	C�	C�	C�	C�Y�+�	C�	C�	C������h�q�k�*�*�,�,�,2�F�H�H�	�	
����U���Q�'�'�'��j�'�!�+������!�H�?�x�?�?��?�?�?�	
�	
�	
�	
�	
rN)r�r�r�rQrTrrZrerhrprrrtr{r}r�r�r�r�rrrIrI�s�������%�%�%�$�$�$�9�9�9�$�$�$�2�2�2�2�2�2����������:�:�:�,�,�,���� F�F�F�
�
�
�
�
rrIc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Ze��d���ZdS)�TestTracebackExceptionc�j�	ddznh#t$r[tj��}tj|�}tj�tj|d����}YnwxYw|�d|j	��|�d|j
��|�d|j��|�||j��|�|d|j
��|�t|d��t|����dS)NrHrrJF�r�r�r�r,�TracebackExceptionrVrrSrQ�	__cause__�__context__�__suppress_context__r�r�r�)r.r�r0�expected_stacks    r�
test_smokez!TestTracebackException.test_smoke>	s ��	0�
�a�C�C�C���	0�	0�	0��|�~�~�H��.��9�C�&�3�;�;��!�(�1�+�.�.�0�0�N�N�N�	0����
	
����s�}�-�-�-�����s��/�/�/������ 8�9�9�9�������3�3�3�����!��c�l�3�3�3�����X�a�[�)�)�3�s�8�8�4�4�4�4�4s��A"A-�,A-c���d�}	|��n�#t$r�}tj��}tj�tj|d��ddd���|_tj�	|ddd���|_
Yd}~nd}~wwxYw|j}|j
}|�d|j��|�d|j
��|�d|j��|�||j��|�|d|j��|�t#|d��t#|����dS)Nc��ddzdSr�r�r�rrr�z7TestTracebackException.test_from_exception.<locals>.fooO	r�rrJrHFT)rr^rxr)r�r�r�r,rVrrSr�r��from_exceptionr0rQr�r�r�r�r�r�)r.r�r}r�r�r0s      r�test_from_exceptionz*TestTracebackException.test_from_exceptionM	s��	�	�	�	E��C�E�E�E�E���	E�	E�	E��|�~�~�H�"+�"8�"@�"@��!�(�1�+�.�.�a�e�#�#A�#%�#%�D��!�3�B�B����t�C�E�E�D�H�H�H�H�H�H�����	E�����,���h������s�}�-�-�-�����s��/�/�/������ 8�9�9�9�������3�3�3�����!��c�l�3�3�3�����X�a�[�)�)�3�s�8�8�4�4�4�4�4s�
�
B�A;B�Bc��		ddztj��}tj|�}t	d��}t	d��|�#tj��}tj|�}t	d��}t	d��|�xYw#t$r[tj��}tj|�}tj�tj|d����}YnwxYwtjt|d��}|�||j	��|�||j
��|�d|j��|�||j��|�|d|j
��|�t|d��t|����dS)NrHr�cause�uh ohrJT�r�r�r,r�r�rVrrSrQr�r�r�r�r�r�)r.�exc_info_context�exc_contextr�r�r0r��	exc_causes        rrDz!TestTracebackException.test_causec	s���	0�
4��!���#&�<�>�>� �'�:�<L�M��!�'�*�*����(�(�e�3��$'�<�>�>� �'�:�<L�M��!�'�*�*����(�(�e�3�3�3�3���	0�	0�	0��|�~�~�H��.��9�C�&�3�;�;��!�(�1�+�.�.�0�0�N�N�N�	0����
�0��E�4�H�H�	�����C�M�2�2�2�����c�o�6�6�6�����s�7�8�8�8�������3�3�3�����!��c�l�3�3�3�����X�a�[�)�)�3�s�8�8�4�4�4�4�4s%�A�AB�AB	�	B�A"C1�0C1c�2�		ddztj��}tj|�}t	d���#tj��}tj|�}t	d���xYw#t$r[tj��}tj|�}tj�tj|d����}YnwxYw|�d|j	��|�||j
��|�d|j��|�||j��|�|d|j
��|�t|d��t|����dS)NrHrr�rJFr��r.r�r�r�r0r�s      rrHz#TestTracebackException.test_contexty	s��	0�
)��!���#&�<�>�>� �'�:�<L�M����(�(�(��$'�<�>�>� �'�:�<L�M����(�(�(�(�(�(���	0�	0�	0��|�~�~�H��.��9�C�&�3�;�;��!�(�1�+�.�.�0�0�N�N�N�	0����
	
����s�}�-�-�-�����c�o�6�6�6������ 8�9�9�9�������3�3�3�����!��c�l�3�3�3�����X�a�[�)�)�3�s�8�8�4�4�4�4�4s!�8�0A,�1A)�)A,�,A"C�Cc����fd��	���|�d��n##t$rtj��}YnwxYwt	j|�}t
|�����}|�t|��tj
����|�td�|D����tj
��dz��|�d|d��dS)Nc�8��	ddzdS#���YdSxYwr�r�r�s�rrkz9TestTracebackException.test_long_context_chain.<locals>.f�	s/���
��!������
�����������s�
�zException not raisedc��g|]}d|v�|��	S)zZeroDivisionError:r�r�s  rr�zBTestTracebackException.test_long_context_chain.<locals>.<listcomp>�	s#��=�=�=�q�#7�1�#<�#<��#<�#<�#<rg�?z0RecursionError: maximum recursion depth exceededr�)r�r�r�r�r,r�rLr�rrRr�rU)r.r��te�resrks    @r�test_long_context_chainz.TestTracebackException.test_long_context_chain�	s.���	�	�	�	�	�	.�
�A�C�C�C�
�I�I�,�-�-�-�-���	&�	&�	&��|�~�~�H�H�H�	&����
�
)�8�
4���2�9�9�;�;����	
���3�s�8�8�S�%:�%<�%<�=�=�=�����=�=�C�=�=�=�>�>��!�#�#�c�)�	+�	+�	+�	
�
�
�>��B��	I�	I�	I�	I�	Is�
(�A�Ac�*�		ddztd��}td��|�#td��}td��|�xYw#t$r^tj��}tj|ddi�}tj�tj|d����}YnwxYwtjt|d��}|�||j	��|�d|j
��|�d|j��|�||j��|�|d|j
��|�t|d��t|����dS)NrHrr�r��compactTrJr�)r.r�r�r0r�r�s      r�test_compact_with_causez.TestTracebackException.test_compact_with_cause�	s���
	0�
4��!���!�'�*�*����(�(�e�3��"�'�*�*����(�(�e�3�3�3�3���	0�	0�	0��|�~�~�H��.��G�$�G�G�C�&�3�;�;��!�(�1�+�.�.�0�0�N�N�N�	0����
�0��E�4�H�H�	�����C�M�2�2�2�����s��/�/�/�����s�7�8�8�8�������3�3�3�����!��c�l�3�3�3�����X�a�[�)�)�3�s�8�8�4�4�4�4�4s!�'�A
� A�A
�
A%B2�1B2c�8�		ddztj��}tj|�}t	d���#tj��}tj|�}t	d���xYw#t$r^tj��}tj|ddi�}tj�tj|d����}YnwxYw|�d|j	��|�||j
��|�d|j��|�||j��|�|d|j
��|�t|d��t|����dS)NrHrr�r�TrJFr�r�s      r�test_compact_no_causez,TestTracebackException.test_compact_no_cause�	s���	0�
)��!���#&�<�>�>� �'�:�<L�M����(�(�(��$'�<�>�>� �'�:�<L�M����(�(�(�(�(�(���	0�	0�	0��|�~�~�H��.��G�$�G�G�C�&�3�;�;��!�(�1�+�.�.�0�0�N�N�N�	0����
	
����s�}�-�-�-�����c�o�6�6�6������ 8�9�9�9�������3�3�3�����!��c�l�3�3�3�����X�a�[�)�)�3�s�8�8�4�4�4�4�4s!�8�0A,�1A)�)A,�,A%C�Cc��	ddzn##t$rtj��}YnwxYwtj|d��}tj|d��}t	j|�}|�tj|d��|��|�tj|d��|��dS)NrHrrJ)r�r�r��getrefcountr,r�rQ)r.r��refcnt1�refcnt2r0s     r�/test_no_refs_to_exception_and_traceback_objectszFTestTracebackException.test_no_refs_to_exception_and_traceback_objects�	s���	&�
�a�C�C�C���	&�	&�	&��|�~�~�H�H�H�	&�����/�(�1�+�.�.���/�(�1�+�.�.���*�H�5��������!��5�5�w�?�?�?�������!��5�5�w�?�?�?�?�?s��(�(c�d�	ddzn?#t$r2tj��}tj|�}tj|�}YnwxYw|�||��|�||��|�|t����|�|t��dSr�)
r�r�r�r,r��assertIsNotrQr7r8r	)r.r�r0�exc2s    r�test_comparison_basicz,TestTracebackException.test_comparison_basic�	s���	;�
�a�C�C�C���	;�	;�	;��|�~�~�H��.��9�C��/��:�D�D�D�	;����	
����d�#�#�#�����d�#�#�#����C����*�*�*�����i�(�(�(�(�(s��9A�Ac�`��d���fd�}	|��n##t$rtj��}YnwxYwtj|�}tj|ddi�}tj|ddi�}|�||��|�||��tj|ddi�}|�||��tj|ddi�}tj|ddd	��}|�||��tj|dd
i�}	tj|d
dd	��}
|�|	|
��dS)Nc�.�	td���#�xYwrr�r�rr�	raise_exczKTestTracebackException.test_comparison_params_variations.<locals>.raise_exc�	s!��
� ��-�-�-��
����s��c�&��d\}}���dS)N)rHrJr�)r'rNr�s  �r�raise_with_localszSTestTracebackException.test_comparison_params_variations.<locals>.raise_with_locals�	s����D�A�q��I�K�K�K�K�KrrrrJrxTr�)rrxr�)r�r�r�r,r�rQr7)r.r�r�r0�exc1r��exc3�exc4�exc5�exc6�exc7r�s           @r�!test_comparison_params_variationsz8TestTracebackException.test_comparison_params_variations�	s����	�	�	�	�	�	�	�	�	&���������	&�	&�	&��|�~�~�H�H�H�	&�����*�H�5���+�X�@�R�@�@���+�X�?�Q�?�?������d�#�#�#����C��&�&�&��+�X�K�d�K�K�����C��&�&�&��+�X�@�R�@�@���+�X�R�PT�U�U�U������t�$�$�$��+�X�@�R�@�@���+�X�R�PT�U�U�U�����D�$�'�'�'�'�'s�
�6�6c��g}td��D]A}	ddz�	#|�tjt	j�����Y�?xYw|�|d|d��|�t|d�����t|d�������dSr)	r�rfr,r�r�r�rQrLr�)r.r�rs   r�/test_comparison_equivalent_exceptions_are_equalzFTestTracebackException.test_comparison_equivalent_exceptions_are_equal
s������q���	K�	K�A�
K��!�����
K����I�8�#�,�.�.�I�J�J�J�J�J��������a��$�q�'�*�*�*�����d�1�g�n�n�.�.�/�/��d�1�g�n�n�6F�6F�1G�1G�H�H�H�H�Hs	��4Ac��Gd�dt��}|d��}|d��}	||�#|$r$	|�#|$rtj��}YnwxYwYnwxYwtj|�}t|�����}|�d|d��|�d|d��dS)	Nc��eZdZd�ZdS)�CTestTracebackException.test_unhashable.<locals>.UnhashableExceptionc��dSrr�rs  rrzJTestTracebackException.test_unhashable.<locals>.UnhashableException.__eq__
rrNrr�rrrr�
r	rrr
rzUnhashableException: ex2
rJzUnhashableException: ex1
r)r�r�r�r,r�rLr�rU)r.rr
rr�r0�	formatteds       rrz&TestTracebackException.test_unhashable
s��	�	�	�	�	�)�	�	�	�"�!�%�(�(��!�!�%�(�(��	*��3���"�	*�	*�	*�
*��	��&�
*�
*�
*��<�>�>����
*������		*����
�*�H�5��������&�&�	��
�
�2�I�a�L�A�A�A��
�
�2�I�a�L�A�A�A�A�As*�.�A�6�A�A�A�A�Ac�<���fd��	�d��nm#t$r`tj��}tj|ddi�}tj�tj|d��d���}YnwxYw|�||j	��dS)Nc�6��|r�|dz
��dSddzdSr�r�)�n�recurses �rr�z2TestTracebackException.test_limit.<locals>.recurse)
s-����
����!��������!����rrrr�rJr
)
r�r�r�r,r�rVrrSrQr�)r.r�r0r�r�s    @r�
test_limitz!TestTracebackException.test_limit(
s����	�	�	�	�	�
	9��G�B�K�K�K�K���	9�	9�	9��|�~�~�H��.��B��B�B�C�&�3�;�;��!�(�1�+�.�.�a�<�9�9�N�N�N�	9����
	
������3�3�3�3�3s��A'A>�=A>c��tj��td��}tdd��}t	|dd��}t|ddd��}t
jt||d���}|�tj	i��tj
dt����|�|jdj
d��dS)	Nr�r\ryrrFr]r_)r/r0r�rarb�test_tbr,r�rQrgr`r2r�r>�r.r}rdrkr#r0s      r�test_lookup_linesz(TestTracebackException.test_lookup_lines7
s���������g�����i��*�*���q�$��%�%��
�Q��4��
#�
#���*�9�a��%�P�P�P�������"�-�-�-���i����3�3�3������1��*�L�9�9�9�9�9rc�v�tjdt����td��}t	dd��}t|t��ddd���}t
|ddd��}tjt||d	�
��}|�	|j
djddd���dS)
Nr\r�ryrH�string)rvrrrTrwryz'string'�r/r`r2r�rarbr�r,r�rQr�r6r�s      rr{z"TestTracebackException.test_localsB
s�����i����3�3�3��g�����i��*�*���q�'�)�)�1�x�%H�%H�I�I��
�Q��4��
#�
#���*��q�"�T�3�3�3������I�a�L��s�Z�!H�!H�	J�	J�	J�	J�	Jrc�j�tjdt����td��}t	dd��}t|t��ddi��}t
|ddd��}tjt||��}|�	|j
djd��dS)Nr\r�ryrvrHrrr�r�s      rr}z%TestTracebackException.test_no_localsM
s�����i����3�3�3��g�����i��*�*���q�'�)�)�k�1�%5�6�6��
�Q��4��
#�
#���*�9�a��<�<�������1��,�d�3�3�3�3�3rc���tjttd��d��}|�t	|�����dg��dS)N�havenzException: haven
)r,r�r�rQrLr�)r.r0s  r�test_traceback_headerz,TestTracebackException.test_traceback_headerV
sP���*�9�i��6H�6H�$�O�O������c�j�j�l�l�+�+�.B�-C�D�D�D�D�Drc��d�}tj|��ddi�}t��}|�|���|�|����d��dd�gd���dS)Nc�\�d}	|dzdS#t$rtj��cYSwxYw)N�r)r�r�r�)r's rrkz,TestTracebackException.test_print.<locals>.f^
sF���A�
&��!�������
&�
&�
&��|�~�~�%�%�%�
&���s��+�+rxTr�rLre)z    x/0z    ~^~z
    x = 12z#ZeroDivisionError: division by zeror)r,r�rr�rQr�r@)r.rkr0r�s    r�
test_printz!TestTracebackException.test_print\
s���	&�	&�	&��*�A�A�C�C�E��E�E�������	�	�v�	��������O�O���#�#�D�)�)�"�#�#�.�
�
�
�	�	�	�	�	rN)r�r�r�r�r�rDrHr�r�r�r�r�r�r�rr�r�r{r}r�r
r�r�rrr�r�<	sK������
5�
5�
5�5�5�5�,5�5�5�,5�5�5�(I�I�I�25�5�5�(5�5�5�(
@�
@�
@�
)�
)�
)�#(�#(�#(�JI�I�I�B�B�B�&
4�
4�
4�	:�	:�	:�	J�	J�	J�4�4�4�E�E�E�����������rr�c�H��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
�xZS)	�&TestTracebackException_ExceptionGroupsc�z��t�����|���|_dSrd)r��setUp�_get_exception_group�eg_info)r.r|s �rr�z,TestTracebackException_ExceptionGroups.setUpq
s+���
���
�
�����0�0�2�2����rc��d�}d�}|jj|_|jj|_			|��n#t$r}|}Yd}~nd}~wwxYw	|d��n#t$r}|}Yd}~nd}~wwxYwtd||g���#t
$r}|}Yd}~nd}~wwxYw	|d��n#t$r}|}Yd}~nd}~wwxYwtd||g���#t
$rt
j��cYSwxYw)Nc��ddzdSr�r�r�rrrkzFTestTracebackException_ExceptionGroups._get_exception_group.<locals>.fv
r�rc� �t|���rdr�)r�s rrkzFTestTracebackException_ExceptionGroups._get_exception_group.<locals>.gy
s���Q�-�-�rrr��r�)	r�r��lno_f�lno_gr�rEr�r�r�)r.rkrkr}r�r�r�r�s        rr�z;TestTracebackException_ExceptionGroups._get_exception_groupu
s���	�	�	�	 �	 �	 ��Z�.��
��Z�.��
�	"�
���A�C�C�C�C�� �����D�D�D�D�D�D�����������A�b�E�E�E�E�� �����D�D�D�D�D�D���������$�U�T�4�L�9�9�9��!�
�
�
������������
����
���"�������
�
�
������������
���� ���t��5�5�5���	"�	"�	"��<�>�>�!�!�!�	"���s��
7�B�
A
�A�B�A
�
B�A�B�
A3�'A.�)B�.A3�3B�
B�B�C�B�C�"B.�-C�.
C�8B?�:C�?C�C�C9�8C9c���|j}tj|�}tj�|d��}|�||��|�||��dSr�)r�r,r�r�r�rQ)r.r��teg1�teg2s    r�!test_exception_group_constructionzHTestTracebackException_ExceptionGroups.test_exception_group_construction�
sb���,���+�W�5���+�:�:�7�1�:�F�F������t�$�$�$�����t�$�$�$�$�$rc��tj|j�}d�|������d��}d�d��}|�||��dS)NrrLz'ExceptionGroup: eg2 (2 sub-exceptions)
)r,r�r�r�r-r@rQ)r.�tegr�r�s    r�*test_exception_group_format_exception_onlyzQTestTracebackException_ExceptionGroups.test_exception_group_format_exception_only�
sk���*�D�L�9���G�G�C�5�5�7�7�8�8�>�>�t�D�D�	�=�C�C�D�I�I������H�-�-�-�-�-rc�d�tj|j�}d�|������d��}|j}|j}gd�dt�d|dz�d��d�d	�d
�d�dt�d|d
z�d��d�d�d�d�dt�d|dz�d��d�dt�d|dz�d��d�d�d�d�d�dt�d|dz�d��d�dt�d|dz�d��d�d�d �d!�d"�dt�d|d#z�d��d$�dt�d|dz�d��d%�d&�d'���}|�	||��dS)(NrrLz6  + Exception Group Traceback (most recent call last):z  |   File "r�r]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()rHr~z      |     1/0z      |     ~^~z+      | ZeroDivisionError: division by zero�*      +---------------- 2 ----------------�
z      |     g(42)z, in gz      |     raise ValueError(v)z      | ValueError: 42�+      +------------------------------------�(    +---------------- 2 ----------------z(    | Traceback (most recent call last):rz    |     g(24)z    |     raise ValueError(v)z    | ValueError: 24�)    +------------------------------------)
r,r�r�r�r�r@r�r�r�rQ)r.rr�r�r�r�s      r�test_exception_group_formatzBTestTracebackException_ExceptionGroups.test_exception_group_format�
s����*�D�L�9���G�G�C�J�J�L�L�)�)�/�/��5�5�	��
���
��"�M�"�X�8�X�X�U�2�X�X�X�X�"�I�"�B�	"�
@�"�P�
"�[�X�Z�Z�u�R�x�Z�Z�Z�"�K�"�D�"�B�"�B�"�\�x�[�[��q��[�[�[�"�'�"�I�x�H�H��q��H�H�H�"�'�"� '�!"�"C�#"�$B�%"�&B�'"�(]�x�\�\��r��\�\�\�)"�*)�+"�,I�x�H�H��q��H�H�H�-"�.7�/"�0.�1"�2C�3"�4@�5"�6@�7"�8[�X�Z�Z�u�R�x�Z�Z�Z�9"�:'�;"�<G�X�F�F�u�Q�w�F�F�F�="�>5�?"�@,�A"�BA�C"�D�E"��H	
����H�-�-�-�-�-rc�>�g}g}td��D]$}|�t|�����%td��D]$}|�t|�����%t}|d|d|��|d|��g��}t
j�|d���}d�|�	�����
d	��}d
ddd
ddddddddd
dddddd�g}|�||��dS)Nr_rrCr�r�rJ)�max_group_widthrrLz)  | ExceptionGroup: eg (2 sub-exceptions)rz,    | ExceptionGroup: eg1 (3 sub-exceptions)rz      | ValueError: 0r�      | ValueError: 1z,      +---------------- ... ----------------z      | and 1 more exceptionr	r
z-    | ExceptionGroup: eg2 (10 sub-exceptions)z      | TypeError: 0z      | TypeError: 1z      | and 8 more exceptions)r�rfr+r�rEr,r�r�r�r�r@rQ)	r.�excs1�excs2rr�rCrr�r�s	         r�test_max_group_widthz;TestTracebackException_ExceptionGroups.test_max_group_width�
sE�������q���	(�	(�A��L�L��A���'�'�'�'��r���	'�	'�A��L�L��1���&�&�&�&�
��
�R��r�r�%��'�'���E�5�)9�)9�:�
;�
;���*�9�9�"�a�9�P�P���G�G�C�J�J�L�L�)�)�/�/��5�5�	�A�?�C�A�,�A�,�C�3�B�?�D�A�+�A�+�C�4�B��)��,	
����H�-�-�-�-�-rc��td��}td��D]0}tdt|��|t|��g��}�1tj�|d���}d�|������	d��}dd	d
ddd
ddddddddd�g}|�
||��dS)Nr�r_r0rJ)�max_group_depthrrLz*  | ExceptionGroup: exc (3 sub-exceptions)rz    | ValueError: -2r
z,    | ExceptionGroup: exc (3 sub-exceptions)rz      | ValueError: -1rz"      | ... (max_group_depth is 2)z*      +---------------- 3 ----------------rr	z(    +---------------- 3 ----------------z    | ValueError: 2r)r�r�rEr+r,r�r�r�r�r@rQ)r.r0rrr�r�s      r�test_max_group_depthz;TestTracebackException_ExceptionGroups.test_max_group_depth�
s����
�#�#���q���	N�	N�A� ���Q�B����j��m�m�(L�M�M�C�C��*�9�9�#�q�9�Q�Q���G�G�C�J�J�L�L�)�)�/�/��5�5�	�B�?�+�?�C�A�-�A�9�A�,�B�?�*�@��!��$	
����H�-�-�-�-�-rc�v�	|jd�#t$rtj��}YnwxYwt	d��D]$}	|d�#tj��}Y�"xYwtj|�}tj|�}tj|ddi�}tj|ddi�}|�||��|�||��|�||��|�	||��|�	|t����|�|t��dS)NrHr�ri,r_)r�rEr�r�r�r,r�r�rQr7r8r	)r.r�rr0r�r��nes       r�test_comparisonz6TestTracebackException_ExceptionGroups.test_comparisonsK��	&��,�q�/�!���	&�	&�	&��|�~�~�H�H�H�	&�����q���	*�	*�A�
*��q�k�!��
*��<�>�>��������*�H�5���+�X�6���+�X�A�S�A�A��
�
)�8�
=�1�
=�
=������d�#�#�#�����d�#�#�#�����d�#�#�#����C��$�$�$����C����*�*�*�����i�(�(�(�(�(s�
�/�/�A�A#)r�r�r�r�r�r�rrrrrr�r�s@rr�r�p
s��������3�3�3�3�3�*�*�*�@%�%�%�.�.�.�+.�+.�+.�Z$.�$.�$.�L.�.�.�8)�)�)�)�)�)�)rr�c��eZdZd�ZdS)�MiscTestc�H�t��}dh}tt��D][}|�d��s||vr�t	t|��}t	|dd��dkr|�|���\|�tj|��dS)N�
print_listrr�r,)�set�dirr,r��getattrrh�assertCountEqual�__all__)r.r��denylistr��
module_objects     r�test_allzMiscTest.test_all*s����5�5�� �>���	�N�N�	#�	#�D����s�#�#�
�t�x�'7�'7��#�I�t�4�4�M��}�l�D�9�9�[�H�H����T�"�"�"�����i�/��:�:�:�:�:rN)r�r�r�r$r�rrrr(s#������	;�	;�	;�	;�	;rr);r��collectionsr�iorr/r�r�r��unittestr��testr�test.supportrrrr	r
rr�test.support.os_helperr
r�test.support.script_helperrr�osrpr,�	functoolsrr�r�ra�co_positionsrbr��TestCaser)r�r�r�rAr
r7�escaper?r&r�r�r�rr+rIr�r�r�mainr�rr�<module>r2s��%�%�"�"�"�"�"�"�����������
�
�
�
�������������	�	�	�	�������/�/�/�/�/�/�/�/�/�/�/�/�/�/�/�/�/�/�2�1�1�1�1�1�1�1�N�N�N�N�N�N�N�N�	�	�	�	���������������"*�j�"8�"8�8�����b�
��J�v�
�y�9�:�:�	�7�7�	��
�Z��!D�!D�!D�
E�
E�
�
�*�T�K�K�K�
L�
L��U*�U*�U*�U*�U*�X�&�U*�U*�U*�p
����f+�f+�f+�f+�f+�x�'8�f+�f+���f+�R�����>�>�>�>�>�&F�>�>�����>�"q*�q*�q*�q*�q*�8�,�q*�q*�q*�j&��
&���R�Z�Z����=�)�)�)�)�9�2�9�_�+E�+E�+E�+E�F�H�H�
�S+�S+�S+�S+�S+�S+�S+�S+�l
�
�
�
�
�5�x�7H�
�
�
� �����4�h�6G����u,�u,�u,�u,�u,��"�u,�u,�u,�p&,�&,�&,�&,�&,��*�&,�&,�&,�R&$�&$�&$�&$�&$��!�&$�&$�&$�RH
�H
�H
�H
�H
��!�H
�H
�H
�Vq�q�q�q�q�X�.�q�q�q�h	u)�u)�u)�u)�u)�X�->�u)�u)�u)�p;�;�;�;�;�x� �;�;�;��z����H�M�O�O�O�O�O��r