Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_traceback.cpython-312.opt-1.pyc

�

'Μg�;�	��dZddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlZddlmZmZmZmZmZmZmZddlmZmZddlmZmZdd	l m!Z!ddl"Z"ddl#Z#ddl$Z$dd
l%m&Z&ddl'm(Z(e)dk(re)�d
�ndZ*edddg�Z+d�e+_,edgd��Z-edgd��Z.e(e/�j`dzZ1Gd�de
jd�Z3Gd�d�Z4Gd�d�Z5Gd�de5�Z6e�Gd �d!��Z7e�Gd"�d#e4e7e
jd��Z8ee�Gd$�d%e5e7e
jd���Z9ee�Gd&�d'e6e7e
jd���Z:Gd(�d)e
jd�Z;d*Z<d+Z=ej|d,ej~e<��d-ej~e=��d.��Z@Gd/�d0�ZAGd1�d2eAe
jd�ZBGd3�d4eAe
jd�ZCGd5�d6e
jd�ZDGd7�d8e
jd�ZEGd9�d:e
jd�ZFGd;�d<e
jd�ZGGd=�d>�ZHGd?�d@e
jd�ZIGdA�dBe
jd�ZJdZKGdC�dD�ZLGdE�dFe4eLe
jd�ZMeGdG�dHe5eLe
jd��ZNGdI�dJe
jd�ZOe)dk(re
j��yy)KzTest cases for traceback module�)�
namedtuple)�StringION)�support)�Error�captured_output�cpython_only�	ALWAYS_EQ�requires_debug_ranges�has_no_debug_ranges�requires_subprocess)�TESTFN�unlink)�assert_python_ok�assert_python_failure)�forget)�partial)�Path�__main__�.��code�co_filename�co_namec��tdg�S)N)�rrr)�iter)�_s �0/usr/local/lib/python3.12/test/test_traceback.py�<lambda>r!s��4���#7��frame)�f_code�	f_globals�f_locals�tb)�tb_frame�	tb_lineno�tb_next�tb_lastizlevenshtein_examples.jsonc��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�Zy)�TracebackCasesc�x�	|�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-s?��	=��F��;�<�<���	?��2�2�3��>�>��	?�s��9�4�9�9c��tddd�y)Nzdef fact(x):
	return x!
�?�exec��compile�r0s r�syntax_error_with_caretz&TracebackCases.syntax_error_with_caret5s���-�s�F�;r c��tddd�y)Nz1 +
r6r7r8r:s r�syntax_error_with_caret_2z(TracebackCases.syntax_error_with_caret_28s�����f�%r c��tddd�y)Nzf(x, y for y in range(30), z)r6r7r8r:s r�syntax_error_with_caret_rangez,TracebackCases.syntax_error_with_caret_range;s���/��f�=r c��tddd�y)Nz def spam():
  print(1)
 print(2)r6r7r8r:s r�syntax_error_bad_indentationz+TracebackCases.syntax_error_bad_indentation>s���4�c�6�Br c��tddd�y)NuPython = "Ṕýţĥòñ" +r6r7r8r:s r�!syntax_error_with_caret_non_asciiz0TracebackCases.syntax_error_with_caret_non_asciiAs���=�s�F�Kr c��tddd�y)Nz	 print(2)r6r7r8r:s r�syntax_error_bad_indentation2z,TracebackCases.syntax_error_bad_indentation2Ds����S�&�)r c��tddd�y)Nz
blech  (  r6r7r8r:s r� tokenizer_error_with_caret_rangez/TracebackCases.tokenizer_error_with_caret_rangeGs����c�6�*r c�X�|j|jt�}|jt	|�d�|j|dj
�dk(�|jd|d�|j|djd�|djd��|j|djd�d�|j|jt�}|jd|d�|j|djd�d�|j|djd�dz|djd��|j|djd�d�|j|jt�}|jd|d�|j|djd�d�|j|djd�dz|djd��|j|djd�d�|j|jt�}|jd|d�|j|djd�d�|j|djd	�|djd��|j|djd�t	d
��|j|jt�}|jd|d�|j|djd�d�|j|djd�|djd��|j|djd�d�y)N��z	return x!�^��!�
�+�yzy for y in range(30)�()r4r;�SyntaxError�assertEqual�len�
assertTrue�strip�assertIn�find�countr=rCr?rG�r0�errs  r�
test_caretzTracebackCases.test_caretJs����'�'��(D�(D�(3�5������S��1�%�����A�����+�5�6��
�
�c�3�q�6�"�����Q����S�)�3�q�6�;�;�s�+;�<�����Q����c�*�A�.��'�'��(F�(F�(3�5���
�
�c�3�q�6�"�����Q����d�+�Q�/�����Q����S�)�A�-�s�1�v�{�{�3�/?�@�����Q����c�*�A�.��'�'��(N�(N�(3�5���
�
�c�3�q�6�"�����Q����d�+�Q�/�����Q����S�)�A�-�s�1�v�{�{�3�/?�@�����Q����c�*�A�.��'�'��(J�(J�(3�5���
�
�c�3�q�6�"�����Q����d�+�Q�/�����Q����S�)�3�q�6�;�;�s�+;�<�����Q����c�*�C�0F�,G�H��'�'��(M�(M�(3�5���
�
�c�3�q�6�"�����Q����d�+�Q�/�����Q����S�)�3�q�6�;�;�s�+;�<�����Q����c�*�A�.r c���tdd�}tjt|�}|jt	|�d�|j|dj�d�y)N�error)zx.py�N�
bad syntax�rJr`)rRr.r/rSrTrV)r0r2r[s   r�test_nocaretzTracebackCases.test_nocaretosO���'�#C�D���-�-�k�3�?������S��1�%�����Q������6r c���	ttd�5}|jd�ddd�tddt�\}}}|j	�}|jt
|�d�|j|dd�|jd|d	�|j|d
d�|j|dd
�tt�y#1swY��xYw#tt�wxYw)N�wz
x = 1 / 0
�-X�no_debug_rangesrIr�"Traceback (most recent call last):sline 1, in <module>rJrL�
    x = 1 / 0ra�#ZeroDivisionError: division by zero)	�openr
�writer�
splitlinesrSrTrWr)r0�fr�stderr�liness     r�'test_no_caret_with_no_debug_ranges_flagz6TracebackCases.test_no_caret_with_no_debug_ranges_flagus���	��f�c�"�a����
�&�#�1��'��1�L�A�q�&��%�%�'�E����S��Z��+����U�1�X�'L�M��M�M�0�%��(�;����U�1�X�'7�8����U�1�X�'M�N��6�N�#�"��
�6�N�s"�C�C�BC�C�C�C-c�
�tjd�}	ttd�5}|j	|�ddd�tddt�\}}}|j
�}|jt|�d�|j|dd�|jd|d	�|j|d
d�|j|dd
�tt�y#1swY��xYw#tt�wxYw)Nz�
            import traceback
            try:
                x = 1 / 0
            except:
                traceback.print_exc()
            rdrerfrIrrgsline 4, in <module>rJrLrhrari)�textwrap�dedentrjr
rkrrlrSrTrWr)r0rrmrrnros      r�8test_no_caret_with_no_debug_ranges_flag_python_tracebackzGTracebackCases.test_no_caret_with_no_debug_ranges_flag_python_traceback�s������ ���	��f�c�"�a�����
�#�,��'��1�L�A�q�&��%�%�'�E����S��Z��+����U�1�X�'L�M��M�M�0�%��(�;����U�1�X�'7�8����U�1�X�'M�N��6�N�#�"��
�6�N�s"�C1�C%�BC1�%C.�*C1�1Dc�,�tjd�}	ttd�5}|j	|�ddd�tt�\}}}|j
|d�tt�y#1swY�>xYw#tt�wxYw)Na>
                import sys
                from weakref import ref

                sys.setrecursionlimit(15)

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

                try:
                    f()
                except RecursionError:
                    pass
        rdr)rrrsrjr
rkrrSr)r0rrm�rcrs     r�%test_recursion_error_during_tracebackz4TracebackCases.test_recursion_error_during_traceback�sr����� �
��	��f�c�"�a�����
�#�(��/�H�B��1����R��#��6�N�
#�"��
�6�N�s!�B�A6�-B�6A?�;B�Bc��|j|jt�}|jt	|�d�|j|dj�d�|j
d|d�|j|djd�dz|djd��|j|jt�}|jt	|�d�|j|dj�d�y)NrIrJzprint(2)rKrL�)ra)	r4rA�IndentationErrorrSrTrVrWrXrErZs  r�test_bad_indentationz#TracebackCases.test_bad_indentation�s����'�'��(I�(I�(8�:������S��1�%�����Q������4��
�
�c�3�q�6�"�����Q����S�)�A�-�s�1�v�{�{�3�/?�@��'�'��(J�(J�(8�:������S��1�%�����Q������4r c�~�t�}tj|j|�}|j	|dg�y)NzKeyboardInterrupt
)�KeyboardInterruptr.r/�	__class__rS)r0�e�lsts   r�test_base_exceptionz"TracebackCases.test_base_exception�s4������-�-�a�k�k�1�=������4�5�6r c�L�Gd�dt�}tj||��}|jt	|�d�d}|j
dvr
|j}n'dj|j
|jg�}|j|d|�d|�d	��y)
Nc��eZdZd�Zy)�?TracebackCases.test_format_exception_only_bad__str__.<locals>.Xc��ddzy�NrJr�r:s r�__str__zGTracebackCases.test_format_exception_only_bad__str__.<locals>.X.__str__��	���!�r N��__name__�
__module__�__qualname__r�r�r r�Xr�����
r r�rJ�<exception str() failed>)r�builtinsrr�: rN)�	Exceptionr.r/rSrTr�r��join�r0r�r[�	str_value�str_names     r�%test_format_exception_only_bad__str__z4TracebackCases.test_format_exception_only_bad__str__�s���	�	�	��-�-�a���5������S��1�%�.�	��<�<�3�3��~�~�H��x�x����q�~�~� >�?�H�����Q��x��!C�Dr c������	�ddl�	ddl��j�	jddg�j�j
��}|j
�\}}t|d�j�d�����	fd�}|dddd	�d
D]b}|dk(rd}n
|dk(rd}nd
}|dj|�||d�|dj|�||d�|dj|�||d��d|dd
dd�y)Nr�-cz&import sys; print(sys.stdout.encoding)��stdoutrn�asciic�X��	ttd|��5}|jdj||��ddd��j	�j
tg�j�j��}|j�\}}|j�
�j�}tt�|j�
d�}|j�
�}	dj|	�}
dj|	�}�jd|z|d	d
j|d	|���j|dj|
�dj|d|
��|d
}�j||k(dj||��y#1swY��VxYw#tt�wxYw)Nrd)�encodingz}{0}if 1:
                        import traceback;
                        raise RuntimeError('{1}')
                        r��backslashreplacezraise RuntimeError('{0}')zRuntimeError: {0}zline %srJz)Invalid line number: {0!r} instead of {1}rLz.Invalid traceback line: {0!r} instead of {1!r}raz-Invalid error message: {0!r} instead of {1!r})rjr
rk�format�Popen�
executable�PIPE�STDOUT�communicate�decoderlr�encoderWrU�endswith)�
firstlines�message�charset�lineno�output�processr�rn�encoded_message�
message_ascii�err_line�err_msg�actual_err_msg�output_encodingr0�
subprocess�syss             ����r�do_testz1TracebackCases.test_encoded_file.<locals>.do_test�s����
��&�#��8�F��L�L�"�#�F�:�w�7�9�9�%�*�*�C�N�N�F�+C�%�?�?�:�3D�3D�+�F��!(�!4�!4�!6��������7�B�B�D���v��&�n�n�_�-?�A�O�,�2�2�?�C�M�2�9�9�-�H�H�)�0�0��?�G��M�M�9�v�-��q�	�;�B�B��1�I�v�'�
(�
�O�O�F�1�I�.�.�x�8�@�G�G��1�I�x�)�
*�$�A�Y�N��O�O�N�g�5�?�F�F�"�G�-�
.�;9�8���v��s"�F�"F�A2F�F�F�F)r�foora)r�z
iso-8859-1�utf-8�GBKr�u丂儀uhé hoz# coding: {0}
rIz#!shebang
# coding: {0}
�z 	
# coding: {0}
zx=0
# coding: GBK
r�)
r�r�r�r�r�r�r��strrlr�)
r0r�r�rnr�r��textr�r�r�s
`      @@@r�test_encoded_filez TracebackCases.test_encoded_file�s���
	�
�"�"�C�N�N�D�$L�$N�*4�/�/�*4�*;�*;�#�=��!�,�,�.�����f�g�.�9�9�;�A�>��"	.�H	��E�7�A�&�>�G��'�!����E�!�%��!���%�,�,�W�5��'�1�
&��0�7�7��@��'�1�
&��,�3�3�G�<��'�1�
&�?�	�&�
�G�Q�?r c��tjd�}td|�\}}}gd�}|j|j	�|�y)Na
            import sys
            import traceback

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

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

            # Keep a reference in the module namespace to call the destructor
            # when the module is unloaded
            obj = PrintExceptionAtExit()
        r�)rgs&  File "<string>", line 8, in __init__ri)rrrsrrSrl)r0rrvr�rn�expecteds      r�test_print_traceback_at_exitz+TracebackCases.test_print_traceback_at_exit sN����� �
��,.�d�D�9���F�F�<��	
����*�*�,�h�7r c��t�}tjttd�d|��|j	|j�d�y�N�	projector��file�Exception: projector
�rr.�print_exceptionr�rS�getvalue�r0r�s  r�test_print_exceptionz#TracebackCases.test_print_exception?s?������!�!��y��-�t�&�	
�	
������*�,D�Er c��t�}tjtd�|��|j	|j�d�yr�r�r�s  r�test_print_exception_excz'TracebackCases.test_print_exception_excFs6������!�!�)�K�"8�v�F�������*�,D�Er c�.�td�}tj|�}|j|dg�|j	t
d�5tj|j|�ddd�|j	t
d�5tj|j|j��ddd�|j	td�5tj|��ddd�y#1swY��xYw#1swY�KxYw#1swYyxYw)Nr�r�zBoth or neither�r%zpositional-only)r2)	r�r.�format_exceptionrS�assertRaisesRegexr-r~�
__traceback__�	TypeError)r0rr�s   r�test_format_exception_excz(TracebackCases.test_format_exception_excKs����k�"���+�+�A�.������":�!;�<�
�
#�
#�J�0A�
B��&�&�q�{�{�A�6�C�
�
#�
#�J�0A�
B��&�&�q�{�{�q���G�C�
�
#�
#�I�/@�
A��&�&�1�-�B�
A�	C�
B��
B�
B��
A�
A�s$�
!C3�	,C?�D�3C<�?D�Dc�f�tjtd��}|j|dg�y)Nr�r�)r.r/r�rSr�s  r�test_format_exception_only_excz-TracebackCases.test_format_exception_only_excVs+���0�0��;�1G�H������":�!;�<r c��d}t�}tjd|��|j|j	�|�t�}tjddd|��|j|j	�|�t�}tj
d|��|j|j	�|�|jtjd�|�|jtjd�|g�|jtjddd�|g�|jtjd�|g�|jtjdd�|g�y)NzNoneType: None
r�)	rr.r�rSr��	print_exc�
format_excr�r/)r0�NONE_EXC_STRING�excfiles   r�test_exception_is_Nonez%TracebackCases.test_exception_is_NoneZs@��,���*���!�!�$�W�5�����)�)�+�_�=��*���!�!�$��d��A�����)�)�+�_�=��*�����D�w�/�����)�)�+�_�=�����-�-�d�3�_�E�����3�3�D�9�O�;L�M�����&�&�t�T�4�8�?�:K�	M�����+�+�D�1�O�3D�	F�����+�+�D�$�7�/�9J�	Lr c�l�|jttjtj
��d�|jttjtj��d�|jttjtj��d�y)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>))rSr��inspect�	signaturer.r�r�r/r:s r�test_signatureszTracebackCases.test_signaturesqs��������!�!�)�";�";�<�=�2�	4�
	
�����!�!�)�"<�"<�=�>��	�
	
�����!�!�)�"A�"A�B�C�(�	*r N)r�r�r�r4r;r=r?rArCrErGr\rbrprtrwr{r�r�rr�r�r�r�r�r�r�r�r�r rr+r+)s���=�<�&�>�C�L�*�+�#/�J7��&�0�25�7�E���C@��C@�J8�>F�F�
	.�=�L�.
*r r+c�F�eZdZdd�Zejj
dzZy)�"PurePythonExceptionFormattingMixinc��	|�|jd�y#tj�j�||cYSxYw)N�No exception thrown.)�failr.r�rl)r0�callable�slice_start�	slice_ends    r�
get_exceptionz0PurePythonExceptionFormattingMixin.get_exception�sA��	N��J��I�I�,�-��	N��'�'�)�4�4�6�{�9�M�M�s	��'ArLN�r���)r�r�r�r��__code__�co_firstlineno�
callable_liner�r rr�r��s ��N�"�*�*�9�9�A�=�Mr r�c�J�eZdZdZdd�Zej
jdzZy)�CAPIExceptionFormattingMixinrc��ddlm}	|�|jd�y#t$r_}t	d�5}|||j
�ddd�n#1swYnxYwj
�j�||cYd}~Sd}~wwxYw)Nr��exception_printr�rn)�	_testcapir�r�r�r�LEGACYr�rl)r0r�r�r�r�r�tbstderrs       rr�z*CAPIExceptionFormattingMixin.get_exception�sr��-�	K��J��I�I�,�-���	K� ��*�h���4�;�;�/�+�*�*���$�$�&�1�1�3�K�	�J�J��	K�s1�!�	B	�B�A�		B�A	�'B�>B	�B	raNr�)r�r�r�r�r�r�r�r�r�r rr�r��s%��
�F�K�"�*�*�9�9�A�=�Mr r�c��eZdZdZy)�"CAPIExceptionFormattingLegacyMixinrJN)r�r�r�r�r�r rr�r��s��
�Fr r�c���eZdZdZd�Zd�Zd�Zd�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!y )!�#TracebackErrorLocationCaretTestBasezF
    Tests for printing code error expressions as part of PEP 657
    c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��td��)Nzbasic caret tests�r-r�r rrmz?TracebackErrorLocationCaretTestBase.test_basic_caret.<locals>.f�s��%�&9�:�:r �+Traceback (most recent call last):
  File "�", line �*, in get_exception
    callable()
  File "rJzm, in f
    if True: raise ValueError("basic caret tests")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
�r�r��__file__r�r�rSrl)r0rm�lineno_f�
expected_f�result_liness     r�test_basic_caretz4TracebackErrorLocationCaretTestBase.test_basic_caret�s��	;��:�:�,�,��
��j���);�);�(<�=��j���!���5C�
C�	��)�)�!�,������z�'<�'<�'>�?r c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��td��)NuĤellö Wörldr�r�r r�f_with_unicodezRTracebackErrorLocationCaretTestBase.test_line_with_unicode.<locals>.f_with_unicode�s��%�&6�7�7r rrrrJuq, in f_with_unicode
    if True: raise ValueError("Ĥellö Wörld")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r)r0rrrrs     r�test_line_with_unicodez:TracebackErrorLocationCaretTestBase.test_line_with_unicode�s��	8�"�*�*�9�9��
��j���);�);�(<�=��j���!���5=�
=�	��)�)�.�9������z�'<�'<�'>�?r c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc�$�dtdtfd�}y)N�a�returnc��y)Nrr�)rs rr�zcTracebackErrorLocationCaretTestBase.test_caret_in_type_annotation.<locals>.f_with_type.<locals>.foo�s��r )�THIS_DOES_NOT_EXIST�int)r�s r�f_with_typezVTracebackErrorLocationCaretTestBase.test_caret_in_type_annotation.<locals>.f_with_type�s��
�*�
��
r rrrrJza, in f_with_type
    def foo(a: THIS_DOES_NOT_EXIST ) -> int:
               ^^^^^^^^^^^^^^^^^^^
r)r0rrrrs     r�test_caret_in_type_annotationzATracebackErrorLocationCaretTestBase.test_caret_in_type_annotation�s��	��'�'�6�6��
��j���);�);�(<�=��j���!���53�
3�	��)�)�+�6������z�'<�'<�'>�?r c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��td��)Nzerror over multiple linesr�r�r r�f_with_multilinez]TracebackErrorLocationCaretTestBase.test_caret_multiline_expression.<locals>.f_with_multiline�s��%�+��r rrrrJzS, in f_with_multiline
    if True: raise ValueError(
             ^^^^^^^^^^^^^^^^^r�r0rrrrs     r�test_caret_multiline_expressionzCTracebackErrorLocationCaretTestBase.test_caret_multiline_expression�s���	�
$�,�,�;�;��
��j���);�);�(<�=��j���!���5-�
-�	��)�)�*:�;������z�'<�'<�'>�?r c	���tjd���fd�}|jj}dt�d|j
�dt�d|dz�d�	}|j
|�}|j||j��y)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)Nr6r7r8)rs�rrzjTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_syntax_error.<locals>.f_with_multiline�s����4��f�-�-r rrrrLz�, in f_with_multiline
    return compile(code, "?", "exec")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "?", line 7
    foo(a, z
           ^)	rrrsr�r�rr�r�rSrl)r0rrrrrs     @r�,test_caret_multiline_expression_syntax_errorzPTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_syntax_error�s�������	 �	
��	.�$�,�,�;�;��
��j���);�);�(<�=��j���!���5�
�	��)�)�*:�;������z�'<�'<�'>�?r c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��dddzzS�NrLrJrr�r�r rrzdTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_bin_op.<locals>.f_with_multilines���A����
r rrrrLz-, in f_with_multiline
    2 + 1 /
        ^^^rrs     r�&test_caret_multiline_expression_bin_opzJTracebackErrorLocationCaretTestBase.test_caret_multiline_expression_bin_ops���	�$�,�,�;�;��
��j���);�);�(<�=��j���!���5�
�	��)�)�*:�;������z�'<�'<�'>�?r c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��d}d|dzzdzS�N��
r�r���divisors r�f_with_binary_operatorzcTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators.<locals>.f_with_binary_operator%s���G���!��#�b�(�(r rrrrLzY, in f_with_binary_operator
    return 10 + divisor / 0 + 30
                ~~~~~~~~^~~
r�r0r*r�expected_errorrs     r�test_caret_for_binary_operatorszCTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators$s���	)�*�2�2�A�A��
��j���);�);�(<�=��j���!���5,�
,�	��)�)�*@�A������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��d}d|dzzdzSr$r�)�áóís rr*zpTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_unicode.<locals>.f_with_binary_operator6s���F����
�?�R�'�'r rrrrLuT, in f_with_binary_operator
    return 10 + áóí / 0 + 30
                ~~~~^~~
rr+s     r�,test_caret_for_binary_operators_with_unicodezPTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_unicode5s���	(�*�2�2�A�A��
��j���);�);�(<�=��j���!���5(�
(�	��)�)�*@�A������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��d}d|dzzdzSr$r�r(s rr*zlTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_two_char.<locals>.f_with_binary_operatorGs���G���1��$�r�)�)r rrrrLz[, in f_with_binary_operator
    return 10 + divisor // 0 + 30
                ~~~~~~~~^^~~
rr+s     r�(test_caret_for_binary_operators_two_charzLTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_two_charFs���	*�*�2�2�A�A��
��j���);�);�(<�=��j���!���5-�
-�	��)�)�*@�A������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��d}d}||zS)NrJrr�)r�bs  rr*zTracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_spaces_and_parenthesis.<locals>.f_with_binary_operatorXs���A��A��q�=� r rrrrazN, in f_with_binary_operator
    return ( a   )   + b
           ~~~~~~~~~~^~~
rr+s     r�;test_caret_for_binary_operators_with_spaces_and_parenthesisz_TracebackErrorLocationCaretTestBase.test_caret_for_binary_operators_with_spaces_and_parenthesisWs���	!�
*�2�2�A�A��
��j���);�);�(<�=��j���!���5)�
)�	��)�)�*@�A������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc�$�dddii}|dddS�N�xrP�zr���	some_dicts r�f_with_subscriptzVTracebackErrorLocationCaretTestBase.test_caret_for_subscript.<locals>.f_with_subscriptjs$���s�D�k�*�I��S�>�#�&�s�+�+r rrrrLz^, in f_with_subscript
    return some_dict['x']['y']['z']
           ~~~~~~~~~~~~~~~~~~~^^^^^
r�r0r@rr,rs     r�test_caret_for_subscriptz<TracebackErrorLocationCaretTestBase.test_caret_for_subscriptis���	,�$�,�,�;�;��
��j���);�);�(<�=��j���!���54�
4�	��)�)�*:�;������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc�2�dddddiiii}|ddddS)N�ó�á�í�thetarJ�betar�r>s rr@z^TracebackErrorLocationCaretTestBase.test_caret_for_subscript_unicode.<locals>.f_with_subscript{s3����t�g�q�\�&:�;�<�I��T�?�4�(��.�v�6�6r rrrrLuq, in f_with_subscript
    return some_dict['ó']['á']['í']['beta']
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
rrAs     r� test_caret_for_subscript_unicodezDTracebackErrorLocationCaretTestBase.test_caret_for_subscript_unicodezs���	7�$�,�,�;�;��
��j���);�);�(<�=��j���!���5<�
<�	��)�)�*:�;������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��g}dx}}|||zS�NrJr�)rr7�cs   rr*zxTracebackErrorLocationCaretTestBase.test_caret_for_subscript_with_spaces_and_parenthesis.<locals>.f_with_binary_operator�s���A��I�A���a�?�Q�&�&r rrrrazV, in f_with_binary_operator
    return b     [    a  ] + c
           ~~~~~~^^^^^^^^^
rr+s     r�4test_caret_for_subscript_with_spaces_and_parenthesiszXTracebackErrorLocationCaretTestBase.test_caret_for_subscript_with_spaces_and_parenthesis�s���	'�
*�2�2�A�A��
��j���);�);�(<�=��j���!���5+�
+�	��)�)�*@�A������~�'@�'@�'B�Cr c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc��d}y�Nrar�)�tests r�f_assertzUTracebackErrorLocationCaretTestBase.test_caret_for_failed_assertion.<locals>.f_assert�s���Dr rrrrLzb, in f_assert
    assert test == 1 and test == 2, "Bug found?"
           ^^^^^^^^^^^^^^^^^^^^^^^
r)r0rTrr,rs     r�test_caret_for_failed_assertionzCTracebackErrorLocationCaretTestBase.test_caret_for_failed_assertion�s��	9��$�$�3�3��
��j���);�);�(<�=��j���!���53�
3�	��)�)�(�3������~�'@�'@�'B�Cr c	��tdtd�}ttd�5}|jd�ddd�|j	t
t�t
t|�}|j|�}|j}dt�d|j�dt�d|�d�	}|j||j��y#1swY��xYw)	Nz1 / 0 / 1 / 2
r7rdz1 $ 0 / 1 / 2
rrrz*, in <module>
    1 $ 0 / 1 / 2
    ^^^^^
)r9r
rjrk�
addCleanuprrr7r�r�rr�rSrl)r0�bytecoder�r1rrr,s       r�/test_traceback_specialization_with_syntax_errorzSTracebackErrorLocationCaretTestBase.test_traceback_specialization_with_syntax_error�s����,�f�f�=��
�&�#�
�$��J�J�(�)��	
�����'��t�X�&���)�)�$�/���*�*��
��j���);�);�(<�=��h�h�x�j�1�
�	�	
����~�'@�'@�'B�C�#�
�s�C�Cc���d}t|td�}ttd�5}|j|�ddd�|j	t
t�t
t|�}|j|�}|j}dt�d|j�dt�d|�d|�dd	td
�zdz�d�
}|j||j��y#1swY��xYw)
Na	if True: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar7rdrrrz, in <module>
    z
    � z	if True: a^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rN)r9r
rjrkrWrrr7r�r�rr�rTrSrl)r0�sourcerXr�r1rrr,s        r�test_traceback_very_long_linezATracebackErrorLocationCaretTestBase.test_traceback_very_long_line�s���(���6�6�6�2��
�&�#�
�$��J�J�v��������'��t�X�&���)�)�$�/���*�*��
��j���);�);�(<�=��h�h�x�j�1��(���s�;�'�'�'�1�2�"�
6�	�	
����~�'@�'@�'B�C�!�
�s�C�C%c	���d�}|jj}dt�d|j�dt�d|dz�d�	}|j	|�}|j||j
��y)Nc�&�dddii}|dddyr;r�r>s rr@z]TracebackErrorLocationCaretTestBase.test_secondary_caret_not_elided.<locals>.f_with_subscript�s!���s�D�k�*�I��c�N�3���$r rrrrLzP, in f_with_subscript
    some_dict['x']['y']['z']
    ~~~~~~~~~~~~~~~~~~~^^^^^
rrAs     r�test_secondary_caret_not_elidedzCTracebackErrorLocationCaretTestBase.test_secondary_caret_not_elided�s���	%�$�,�,�;�;��
��j���);�);�(<�=��j���!���5-�
-�	��)�)�*:�;������~�'@�'@�'B�Cr c	���d�}dt�d|j�dt�d|jjdz�d�	}|j	|�}|j||j
��y)Nc�B�tdtd�td�g���N�egrJrL��ExceptionGroupr-r�r�r rr2zKTracebackErrorLocationCaretTestBase.test_caret_exception_group.<locals>.exc�s��)�$��A��	�!��0M�N�Nr �C  + Exception Group Traceback (most recent call last):
  |   File "rz2, in get_exception
  |     callable()
  |   File "rJaB, in exc
  |     if True: raise ExceptionGroup("eg", [ValueError(1), TypeError(2)])
  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  | ExceptionGroup: eg (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
)rr�r�r�r�rSrl)r0r2r,rs    r�test_caret_exception_groupz>TracebackErrorLocationCaretTestBase.test_caret_exception_group�s{��
	O��$�:�X�d�.@�.@�-A�B�$�:�X�c�l�l�.I�.I�A�.M�-N�O$�
%�	��)�)�#�.������~�'@�'@�'B�Cr c�p�|j|�}|d}|j|j�|�y)Nr�)r�rS�lstrip)r0r1�expected_specializationr�specialization_lines     r�assertSpecializedz5TracebackErrorLocationCaretTestBase.assertSpecializeds8���)�)�$�/��*�2�.�����,�3�3�5�7N�Or c�>�|jd�d�|jd�d�|jd�d�|jd�d�|jd�d�|jd	�d�|jd
�d�|jd�d�|jd
�d�|jd�d�|jd�d�|jd�d�|jd�d�|jd�d�|jd�d�y)Nc��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>
s��q��sr z~^~c��ddzdzS�NrJrrar�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>s��q��s�1�ur c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>���q�1�ur z~~^~~c��ddzdzSrqr�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>s��q�1�u�q�yr c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>���q�!�tr z~^~~c��ddzdzSrqr�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>s��q�!�t�A�vr c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>s��q�q�yr z	~~~~~^~~~c��ddzdzS)NrJrr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>s��q�q�y�Q�r c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>rvr z~~^~c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>rvr z~^^~c��ddzdzS�NrJrrIr�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>s��q�!�t�Q�wr c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda> s��q�A�vr z~~^^~~c��ddzdzSr}r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>"s��q�A�v��{r c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>$rsr z~~^^~c��ddzSr�r�r�r rrzTTracebackErrorLocationCaretTestBase.test_specialization_variations.<locals>.<lambda>&rsr z~^^~~)rmr:s r�test_specialization_variationszBTracebackErrorLocationCaretTestBase.test_specialization_variations	s#�����{�&+�	-����}�&+�	-����}�&-�	/����0�&-�	/����|�&,�	.����~�&,�	.����0�&1�	3����6�&1�	3����|�&,�	.����|�&,�	.�����&,�	.����~�&.�	0����2�&.�	0����}�&-�	/����}�&-�	/r c
�8��	�d��d��	��	fd�}|j|�}|jj}�jj}dt�d|j�dt�d|dz�dt�d|dz�d	�
}|j||j
����	fd
�}|j|�}|jj}dt�d|j�dt�d|dz�dt�d|dz�d	�
}|j||j
��y)Nc��t��N)r��r1s r�	dec_errorz`TracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.dec_error*s���Or c��|Sr�r�r�s r�dec_finez_TracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.dec_fine,s���Kr c� ����d���}y)Nc��yr�r�r�r r�gzkTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs.<locals>.g/s��r r�)r�r�r�s ��r�	applydecsz`TracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs.s���
�
����r rrrrJz5, in applydecs
    @dec_error
     ^^^^^^^^^
  File "z#, in dec_error
    raise TypeError
c�.����Gd�d���}y)Nc��eZdZy)�qTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs_class.<locals>.AN)r�r�r�r�r r�Ar�Bs��r r�r�)r�r�r�s ��r�applydecs_classzfTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct.<locals>.applydecs_classAs���
�
��M���r z;, in applydecs_class
    @dec_error
     ^^^^^^^^^
  File ")r�r�r�rr�rSrl)
r0r�r�lineno_applydescs�lineno_dec_errorr,r��lineno_applydescs_classr�r�s
        @@r�)test_decorator_application_lineno_correctzMTracebackErrorLocationCaretTestBase.test_decorator_application_lineno_correct)sU���	�	�	��)�)�)�4��%�.�.�=�=��$�-�-�<�<��
��j���);�);�(<�=��j��):�Q�)>�(?�@� �j��)9�A�)=�(>�?$�

$�	�	
����~�'@�'@�'B�C�	��)�)�/�:��"1�":�":�"I�"I��
��j���);�);�(<�=��j��)@�1�)D�(E�F� �j��)9�A�)=�(>�?$�

$�	�	
����~�'@�'@�'B�Cr c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|j||�y)Nc�$�dj�yr���methodr�r rrmzKTracebackErrorLocationCaretTestBase.test_multiline_method_call_a.<locals>.fTs��
���r �"Traceback (most recent call last):�  File "r�, in get_exception�    callable()rL�, in fz    .methodz     ^^^^^^�r�rr�r�r�rS�r0rm�actualr�s    r�test_multiline_method_call_az@TracebackErrorLocationCaretTestBase.test_multiline_method_call_aSsz��	��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P���

��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	g}|j||�y)
Nc�$�dj�yr�r�r�r rrmzKTracebackErrorLocationCaretTestBase.test_multiline_method_call_b.<locals>.fds��
���r r�r�rr�r�rLr�z
    methodr�r�s    r�test_multiline_method_call_bz@TracebackErrorLocationCaretTestBase.test_multiline_method_call_bcsw��	��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P��
��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|j||�y)Nc�$�dj�yr�r�r�r rrmzKTracebackErrorLocationCaretTestBase.test_multiline_method_call_c.<locals>.fss��
��&�r r�r�rr�r�rLr�z    . methodz      ^^^^^^r�r�s    r�test_multiline_method_call_cz@TracebackErrorLocationCaretTestBase.test_multiline_method_call_crsz��	��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P���

��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	g}|j||�y)
Nc��tyr���widthr�r rrmzhTracebackErrorLocationCaretTestBase.test_wide_characters_unicode_with_problematic_byte_offset.<locals>.f�s��r r�r�rr�r�rJr�u    widthr�r�s    r�9test_wide_characters_unicode_with_problematic_byte_offsetz]TracebackErrorLocationCaretTestBase.test_wide_characters_unicode_with_problematic_byte_offset�sw��	��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P�!�
��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	g}|j||�y)
Nc��d}t|��rMr�r�s rrmz[TracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_middle.<locals>.f�s���O��_�-�-r r�r�rr�r�rLr�u%    raise ValueError(width)r�r�s    r�,test_byte_offset_with_wide_characters_middlezPTracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_middle�sw��	.��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P�3�
��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|j||�y)Nc�0�d}d}td||��yr���print)�www�ths  rrmzITracebackErrorLocationCaretTestBase.test_byte_offset_multiline.<locals>.f�s ���I��F��!�Y���
r r�r�rr�r�rIr�u    print(1, www(z             ^^^^^^^r�r�s    r�test_byte_offset_multilinez>TracebackErrorLocationCaretTestBase.test_byte_offset_multiline�sz��	��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P�%�"�

��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|j||�y)Nc��d}d}||zSr�r�)�说明说明�şçöğıĤellös  rrmzcTracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_term_highlight.<locals>.f�s���L� !���"3�3�3r r�r�rr�r�rar�u+    return 说明说明 / şçöğıĤellöz            ~~~~~~~~~^~~~~~~~~~~~r�r�s    r�4test_byte_offset_with_wide_characters_term_highlightzXTracebackErrorLocationCaretTestBase.test_byte_offset_with_wide_characters_term_highlight�sz��	4�
�#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P�9�.�

��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|j||�y)Nc�&�dtdd�zdzS)Nu✨🐍u📗🚛�🐍)�func_说明说明r�r rrmzZTracebackErrorLocationCaretTestBase.test_byte_offset_with_emojis_term_highlight.<locals>.f�s$���0��� ��$�%�
%r r�r�rr�r�rJr�u4    return "✨🐍" + func_说明说明("📗🚛",z!                    ^^^^^^^^^^^^^r�r�s    r�+test_byte_offset_with_emojis_term_highlightzOTracebackErrorLocationCaretTestBase.test_byte_offset_with_emojis_term_highlight�sz��	%��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P�B�/�

��	
�����*r c���d�}|j|�}ddt�d|j�d�ddt�d|jjdz�d�d	d
g}|j||�y)Nc�4�ddddiii}|dddddS)Nu
✨🚛✨u说明u🐍🐍🐍r�u🐍🐍r�)�my_dcts rrmzTTracebackErrorLocationCaretTestBase.test_byte_offset_wide_chars_subscript.<locals>.f�s?����&�����F��,�'��1�&�9�(�C�J�O�Or r�r�rr�r��r�uG    return my_dct["✨🚛✨"]["说明"]["🐍"]["说明"]["🐍🐍"]z)           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^r�r�s    r�%test_byte_offset_wide_chars_subscriptzITracebackErrorLocationCaretTestBase.test_byte_offset_wide_chars_subscript�s{��	P��#�#�A�&��0���z��4�+=�+=�*>�>P�Q����z��1�:�:�+D�+D�q�+H�*I��P�U�7�

��	
�����*r N)"r�r�r��__doc__rrrrrr!r-r1r4r8rBrJrOrUrYr]r`rhrmr�r�r�r�r�r�r�r�r�r�r�r�r rr�r��s����@�$@�$@�"@�(!@�F@�*D�"D�"D�"D�$D�"D�"D�$D�"D�,D�,D�$D�0P�
/�@(D�T+� 
+�+� +�
+�+�&+�"+� +r r�c��eZdZdZy)�"PurePythonTracebackErrorCaretTests�t
    Same set of tests as above using the pure Python implementation of
    traceback printing in traceback.py.
    N�r�r�r�r�r�r rr�r��s��r r�c��eZdZdZy)�CPythonTracebackErrorCaretTests�S
    Same set of tests as above but with Python's internal traceback printing.
    Nr�r�r rr�r�����r r�c��eZdZdZy)�%CPythonTracebackLegacyErrorCaretTestszZ
    Same set of tests as above but with Python's legacy internal traceback printing.
    Nr�r�r rr�r�r�r r�c���eZdZd�Zedd��Zd�Zd�Zd�Zd�Z	d�Z
e�d	��Zee�d
���Z
d�Zed��Zd
�Zed��Zd�Zed��Zd�Zy)�TracebackFormatTestsc��td��)N�blah)�KeyErrorr:s r�some_exceptionz#TracebackFormatTests.some_exceptions
���v��r Nc��ddlm}	|j�td��#t$�r4}|j
}|�||j�ddjtj|��z}t�}|||�|j�}td�5}tj|�ddd�n#1swYnxYwt�}	tj||	��td�5}
tj�ddd�n#1swYnxYwtj�}t�}tj|��Yd}~nd}~wwxYw|j!||�|j!j�|	j��|j!
j�|j��|j!||j��|j#�}
|
d}|j!t%|
�d�|
d	|
d
}}|j'|j)d��|j'|j)d��|j'|j)d
��y)Nr)�traceback_printz&unable to create test traceback stringz#Traceback (most recent call last):
rrnr�r����r��	Traceback�  Filez	    raise)r�r�r�rr�r�r(r�r.�	format_tbrr�r�print_tbr�r�rSrlrTrU�
startswith)r0�cleanup_funcr�rr%�
traceback_fmt�file_�
python_fmtr��tbfile�	excstderr�excfmtr��tb_lines�banner�location�source_lines                 r�check_traceback_formatz+TracebackFormatTests.check_traceback_formats��-�	B����!�,�@�A�A��+�	.����B��'��R�Z�Z�(�B��G�G�I�$7�$7��$;�<�=�M��J�E��B��&��.�.�*�J� ��*�h��"�"�2�&�+�*�*���Z�F����r��/� ��*�i��#�#�%�+�*�*���)�)�+�F��j�G����W�-�-��'	.��0	
����
�3�����*�*�,�f�o�o�.?�@�����+�+�-�w�/?�/?�/A�B������!1�!1�!3�4��(�(�*���!�������X���*� (���h�r�l�+������)�)�+�6�7�����+�+�H�5�6�����.�.�{�;�<sE�#�
E!�A5E�"C�8	E�C
	�3E�9D�	E�D 	�;E�E!c�$�|j�yr��r�r:s r�test_traceback_formatz*TracebackFormatTests.test_traceback_format@s���#�#�%r c�,�d�}|j|�y)Nc�8�|jj�yr�)r&�clearr�s r�
cleanup_tbzRTracebackFormatTests.test_traceback_format_with_cleared_frames.<locals>.cleanup_tbEs���K�K���r r�)r0r�s  r�)test_traceback_format_with_cleared_framesz>TracebackFormatTests.test_traceback_format_with_cleared_framesCs��	 ��#�#�J�/r c��td�5}tjtjd��ddd�t�}tjtjd�|��|j
j�|j��tjtjd��}|j
|j�dj|��y#1swY��xYw)NrnrJr�r)
rr.�print_stackr��	_getframerrSr��format_stackr�)r0�ststderr�stfile�stfmts    r�test_stack_formatz&TracebackFormatTests.test_stack_formatIs����X�
&�(��!�!�#�-�-��"2�3�'�������c�m�m�A�.�V�<�����*�*�,�f�o�o�.?�@��&�&�s�}�}�Q�'7�8������*�*�,�b�g�g�e�n�=�'�
&�s�)C7�7Dc	��d�}td�5}|�ddd�|jj}|jj	�j�dddt|dzfzddt|dzfzd	g�y#1swY�mxYw)
Nc�,�tj�yr�)r.r�r�r r�prnz2TracebackFormatTests.test_print_stack.<locals>.prnWs���!�!�#r rn���z)  File "%s", line %d, in test_print_stackraz	    prn()z  File "%s", line %d, in prnrJz    traceback.print_stack())rr�r�rSr�rlr)r0r�rnr�s    r�test_print_stackz%TracebackFormatTests.test_print_stackVs���	$�
�X�
&�&��E�'����,�,��������*�5�5�7���<�7�8�V�A�X�:N�N��*�h��q��-A�A�)�	?
�	�'�
&�s�B�Bc�
����d|_�fd��td�5}	��|jd�ddd��jj
}dt�d|dz�dt�d|dz�d	t�d|dz�d	t�d|dz�d
�}|j�}j�j�}|j|dd|dd�|j|d|d�|j|d|d�tj�}|jttj d
|d�j#��t%|dz
|��d$�fd�	�td�5}	��|jd�ddd��jj
}	dt�d|	dz�dt�d|	dz�dt�d|	dz�dt�d|	dz�d�}
dt�d|	dz�d�}||
zj�}j�j�}|j||�d$��fd�	�td�5}	��|jd�ddd��jj
}
dt�d|
dz�dt�d|
dz�dt�d|
dz�dt�d|
dz�dt�d|
dz�d�}||
zj�}j�j�}|j||�td�5}	�t(j*�|jd�ddd�dt�d|	dz�dt�d|	dz�dt�d|	dz�dt�d|	dz�d�}
dt�d|	dz�d �}||
zj�}|j�j�}|j||�td�5}	�t(j*dz�|jd�ddd�dt�d|	dz�dt�d|	dz�dt�d|	dz�d!t�d|	dz�d�}
dt�d|	d"z�d#�}||
zj�}|j�j�}|j||�y#t$r|�Y��swxYw#1swY��yxYw#t&$r|�Y��@wxYw#1swY��FxYw#t&$r|�Y���wxYw#1swY���xYw#t&$r|�Y���wxYw#1swY���xYw#t&$r|�Y��6wxYw#1swY��<xYw)%Nc�����yr�r��rms�rrmzBTracebackFormatTests._check_recursive_traceback_display.<locals>.fks���
�Cr rnzno recursion occurredrrr�z8, in _check_recursive_traceback_display
    f()
  File "rJz, in f
    f()
  File "zn, in f
    f()
  \[Previous line repeated (\d+) more times\]
RecursionError: maximum recursion depth exceeded
r�r�z\d+�<c�*��|r�|dz
�St�rMr�)rYr�s �rr�zBTracebackFormatTests._check_recursive_traceback_display.<locals>.g�s������q��z�!��r zno value error was raisedr�rLz;, in g
    return g(count-1)
           ^^^^^^^^^^
  File "zc, in g
    return g(count-1)
           ^^^^^^^^^^
  [Previous line repeated 7 more times]
  File "raz', in g
    raise ValueError
ValueError
�z0, in _check_recursive_traceback_display
    g()
c�.��|r�|dz
�S��yrMr�)rYr��hs ��rr	zBTracebackFormatTests._check_recursive_traceback_display.<locals>.h�s������q��z�!�
�Cr z8, 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�rrlr�rS�assertRegexrWr��getrecursionlimitr�re�search�group�ranger-r.�_RECURSIVE_CUTOFF)r0�
render_exc�stderr_fr�result_fr�r��	rec_limit�stderr_g�lineno_g�result_g�tb_line�stderr_h�lineno_h�result_hrmr�r	s               @@@r�"_check_recursive_traceback_displayz7TracebackFormatTests._check_recursive_traceback_displayds�������	��X�
&�(�
3����	�	�1�2�
'��:�:�,�,��
��j���!���5��j���!���5��j���!���5��j���!���5A�
A�	�$�&�&�(���"�"�$�/�/�1��	
�������h�s��m�4�������X�b�\�2��
�
�h�r�l�F�2�J�/��)�)�+�	��
�
�c�"�)�)�F�F�2�J�7�=�=�?�@�%�	�RT��V_�B`�a�	�
�X�
&�(�
7����	�	�5�6�
'��:�:�,�,���x�j���!���5� �j���!���5� �j���!���5� �j���!���5�
�	� 
��j���!���5�
�	�
�h�&�2�2�4���"�"�$�/�/�1�������*�	�
�X�
&�(�
7����	�	�5�6�
'��:�:�,�,��
��j���!���5��j���!���5� �j���!���5� �j���!���5� �j���!���5�
�	�"�x�'�3�3�5���"�"�$�/�/�1�������*��X�
&�(�
-��)�-�-�.��	�	�+�,�
'��x�j���!���5� �j���!���5� �j���!���5� �j���!���5�
�	�
��j���"��
�63�
3�	�
�h�&�2�2�4���"�"�$�/�/�1�������*��X�
&�(�
-��)�-�-��1�2��	�	�+�,�
'��x�j���!���5� �j���!���5� �j���!���5� �j���!���5�
�	� 
��j���#���77�
7�	�
�h�&�2�2�4���"�"�$�/�/�1�������*��]"�
���
��'�
&��d�
���
��'�
&��T�
���
��'�
&��D�
���
��'�
&��D�
���
��'�
&�s��R,�R�R,�2S�4R9�;S�S4�S�S4�T�T�(T�T<�T%�1T<�R)�%R,�(R)�)R,�,R6�9S
�	S�S
�
S�S�S1�-S4�0S1�1S4�4S>�T�T�T�T�T"�%T9�5T<�8T9�9T<�<Uc�B�|jtj�yr�)r r.r�r:s r�test_recursive_traceback_pythonz4TracebackFormatTests.test_recursive_traceback_python!s���/�/�	�0C�0C�Dr c�>��ddlm��fd�}|j|�y)Nrr�c�:���tj��yr�)r��	exceptionr�s�rrzRTracebackFormatTests.test_recursive_traceback_cpython_internal.<locals>.render_exc)s����C�M�M�O�,r )r�r�r )r0rr�s  @r�)test_recursive_traceback_cpython_internalz>TracebackFormatTests.test_recursive_traceback_cpython_internal%s���	.�	-��/�/�
�;r c��d�}|�}|jj}|j|dddt|dzfzdt|dzfzg�y)Nc�*�tj�Sr�)r.r�r�r r�fmtz3TracebackFormatTests.test_format_stack.<locals>.fmt.s���)�)�+�+r r�z>  File "%s", line %d, in test_format_stack
    result = fmt()
rLzA  File "%s", line %d, in fmt
    return traceback.format_stack()
rJ)r�r�rSr)r0r)�resultr�s    r�test_format_stackz&TracebackFormatTests.test_format_stack-se��	,�������,�,���������
#�&.��q��%9�
:�
4�7?����6J�
K�'
�	r c��ddlm}Gd�dt�}|d�}|d�}	||�#|$r	|�#|$r}|}Yd}~nd}~wwxYwYnwxYwtd�5}||�ddd�n#1swYnxYwj	�j�j
�}|jdt|��|jtj�|d	�|jd
|d�|jd|d
�y)Nrr�c��eZdZd�Zy)�ATracebackFormatTests.test_unhashable.<locals>.UnhashableExceptionc��y�NTr��r0�others  r�__eq__zHTracebackFormatTests.test_unhashable.<locals>.UnhashableException.__eq__>���r N�r�r�r�r3r�r r�UnhashableExceptionr.=���
r r6�ex1�ex2rn�r�zUnhashableException: ex2razUnhashableException: ex1r&)r�r�r�rr�rVrlrSrT�context_messagerW)	r0r�r6r8r9r�exc_valrr%s	         r�test_unhashablez$TracebackFormatTests.test_unhashable9s���-�	�)�	�"�%�(��!�%�(��	��3���"�	�
��	��&�
����
���		���X�
&�(��G�$�'�
&�
&���
�
�
 �
&�
&�
(�
3�
3�
5������S��W�%�����.�.�0�"�Q�%�8��
�
�0�"�Q�%�8��
�
�0�"�R�&�9s8�*�A	�2�A�>�A	�A�A	�A	�	A)�)A2c�V�td�}td�D]}td|g�}�|S)NrJ��rd)r�rrf)r0r�is   r�deep_egzTracebackFormatTests.deep_egTs,���a�L���t��A��t�a�S�)�A���r c�`�ddlm}d}|j�}td�5}t	j
|��5||�ddd�ddd�j
�}|jd|�|j|jd�|�y#1swY�UxYw#1swY�YxYw)Nrr��Krn��	max_depthrf)
r�r�rArr�infinite_recursionr�rW�assertLessEqualrY)r0r��LIMITrdrr�s      r�(test_exception_group_deep_recursion_capiz=TracebackFormatTests.test_exception_group_deep_recursion_capiZs���-���
�\�\�^��
�X�
&�(��+�+�e�<���#�=�'��"�"�$���
�
�&��/����V�\�\�*:�;�U�C�	=�<��'�
&�s"�B$�	B�B$�B!	�B$�$B-c��d}|j�}td�5}tj|��5t	j
t
|�||j�ddd�ddd�j�}|jd|�|j|jd�|�y#1swY�UxYw#1swY�YxYw)NrCrnrDrf)rArrrFr.r��typer�r�rWrGrY)r0rHrdrr�s     r�-test_exception_group_deep_recursion_tracebackzBTracebackFormatTests.test_exception_group_deep_recursion_tracebackfs�����
�\�\�^��
�X�
&�(��+�+�e�<��)�)�$�r�(�B��8H�8H�I�=�'��"�"�$���
�
�&��/����V�\�\�*:�;�U�C�	=�<��'�
&�s"�C�+B4� C�4B=	�9C�C	c��ddlm}td�5}|d�ddd�|jj	�d�y#1swY�*xYw)Nrr�rn�*zFTypeError: print_exception(): Exception expected for value, int found
)r�r�rrSr�)r0r�rns   r�"test_print_exception_bad_type_capiz7TracebackFormatTests.test_print_exception_bad_type_capipsB��-�
�X�
&�&��B��'�����O�O��9�	
�'�
&�s�	A�A
c��d}|jt|�5tjd�ddd�y#1swYyxYw)Nz'Exception expected for value, int foundrN)r�r�r.r�)r0�msgs  r�$test_print_exception_bad_type_pythonz9TracebackFormatTests.test_print_exception_bad_type_python{s1��7��
�
#�
#�I�s�
3��%�%�b�)�4�
3�
3�s	�8�Ar�)r�r�r�r�rr�r�r�r�rr r
r"r&r+r=rArIrLrOrRr�r rr�r�s�����*=��*=�X&�0�>��{+�z��E��E����<���<�
��:��:�4��	D��	D�D��
��
�*r r�zG
The above exception was the direct cause of the following exception:

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

rQ�|ryc���eZdZd�Zejj
dzZd�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"d�Z#y )!�BaseExceptionReportingTestsc�h�t|t�r|S	|�y#t$r}|cYd}~Sd}~wwxYwr�)�
isinstance�
BaseExceptionr�)r0�exception_or_callablers   rr�z)BaseExceptionReportingTests.get_exception�s3���+�]�;�(�(�	�!�#���	��H��	�s��	1�,�1�1rIc��ddzyr�r�r:s r�zero_divz$BaseExceptionReportingTests.zero_div�s	��	�!�r c�h�|j�}t�r9|j|djd��|j	d|d�n8|j|djd��|j	d|d�|j|djd�|d�y)N���r�z1/0 # In zero_divr�rr��ZeroDivisionError)rlrrUr�rW)r0rQros   r�check_zero_divz*BaseExceptionReportingTests.check_zero_div�s������ ��� ��O�O�E�"�I�0�0��:�;��M�M�-�u�R�y�9��O�O�E�"�I�0�0��:�;��M�M�-�u�R�y�9�����b�	�,�,�-@�A�5��9�Mr c�D�	ddz|j�j�}t�r?|j	t|�d�|j
|djd��n>|j	t|�d�|j
|djd��|j
|djd��|j
|djd��|jd	|d
�y#t$r
}|}Yd}~��d}~wwxYw)NrJrrIrar^r�r�r�z1/0 # MarkerrL)	r^�
get_reportrlrrSrTrUr�rW�r0rrros    r�test_simplez'BaseExceptionReportingTests.test_simple�s���	�
�a�C�����"�-�-�/��� ����S��Z��+��O�O�E�!�H�/�/�0C�D�E����S��Z��+��O�O�E�!�H�/�/�0C�D�E�����a��+�+�K�8�9�����a��+�+�H�5�6��
�
�n�e�A�h�/��!�	��A��	�s�D	�		D�D�Dc�����fd���fd�}tj�j|��}�jt	|�d��j|dt
��j
|d��jd|d�y)Nc�X��	�j�y#t$r}t|�d}~wwxYwr��r[r^r�)rr0s �r�inner_raisez;BaseExceptionReportingTests.test_cause.<locals>.inner_raise�s)���
&��
�
���$�
&��A�%��
&�s��	)�$�)c�����yr�r��rgs�r�outer_raisez;BaseExceptionReportingTests.test_cause.<locals>.outer_raise������Mr rarJr�inner_raise() # MarkerrL��
boundaries�splitrarSrT�
cause_messager_rW�r0rj�blocksrgs`  @r�
test_causez&BaseExceptionReportingTests.test_cause�ss���	&�
	��!�!�$�/�/�+�">�?������V��a�(�������M�2����F�1�I�&��
�
�.��q�	�:r c�����fd���fd�}tj�j|��}�jt	|�d��j|dt
��j
|d��jd|d�y)Nc�N��	�j�y#t$rt�wxYwr�rfr:s�rrgz=BaseExceptionReportingTests.test_context.<locals>.inner_raise�s%���
��
�
���$�
���
�s��$c�����yr�r�ris�rrjz=BaseExceptionReportingTests.test_context.<locals>.outer_raise�rkr rarJrrlrL)rnrorarSrTr;r_rWrqs`  @r�test_contextz(BaseExceptionReportingTests.test_context�ss���	�
	��!�!�$�/�/�+�">�?������V��a�(�������O�4����F�1�I�&��
�
�.��q�	�:r c���		t�#td�xYw#t$r}|}Yd}~nd}~wwxYw|j|�j�}|j	t|�d�|j
|djd��|j
|djd��|j
|djd��|jd|d	�y)
NrIrar^rr�rJr�zZeroDivisionError from NonerL)	r�r^rarlrSrTrUr�rWrbs    r�test_context_suppressionz4BaseExceptionReportingTests.test_context_suppression�s���	�
2����
2�'�T�1�� �	��A��	������"�-�-�/������U��Q�'�����a��+�+�,?�@�A�����a��+�+�K�8�9�����a��+�+�H�5�6��
�
�3�U�1�X�>s�	�	��	*�%�*c�����fd���fd�}tj�j|��}�jt	|�d��j|dt
��j
|d��jd|d�y)Nc���	�j�	ty#t$r}|}Yd}~�d}~wwxYw#t$rt�wxYwr�)r[r^�xyzzy�	NameErrorr�)�_err0s  �rrgzGBaseExceptionReportingTests.test_cause_and_context.<locals>.inner_raise�sH���
��
�
��
&���%�
����
���
&��A�%�
&�s��3�	0�+�0�Ac�����yr�r�ris�rrjzGBaseExceptionReportingTests.test_cause_and_context.<locals>.outer_raise�rkr rarJrrlrLrmrqs`  @r�test_cause_and_contextz2BaseExceptionReportingTests.test_cause_and_context�ss���	&�	��!�!�$�/�/�+�">�?������V��a�(�������M�2����F�1�I�&��
�
�.��q�	�:r c�r����fd���fd�}tj�j|��}�jt	|�d��j|dt
��j
d|d��jd|d��j
d|d	��j|d	�y)
Nc���		�j�y#t$r}|}t|�d}~wwxYw#t$r}|�d}~wwxYwr�rf)rr=r0s  �rrgzEBaseExceptionReportingTests.test_cause_recursive.<locals>.inner_raise�sK���
�*��M�M�O��(�*��A�"��)��*���
��Q���
�s"��	,�	'�,�/�	A�;�Ac�����yr�r�ris�rrjzEBaseExceptionReportingTests.test_cause_recursive.<locals>.outer_raise�rkr rarJzraise KeyError from erz1/0rlrL)	rnrorarSrTrprW�assertNotInr_rqs`  @r�test_cause_recursivez0BaseExceptionReportingTests.test_cause_recursive�s����	�	��!�!�$�/�/�+�">�?������V��a�(�������M�2��
�
�-�v�a�y�9������q�	�*�	
�
�
�.��q�	�:����F�1�I�&r c���d�}|j|�j�}|j|dd�d�}|j|�j�}|j|dd�y)Nc��tdd��)Nr)rrr��hello)rRr�r rrzFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.e
s���b�"5�6�6r r�z	        ^c��td�y)Nzx = 5 | 4 |)r7r�r rrzFBaseExceptionReportingTests.test_syntax_error_offset_at_eol.<locals>.es
����r z               ^)rarlrS�r0rrQs   r�test_syntax_error_offset_at_eolz;BaseExceptionReportingTests.test_syntax_error_offset_at_eolsc��	7��o�o�a� �+�+�-������R��+�.�	 ��o�o�a� �+�+�-������R��"4�5r c���td�}|j|�j�}|j|dg�d|_|j|�j�}|j|ddg�td�}d|_|j|�j�}|j|dg�d|_|j|�j�}|j|ddg�y)Nr`zSyntaxError: bad syntax�dz  File "<string>", line 100z	myfile.pyz#SyntaxError: bad syntax (myfile.py)z  File "myfile.py", line 100)rRrarlrSr��filenamer�s   r�test_syntax_error_no_linenoz7BaseExceptionReportingTests.test_syntax_error_no_linenos���
��%���o�o�a� �+�+�-������
&�'�	)�����o�o�a� �+�+�-������
*�,E�F�	H�
��%�� ��
��o�o�a� �+�+�-������
2�3�	5�����o�o�a� �+�+�-������
+�-F�G�	Ir c�b�|jtd��}|jd|�|jtd��}|jd|�|jt��}|jd|�|jtd��}|jd|�y)NzException: None
�Nonez
Exception
r)rar�rWrZs  r�test_message_nonez-BaseExceptionReportingTests.test_message_none/s����o�o�i��o�.���
�
�)�3�/��o�o�i��/�0���
�
�)�3�/��o�o�i�k�*���
�
�m�S�)��o�o�i��m�,���
�
�m�S�)r c�f�tdd�D�]!}dD�]}d|zd|zz}dg}|dkr#|jd|j�z�nx|d	kr=|jd|j�z�|jd
d|dz
zz�n6|jd|j�z�|jd
dz�|jd�|jd
�|jt	ddd||z|f��}dj|�}|j
||�����$y)N���r&)rrLr[ztext%dz  File "file.py", line 1rJz    %srz    %s^z     zSyntaxError: msgrrQzfile.pyrN)r�appendrjrarRr�rS)r0�offset�addr�r�r[�exps       r�!test_syntax_error_various_offsetsz=BaseExceptionReportingTests.test_syntax_error_various_offsets:s���B��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��O�O�H�t�{�{�}�$<�=��O�O�I��$7�8���� 2�3�����#��o�o�k�%�)�Q��s�
�TX�9Y�&Z�[���i�i��)��� � ��c�*��$r c���td�}|j|�}|jd�|j|j|�|dz�|`|jd�|j|j|�|dz�|`|jd�|j|j|�|dz�|`|j|j|�|�y)N�{zMy NotezMy Note
rrNz	Your Notez
Your Note
)r-ra�add_noterS�	__notes__�r0r�vanillas   r�test_exception_with_notez4BaseExceptionReportingTests.test_exception_with_noteMs����s�O���/�/�!�$��	�
�
�9���������+�W�{�-B�C�
�K�	�
�
�2���������+�W�t�^�<�
�K�	�
�
�;���������+�W�}�-D�E�
�K��������+�W�5r c�z�td�}|j|�}Gd�d�}Gd�d�}|�|_d}|j|j|�||zdz�|�|_d}|j|j|�||zdz�|�d	g|_d
}|j|j|�||zdz�|�d	g|_d}|j|j|�||zdz�d
|_d}|j|j|�||zdz�d|_d}|j|j|�||zdz�Gd�dt�}|d�}|j|�}d|_|j|j|�|dz�y)Nr�c��eZdZd�Zd�Zy)�OBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThingc��y)N�bad strr�r:s rr�zWBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThing.__str__es�� r c��y)N�bad reprr�r:s r�__repr__zXBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BadThing.__repr__hs��!r N�r�r�r�r�r�r�r r�BadThingr�ds��
!�
"r r�c��eZdZd�Zy)�RBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.Unprintablec��td���N�	bad valuer�r:s rr�z[BaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.Unprintable.__repr__ms
�� ��-�-r N)r�r�r�r�r�r r�Unprintabler�ls��
.r r�r�rNz<__notes__ repr() failed>z
Final Noter�z
Final Note
z<note str() failed>zplease do not explode mez'please do not explode me's please do not show me as numbersz#b'please do not show me as numbers'c��eZdZdZd�Zy)�VBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BrokenExceptionFc�L�|jrtd|����t|��)Nzno )�brokenr-�AttributeError)r0�names  r�__getattr__zbBaseExceptionReportingTests.test_exception_with_invalid_notes.<locals>.BrokenException.__getattr__�s%���;�;�$�s�4�&�\�2�2�$�T�*�*r N)r�r�r�r�r�r�r r�BrokenExceptionr��s���F�
+r r�Tz<Ignored error getting __notes__: ValueError('no __notes__')
)r-rar�rSr�r�)	r0rr�r�r��
notes_reprr��bad_noter�s	         r�!test_exception_with_invalid_notesz=BaseExceptionReportingTests.test_exception_with_invalid_notes_s����s�O���/�/�!�$��	"�	"�	.�	.��j����
��������+�W�z�-A�D�-H�I�!�m���-���������+�W�w�->��-E�F�!�
�L�1������������+�W�x�-?�BR�-R�S�$�
�|�4���'���������+�W�w�->�AQ�-Q�R�1���.���������+�W�w�->��-E�F�:���7���������+�W�w�->��-E�F�	+�i�	+�
�C� ���/�/�!�$���������O�O�A���U�U�	Wr c� �td�td�fD]�}|j|��5|j|�}|j	d�|j	d�|j	d�|j|j|�|dzdzd	z�|`|j	d
�|`|j	d�|j	d�|j|j|�|d
zdz�ddd���y#1swY��xYw)NrNr`)rzNote 1zNote 2zNote 3zNote 1
zNote 2
zNote 3
zNote 4zNote 5zNote 6zNote 5
zNote 6
)r-rR�subTestrar�rSr�r�s   r�"test_exception_with_multiple_notesz>BaseExceptionReportingTests.test_exception_with_multiple_notes�s����R�.�+�l�";�<�A������"��/�/�!�,���
�
�8�$��
�
�8�$��
�
�8�$�� � ��O�O�A�&��j�(�:�5�
�B�D��K��
�
�8�$��K��
�
�8�$��
�
�8�$�� � ��O�O�A�&��j�(�:�5�7�##�"�=�"�"�s�C
D�D
	c�N�Gd�d�}|j|jj��}d}dj|jjj|jjj
g�}|�d|�d�}|j
|t|z�y)Nc� �eZdZGd�d�Zy)�>BaseExceptionReportingTests.test_exception_qualname.<locals>.Ac�"�eZdZGd�de�Zy)�@BaseExceptionReportingTests.test_exception_qualname.<locals>.A.Bc��eZdZd�Zy)�BBaseExceptionReportingTests.test_exception_qualname.<locals>.A.B.Xc��y�N�I am Xr�r:s rr�zJBaseExceptionReportingTests.test_exception_qualname.<locals>.A.B.X.__str__�s��'r Nr�r�r rr�r��s��(r r�N)r�r�r�r�r�r�r r�Br��s��(�	�(r r�N)r�r�r�r�r�r rr�r��s��
(�
(r r�r�rr�rN)rar�r�r�r�r�rS�
MODULE_PREFIX)r0r�r[r�r�r�s      r�test_exception_qualnamez3BaseExceptionReportingTests.test_exception_qualname�sy��	(�	(��o�o�a�c�c�e�e�g�&���	��8�8�Q�S�S�U�U�-�-�q�s�s�u�u�/A�/A�B�C��$�i�0������m�c�1�2r c�`�Gd�dt�}dD]�}||_|j|��5|j|��}d}|dvr
|j}n'dj|j|jg�}|�d|�d	�}|j
||�ddd���y#1swY��xYw)
Nc��eZdZd�Zy)�@BaseExceptionReportingTests.test_exception_modulename.<locals>.Xc��yr�r�r:s rr�zHBaseExceptionReportingTests.test_exception_modulename.<locals>.X.__str__����r Nr�r�r rr�r�����
 r r�)rr��some_module)�
modulenamer�)r�rrr�rN)r�r�r�rar�r�rS)r0r�r�r[r�r�r�s       r�test_exception_modulenamez5BaseExceptionReportingTests.test_exception_modulename�s���	 �	�	 �@�J�%�A�L������4��o�o�a�c�*��$�	��!9�9� �~�~�H�"�x�x����q�~�~�(F�G�H�$,�i�8��� � ��c�*�5�4�@�4�4�s�A+B$�$B-	c��tjd�}t|dd�}ii}}t|||�|j	|d�}d}|j||�y)Nz~
            try:
                raise ValueError(42)
            except Exception as e:
                exc = e
            z<does not exist>r7r2z>  File "<does not exist>", line 3, in <module>
ValueError: 42
)rrrsr9r7rarW)r0�srcrr��lr[r�s       r�'test_exception_angle_bracketed_filenamezCBaseExceptionReportingTests.test_exception_angle_bracketed_filename�s`���o�o�����s�.��7���2�1���T�1�a���o�o�a��h�'��P���
�
�c�3�r c��Gd�dt�}d|_|j|��}d|j�d�}|j	||�y)Nc��eZdZd�Zy)�LBaseExceptionReportingTests.test_exception_modulename_not_unicode.<locals>.Xc��yr�r�r:s rr�zTBaseExceptionReportingTests.test_exception_modulename_not_unicode.<locals>.X.__str__�r�r Nr�r�r rr�r��r�r r�rNz
<unknown>.z	: I am X
)r�r�rar�rS)r0r�r[r�s    r�%test_exception_modulename_not_unicodezABaseExceptionReportingTests.test_exception_modulename_not_unicode�sJ��	 �	�	 �����o�o�a�c�"���1�>�>�*�*�5������c�"r c���Gd�dt�}|j|��}d}dj|j|jg�}|jt|z|�d|�d��y)Nc��eZdZd�Zy)�@BaseExceptionReportingTests.test_exception_bad__str__.<locals>.Xc��ddzyr�r�r:s rr�zHBaseExceptionReportingTests.test_exception_bad__str__.<locals>.X.__str__�r�r Nr�r�r rr�r��r�r r�r�rr�rN)r�rar�r�r�rSr�r�s     r�test_exception_bad__str__z5BaseExceptionReportingTests.test_exception_bad__str__�sb��	�	�	��o�o�a�c�"��.�	��8�8�Q�\�\�1�>�>�:�;�������,��
�"�Y�K�r�.J�Kr c	��d�}dt�d|j�dt�d|jjdz�d�	}|j	|�}|j||�y)Nc�B�tdtd�td�g��rcrer�r rr2zCBaseExceptionReportingTests.test_exception_group_basic.<locals>.exc�s�� ��
�1�
�y��|�'D�E�Er rgr�?, in get_exception
  |     exception_or_callable()
  |   File "rJa, in exc
  |     raise ExceptionGroup("eg", [ValueError(1), TypeError(2)])
  | ExceptionGroup: eg (2 sub-exceptions)
  +-+---------------- 1 ----------------
    | ValueError: 1
    +---------------- 2 ----------------
    | TypeError: 2
    +------------------------------------
�rr�r�r�rarS�r0r2r��reports    r�test_exception_group_basicz6BaseExceptionReportingTests.test_exception_group_basic�sp��	F��$�:�X�d�.@�.@�-A�B�$�:�X�c�l�l�.I�.I�A�.M�-N�O;�
<�	�����%�������*r c
��d�}dt�d|jjdz�dt�d|j�dt�d|jjdz�d�
}|j	|�}|j||�y)	Nc��t}	|dtd�td�g��#t$r#}|dtd�td�g�|�d}~wwxYw)N�eg1rJrL�eg2rarI�rfr-r�r�)�EGrs  rr2zCBaseExceptionReportingTests.test_exception_group_cause.<locals>.exc	sU���B�
F����A��	�!�� =�>�>���
F����A��	�!�� =�>�A�E��
F�s�%�	A�A�Argrraa�, 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
    +------------------------------------
�rr�r�r�rarSr�s    r�test_exception_group_causez6BaseExceptionReportingTests.test_exception_group_causes���	F�#�#+�*�H�S�\�\�5P�5P�ST�5T�4U�V#�$,�*�H�T�5G�5G�4H�I#�#+�*�H�S�\�\�5P�5P�ST�5T�4U�VB�C��0����%�������*r c�D�d�}dt�d|jjdz�dt�d|jjdz�dt�d|j�dt�d|jjd	z�d
�}|j	|�}|j||�y)Nc��t}		|dtd�td�g��#|dtd�td�g��xYw#td��xYw)Nr�rJrLr�rarIr�)rfr-r��ImportError)r�s rr2zRBaseExceptionReportingTests.test_exception_group_context_with_context.<locals>.exc,s^���B�
%�C��U�Z��]�I�a�L�$A�B�B��C��U�Z��]�I�a�L�$A�B�B��
%�!�!�n�$�s�&�A�A�
ArgrrIa�, 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 "r�z1, in exc
    raise ImportError(5)
ImportError: 5
r�r�s    r�)test_exception_group_context_with_contextzEBaseExceptionReportingTests.test_exception_group_context_with_context+s���	%��$�:�X�c�l�l�.I�.I�A�.M�-N�O�%�:�X�c�l�l�.I�.I�A�.M�-N�O�!�z��$�*<�*<�)=�>� �z��#�,�,�*E�*E��*I�)J�K �7!�	�@����%�������*r c�D�d�}dt�d|jjdz�dt�d|jjdz�dt�d|j�dt�d|jjd	z�d
�}|j	|�}|j||�y)Nc���t}t}t}		|d|d�|d�g��#t$r}|}Yd}~nd}~wwxYw|d|d�||d�g��#|d|d�g��xYw)	N�nestedrLrardrJrI�topr�r�)r��VE�TErr2s     rr2zDBaseExceptionReportingTests.test_exception_group_nested.<locals>.excZs���B��B��B�
)���X��1��r�!�u�~�6�6�� ���C�������1��s�B�q�E�2�3�3��
)����A���(�(�s#�,�	A�<�A�A�A�A.rgr�	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_nestedYs���	)�#�#+�*�H�S�\�\�5P�5P�ST�5T�4U�V%�&.�J�h�s�|�|�7R�7R�UV�7V�6W�X#�$,�*�H�T�5G�5G�4H�I#�#+�*�H�S�\�\�5P�5P�SU�5U�4V�WB�3C��@����%�������*r c��g}td�D]}|jt|���td|�}d}|j	|�}|j||�y)N��rda>  | 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
    +------------------------------------
)rr�r-rfrarS)r0�excsr@rdr�r�s      r� test_exception_group_width_limitz<BaseExceptionReportingTests.test_exception_group_width_limit�sZ�����t��A��K�K�
�1�
�&��
�D�$�
'��!B��F����$�������*r c	���td�}td�D]'}td|��t|�|t|�g�}�)d}|j	|�}|j||�y)N�bad typer�rda�  | 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�rrfr-rarS)r0r2r@r�r�s     r� test_exception_group_depth_limitz<BaseExceptionReportingTests.test_exception_group_depth_limit�sk���
�#���t��A� ��Q�C���A���Z���^�4�6�C��
FB��P����%�������*r c�D�d�}dt�d|j�dt�d|jjdz�dt�d|jjdz�dt�d|jjdz�d	�}|j	|�}|j||�y)
Nc��	g}dD]
}	t|��td|��#t$r/}|jd|���|j|�Yd}~�Od}~wwxYw#t$r}|jd��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-r�r�rf�rrQrs   rr2zHBaseExceptionReportingTests.test_exception_group_with_notes.<locals>.exc	s���
���:�C�'�(��o�-�;�%�X�t�4�4��&�'��
�
�T�#��<�0����A����'��"�
��
�
�7�9���
�s<�A�"�
A�	A�%A�A�A�A�	A=�&A8�8A=rgrr�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_notess���	�&#�#+�*�H�T�5G�5G�4H�I#�#+�*�H�S�\�\�5P�5P�ST�5T�4U�V%�&.�J�h�s�|�|�7R�7R�UV�7V�6W�X%�&.�J�h�s�|�|�7R�7R�UV�7V�6W�XB�)C��4����%�������*r c�D�d�}dt�d|j�dt�d|jjdz�dt�d|jjdz�dt�d|jjdz�d	�}|j	|�}|j||�y)
Nc�J�	g}dD]
}	t|��td|��#t$rC}|jd|���|jd|���|j|�Yd}~�cd}~wwxYw#t$r(}|jd�|jd��d}~wwxYw)NrrzGoodbye r�r	zGoodbye!r
rs   rr2zQBaseExceptionReportingTests.test_exception_group_with_multiple_notes.<locals>.exc:s���
���:�C�'�(��o�-�;�%�X�t�4�4��	&�'��
�
�T�#��<�0��
�
�X�c�U�#3�4����A����'��
"�
��
�
�7�9��
�
�:�&���
�s<�A1�"�
A1�	A.�9A)�$A1�)A.�.A1�1	B"�:#B�B"rgrr�r&a^, in exc
  |     raise ExceptionGroup("nested", excs)
  | ExceptionGroup: nested (2 sub-exceptions)
  | >> Multi line note
  | >> Because I am such
  | >> an important exception.
  | >> empty lines work too
  | 
  | (that was an empty line)
  | Goodbye!
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "r�z�, in exc
    |     raise ValueError(msg)
    | ValueError: bad value
    | the bad value
    | Goodbye bad value
    +---------------- 2 ----------------
    | Traceback (most recent call last):
    |   File "z�, in exc
    |     raise ValueError(msg)
    | ValueError: terrible value
    | the terrible value
    | Goodbye terrible value
    +------------------------------------
r�r�s    r�(test_exception_group_with_multiple_noteszDBaseExceptionReportingTests.test_exception_group_with_multiple_notes9s���	�*#�#+�*�H�T�5G�5G�4H�I#�#+�*�H�S�\�\�5P�5P�SU�5U�4V�W%�&.�J�h�s�|�|�7R�7R�UV�7V�6W�X%�&.�J�h�s�|�|�7R�7R�UV�7V�6W�XB�-C��:����%�������*r c��d�}d}|�}d}|jj}tj||||�}t	�}||_dt�d|�d�}|j|�}	dj|	jd�D�
cgc]}
|
j���c}
�}	|j|	|�ycc}
w)Nc�*�tj�Sr��r�r�r�r rrmzTBaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frame.<locals>.fqs���=�=�?�"r rrrz', in f
    def f():

KeyboardInterrupt
rN)r�r��types�
TracebackTyper}r�rrar�ro�rstriprS)r0rmr(r!�lastir�r%r2r�r�r�s           r�-test_KeyboardInterrupt_at_first_line_of_framezIBaseExceptionReportingTests.test_KeyboardInterrupt_at_first_line_of_frameos���	#�����������*�*��
�
 �
 ��%���
?���!������'�j����9*�+������%��������T�0B�C�0B�1�A�H�H�J�0B�C�D�������*��Ds�
B;N)$r�r�r�r�r�r�r�r[r_rcrsrwryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�r rrUrU�s����"�*�*�9�9�A�=�M��N�0� ;�;�
?�;�('�.	6�I�2	*�+�&6�$8W�t7�.3�+�"
 �	#�L�+�(!+�F,+�\/+�b*+�XP+�d/+�b4+�l+r rUc��eZdZd�Zy)�PyExcReportingTestsc�n�|j|�}djtjt	|�||j
��}t
d�5}tjt	|�||j
�ddd�|jj�|�|S#1swY�+xYw)Nrrn)
r�r�r.r�rKr�rr�rSr�)r0r�s�sios    rrazPyExcReportingTests.get_report�s������q�!���G�G��&�&�t�A�w��1�?�?�C�
E��
�X�
&�#��%�%�d�1�g�q�!�/�/�B�'���������+���'�
&�s�+B+�+B4N)r�r�r�rar�r rrr�s��r rc��eZdZed��Zy)�CExcReportingTestsc��ddlm}|j|�}td�5}||�ddd�|j	�S#1swYj	�SxYw)Nrr�rn)r�r�r�rr�)r0rr�rs    rrazCExcReportingTests.get_report�sJ��-����q�!��
�X�
&�!��A��'��z�z�|��'��z�z�|��s�	A�AN)r�r�r�rrar�r rrr�s��
���r rc�^�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zy)�
LimitTestsze Tests for limit argument.
        It's enough to test extact_tb, extract_stack and format_exception c��td��)NzLast raised�r�r:s r�last_raises1zLimitTests.last_raises1�s
���
�&�&r c�$�|j�yr�)r$r:s r�last_raises2zLimitTests.last_raises2�������r c�$�|j�yr�)r&r:s r�last_raises3zLimitTests.last_raises3�r'r c�$�|j�yr�)r)r:s r�last_raises4zLimitTests.last_raises4�r'r c�$�|j�yr�)r+r:s r�last_raises5zLimitTests.last_raises5�r'r c�*�tj�Sr�rr:s r�last_returns_frame1zLimitTests.last_returns_frame1�s���}�}��r c�"�|j�Sr�)r/r:s r�last_returns_frame2zLimitTests.last_returns_frame2�����'�'�)�)r c�"�|j�Sr�)r1r:s r�last_returns_frame3zLimitTests.last_returns_frame3�r2r c�"�|j�Sr�)r4r:s r�last_returns_frame4zLimitTests.last_returns_frame4�r2r c�"�|j�Sr�)r6r:s r�last_returns_frame5zLimitTests.last_returns_frame5�r2r c�\����j���fd�}�fd�}tjtdd�5|�}�j	t|�d��j
|d��|dd�||d	��|d
dd��j
|d��|dd�||d
��|dd	t|�dz
dz
��j
|d
��g�t`||�|d�dt_�j
|�|dd��j
|d��|dd��j
|d��|dd�d
t_�j
|�g�dt_�j
|�g�ddd�y#1swYyxYw)Nc�0��tj�fi|��Sr��r.�
extract_stack)�kwargsr!s �r�extractz.LimitTests.test_extract_stack.<locals>.extract�s����*�*�5�;�F�;�;r c����j|d||d|��j||dzd||dzd��jt|�t|��yrM)rSrT)r�r��ignorer0s   �r�assertEqualExceptz8LimitTests.test_extract_stack.<locals>.assertEqualExcept�s^������V�G�V�_�h�w��.?�@����V�F�1�H�I�.������0C�D����S��[�#�h�-�8r �tracebacklimitr�r�rL��limitr�r�i����i����rJrrar]r�)r8r�	swap_attrr��
assertGreaterrTrSrB)r0r>rA�nolimr!s`   @r�test_extract_stackzLimitTests.test_extract_stack�sz����(�(�*��	<�	9�
�
�
�s�$4�d�
;��I�E����s�5�z�1�-����W�1�-�u�R�S�z�:��g�C�0�%���,��E����W�2�.��b�q�	�:��g�D�1�5��#�;��E�
�1��Q��O����W�1�-�r�2��"��g�i���5�!"�C�����W�Y��b�c�
�3����W�1�-�u�R�S�z�:����W�2�.��b�q�	�:�!"�C�����W�Y��+�!#�C�����W�Y��+�#<�
;�
;�s�E!F"�"F+c���	|j��fd�}tjt
dd�5|�}|j
t|�d�|j
|d��|dd�|j
|d��|�|j
|d��|dd�|j
|d	��|�|j
|d
��g�t
`|j
|�|�dt
_|j
|�|dd�|j
|d��|dd�|j
|d��|dd�d
t
_|j
|�g�d
t
_|j
|�g�ddd�y#t$r}|j�Yd}~���d}~wwxYw#1swYyxYw)Nc�0��tj�fi|��Sr�)r.�
extract_tb)r=r%s �rr>z+LimitTests.test_extract_tb.<locals>.extract�s����'�'��5�f�5�5r rBr�rrLrCr&r����rrar]r�)	r-r�r�rrEr�rSrTrB)r0rr>rGr%s    @r�test_extract_tbzLimitTests.test_extract_tb�s����	!�����	6��
�
�s�$4�d�
;��I�E����S��Z��-����W�1�-�u�R�a�y�9����W�2�.��6����W�2�.��b�c�
�;����W�3�/��7����W�1�-�r�2��"����W�Y��.�!"�C�����W�Y��b�q�	�2����W�1�-�u�R�a�y�9����W�2�.��b�c�
�;�!"�C�����W�Y��+�!#�C�����W�Y��+�#<�
;���	!����B��	!��
<�
;�s#�F �E$G� 	G�)F;�;G�Gc���	|j��fd�}tjtdd�5|�}|jt
|�d�|j|d��|dd�|j|d��|�|j|d��|dd�|j|d	��|�|j|d
��g�t`|j|�|�dt_|j|�|dd�|j|d��|dd�|j|d��|dd�d
t_|j|�g�d
t_|j|�g�ddd�y#t$r
}|�Yd}~���d}~wwxYw#1swYyxYw)Nc�6��tj�fi|��ddS)NrJr�)r.r�)r=r2s �rr>z1LimitTests.test_format_exception.<locals>.extract	s ����-�-�c�<�V�<�Q�r�B�Br rBr�rrLrCr&r�rLrrar]r�)r-r�rrEr�rSrTrB)r0rr>rGr2s    @r�test_format_exceptionz LimitTests.test_format_exception	s����	�����
	C��
�
�s�$4�d�
;��I�E����S��Z��-����W�1�-�u�R�a�y�9����W�2�.��6����W�2�.��b�c�
�;����W�3�/��7����W�1�-�r�2��"����W�Y��.�!"�C�����W�Y��b�q�	�2����W�1�-�u�R�a�y�9����W�2�.��b�c�
�;�!"�C�����W�Y��+�!#�C�����W�Y��+�#<�
;���	��C��	��<�
;�s#�F �E$F9� 	F6�)F1�1F6�9GN)r�r�r�r�r$r&r)r+r-r/r1r4r6r8rHrMrPr�r rr!r!�sI��N�'������*�*�*�*�,�8,�6,r r!c��eZdZd�Zd�Zy)�MiscTracebackCasesc�����fd�}�fd��d��	|�jjjj}|j	t|j�d�tj|�|j	t|j�d�y#t$r}|j}Yd}~��d}~wwxYw)Nc�����yr�r�)�middles�r�outerz,MiscTracebackCases.test_clear.<locals>.outer%	s����Hr c�����yr�r�)�inners�rrUz-MiscTracebackCases.test_clear.<locals>.middle'	s����Gr c��d}ddzyr�r�)r@s rrXz,MiscTracebackCases.test_clear.<locals>.inner)	s���A�
�a�Cr rJr)	rXr�r(r&rSrTr$r.�clear_frames)r0rVrr%�inner_framerXrUs     @@r�
test_clearzMiscTracebackCases.test_clear$	s����	�	�	�	!��G�
�j�j�(�(�0�0�9�9������[�1�1�2�A�6�	���r�"�	
����[�1�1�2�A�6���	!����B��	!�s�B"�"	C�+B<�<Cc���d�}|�}|jj}|j|ddt|dzddft|dzddfg�|jt	|d	�d
�y)Nc�*�tj�Sr�r;r�r rr>z6MiscTracebackCases.test_extract_stack.<locals>.extract=	s���*�*�,�,r r�rLrHzresult = extract()rJr>z return traceback.extract_stack()rrI)r�r�rSrrT)r0r>r*r�s    rrHz%MiscTracebackCases.test_extract_stack<	sw��	-�����!�!�0�0���������
�v�a�x�!5�7K�L�
�v�a�x��,N�O�'�	�	
����V�A�Y���+r N)r�r�r�r\rHr�r rrRrR	s��
7�0	,r rRc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�	TestFramec�@�tj�tjdt��t	j
ddd�}|j
|d�|j
t|�d�|j
|t	j
ddd��|j
|t|��|j
t|�|�|j|j�|j|t��|j
|t�y)NrmrJ�dummy)rmrJrb�%"""Test cases for traceback module""")
�	linecache�
clearcache�	lazycache�globalsr.�FrameSummaryrS�tuple�assertIsNone�locals�assertNotEqual�objectr	�r0rms  r�test_basicszTestFrame.test_basicsJ	s����������C���+��"�"�3��7�3������F�	H�����q��F�	H�����I�2�2�3��7�C�D�����E�!�H�%�	
����q��1�%����!�(�(�#����A�v�x�(�����I�&r c�
�tj�tjdddd��}|j	d|j
�tjdt��|j	d|j�y)NrmrJrbF)�lookup_linerc)	rdrer.rhrS�_linerfrg�linerns  r�test_lazy_lineszTestFrame.test_lazy_lines[	sb�������"�"�3��7��F������q�w�w�'����C���+����3�
�F�F�	r c�j�tjddd�}|j|jd�y)Nrmrb�r.rhrSrsrns  r�test_no_linezTestFrame.test_no_lined	s*���"�"�3��g�6���������&r c�n�tjdddd��}|jd|j�y)NrmrJrbrs�rsrvrns  r�test_explicit_linezTestFrame.test_explicit_lineh	s,���"�"�3��7��@���������(r c�l�tjdddd��}|jt|�d�y)NrmrJrbrsryrI)r.rhrSrTrns  r�test_lenzTestFrame.test_lenl	s,���"�"�3��7��@������Q���#r N)r�r�r�rortrwrzr|r�r rr`r`H	s��'�"�'�)�$r r`c�`�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zy)�	TestStackc���d�}ttjd��}|�}|jt	|�t	|�z
d�|j|dd|�y)Nc�>�ttjd��Sr�)�listr.�
walk_stackr�r r�deeperz)TestStack.test_walk_stack.<locals>.deepert	s���	�,�,�T�2�3�3r rJ)r�r.r�rSrT)r0r��s1�s2s    r�test_walk_stackzTestStack.test_walk_stacks	sV��	4�
�)�&�&�t�,�
-��
�X������R��3�r�7�*�A�.�����A�B���$r c���	ddzttj��}|jt
|�d�y#t$r}|j}Yd}~�Td}~wwxYwr�)r�r�r�r.�walk_tbrSrT)r0rr%rs    r�test_walk_tbzTestStack.test_walk_tb{	sT��	!�
�a�C�
��"�"�2�&�'������Q���#���	!����B��	!�s�A�	A �
A�A c��tjjtjd��}|j	|tj�yr�)r.�StackSummaryr>r��assertIsInstance�r0rs  rrHzTestStack.test_extract_stack�	s9���"�"�*�*�9�+?�+?��+E�F�����a��!7�!7�8r c��tjjtjd�d��}|j	t|�d�y)Nr�rC)r.r�r>r�rSrTr�s  r�test_extract_stack_limitz"TestStack.test_extract_stack_limit�	s<���"�"�*�*�9�+?�+?��+E�Q�*�O������Q���#r c�Z�tj�tjdt��t	dd�}t|dd�}tjjt|dfg�d��}tj�|j|djd�y)N�/foo.pyr�rT��lookup_linesr�
import sys)rdre�updatecacherg�	test_code�
test_framer.r�r>rrSrs�r0rNrmrs    r�test_extract_stack_lookup_linesz)TestStack.test_extract_stack_lookup_lines�	s����������i���3��i��*���q�$��%���"�"�*�*�4�!�Q���>��*�M����������1����L�1r c�r�tj�tdd�}t|dd�}tj
j
t|dfg�d��}|jitj�tjdt��|j|djd�y)Nr�r�rFr�rr�)
rdrer�r�r.r�r>rrS�cacher�rgrsr�s    r�*test_extract_stackup_deferred_lookup_linesz4TestStack.test_extract_stackup_deferred_lookup_lines�	s��������i��*���q�$��%���"�"�*�*�4�!�Q���>��*�N������Y�_�_�-����i���3�����1����L�1r c��tjjdg�}|jdg|j	��y�N��foo.pyrJ�fredrsz*  File "foo.py", line 1, in fred
    line
�r.r��	from_listrSr�r�s  r�test_from_listzTestStack.test_from_list�	s9���"�"�,�,�.K�-L�M�����
;�<�
�H�H�J�	r c���tjjdg�}d|d<tjj|�}|jdg|j	��y)Nr�)r�rLr�rsrz*  File "foo.py", line 2, in fred
    line
r�)r0rr�s   r�test_from_list_edited_stackz%TestStack.test_from_list_edited_stack�	sX���"�"�,�,�.K�-L�M��,��!��
�
#�
#�
-�
-�a�
0�����
;�<��I�I�K�	r c��tjjdg�}|jdg|j	��yr�r�r�s  r�test_format_smokezTestStack.test_format_smoke�	s;��
�"�"�,�,�.K�-L�M�����
;�<�
�H�H�J�	r c�"�tjdt��tdd�}t	|t�ddi�}t
jjt|dfg�d��}|j|djdd	i�y)
Nr�r��	somethingrJrT��capture_localsr�1�rdr�rgr�r�r.r�r>rrSrkr�s    r�test_localszTestStack.test_locals�	sw�����i���3��i��*���q�'�)�k�1�%5�6���"�"�*�*�4�!�Q���>�$�*�O������1����{�C�&8�9r c��tjdt��tdd�}t	|t�ddi�}t
jjt|dfg��}|j|djd�y)Nr�r�r�rJrrr�r�s    r�test_no_localszTestStack.test_no_locals�	sm�����i���3��i��*���q�'�)�k�1�%5�6���"�"�*�*�4�!�Q���>�:������1����d�+r c��d�}|dd�}|jdt|jjdzfzg|j	��y)Nc�t�d}d}tjjtjd�dd��S)NrJrLT)r�rD)r.r�r>r�)�k�vrr7s    r�
some_innerz0TestStack.test_format_locals.<locals>.some_inner�	s>���A��A��)�)�1�1��$�$�T�*�4�q�2�J�
Jr rarIzw  File "%s", line %d, in some_inner
    return traceback.StackSummary.extract(
    a = 1
    b = 2
    k = 3
    v = 4
)rSrr�r�r�)r0r�rs   r�test_format_localszTestStack.test_format_locals�	sZ��	J�

�q�!�������
'�
�(;�(;�(J�(J�Q�(N�O�P�
��x�x�z�	r c����Gd�dtj���fd�}|�}|j|j�t�d|j
jdz��g�y)Nc��eZdZd�Zy)�>TestStack.test_custom_format_frame.<locals>.CustomStackSummaryc�8�|j�d|j��S)N�:)r�r�)r0�
frame_summarys  r�format_frame_summaryzSTestStack.test_custom_format_frame.<locals>.CustomStackSummary.format_frame_summary�	s!��'�0�0�1��=�3G�3G�2H�I�Ir N)r�r�r�r�r�r r�CustomStackSummaryr��	s��
Jr r�c�P���jtjd�d��S)NrJrC)r>r.r�)r�s�rr�z6TestStack.test_custom_format_frame.<locals>.some_inner�	s+���%�-�-��$�$�T�*�!�.�5�
5r r�rJ)r.r�rSr�rr�r�)r0r�rr�s   @r�test_custom_format_framez"TestStack.test_custom_format_frame�	s`���	J��!7�!7�	J�	5�
�L�����
�H�H�J��z��:�.�.�=�=��A�B�
C�D�	Fr c�b��d���fd�}|�}Gd�dtj�}|jtj|��j	�}|jt
|�d��jjdz}|j|ddt�d|�d	��y)
Nc��ddzyr�r�r�r rrmz)TestStack.test_dropping_frames.<locals>.f�	�	��
�a�Cr c�Z��	��y#t$r}|jcYd}~Sd}~wwxYwr�)r�r�)rrms �rr�z)TestStack.test_dropping_frames.<locals>.g�	s'���
'�����
'����&��
'�s��	*�%�*�*c���eZdZ�fd�Z�xZS)�.TestStack.test_dropping_frames.<locals>.Skip_Gc�B��|jdk(ryt�|�	|�S)Nr�)r��superr�)r0r�r~s  �rr�zCTestStack.test_dropping_frames.<locals>.Skip_G.format_frame_summary�	s$��� �%�%��,���w�3�M�B�Br )r�r�r�r��
__classcell__�r~s@r�Skip_Gr��	s���
C�
Cr r�rJrr�rz, in f
    1/0
)
r.r�r>r�r�rSrTr�r�r)r0r�r%r��stack�lnorms      @r�test_dropping_frameszTestStack.test_dropping_frames�	s����	�	'��S��	C�Y�+�+�	C�������b�!�#�#)�6�8�	�	
����U��Q�'��j�j�'�'�!�+������!�H��x�j����->�?�	
r N)r�r�r�r�r�rHr�r�r�r�r�r�r�r�r�r�r�r�r rr~r~q	sI��%�$�9�$�2�2����:�,�� F�
r r~c��eZdZdefd�Zy)�Unrepresentablerc��td��)Nr�r#r:s rr�zUnrepresentable.__repr__�	s���)�*�*r N)r�r�r�r�r�r�r rr�r��	s��+�#�+r r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Ze�d��Zy)�TestTracebackExceptionc�j�	ddz|jdj�|jd|j�|jd|j�|j|j�|jt�|j�|jt|�t|��y#t$rh}|}tjj|�}tjjtj|j��}Yd}~��&d}~wwxYw)NrJrF�r�r.�TracebackException�from_exceptionr�r>r�r�rS�	__cause__�__context__�__suppress_context__r�rK�exc_typer�)r0r�exc_objr2�expected_stacks     r�
test_smokez!TestTracebackException.test_smoke
s���	4�
�a�C�	
����s�}�}�-�����s���/������ 8� 8�9��������3�����g�����5�����W��s�3�x�0���	4��G��.�.�=�=�a�@�C�&�3�3�;�;��!�!�!�/�/�2�4�N��	4�s�C�	D2�
AD-�-D2c���d�}	|�|j}|j}|jd|j�|jd|j�|jd|j�|j||j�|jt�|j �|jt#|�t#|��y#t$r|}|}|j}tjj	tj
|�ddd��|_tjj|ddd��|_	Yd}~��Rd}~wwxYw)Nc��ddzyr�r�r�r rr�z7TestTracebackException.test_from_exception.<locals>.foo
r�r rJFT)rDr�r�)r�r�r.r�r>r�r�r�r�r2rSr�r�r�r�rKr�r�)r0r�rr�r%r�r2s       r�test_from_exceptionz*TestTracebackException.test_from_exception
s,��	�		E��E��,�,���h�h������s�}�}�-�����s���/������ 8� 8�9��������3�����g�����5�����W��s�3�x�0���	E��G����B�"+�"8�"8�"@�"@��!�!�"�%�Q�U�#�#A�#%�D��!�3�3�B�B����t�C�E�D�H�H��
	E�s�C�	E#�'A1E�E#c���		ddztj�}tjj	|�}td�}td�|�#tj�}tjj	|�}td�}td�|�xYw#t
$rg}|}tjj	|�}tjjtj|j��}Yd}~nd}~wwxYwtjt
d�}|j||j�|j|j�|jd|j�|j||j�|jt|�|j �|jt#|�t#|��y)NrJr�cause�uh ohT�r�r%r.r�r�r�r�r>r�r�rSr�r�r�r�rKr�r�)r0r2�exc_contextr�rr�r��	exc_causes        rrsz!TestTracebackException.test_cause'
sq��	4�
4��!���m�m�o��'�:�:�I�I�#�N��!�'�*����(�e�3���m�m�o��'�:�:�I�I�#�N��!�'�*����(�e�3���	4��G��.�.�=�=�a�@�C�&�3�3�;�;��!�!�!�/�/�2�4�N��	4��
�0�0��E�4�H�	�����C�M�M�2�����c�o�o�6�����s�7�7�8��������3�����g�����5�����W��s�3�x�0s+�A�A
B �AB�B � 	D�)AD�Dc�j�		ddztj�}tjj	|�}td��#tj�}tjj	|�}td��xYw#t
$rg}|}tjj	|�}tjjtj|j��}Yd}~nd}~wwxYw|jd|j�|j|j�|jd|j�|j||j�|jt|�|j �|jt#|�t#|��y)NrJrr�Fr��r0r2r�rr�r�s      rrwz#TestTracebackException.test_context=
sE��	4�
)��!���m�m�o��'�:�:�I�I�#�N����(�(���m�m�o��'�:�:�I�I�#�N����(�(���	4��G��.�.�=�=�a�@�C�&�3�3�;�;��!�!�!�/�/�2�4�N��	4��
	
����s�}�}�-�����c�o�o�6������ 8� 8�9��������3�����g�����5�����W��s�3�x�0s)�A�>B�?B�B�	C8�AC3�3C8c	����fd��	��|jd�tjj	�}t|j
��}|jt|�tj��|jt|D�cgc]	}d|vs�|��c}�tj�dz�|jd|d�y#t$r}|}Yd}~��d}~wwxYwcc}w)Nc�.��	ddzy#��YyxYwr�r�rs�rrmz9TestTracebackException.test_long_context_chain.<locals>.fR
s���
��!���
���s�	�	zException not raisedzZeroDivisionError:g�?z0RecursionError: maximum recursion depth exceededr�)r�r
r.r�r�r�r�rFrTr�rrW)r0rr��te�resr�rms      @r�test_long_context_chainz.TestTracebackException.test_long_context_chainQ
s����	�	.�
�C�
�I�I�,�-�
�
)�
)�
8�
8��
A���2�9�9�;���	
���3�s�8�S�%:�%:�%<�=�����C�=�C�q�#7�1�#<��C�=�>��!�!�#�c�)�	+�	
�
�
�>��B��	I���	��G��	��>s#�C�	C6�#C6�	C3�'C.�.C3c��		ddztd�}td�|�#td�}td�|�xYw#t$ri}|}tjj|d��}tjjtj|j��}Yd}~nd}~wwxYwtjtd�}|j||j�|jd|j�|jd|j�|j||j�|jt|�|j�|jt|�t|��y)NrJrr�r�T��compactr�)r0r�rr�r2r�r�s       r�test_compact_with_causez.TestTracebackException.test_compact_with_causej
s6��
	:�
4��!��!�'�*����(�e�3��"�'�*����(�e�3���	:��G��.�.�=�=�g�t�=�T�C�&�3�3�;�;��!�!�'�"7�"7�8�:�N��	:��
�0�0��E�4�H�	�����C�M�M�2�����s���/�����s�7�7�8��������3�����g�����5�����W��s�3�x�0s"��:�7�:�	B,�AB'�'B,c�n�		ddztj�}tjj	|�}td��#tj�}tjj	|�}td��xYw#t
$ri}|}tjj	|d��}tjjtj|j��}Yd}~nd}~wwxYw|jd|j�|j|j�|jd|j�|j||j�|jt|�|j �|jt#|�t#|��y)NrJrr�Tr�Fr�r�s      r�test_compact_no_causez,TestTracebackException.test_compact_no_cause~
sL��	:�
)��!���m�m�o��'�:�:�I�I�#�N����(�(���m�m�o��'�:�:�I�I�#�N����(�(���	:��G��.�.�=�=�a��=�N�C�&�3�3�;�;��!�!�'�"7�"7�8�:�N��	:��
	
����s�}�}�-�����c�o�o�6������ 8� 8�9��������3�����g�����5�����W��s�3�x�0s)�A�>B�?B�B�	C:�AC5�5C:c��	ddztj�}tj|j�}tj
j
|�}|jtj|�|�|jtj|j�|�y#t$r}|}Yd}~��d}~wwxYwr�)r�r��getrefcountr�r.r�r�rS)r0rr��refcnt1�refcnt2r2s      r�/test_no_refs_to_exception_and_traceback_objectszFTestTracebackException.test_no_refs_to_exception_and_traceback_objects�
s���	�
�a�C��/�/�'�*���/�/�'�"7�"7�8���*�*�9�9�'�B���������1�7�;��������)>�)>�?��I���	��G��	�s�B/�/	C�8B?�?Cc�d�	ddz|j	�|j||�|j
|t��|j|t�y#t$rJ}|}tjj|�}tjj|�}Yd}~��d}~wwxYwr�)	r�r.r�r��assertIsNotrSrlrmr	)r0rr�r2�exc2s     r�test_comparison_basicz,TestTracebackException.test_comparison_basic�
s���	H�
�a�C�
	
����d�#�����d�#����C���*�����i�(���	H��G��.�.�=�=�g�F�C��/�/�>�>�w�G�D��	H�s�A�	B/�%AB*�*B/c���d���fd�}	|�tjj�}tjj|d��}tjj|d��}|j	||�|j||�tjj|d��}|j||�tjj|d��}tjj|dd�	�}	|j	||	�tjj|d
��}
tjj|d
d�	�}|j|
|�y#t$r
}|}Yd}~��td}~wwxYw)Nc�&�	td��#�xYwr�r�r�r r�	raise_exczKTestTracebackException.test_comparison_params_variations.<locals>.raise_exc�
s��
� ��-�-��
��s�
�c���d\}}��y)N)rJrLr�)r<rPrs  �r�raise_with_localszSTestTracebackException.test_comparison_params_variations.<locals>.raise_with_locals�
s����D�A�q��Kr r&rCrLTr�r�)rDr�r�)r�r.r�r�rSrl)
r0rrr�r2�exc1r��exc3�exc4�exc5�exc6�exc7rs
            @r�!test_comparison_params_variationsz8TestTracebackException.test_comparison_params_variations�
sa���	�	�	����*�*�9�9�'�B���+�+�:�:�7�"�:�M���+�+�:�:�7�!�:�L������d�#����C��&��+�+�:�:�7�SW�:�X�����C��&��+�+�:�:�7�"�:�M���+�+�:�:�7�"�]a�:�b������t�$��+�+�:�:�7�"�:�M���+�+�:�:�7�"�]a�:�b�����D�$�'��-�	��G��	�s�E5�5	F�>F�Fc�x�g}td�D]}	ddz�
|j
|d|d�|j
t|dj��t|dj���y#t$r8}|jtjj|��Yd}~��d}~wwxYwr )	rr�r�r.r�r�rSr�r�)r0rrrs    r�/test_comparison_equivalent_exceptions_are_equalzFTestTracebackException.test_comparison_equivalent_exceptions_are_equal�
s������q��A�
L��!���
	
����a��$�q�'�*�����d�1�g�n�n�.�/��d�1�g�n�n�6F�1G�H���
L����I�8�8�G�G��J�K�K��
L�s�A8�8	B9�.B4�4B9c�R�Gd�dt�}|d�}|d�}	||�#|$r	|�#|$r}|}Yd}~nd}~wwxYwYnwxYwtjj|�}t	|j��}|j
d|d�|j
d|d�y)	Nc��eZdZd�Zy)�CTestTracebackException.test_unhashable.<locals>.UnhashableExceptionc��yr0r�r1s  rr3zJTestTracebackException.test_unhashable.<locals>.UnhashableException.__eq__�
r4r Nr5r�r rr6r�
r7r r6r8r9zUnhashableException: ex2
rLzUnhashableException: ex1
r)r�r.r�r�r�r�rW)r0r6r8r9rr�r2�	formatteds        rr=z&TestTracebackException.test_unhashable�
s���	�)�	�"�%�(��!�%�(��	��3���"�	�
��	��&�
����
���		��
�*�*�9�9�'�B�������&�	��
�
�2�I�a�L�A��
�
�2�I�a�L�As)�$�A�,�=�8�A�=�A�Ac�D���fd��	�d�|jj�y#t$ri}tjj|d��}tjjtj|j�d��}Yd}~��d}~wwxYw)Nc�,��|r�|dz
�yddzyr�r�)�n�recurses �rrz2TestTracebackException.test_limit.<locals>.recurse�
s������!����!�r r&r�rC)
r�r.r�r�r�r>r�r�rSr�)r0rr2r�rs    @r�
test_limitz!TestTracebackException.test_limit�
s����	�
	=��B�K�
	
�������3��	�	=��.�.�=�=�a�q�=�I�C�&�3�3�;�;��!�!�!�/�/�2�!�<�=�N��	=�s�-�	B�AB�Bc��tj�td�}tdd�}t	|dd�}t|ddd�}t
jt||d��}|jtji�tjdt��|j|jdjd�y)	Nr�r�r�rrFr�r�)rdrer�r�r��test_tbr.r�rSr�r�rgr�rs�r0rrNrmr%r2s      r�test_lookup_linesz(TestTracebackException.test_lookup_lines�
s��������g����i��*���q�$��%��
�Q��4��
#���*�*�9�a��%�P��������"�-����i���3�������1��*�*�L�9r c�`�tjdt��td�}t	dd�}t|t�ddt
�d��}t|ddd�}tjt||d	�
�}|j|jdjddd
d��y)Nr�r�r�rJ�string)r�r2�unrepresentablerrTr�r�z'string'z<local repr() failed>)
rdr�rgr�r�r�r�rr.r�rSr�rkrs      rr�z"TestTracebackException.test_localss������i���3��g����i��*���q�'�)�1�x�\k�\m�%n�o��
�Q��4��
#���*�*��q�"�T�3������I�I�a�L����
�G^�_�	ar c�@�tjdt��td�}t	dd�}t|t�ddi�}t
|ddd�}tjt||�}|j|jdjd�y)Nr�r�r�r�rJrr)rdr�rgr�r�r�rr.r�rSr�rkrs      rr�z%TestTracebackException.test_no_localss������i���3��g����i��*���q�'�)�k�1�%5�6��
�Q��4��
#���*�*�9�a��<��������1��,�,�d�3r c��tjttd�d�}|jt	|j��dg�y)N�havenzException: haven
)r.r�r�rSr�r�)r0r2s  r�test_traceback_headerz,TestTracebackException.test_traceback_headers<���*�*�9�i��6H�$�O������c�j�j�l�+�.B�-C�Dr c��d�}tjj|�d��}t�}|j	|��|j|j
�jd�ddgd��y)Nc�D�d}	|dzy#t$r}|cYd}~Sd}~wwxYw)N�rr#)r<rs  rrmz,TestTracebackException.test_print.<locals>.f"s(���A�
��!����
����
�s�
�	���Tr�r�rNr�)z    x/0z    ~^~z
    x = 12z#ZeroDivisionError: division by zeror)r.r�r�rr�rSr�ro)r0rmr2r�s    r�
test_printz!TestTracebackException.test_print sj��	��*�*�9�9�!�#�d�9�S������	�	�v�	������O�O��#�#�D�)�"�#�.�
�	r N)r�r�r�r�r�rsrwr�r�r�r�r�r
rr=rrr�r�r!r
r%r�r rr�r��	su��
1�1�.1�,1�(I�21�(1�(
J�
)�#(�JI�B�&4�	:�
a�4�E�����r r�c�H��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
�xZS)	�&TestTracebackException_ExceptionGroupsc�L��t�|��|j�|_yr�)r��setUp�_get_exception_grouprd)r0r~s �rr)z,TestTracebackException_ExceptionGroups.setUp5s���
��
���+�+�-��r c���d�}d�}|jj|_|jj|_			|�	|d�tdg��#t$r}|}Yd}~�'d}~wwxYw#t$r}|}Yd}~�6d}~wwxYw#t
$r}|}Yd}~nd}~wwxYw	|d�n#t$r}|}Yd}~nd}~wwxYwtd|g��#t
$r}|cYd}~Sd}~wwxYw)Nc��ddzyr�r�r�r rrmzFTestTracebackException_ExceptionGroups._get_exception_group.<locals>.f:r�r c��t|��r�r��r�s rr�zFTestTracebackException_ExceptionGroups._get_exception_group.<locals>.g=s���Q�-�r rNr��r�)r�r��lno_f�lno_gr�rfr�)	r0rmr�rrr�rrrds	         rr*z;TestTracebackException_ExceptionGroups._get_exception_group9s���	�	 ��Z�Z�.�.��
��Z�Z�.�.��
�	�
���C���b�E�%�U�T�4�L�9�9��
!���D����!���D����"�
����
��
��"����
����
�� ���t��5�5���	��I��	�s��A�A6�B�	A3�'A.�)B�.A3�3B�6	B�?B�B�B�B�	B#�B�C�B#�#C�'B0�/C�0	C�9C�;C�C�C�	C+�C&� C+�&C+c��|j}tjt|�||j�}tjj|�}|j
||�|j||�yr�)rdr.r�rKr�r�r�rS)r0rd�teg1�teg2s    r�!test_exception_group_constructionzHTestTracebackException_ExceptionGroups.test_exception_group_constructionYs_��
�W�W���+�+�D��H�b�"�:J�:J�K���+�+�:�:�2�>������t�$�����t�$r c��tjj|j�}dj	|j��j
d�}dj
d�}|j||�y)NrrNz'ExceptionGroup: eg2 (2 sub-exceptions)
)r.r�r�rdr�r/rorS)r0�tegrr�s    r�*test_exception_group_format_exception_onlyzQTestTracebackException_ExceptionGroups.test_exception_group_format_exception_only`s^���*�*�9�9�$�'�'�B���G�G�C�5�5�7�8�>�>�t�D�	�=�C�C�D�I������H�-r c�r�tjj|j�}dj	|j��j
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'���}|j||�y)(NrrNz6  + Exception Group Traceback (most recent call last):z  |   File "rr_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()rJr�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):r%z    |     g(24)z    |     raise ValueError(v)z    | ValueError: 24�)    +------------------------------------)r.r�r�rdr�r�ror0r1rrS)r0r7rr0r1r�s      r�test_exception_group_formatzBTestTracebackException_ExceptionGroups.test_exception_group_formatgsf���*�*�9�9�$�'�'�B���G�G�C�J�J�L�)�/�/��5�	��
�
���
�
��"�L�"�"�8�*�H�U�2�X�J�>W�X�"�H�"�A�	"�
?�"�O�
"�%�X�J�h�u�R�x�j�@Y�Z�"�J�"�C�"�A�"�A�"�'�x�j���q��	�AZ�[�"�&�"�'�x�j���q��	��H�"�&�"� &�!"�"B�#"�$A�%"�&A�'"�('�x�j���r��
�B[�\�)"�*(�+"�,'�x�j���q��	��H�-"�.6�/"�0-�1"�2B�3"�4?�5"�6?�7"�8%�X�J�h�u�R�x�j�@Y�Z�9"�:&�;"�<%�X�J�h�u�Q�w�i�v�F�="�>4�?"�@+�A"�B@�C"�D�E"��H	
����H�-r c��g}g}td�D]}|jt|���td�D]}|jt|���t}|d|d|�|d|�g�}t
jj|d��}dj|j��jd	�}gd
�}|j||�y)Nrar&rdr�r�rL)�max_group_widthrrN)z)  | ExceptionGroup: eg (2 sub-exceptions)r:z,    | ExceptionGroup: eg1 (3 sub-exceptions)r<z      | ValueError: 0r=�      | ValueError: 1�,      +---------------- ... ----------------z      | and 1 more exceptionr?r@z-    | ExceptionGroup: eg2 (10 sub-exceptions)r<z      | TypeError: 0r=z      | TypeError: 1rFz      | and 8 more exceptionsr?r)rr�r-r�rfr.r�r�r�r�rorS)	r0�excs1�excs2r@r�rdr7rr�s	         r�test_max_group_widthz;TestTracebackException_ExceptionGroups.test_max_group_width�s��������q��A��L�L��A��'���r��A��L�L��1��&����
��r�%��'��E�5�)9�:�
;���*�*�9�9�"�a�9�P���G�G�C�J�J�L�)�/�/��5�	���,	
����H�-r c	�H�td�}td�D]$}tdt|�|t|�g�}�&tj
j
|d��}dj|j��jd�}gd�}|j||�y)	Nrrar2rL)�max_group_depthrrN)z*  | ExceptionGroup: exc (3 sub-exceptions)r:z    | ValueError: -2r@z,    | ExceptionGroup: exc (3 sub-exceptions)r<z      | ValueError: -1r=z"      | ... (max_group_depth is 2)z*      +---------------- 3 ----------------rEr?z(    +---------------- 3 ----------------z    | ValueError: 2rAr)r�rrfr-r.r�r�r�r�rorS)r0r2r@r7rr�s      r�test_max_group_depthz;TestTracebackException_ExceptionGroups.test_max_group_depth�s����
�#���q��A� ���Q�B���j��m�(L�M�C���*�*�9�9�#�q�9�Q���G�G�C�J�J�L�)�/�/��5�	���$	
����H�-r c��	|j�#t$r}|}Yd}~nd}~wwxYwtd�D]}	|�#t$r}|}Yd}~�d}~wwxYwtj
j
�}tj
j
|�}tj
j
|d��}tj
j
|d��}|j||�|j||�|j||�|j||�|j|t��|j|t�y)Nr�i,rCra)rdrfrr�r.r�r�r�rSrlrmr	)r0rr2rr�r�r�nes        r�test_comparisonz6TestTracebackException_ExceptionGroups.test_comparison�s��	��'�'�M���	��C��	���q��A�
��	���
����
���
�*�*�9�9�'�B���+�+�:�:�7�C���+�+�:�:�7�#�:�N��
�
)�
)�
8�
8���
8�
J������d�#�����d�#�����d�#����C��$����C���*�����i�(s%��	#��#�7�	A�A�A)r�r�r�r)r*r5r8rBrIrLrOr�r�s@rr'r'4s.���.�*�@%�.�+.�Z$.�L.�8)r r'c���eZdZd!d�Zd�Zd�Zd�Zd�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!y)"�SuggestionFormattingTestBaseNc�N�������fd�}n�}|j|dd��}|dS)Nc���t���yr�)�getattr)�	attr_name�objs��rr�z=SuggestionFormattingTestBase.get_suggestion.<locals>.callable�s
�����Y�'r r��r�r�r)r�)r0rVrUr�rs ``  r�get_suggestionz+SuggestionFormattingTestBase.get_suggestion�s=���� �
(��H��)�)��"��*�
���A��r c	�&�Gd�d�}Gd�d�}Gd�d�}Gd�d�}Gd	�d
�}Gd�d�}Gd
�d�}|df|df|df|df|df|df|df|dffD].\}}	|j|�d�}
|j|	|
��0y)Nc� �eZdZdxZxZxZZdZy)�KSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.SubstitutionN)r�r�r��noise�
more_noiser�bc�blechr�r r�Substitutionr[�s��*.�.�E�.�J�.��R��Er r`c� �eZdZdxZxZxZZdZy)�JSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.EliminationN)r�r�r�r\r]rr^�blchr�r r�Eliminationrbs��*.�.�E�.�J�.��R��Dr rdc� �eZdZdxZxZxZZdZy)�GSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.AdditionN)r�r�r�r\r]rr^�bluchinr�r r�Additionrfs��*.�.�E�.�J�.��R��Gr rhc��eZdZdZdZy)�ZSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.SubstitutionOverEliminationN)r�r�r��blach�blucr�r r�SubstitutionOverEliminationrj	s���E��Dr rmc��eZdZdZdZy)�WSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.SubstitutionOverAdditionN)r�r�r�rk�bluchir�r r�SubstitutionOverAdditionro
s���E��Fr rqc��eZdZdZdZy)�VSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.EliminationOverAdditionN)r�r�r��blucharlr�r r�EliminationOverAdditionrss���F��Dr ruc��eZdZdZdZdZy)�YSuggestionFormattingTestBase.test_getattr_suggestions.<locals>.CaseChangeOverSubstitutionN)r�r�r��Luch�fluch�BLuchr�r r�CaseChangeOverSubstitutionrws���D��E��Er r{�
'bluchin'?�'blech'?�'blch'?�'blach'?�'bluc'?�'BLuch'?�bluch�rXrW)r0r`rdrhrmrqrur{�cls�
suggestionr�s           r�test_getattr_suggestionsz5SuggestionFormattingTestBase.test_getattr_suggestions�s���	�	�	�	�	�	�	�	�	�	�	�	�	�	��|�$�
�:�&�
�)�$�
�|�$�
(�*�5�
%�z�2�
$�i�0�
'��4�	 
�O�C���(�(����8�F��M�M�*�f�-�	 
r c�j�Gd�d�}|j|�d�}|jd|�y)Nc��eZdZdZy)�cSuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_long_attributes.<locals>.AN�r�r�r�r_r�r rr�r�(����Er r��somethingverywrongr_�rXr��r0r�r�s   r�;test_getattr_suggestions_do_not_trigger_for_long_attributeszXSuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_long_attributes's3��	�	��$�$�Q�S�*>�?������&�)r c�p�Gd�d�}dD]�}|j|��5|j||�}|jd|�|jd|�|jd|�|jd|�|jd	|�|jd
|�ddd���y#1swY��xYw)Nc� �eZdZdxZxZxZxZZy)�oSuggestionFormattingTestBase.test_getattr_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.MyClassN)r�r�r��vvv�momrd�id�pythor�r r�MyClassr�/s��)-�-�C�-�#�-��-�B�r r��r7r��m�py�r��Did you meanz'vvv�'mom'�'id'�'w'�'pytho'�r�rXr�)r0r�r�r�s    r�Atest_getattr_error_bad_suggestions_do_not_trigger_for_small_namesz^SuggestionFormattingTestBase.test_getattr_error_bad_suggestions_do_not_trigger_for_small_names.s���	.�	.�*�D����4��(��,�,�W�d�;��� � ���8�� � ���0�� � ��&�1�� � ���0�� � ���/�� � ��F�3�)�(�*�(�(�s�A?B,�,B5	c��Gd�d�}td�D]}t|d|��d��|j|�d�}|jd|�y)Nc��eZdZdZy)�]SuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_big_dicts.<locals>.ANr�r�r rr�r�=r�r r�r?�index_r�r_)r�setattrrXr�)r0r��indexr�s    r�5test_getattr_suggestions_do_not_trigger_for_big_dictszRSuggestionFormattingTestBase.test_getattr_suggestions_do_not_trigger_for_big_dicts<sU��	�	��4�[�E��A���w�'��.�!��$�$�Q�S�'�2������&�)r c���Gd�d�}|j|�d�}|jd|�Gd�d�}|j|�d�}|jd|�y)Nc��eZdZdZd�Zy)�HSuggestionFormattingTestBase.test_getattr_suggestions_no_args.<locals>.ANc��t��r��r��r0�attrs  rr�zTSuggestionFormattingTestBase.test_getattr_suggestions_no_args.<locals>.A.__getattr__Js��$�&�&r �r�r�r�r_r�r�r rr�r�Hs���E�
'r r�r�r_c��eZdZdZd�Zy)r�Nc��t�r�r�r�s  rr�zTSuggestionFormattingTestBase.test_getattr_suggestions_no_args.<locals>.A.__getattr__Rs��$�$r r�r�r rr�zHSuggestionFormattingTestBase.test_getattr_suggestions_no_args.<locals>.APs���E�
%r r�r�s   r� test_getattr_suggestions_no_argsz=SuggestionFormattingTestBase.test_getattr_suggestions_no_argsGs^��	'�	'�
�$�$�Q�S�'�2���
�
�g�v�&�	%�	%�
�$�$�Q�S�'�2���
�
�g�v�&r c���Gd�d��G�fd�d�}Gd�d�}Gd�d�}|||fD]+}|j|�d	�}|jd
|��-y)Nc��eZdZdZdZy)�]SuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.NonStringifyClassNr�r�r r�NonStringifyClassr�Ys���G��Hr r�c���eZdZdZ�fd�Zy)�MSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.ANc�$��t����r�r�)r0r�r�s  �rr�zYSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.A.__getattr___s���$�%6�%8�9�9r r�)r�s�rr�r�]s
����E�
:r r�c��eZdZdZd�Zy)�MSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.BNc��tdd��)Nrr_r�r�s  rr�zYSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.B.__getattr__ds��$�W�b�1�1r r�r�r rr�r�bs���E�
2r r�c��eZdZdZd�Zy)�MSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.CNc��td��)Nr_r�r�s  rr�zYSuggestionFormattingTestBase.test_getattr_suggestions_invalid_args.<locals>.C.__getattr__is
��$�R�(�(r r�r�r r�Cr�gs���E�
)r r�r�r_r�)r0r�r�r�r�r�r�s      @r�%test_getattr_suggestions_invalid_argszBSuggestionFormattingTestBase.test_getattr_suggestions_invalid_argsXs_���	�	�	:�	:�
	2�	2�
	)�	)�
�q�!�9�C��(�(����8�F��M�M�'�6�*�r c�j�Gd�d�}|j|�d�}|jd|�y)Nc��eZdZd�Zy)�NSuggestionFormattingTestBase.test_getattr_suggestions_for_same_name.<locals>.Ac��dgS)Nr_r�r:s r�__dir__zVSuggestionFormattingTestBase.test_getattr_suggestions_for_same_name.<locals>.A.__dir__rs
���y� r N)r�r�r�r�r�r rr�r�qs��
!r r�r_r�r�r�s   r�&test_getattr_suggestions_for_same_namezCSuggestionFormattingTestBase.test_getattr_suggestions_for_same_nameps2��	!�	!��$�$�Q�S�'�2�������0r c��Gd�d�}|j|�d�}|jd|�|jd|�y)Nc��eZdZdZd�Zy)�NSuggestionFormattingTestBase.test_attribute_error_with_failing_dict.<locals>.TrJc��td��)N�oh no!r�r:s rr�zVSuggestionFormattingTestBase.test_attribute_error_with_failing_dict.<locals>.T.__dir__zs
��$�X�.�.r N)r�r�r�r�r�r�r r�Tr�xs���E�
/r r��blichr_r�r�)r0r�r�s   r�&test_attribute_error_with_failing_dictzCSuggestionFormattingTestBase.test_attribute_error_with_failing_dictwsB��	/�	/�
�$�$�Q�S�'�2������&�)�����6�*r c�\�d�}|j|dd��}|jd|d�y)Nc��tdd���)Nr$r_)r�rVr�r�r r�#raise_attribute_error_with_bad_namezlSuggestionFormattingTestBase.test_attribute_error_with_bad_name.<locals>.raise_attribute_error_with_bad_name�s�� �b�b�1�1r r�rWr6�r�r��r0r�rs   r�"test_attribute_error_with_bad_namez?SuggestionFormattingTestBase.test_attribute_error_with_bad_name�s<��	2��)�)�/�R�4�*�
��	
����l�2�.�/r c���Gd�d��G�fd�d�}|j|�d�}|jd|�|jd|�y)Nc��eZdZdZy)�RSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr.<locals>.ArJN)r�r�r�r�r�r rr�r��s���Er r�c���eZdZ�fd�Zy)�RSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr.<locals>.Bc�*����}|jSr�)r�)r0r�rr�s   �r�__getattribute__zcSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr.<locals>.B.__getattribute__�s����C���w�w�r N)r�r�r�r�)r�s�rr�r��s���
r r�r�r�r�r�)r0r�r�r�s   @r�*test_attribute_error_inside_nested_getattrzGSuggestionFormattingTestBase.test_attribute_error_inside_nested_getattr�sI���	�	�	�	�
�$�$�Q�S�+�6���
�
�n�f�-��
�
�g�v�&r c��ttj��}|jtj
|�tjjt|��|jtjj�djtjtjd���}||dzz}|j!|�|S)Nrr;)r�z.py)r�tempfile�mkdtemprW�shutil�rmtreer��pathr�r��popr��random�choicesr�
ascii_letters�
write_text)r0r�tmpdir�mod_name�modules     r�make_modulez(SuggestionFormattingTestBase.make_module�s����h�&�&�(�)������
�
�v�.�������F��$���������%��7�7�6�>�>�&�*>�*>�"�E�F���8�e�+�,�����$���r c������j|�����fd�}�jt���j|dd��}|dS)Nc���	td��d����y#t$r}|d�d}~wt$r'}�jdt	|����Yd}~yd}~wwxYw)Nzfrom z import zExpected ImportError but got )r7r�r�r�rK)r�modnamer�r0s ���rr�zISuggestionFormattingTestBase.get_import_from_suggestion.<locals>.callable�s\���
E��u�W�I�X�d�V�4�5���
"��T�!���
E��	�	�9�$�q�'��C�D�D��
E�s��	A�!�A�A�Ar�rWr)r�rWrr�)r0�mod_dictr�r�rr�s` `  @r�get_import_from_suggestionz7SuggestionFormattingTestBase.get_import_from_suggestion�sQ����"�"�8�,��	E�	
�����(��)�)��"��*�
���A��r c	��tjd�}tjd�}tjd�}tjd�}tjd�}tjd�}tjd�}|df|d	f|d
f|df|df|df|df|d
ffD])\}}	|j|d�}
|j|	|
��+y)NzP            noise = more_noise = a = bc = None
            blech = None
        zP
            noise = more_noise = a = bc = None
            blch = None
        zS
            noise = more_noise = a = bc = None
            bluchin = None
        z:
            blach = None
            bluc = None
        z<
            blach = None
            bluchi = None
        z;
            blucha = None
            bluc = None
        zS
            Luch = None
            fluch = None
            BLuch = None
        r|r}r~rr�r�r�)rrrsr�rW)r0�substitution�elimination�addition�substitutionOverElimination�substitutionOverAddition�eliminationOverAddition�caseChangeOverSubstitutionrr�r�s           r�test_import_from_suggestionsz9SuggestionFormattingTestBase.test_import_from_suggestions�s�����(�
��
�o�o�'�
��
�?�?�$�
��
'/�o�o�7�'
�#�
$,�?�?�4�$
� �
#+�/�/�3�#
��
&.�_�_�6�&
�"��|�$�
�:�&�
�)�$�
�|�$�
(�*�5�
%�z�2�
$�i�0�
'��4�	!
��D�*��4�4�T�7�C�F��M�M�*�f�-�	!
r c�P�d}|j|d�}|jd|�y)Nzblech = Noner�r_r�)r0rr�s   r�?test_import_from_suggestions_do_not_trigger_for_long_attributesz\SuggestionFormattingTestBase.test_import_from_suggestions_do_not_trigger_for_long_attributes�s*�����$�$�T�+?�@������&�)r c�`�d}dD]�}|j|��5|j||�}|jd|�|jd|�|jd|�|jd|�|jd|�|jd	|�ddd���y#1swY��xYw)
Nz!vvv = mom = w = id = pytho = Noner�r�r�z'vvv'r�r�r�r�)r�r�r�)r0rr�r�s    r�Etest_import_from_error_bad_suggestions_do_not_trigger_for_small_nameszbSuggestionFormattingTestBase.test_import_from_error_bad_suggestions_do_not_trigger_for_small_names�s���2��)�D����4��(��8�8��t�D��� � ���8�� � ��&�1�� � ��&�1�� � ���0�� � ���/�� � ��F�3�)�(�*�(�(�s�A?B$�$B-	c���td�D�cgc]}d|�d���
}}|jd�dj|�}|j|d�}|j	d|�ycc}w)N��r�z = z Noner[r�r_)rr�r�r�r�)r0r��chunksrr�s     r�>test_import_from_suggestions_do_not_trigger_for_big_namespacesz[SuggestionFormattingTestBase.test_import_from_suggestions_do_not_trigger_for_big_namespaces�sd��38��:�>�:�%�F�5�'��%�:��>��
�
�g���x�x�����0�0��w�?������&�)��	?s�
A$c�\�d�}|j|dd��}|jd|d�y)Nc��tddd���)Nr$r_r:)r�rV�	name_from)r�r�r rr�znSuggestionFormattingTestBase.test_import_from_error_with_bad_name.<locals>.raise_attribute_error_with_bad_name
s���2�2��<�<r r�rWr6r�r�s   r�$test_import_from_error_with_bad_namezASuggestionFormattingTestBase.test_import_from_error_with_bad_name
s<��	=��)�)�/�R�4�*�
��	
����l�2�.�/r c��d�}d�}d�}d�}d�}d�}|df|df|d	f|d
f|df|dffD](\}}|j|�}	|j||	��*y)Nc�6�dx}x}x}}d}tt�yr��r�r�)r\r]rr^r_s     rr`zNSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.Substitution
s"��*.�.�E�.�J�.��R��E��%�Lr c�6�dx}x}x}}d}tt�yr�r)r\r]rr^rcs     rrdzMSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.Elimination
s"��*.�.�E�.�J�.��R��D��%�Lr c�6�dx}x}x}}d}tt�yr�r)r\r]rr^rgs     rrhzJSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.Addition
s"��*.�.�E�.�J�.��R��G��%�Lr c�*�d}d}tt�yr�r)rkrls  rrmz]SuggestionFormattingTestBase.test_name_error_suggestions.<locals>.SubstitutionOverElimination
s���E��D��%�Lr c�*�d}d}tt�yr�r)rkrps  rrqzZSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.SubstitutionOverAddition 
s���E��F��%�Lr c�*�d}d}tt�yr�r)rtrls  rruzYSuggestionFormattingTestBase.test_name_error_suggestions.<locals>.EliminationOverAddition%
s���F��D��%�Lr r}r~r|z	'blucha'?rr�)
r0r`rdrhrmrqrur1r�r�s
          r�test_name_error_suggestionsz8SuggestionFormattingTestBase.test_name_error_suggestions
s���	�
	�
	�
	�
	�
	�
#/�
�!;�!,�i� 8�!)�<� 8�!8�+� F�!<�j� I�!9�:� F�!H��D�*��(�(��.�F��M�M�*�f�-�!Hr c�P�d�}|j|�}|jd|�y)Nc�"�tt�yr�)r��global_for_suggestior�r rr1zSSuggestionFormattingTestBase.test_name_error_suggestions_from_globals.<locals>.func4
s���&�'r z'global_for_suggestions'?r��r0r1r�s   r�(test_name_error_suggestions_from_globalszESuggestionFormattingTestBase.test_name_error_suggestions_from_globals3
s&��	(��$�$�T�*���
�
�1�6�:r c�P�d�}|j|�}|jd|�y)Nc�"�tt�yr�)r��ZeroDivisionErrrrrr�r rr1zTSuggestionFormattingTestBase.test_name_error_suggestions_from_builtins.<locals>.func:
s���$�%r �'ZeroDivisionError'?r�rs   r�)test_name_error_suggestions_from_builtinszFSuggestionFormattingTestBase.test_name_error_suggestions_from_builtins9
s&��	&��$�$�T�*���
�
�,�f�5r c�P�d�}|j|�}|jd|�y)Nc�p�t�j�}t|d<tt	d|��y)N�__builtins__r)rg�copyr�r��eval)�custom_globalss rr1zlSuggestionFormattingTestBase.test_name_error_suggestions_from_builtins_when_builtins_is_module.<locals>.func@
s*��$�Y�^�^�-�N�-5�N�>�*��$�+�^�<�=r rr�rs   r�Atest_name_error_suggestions_from_builtins_when_builtins_is_modulez^SuggestionFormattingTestBase.test_name_error_suggestions_from_builtins_when_builtins_is_module?
s(��	>��$�$�T�*���
�
�,�f�5r c�P�d�}|j|�}|jd|�y)Nc�&�d}tt�yr�)r��somethingverywronghe)�somethingverywronghehehehehehes rr1zdSuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_long_names.<locals>.funcH
s��-1�*��&�'r �somethingverywrongheher�rs   r�9test_name_error_suggestions_do_not_trigger_for_long_nameszVSuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_long_namesG
s*��	(��$�$�T�*�����1�6�:r c��d�}d�}d�}d�}d|fd|fd|fd|ffD]�\}}|j|�	�5|j|�}|jd
|�|jd|�|jd|�|jd
|�|jd|�|jd|�ddd���y#1swY��xYw)Nc�$�dx}x}x}x}}tyr�)r7�r�r�rdr�r�s     r�f_bzhSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_bP
���)-�-�C�-�#�-��-�B��
r c�$�dx}x}x}x}}tyr�r.r+s     r�f_vzhSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_vT
r-r c�$�dx}x}x}x}}tyr�)r�r+s     r�f_mzhSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_mX
r-r c�$�dx}x}x}x}}tyr�)r�r+s     r�f_pyziSuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.f_py\
s��)-�-�C�-�#�-��-�B��r r7r�r�r�r�zyou meanr�r�r�r�r�r�)r0r,r/r1r3r�r1r�s        r�>test_name_error_bad_suggestions_do_not_trigger_for_small_namesz[SuggestionFormattingTestBase.test_name_error_bad_suggestions_do_not_trigger_for_small_namesN
s���	�	�	�	� ��:��S�z�C��:��d�|�L�J�D�$����4��(��,�,�T�2��� � ��V�4�� � ���/�� � ���/�� � ���0�� � ���/�� � ��F�3�)�(�M�(�(�s�A>B<�<C	c�P�d�}|j|�}|j|d�y)Nc���dx}x}x}x}x}x}x}x}x}x}	x}
x}x}x}
x}x}x}x}x}x}x}x}x}x}x}x}x}x}x}x}x}x}x} x}!x}"x}#x}$x}%x}&x}'x}(x})x}*x}+x},x}-x}.x}/x}0x}1x}2x}3x}4x}5x}6x}7x}8x}9x}:x};x}<x}=x}>x}?x}@x}Ax}Bx}Cx}Dx}Ex}Fx}Gx}Hx}Ix}Jx}Kx}Lx}Mx}Nx}Ox}Px}Qx}Rx}Sx}Tx}Ux}Vx}Wx}Xx}Yx}Zx}[x}\x}]x}^x}_x}`x}ax}bx}cx}dx}ex}fx}gx}hx}ix}jx}kx}lx}mx}nx}ox}px}qx}rx}sx}tx}ux}vx}wx}xx}yx}zx}{x}|x}}x}~x}x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x}�x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}	x�}
x�}x�}x�}
x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�} x�}!x�}"x�}#x�}$x�}%x�}&x�}'x�}(x�})x�}*x�}+x�},x�}-x�}.x�}/x�}0x�}1x�}2x�}3x�}4x�}5x�}6x�}7x�}8x�}9x�}:x�};x�}<x�}=x�}>x�}?x�}@x�}Ax�}Bx�}Cx�}Dx�}Ex�}Fx�}Gx�}Hx�}Ix�}Jx�}Kx�}Lx�}Mx�}Nx�}Ox�}Px�}Qx�}Rx�}Sx�}Tx�}Ux�}Vx�}Wx�}Xx�}Yx�}Zx�}[x�}\x�}]x�}^x�}_x�}`x�}ax�}bx�}cx�}dx�}ex�}fx�}gx�}hx�}ix�}jx�}kx�}lx�}mx�}nx�}ox�}px�}qx�}rx�}sx�}tx�}ux�}vx�}wx�}xx�}yx�}zx�}{x�}|x�}}x�}~x�}x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}	x�}
x�}x�}x�}
x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�} x�}!x�}"x�}#x�}$x�}%x�}&x�}'x�}(x�})x�}*x�}+x�},x�}-x�}.x�}/x�}0x�}1x�}2x�}3x�}4x�}5x�}6x�}7x�}8x�}9x�}:x�};x�}<x�}=x�}>x�}?x�}@x�}Ax�}Bx�}Cx�}Dx�}Ex�}Fx�}Gx�}Hx�}Ix�}Jx�}Kx�}Lx�}Mx�}Nx�}Ox�}Px�}Qx�}Rx�}Sx�}Tx�}Ux�}Vx�}Wx�}Xx�}Yx�}Zx�}[x�}\x�}]x�}^x�}_x�}`x�}ax�}bx�}cx�}dx�}ex�}fx�}gx�}hx�}ix�}jx�}kx�}lx�}mx�}nx�}ox�}px�}qx�}rx�}sx�}tx�}ux�}vx�}wx�}xx�}yx�}zx�}{x�}|x�}}x�}~x�}x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}�x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}	x�}
x�}x�}x�}
x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}x�}�}tt�yr�)r��a0( �a1�a2�a3�a4�a5�a6�a7�a8�a9�a10�a11�a12�a13�a14�a15�a16�a17�a18�a19�a20�a21�a22�a23�a24�a25�a26�a27�a28�a29�a30�a31�a32�a33�a34�a35�a36�a37�a38�a39�a40�a41�a42�a43�a44�a45�a46�a47�a48�a49�a50�a51�a52�a53�a54�a55�a56�a57�a58�a59�a60�a61�a62�a63�a64�a65�a66�a67�a68�a69�a70�a71�a72�a73�a74�a75�a76�a77�a78�a79�a80�a81�a82�a83�a84�a85�a86�a87�a88�a89�a90�a91�a92�a93�a94�a95�a96�a97�a98�a99�a100�a101�a102�a103�a104�a105�a106�a107�a108�a109�a110�a111�a112�a113�a114�a115�a116�a117�a118�a119�a120�a121�a122�a123�a124�a125�a126�a127�a128�a129�a130�a131�a132�a133�a134�a135�a136�a137�a138�a139�a140�a141�a142�a143�a144�a145�a146�a147�a148�a149�a150�a151�a152�a153�a154�a155�a156�a157�a158�a159�a160�a161�a162�a163�a164�a165�a166�a167�a168�a169�a170�a171�a172�a173�a174�a175�a176�a177�a178�a179�a180�a181�a182�a183�a184�a185�a186�a187�a188�a189�a190�a191�a192�a193�a194�a195�a196�a197�a198�a199�a200�a201�a202�a203�a204�a205�a206�a207�a208�a209�a210�a211�a212�a213�a214�a215�a216�a217�a218�a219�a220�a221�a222�a223�a224�a225�a226�a227�a228�a229�a230�a231�a232�a233�a234�a235�a236�a237�a238�a239�a240�a241�a242�a243�a244�a245�a246�a247�a248�a249�a250�a251�a252�a253�a254�a255�a256�a257�a258�a259�a260�a261�a262�a263�a264�a265�a266�a267�a268�a269�a270�a271�a272�a273�a274�a275�a276�a277�a278�a279�a280�a281�a282�a283�a284�a285�a286�a287�a288�a289�a290�a291�a292�a293�a294�a295�a296�a297�a298�a299�a300�a301�a302�a303�a304�a305�a306�a307�a308�a309�a310�a311�a312�a313�a314�a315�a316�a317�a318�a319�a320�a321�a322�a323�a324�a325�a326�a327�a328�a329�a330�a331�a332�a333�a334�a335�a336�a337�a338�a339�a340�a341�a342�a343�a344�a345�a346�a347�a348�a349�a350�a351�a352�a353�a354�a355�a356�a357�a358�a359�a360�a361�a362�a363�a364�a365�a366�a367�a368�a369�a370�a371�a372�a373�a374�a375�a376�a377�a378�a379�a380�a381�a382�a383�a384�a385�a386�a387�a388�a389�a390�a391�a392�a393�a394�a395�a396�a397�a398�a399�a400�a401�a402�a403�a404�a405�a406�a407�a408�a409�a410�a411�a412�a413�a414�a415�a416�a417�a418�a419�a420�a421�a422�a423�a424�a425�a426�a427�a428�a429�a430�a431�a432�a433�a434�a435�a436�a437�a438�a439�a440�a441�a442�a443�a444�a445�a446�a447�a448�a449�a450�a451�a452�a453�a454�a455�a456�a457�a458�a459�a460�a461�a462�a463�a464�a465�a466�a467�a468�a469�a470�a471�a472�a473�a474�a475�a476�a477�a478�a479�a480�a481�a482�a483�a484�a485�a486�a487�a488�a489�a490�a491�a492�a493�a494�a495�a496�a497�a498�a499�a500�a501�a502�a503�a504�a505�a506�a507�a508�a509�a510�a511�a512�a513�a514�a515�a516�a517�a518�a519�a520�a521�a522�a523�a524�a525�a526�a527�a528�a529�a530�a531�a532�a533�a534�a535�a536�a537�a538�a539�a540�a541�a542�a543�a544�a545�a546�a547�a548�a549�a550�a551�a552�a553�a554�a555�a556�a557�a558�a559�a560�a561�a562�a563�a564�a565�a566�a567�a568�a569�a570�a571�a572�a573�a574�a575�a576�a577�a578�a579�a580�a581�a582�a583�a584�a585�a586�a587�a588�a589�a590�a591�a592�a593�a594�a595�a596�a597�a598�a599�a600�a601�a602�a603�a604�a605�a606�a607�a608�a609�a610�a611�a612�a613�a614�a615�a616�a617�a618�a619�a620�a621�a622�a623�a624�a625�a626�a627�a628�a629�a630�a631�a632�a633�a634�a635�a636�a637�a638�a639�a640�a641�a642�a643�a644�a645�a646�a647�a648�a649�a650�a651�a652�a653�a654�a655�a656�a657�a658�a659�a660�a661�a662�a663�a664�a665�a666�a667�a668�a669�a670�a671�a672�a673�a674�a675�a676�a677�a678�a679�a680�a681�a682�a683�a684�a685�a686�a687�a688�a689�a690�a691�a692�a693�a694�a695�a696�a697�a698�a699�a700�a701�a702�a703�a704�a705�a706�a707�a708�a709�a710�a711�a712�a713�a714�a715�a716�a717�a718�a719�a720�a721�a722�a723�a724�a725�a726�a727�a728�a729�a730�a731�a732�a733�a734�a735�a736�a737�a738�a739�a740�a741�a742�a743�a744�a745�a746�a747�a748�a749�a750�a751�a752�a753�a754�a755�a756�a757�a758�a759�a760�a761�a762�a763�a764�a765�a766�a767�a768�a769�a770�a771�a772�a773�a774�a775�a776�a777�a778�a779�a780�a781�a782�a783�a784�a785�a786�a787�a788�a789�a790�a791�a792�a793�a794�a795�a796�a797�a798�a799�a800s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 rr1ziSuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_too_many_locals.<locals>.funck
sO'��d�aP
�B�P
��P
�b�P
�2�P
��P
�R�P
�"�P
�r�P
�B�P
��P
��P
��P
��P
�!�P
�$'�P
�*-�P
�03�P
�69�P
�<?�P
�BE�P
��P
��P
��P
�!�P
�$'�P
�*-�P
�03�P
�69�P
�<?�P
�BE�P
�
�P
��P
��P
�"�P
�%(�P
�+.�P
�14�P
�7:�P
�=@�P
�CF�P
�
�	P
��	P
��	P
�"�	P
�%(�	P
�+.�	P
�14�	P
�7:�	P
�=@�	P
�CF�	P
�

�P
�
�P
�
�P
�
"�P
�
%(�P
�
+.�P
�
14�P
�
7:�P
�
=@�P
�
CF�P
�
�
P
��
P
��
P
�"�
P
�%(�
P
�+.�
P
�14�
P
�7:�
P
�=@�
P
�CF�
P
�
�P
��P
��P
�"�P
�%(�P
�+.�P
�14�P
�7:�P
�=@�P
�CF�P
�
�P
��P
��P
�"�P
�%(�P
�+.�P
�14�P
�7:�P
�=@�P
�CF�P
�
�P
��P
��P
�"�P
�%(�P
�+.�P
�14�P
�7:�P
�=@�P
�CG�P
�
�P
��P
��P
�"&�P
�)-�P
�04�P
�7;�P
�>B�P
�EI�P
�LP�P
�
�P
��P
��P
�"&�P
�)-�P
�04�P
�7;�P
�>B�P
�EI�P
�LP�P
�
�P
��P
��P
�"&�P
�)-�P
�04�P
�7;�P
�>B�P
�EI�P
�LP�P
�
�P
��P
��P
�"&�P
�)-�P
�04�P
�7;�P
�>B�P
�EI�P
�LP�P
�
�P
��P
��P
�"&�P
�)-�P
�04�P
�7;�P
�>B�P
�EI�P
�LP�P
�
�P
��P
��P
�"&�P
�)-�P
�04�P
�7;�P
�>B�P
�EI�P
�LP�P
� 
�!P
� �!P
� �!P
� "&�!P
� )-�!P
� 04�!P
� 7;�!P
� >B�!P
� EI�!P
� LP�!P
�"
�#P
�"�#P
�"�#P
�""&�#P
�")-�#P
�"04�#P
�"7;�#P
�">B�#P
�"EI�#P
�"LP�#P
�$
�%P
�$�%P
�$�%P
�$"&�%P
�$)-�%P
�$04�%P
�$7;�%P
�$>B�%P
�$EI�%P
�$LP�%P
�&
�'P
�&�'P
�&�'P
�&"&�'P
�&)-�'P
�&04�'P
�&7;�'P
�&>B�'P
�&EI�'P
�&LP�'P
�(
�)P
�(�)P
�(�)P
�("&�)P
�()-�)P
�(04�)P
�(7;�)P
�(>B�)P
�(EI�)P
�(LP�)P
�*
�+P
�*�+P
�*�+P
�*"&�+P
�*)-�+P
�*04�+P
�*7;�+P
�*>B�+P
�*EI�+P
�*LP�+P
�,
�-P
�,�-P
�,�-P
�,"&�-P
�,)-�-P
�,04�-P
�,7;�-P
�,>B�-P
�,EI�-P
�,LP�-P
�.
�/P
�.�/P
�.�/P
�."&�/P
�.)-�/P
�.04�/P
�.7;�/P
�.>B�/P
�.EI�/P
�.LP�/P
�0
�1P
�0�1P
�0�1P
�0"&�1P
�0)-�1P
�004�1P
�07;�1P
�0>B�1P
�0EI�1P
�0LP�1P
�2
�3P
�2�3P
�2�3P
�2"&�3P
�2)-�3P
�204�3P
�27;�3P
�2>B�3P
�2EI�3P
�2LP�3P
�4
�5P
�4�5P
�4�5P
�4"&�5P
�4)-�5P
�404�5P
�47;�5P
�4>B�5P
�4EI�5P
�4LP�5P
�6
�7P
�6�7P
�6�7P
�6"&�7P
�6)-�7P
�604�7P
�67;�7P
�6>B�7P
�6EI�7P
�6LP�7P
�8
�9P
�8�9P
�8�9P
�8"&�9P
�8)-�9P
�804�9P
�87;�9P
�8>B�9P
�8EI�9P
�8LP�9P
�:
�;P
�:�;P
�:�;P
�:"&�;P
�:)-�;P
�:04�;P
�:7;�;P
�:>B�;P
�:EI�;P
�:LP�;P
�<
�=P
�<�=P
�<�=P
�<"&�=P
�<)-�=P
�<04�=P
�<7;�=P
�<>B�=P
�<EI�=P
�<LP�=P
�>
�?P
�>�?P
�>�?P
�>"&�?P
�>)-�?P
�>04�?P
�>7;�?P
�>>B�?P
�>EI�?P
�>LP�?P
�@
�AP
�@�AP
�@�AP
�@"&�AP
�@)-�AP
�@04�AP
�@7;�AP
�@>B�AP
�@EI�AP
�@LP�AP
�B
�CP
�B�CP
�B�CP
�B"&�CP
�B)-�CP
�B04�CP
�B7;�CP
�B>B�CP
�BEI�CP
�BLP�CP
�D
�EP
�D�EP
�D�EP
�D"&�EP
�D)-�EP
�D04�EP
�D7;�EP
�D>B�EP
�DEI�EP
�DLP�EP
�F
�GP
�F�GP
�F�GP
�F"&�GP
�F)-�GP
�F04�GP
�F7;�GP
�F>B�GP
�FEI�GP
�FLP�GP
�H
�IP
�H�IP
�H�IP
�H"&�IP
�H)-�IP
�H04�IP
�H7;�IP
�H>B�IP
�HEI�IP
�HLP�IP
�J
�KP
�J�KP
�J�KP
�J"&�KP
�J)-�KP
�J04�KP
�J7;�KP
�J>B�KP
�JEI�KP
�JLP�KP
�L
�MP
�L�MP
�L�MP
�L"&�MP
�L)-�MP
�L04�MP
�L7;�MP
�L>B�MP
�LEI�MP
�LLP�MP
�N
�OP
�N�OP
�N�OP
�N"&�OP
�N)-�OP
�N04�OP
�N7;�OP
�N>B�OP
�NEI�OP
�NLP�OP
�P
�QP
�P�QP
�P�QP
�P"&�QP
�P)-�QP
�P04�QP
�P7;�QP
�P>B�QP
�PEI�QP
�PLP�QP
�R
�SP
�R�SP
�R�SP
�R"&�SP
�R)-�SP
�R04�SP
�R7;�SP
�R>B�SP
�REI�SP
�RLP�SP
�T
�UP
�T�UP
�T�UP
�T"&�UP
�T)-�UP
�T04�UP
�T7;�UP
�T>B�UP
�TEI�UP
�TLP�UP
�V
�WP
�V�WP
�V�WP
�V"&�WP
�V)-�WP
�V04�WP
�V7;�WP
�V>B�WP
�VEI�WP
�VLP�WP
�X
�YP
�X�YP
�X�YP
�X"&�YP
�X)-�YP
�X04�YP
�X7;�YP
�X>B�YP
�XEI�YP
�XLP�YP
�Z
�[P
�Z�[P
�Z�[P
�Z"&�[P
�Z)-�[P
�Z04�[P
�Z7;�[P
�Z>B�[P
�ZEI�[P
�ZLP�[P
�\
�]P
�\�]P
�\�]P
�\"&�]P
�\)-�]P
�\04�]P
�\7;�]P
�\>B�]P
�\EI�]P
�\LP�]P
�^
�_P
�^�_P
�^�_P
�^"&�_P
�^)-�_P
�^04�_P
�^7;�_P
�^>B�_P
�^EI�_P
�^LP�_P
�`
�aP
�`�aP
�`�aP
�`"&�aP
�`)-�aP
�`04�aP
�`7;�aP
�`>B�aP
�`EI�aP
�`LP�aP
�b
�cP
�b�cP
�b�cP
�b"&�cP
�b)-�cP
�b04�cP
�b7;�cP
�b>B�cP
�bEI�cP
�bLP�cP
�d
�eP
�d�eP
�d�eP
�d"&�eP
�d)-�eP
�d04�eP
�d7;�eP
�d>B�eP
�dEI�eP
�dLP�eP
�f
�gP
�f�gP
�f�gP
�f"&�gP
�f)-�gP
�f04�gP
�f7;�gP
�f>B�gP
�fEI�gP
�fLP�gP
�h
�iP
�h�iP
�h�iP
�h"&�iP
�h)-�iP
�h04�iP
�h7;�iP
�h>B�iP
�hEI�iP
�hLP�iP
�j
�kP
�j�kP
�j�kP
�j"&�kP
�j)-�kP
�j04�kP
�j7;�kP
�j>B�kP
�jEI�kP
�jLP�kP
�l
�mP
�l�mP
�l�mP
�l"&�mP
�l)-�mP
�l04�mP
�l7;�mP
�l>B�mP
�lEI�mP
�lLP�mP
�n
�oP
�n�oP
�n�oP
�n"&�oP
�n)-�oP
�n04�oP
�n7;�oP
�n>B�oP
�nEI�oP
�nLP�oP
�p
�qP
�p�qP
�p�qP
�p"&�qP
�p)-�qP
�p04�qP
�p7;�qP
�p>B�qP
�pEI�qP
�pLP�qP
�r
�sP
�r�sP
�r�sP
�r"&�sP
�r)-�sP
�r04�sP
�r7;�sP
�r>B�sP
�rEI�sP
�rLP�sP
�t
�uP
�t�uP
�t�uP
�t"&�uP
�t)-�uP
�t04�uP
�t7;�uP
�t>B�uP
�tEI�uP
�tLP�uP
�v
�wP
�v�wP
�v�wP
�v"&�wP
�v)-�wP
�v04�wP
�v7;�wP
�v>B�wP
�vEI�wP
�vLP�wP
�x
�yP
�x�yP
�x�yP
�x"&�yP
�x)-�yP
�x04�yP
�x7;�yP
�x>B�yP
�xEI�yP
�xLP�yP
�z
�{P
�z�{P
�z�{P
�z"&�{P
�z)-�{P
�z04�{P
�z7;�{P
�z>B�{P
�zEI�{P
�zLP�{P
�|
�}P
�|�}P
�|�}P
�|"&�}P
�|)-�}P
�|04�}P
�|7;�}P
�|>B�}P
�|EI�}P
�|LP�}P
�~
�P
�~�P
�~�P
�~"&�P
�~)-�P
�~04�P
�~7;�P
�~>B�P
�~EI�P
�~LP�P
�@
�AP
�@�AP
�@�AP
�@"&�AP
�@)-�AP
�@04�AP
�@7;�AP
�@>B�AP
�@EI�AP
�@LP�AP
�B
�CP
�B�CP
�B�CP
�B"&�CP
�B)-�CP
�B04�CP
�B7;�CP
�B>B�CP
�BEI�CP
�BLP�CP
�D
�EP
�D�EP
�D�EP
�D"&�EP
�D)-�EP
�D04�EP
�D7;�EP
�D>B�EP
�DEI�EP
�DLP�EP
�F
�GP
�F�GP
�F�GP
�F"&�GP
�F)-�GP
�F04�GP
�F7;�GP
�F>B�GP
�FEI�GP
�FLP�GP
�H
�IP
�H�IP
�H�IP
�H"&�IP
�H)-�IP
�H04�IP
�H7;�IP
�H>B�IP
�HEI�IP
�HLP�IP
�J
�KP
�J�KP
�J�KP
�J"&�KP
�J)-�KP
�J04�KP
�J7;�KP
�J>B�KP
�JEI�KP
�JLP�KP
�L
�MP
�L�MP
�L�MP
�L"&�MP
�L)-�MP
�L04�MP
�L7;�MP
�L>B�MP
�LEI�MP
�LLP�MP
�N
�OP
�N�OP
�N�OP
�N"&�OP
�N)-�OP
�N04�OP
�N7;�OP
�N>B�OP
�NEI�OP
�NLP�OP
�P
�QP
�P�QP
�P�QP
�P"&�QP
�P)-�QP
�P04�QP
�P7;�QP
�P>B�QP
�PEI�QP
�PLP�QP
�R
�SP
�R�SP
�R�SP
�R"&�SP
�R)-�SP
�R04�SP
�R7;�SP
�R>B�SP
�REI�SP
�RLP�SP
�T
�UP
�T�UP
�T�UP
�T"&�UP
�T)-�UP
�T04�UP
�T7;�UP
�T>B�UP
�TEI�UP
�TLP�UP
�V
�WP
�V�WP
�V�WP
�V"&�WP
�V)-�WP
�V04�WP
�V7;�WP
�V>B�WP
�VEI�WP
�VLP�WP
�X
�YP
�X�YP
�X�YP
�X"&�YP
�X)-�YP
�X04�YP
�X7;�YP
�X>B�YP
�XEI�YP
�XLP�YP
�Z
�[P
�Z�[P
�Z�[P
�Z"&�[P
�Z)-�[P
�Z04�[P
�Z7;�[P
�Z>B�[P
�ZEI�[P
�ZLP�[P
�\
�]P
�\�]P
�\�]P
�\"&�]P
�\)-�]P
�\04�]P
�\7;�]P
�\>B�]P
�\EI�]P
�\LP�]P
�^
�_P
�^�_P
�^�_P
�^"&�_P
�^)-�_P
�^04�_P
�^7;�_P
�^>B�_P
�^EI�4��"�Ir z
NameError.*a1)rX�assertNotRegexrs   r�>test_name_error_suggestions_do_not_trigger_for_too_many_localsz[SuggestionFormattingTestBase.test_name_error_suggestions_do_not_trigger_for_too_many_localsj
s,��S	�j�$�$�T�*�����F�$4�5r c��d�}|j|�}|jd|�d�}|j|�}|jd|�y)Nc��d}t��r��r}�r_s rr1zQSuggestionFormattingTestBase.test_name_error_with_custom_exceptions.<locals>.func�
s���E��+�r r_c��d}t�r�r\r]s rr1zQSuggestionFormattingTestBase.test_name_error_with_custom_exceptions.<locals>.func�
s���E��Or r�rs   r�&test_name_error_with_custom_exceptionszCSuggestionFormattingTestBase.test_name_error_with_custom_exceptions�
sP��	��$�$�T�*������&�)�	��$�$�T�*������&�)r c��Gd�d�}|�}|j|j�}|jd|�y)Nc��eZdZd�Zd�Zy)�ESuggestionFormattingTestBase.test_name_error_with_instance.<locals>.Ac��d|_yr�r]r:s r�__init__zNSuggestionFormattingTestBase.test_name_error_with_instance.<locals>.A.__init__�
�	��!��
r c��d}t}yrMr])r0r�r<s   rr�zISuggestionFormattingTestBase.test_name_error_with_instance.<locals>.A.foo�
s�����r N�r�r�r�rdr�r�r rr�rb�
s��
"�
r r��
self.blech)rXr�rW�r0r��instancer�s    r�test_name_error_with_instancez:SuggestionFormattingTestBase.test_name_error_with_instance�
s7��	�	��3���$�$�X�\�\�2���
�
�l�F�+r c��Gd�d�}|�}|j|j�}|jd|�y)Nc��eZdZd�Zd�Zy)�NSuggestionFormattingTestBase.test_unbound_local_error_with_instance.<locals>.Ac��d|_yr�r]r:s rrdzWSuggestionFormattingTestBase.test_unbound_local_error_with_instance.<locals>.A.__init__�
rer c��d}}d}yrMr�)r0r�r_r<s    rr�zRSuggestionFormattingTestBase.test_unbound_local_error_with_instance.<locals>.A.foo�
s�������r Nrgr�r rr�rn�
s��
"�
r r�rh)rXr�r�ris    r�&test_unbound_local_error_with_instancezCSuggestionFormattingTestBase.test_unbound_local_error_with_instance�
s9��	�	��3���$�$�X�\�\�2������v�.r c�P�d�}|j|�}|jd|�y)Nc�"�d}t�d}yrRr�)r��	somethongs  rr1zRSuggestionFormattingTestBase.test_unbound_local_error_does_not_match.<locals>.func�
s���I��)���Ir r�r�rs   r�'test_unbound_local_error_does_not_matchzDSuggestionFormattingTestBase.test_unbound_local_error_does_not_match�
s)��	�
�$�$�T�*������f�-r c�P�d�}|j|�}|jd|�y)Nc�,�tj�}yr�)�ior��streams rr1zMSuggestionFormattingTestBase.test_name_error_for_stdlib_modules.<locals>.func�
s
���[�[�]�Fr zforget to import 'io'r�rs   r�"test_name_error_for_stdlib_modulesz?SuggestionFormattingTestBase.test_name_error_for_stdlib_modules�
s(��	#��$�$�T�*���
�
�-�v�6r c�P�d�}|j|�}|jd|�y)Nc�,�tj�}yr�)�_iorrys rr1zUSuggestionFormattingTestBase.test_name_error_for_private_stdlib_modules.<locals>.func�
s
���\�\�^�Fr zforget to import '_io'r�rs   r�*test_name_error_for_private_stdlib_moduleszGSuggestionFormattingTestBase.test_name_error_for_private_stdlib_modules�
s(��	$��$�$�T�*���
�
�.��7r r�)"r�r�r�rXr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr"r(r4rYr_rkrqrur{rr�r rrQrQ�s���
�).�V*�4�	*�'�"+�01�+�0�'���"0.�d*�4�*�0�&.�P;�6�6�;�4�8W6�r
*�
,�/�.�7�8r rQc��eZdZdZy)�#PurePythonSuggestionFormattingTestsr�Nr�r�r rr�r�s��
r r�c��eZdZdZy)� CPythonSuggestionFormattingTestsr�Nr�r�r rr�r�s��r r�c�H�eZdZd�Zd�Zejd�d��Zy)�MiscTestc��t�}dh}tt�D]J}|jd�s||vr�t	t|�}t	|dd�dk(s�:|j|��L|j
tj|�y)N�
print_listrr�r.)�set�dirr.r�rTr��assertCountEqual�__all__)r0r��denylistr��
module_objects     r�test_allzMiscTest.test_allsu���5�� �>���	�N�D����s�#�t�x�'7��#�I�t�4�M��}�l�D�9�[�H����T�"�#�	
���i�/�/��:r c����fd�}|ddd�|ddd�|ddd�|dd	d�|d
dd�|d
dd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|dd d�|d!d"d#�|d$d%d&�|d$d'd(�|d)d*d�|d)d+d&�|d,d-d�y).Nc�X��tj||d�}�j||�y)Ni�)r.�_levenshtein_distancerS)rr7r�r�r0s    �r�CHECKz1MiscTest.test_levenshtein_distance.<locals>.CHECK+s'����4�4�Q��4�@�F����V�X�.r rrrrLr�rJ�Apple�Aple�BananazB@n@n@r�CherryzCherry!z---0---z------�abcrP�aa�bbrI�aaaaa�AAAAAr��wxyz�wXyZ�wXyZ123r��Python�Javar$zC#�AbstractFoobarManager�abstract_foobar_managerr�CPython�PyPyr&�pypyr:r��AttributeErrop�AttributeErrorTests�ABA�AABr�)r0r�s` r�test_levenshtein_distancez"MiscTest.test_levenshtein_distance's���	/�	�b�"�a��
�b�#�q��
�c�3���
�g�v�q�!�
�h��!�$�
�h�	�1�%�
�i��1�%�
�e�S�!��
�d�D�!��
�g�w��"�
�f�f�a� �
�f�i��#�
�h���#�
�f�d�A��
�%�'@�%�H�
�i���$�
�i���$�
�� 0�!�4�
�� 5�r�:�
�e�U�A�r �cpuc	�B�tj�s|jt�d��tjd�5}t	j
|�}ddd�D]�\}}}t
j||d�}|j||||f��||dz|dzfD]0}t
j|||�}|j|||||f���2t|�D]0}t
j|||�}	|j|	||||f���2��y#1swY��xYw)Nz. is missing. Run `make regen-test-levenshtein`�rr�)rQrJrL)�LEVENSHTEIN_DATA_FILE�is_filer�rj�json�loadr.r�rSrrF)
r0rm�examplesrr7r��res1�	threshold�res2�res3s
          r�'test_levenshtein_distance_short_circuitz0MiscTest.test_levenshtein_distance_short_circuitDs ��$�,�,�.��I�I�(�)�*5�6�
�
#�
'�
'��
,���y�y��|�H�-�&�N�A�q�(��2�2�1�a��>�D����T�8�!�Q���8�&��1��h��l�C�	� �6�6�q�!�Y�G��� � ��x�a��I�5F� �G�D�
#�8�_�	�!�6�6�q�!�Y�G���"�"�4���A�y�8I�"�J�	-�'�-�
,�s�D�DN)r�r�r�r�r�r�requires_resourcer�r�r rr�r�s/��	;��:�W���u�%�K�&�Kr r�)Qr��collectionsrrxrrdr�rr�r��unittestrr�r�rrSrr��test.supportrrrr	r
rr�test.support.os_helperr
r�test.support.script_helperrr�test.support.import_helperrr�rrr.�	functoolsr�pathlibrr�r�r��co_positionsr�rr�parentr��TestCaser+r�r�r�r�r�r�r�r�rpr;r9�escapernrUrrr!rRr`r~r�r�r'�global_for_suggestionsrQr�r�r��mainr�r r�<module>r�s=��%�"���
�����	��
�
��
�/�/�/�2�N�-������"*�j�"8�8�*�A��b�
��v�
�y�9�:�	�7�	��
��!D�
E�
�
�T�K�
L���X��-�-�0K�K��U*�X�&�&�U*�p
>�>�
>�
>��)E����I	+�I	+��I	+�Z���&�'����������� �'������������&�'��������p*�8�,�,�p*�h&��
&���R�Z�Z�����=�)�9�2�9�9�_�+E�F�H�
�z+�z+�z
�5�x�7H�7H�
� �4�h�6G�6G��u,��"�"�u,�p&,��*�*�&,�R&$��!�!�&$�RH
��!�!�H
�T+�+�r�X�.�.�r�j	u)�X�->�->�u)�p��Q8�Q8�j�&� ������� � �������AK�x� � �AK�H�z���H�M�M�O�r 

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists