HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_exceptions.cpython-310.pyc
o

�i�k�@s\ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
mZmZmZmZddlmZddlmZmZddlmZddlmZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�dej�Z dZ!Gdd�dej�Z"Gdd�dej�Z#Gdd�dej�Z$Gdd�dej�Z%Gdd�dej�Z&e'dkr�e�(�dSdS)�N)�dedent)�captured_stderr�check_impl_detail�cpython_only�
gc_collect�
no_tracing�
script_helper�SuppressCrashReport)�
import_module)�TESTFN�unlink)�check_warnings)�supportc@�eZdZdd�ZdS)�NaiveExceptioncC�
||_dS�N��x��selfr�r�1/usr/local/lib/python3.10/test/test_exceptions.py�__init__�
zNaiveException.__init__N��__name__�
__module__�__qualname__rrrrrr�rc@�eZdZdZdd�ZdS)�SlottedNaiveExceptionrcCrrrrrrrrrzSlottedNaiveException.__init__N)rrr�	__slots__rrrrrr!�r!c@r)�BrokenStrExceptioncC�td��)Nzstr() is broken��	Exception�rrrr�__str__!�zBrokenStrException.__str__N)rrrr)rrrrr$ rr$c@sVeZdZdd�Zdd�Zdd�Zdd�Zd�dd�Zd
d�Zdd�Z	e
dd��Zdd�Ze
�ejdkd�dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zed)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#d;d<�Z$d=d>�Z%d?d@�Z&dAdB�Z'dCdD�Z(dEdF�Z)dGdH�Z*dIdJ�Z+dKdL�Z,dMdN�Z-dOdP�Z.dQdR�Z/e
�0dS�dTdU��Z1dVdW�Z2dXdY�Z3dZd[�Z4ed\d]��Z5e
d^d_��Z6e
d`da��Z7e
dbdc��Z8ddde�Z9e
dfdg��Z:e
dhdi��Z;e
djdk��Z<e
dldm��Z=edndo��Z>dpdq�Z?drds�Z@dtdu�ZAe
dvdw��ZBdxdy�ZCdzd{�ZDd|d}�ZEe
�d~d�d�d���ZFd�d��ZGd	S)��ExceptionTestscCs�|j||d��Lz|d��|y"}z
t|�}WYd}~nd}~wwz|d��|y=}z
t|�}WYd}~nd}~ww|�||�|�|j|�Wd�dS1sVwYdS)N)�exc�excnameZspam)�subTest�str�assertEqualr)rr,r-�errZbuf1Zbuf2rrr�raise_catch(s ����"�zExceptionTests.raise_catchc
Cs|�td�|�tttd�|�td�ttddd�}|��ttddd�}tj	}z"zddl
}|�d	�Wn	ty>YnwW|t_	|��tt�n|t_	|��tt�w|�t
d
�|�t
tdd�|�td�|�ttd
�|�td�g}|�t|jd�|�td�i}|�t|jd�|�td�|�td�|�td�zt}Wn	ty�Ynw|�td�d}td�D]}||7}q�|�td�|�td�|�td�ztd�Wn	ty�Ynw|�td�|�td�ztddd �Wn
t�yYnw|� d!�|�t!d"�|�t"d#�|�t"tj#d�|�t$d$�zgd%Wn
t$�y6Ynw|�t%d&�|�t%t&d'�|�t'd(�zdd}Wn
t'�yZYnw|�t(d)�zdd}Wnt(�yz}zWYd}~nd}~ww|�t)d*�dS)+N�AttributeErrorZundefined_attribute�EOFError�w�utf-8��encoding�rr��OSErrorzthis file does not exist�ImportErrorZundefined_module�
IndexError�
�KeyError�key�KeyboardInterrupt�MemoryError�	NameError�
OverflowError���RuntimeError�RecursionError�SyntaxErrorz/
�IndentationError�TabErrorz"try:
	1/0
    	1/0
finally:
 pass
z<string>�execzTabError not raised�SystemError�
SystemExit�	TypeErrorr�
ValueErrori�ZeroDivisionErrorr'�StopAsyncIteration)*r2r3�assertRaises�getattr�sysr4�openr�close�stdin�marshal�loadsrr;r<�
__import__r=�__getitem__r?rArBrCZundefined_variablerD�rangerGrHrIrLrJrK�compile�failrMrN�exitrOrP�chrrQr'rR)r�fpZ	savestdinrYrZdummy�errr�testRaising5s���
�


�
�zExceptionTests.testRaisingcs(�fdd�}d}||d�|dd�dS)Ncs��j||d��@zt|dd�Wn!ty1}z|j|kr'��d||jf�WYd}~nd}~ww��d�Wd�dSWd�dS1sJwYdS)N)�src�msg�
<fragment>rL�expected %s, got %s�"failed to get expected SyntaxError)r.r^rIrfr_)rerfrcr(rr�ckmsg�s
����"z4ExceptionTests.testSyntaxErrorMessage.<locals>.ckmsgzHif 1:
        try:
            continue
        except:
            passz'continue' not properly in loopz	continue
r�rrj�srr(r�testSyntaxErrorMessage�s

z%ExceptionTests.testSyntaxErrorMessagecs�tf�fdd�	}d}||d�d}||d�d}||d�d}||d�d	}||d�d
}||d�d}||d�d
}||dt�d}||dt�dS)Nc
srzt|dd�Wn)|y1}z|j|kr&��d||jf�WYd}~dSWYd}~dSd}~ww��d�dS)NrgrLrhri)r^rfr_)rerf�	exceptionrcr(rrrj�s
"���z:ExceptionTests.testSyntaxErrorMissingParens.<locals>.ckmsgzprint "old style"z@Missing parentheses in call to 'print'. Did you mean print(...)?zprint "old style",zprint f(a+b,c)zexec "old style"z>Missing parentheses in call to 'exec'. Did you mean exec(...)?z
exec f(a+b,c)zprint (a+b,c) $ 42zinvalid syntaxzexec (a+b,c) $ 42zif True:
print "No indent"z9expected an indented block after 'if' statement on line 1z6if True:
        print()
	exec "mixed tabs and spaces"z2inconsistent use of tabs and spaces in indentation)rIrJrKrkrr(r�testSyntaxErrorMissingParens�s&	






z+ExceptionTests.testSyntaxErrorMissingParensNr6c		Cs|j|||d��v|�t��}t|dd�Wd�n1swY|�|jj|�|�|jj|�|dur@|�|jj|�|durL|�|jj	|�|jj
durvt|t�s]|�
|d�}|�d�|d}|�||jj
�Wd�dSWd�dS1s�wYdS)N)�source�lineno�offsetrgrL�replace�
rE)r.rSrIr^r0rnrqrr�
end_lineno�
end_offset�text�
isinstancer/�decode�split�assertIn)	rrerqrrrurvr8�cm�linerrr�check�s$�
�
"�zExceptionTests.checkcCs|j}|ddd�dS)Nz"\
"(1 for c in I,\
\��r~�rr~rrr�)test_error_offset_continuation_characters�sz8ExceptionTests.test_error_offset_continuation_characterscCs�|j}|ddd�|ddd�|ddd�|d	dd
�|ddd
�|ddd
dd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd�|ddd
�|ddd�|ddd �|d!dddd"�|d#dddd
�|d$dd%dd�|d&dd%dd�|d'dd�|d(dd�|d)dd�|d*dd�|d+dd�|d,dd%�|d-dd�|d.dd/�|d0dd �|d1dd%�|d2dd%�|d3dd%d4d�|d5dd6�|d7dd�|d8dd�|d9dd�|d:d;d<�|d=dd>�|d?dd>�|d@ddA�|dBdd �|dCdd>�|dDdd�|dEddF�|dGdd�|dHdd�|dIdd�|dJdd�|dKdd�|dLdd�|dMdd�|dNdd�|dOdd�|dPdd�|dQdd�|dRdd�|dSdd�|dTdd �dS)UNzdef fact(x):
	return x!
rr>z1 +
rE�z def spam():
  print(1)
 print(2)�zPython = "Python" +�uPython = "Ṕýţĥòñ" +s+# -*- coding: cp1251 -*-
Python = "ϳ���" +��cp1251r7sPython = "ϳ���" +�zx = "a�zlambda x: x = 2zf{a + b + c}zile for str(file) in []
]�ua = « hello » « world »z[
file
for str(file)
in
[]
]zile for
 str(file) in []]zages = {'Alice'=22, 'Bob'=23}�	z7match ...:
    case {**rest, "key": value}:
        ...z
[a b c d e f]zfor x yfff:�zf(a for a in b, c)�zf(a for a in b if a, c)zf(a, b for b in c)�zf(a, b for b in c, d)zclass foo:return 1zdef f():
  continuezdef f():
  breakz4try:
  pass
except:
  pass
except ValueError:
  passz(0x+1)zx = 0xIz0010 + 2z
x = 32e-+4�zx = 0o9uα = 0xIsα = 0xIs## -*- coding: iso8859-7 -*-
� = 0xIz	iso8859-7s�if 1:
            def foo():
                '''

            def bar():
                pass

            def baz():
                '''quux'''
            �z"pass
pass
pass
(1+)
pass
pass
passz(1+)z[interesting
foo()
s#coding: utf8
print('我')
r���z7f'''
            {
            (123_a)
            }'''�ztf'''
            {
            f"""
            {
            (123_a)
            }
            """
            }'''z4f"""


            {
            6
            0="""�
z!x = [(yield i) for i in range(3)]zdef f():
  from _ import *zdef f(x, x):
  passz3{i for i in range(5) if (j := 0) for j in range(5)}�&zdef f(x):
  nonlocal xzdef f(x):
  x = 1
  global xz
nonlocal xz def f():
  global x
  nonlocal xz#from __future__ import doesnt_existzfrom __future__ import bracesz#x=1
from __future__ import divisionzfoo(1=2)zdef f():
  x, y: intz[*x for x in xs]zfoo(x for x in range(10), 100)zfor 1 in []: passz
(yield i) = 2zdef f(*):
  passr�r�rrr�testSyntaxErrorOffset�s���	�
���z$ExceptionTests.testSyntaxErrorOffsetcsnGdd�dt��Gdd�d����fdd�}��fdd�}��fd	d
�}tj�d�s5|�|�|�dSdS)Nc@r)z9ExceptionTests.testSettingException.<locals>.BadExceptioncSr%)Nzcan't instantiate BadException)rG)Zself_rrrrEr*zBExceptionTests.testSettingException.<locals>.BadException.__init__Nrrrrr�BadExceptionDrr�c@�eZdZdS)z=ExceptionTests.testSettingException.<locals>.InvalidExceptionN�rrrrrrr�InvalidExceptionH�r�c
s�ddl}z|��d�Wn.ty:}z"t��\}}}|jj}��|jd���	|j
�d��WYd}~dSd}~ww��d�dS)NrrE�
test_capi1�test_exceptions.py�Expected exception)
�	_testcapi�raise_exceptionrOrU�exc_info�tb_frame�f_coder0�co_name�
assertTrue�co_filename�endswithr_)r�r1r,�tb�co�r�rrrr�Ks ��z7ExceptionTests.testSettingException.<locals>.test_capi1c
s�ddl}z|��d�Wn:tyF}z.t��\}}}|jj}��|jd���	|j
�d��|jjj}��|jd�WYd}~dSd}~ww��
d�dS)Nrrr��
test_capi2r�)r�r�rGrUr�r�r�r0r�r�r�r��f_backr_)r�r1r,r�r�Zco2r�rrr�Ws
��z7ExceptionTests.testSettingException.<locals>.test_capi2csddl}��t|j�d�dS)NrrE)r�rSrMr�)r�)r�rrr�
test_capi3es
�z7ExceptionTests.testSettingException.<locals>.test_capi3�java)r'rU�platform�
startswith)rr�r�r�r)r�r�rr�testSettingException?s
�z#ExceptionTests.testSettingExceptioncCs�ztWn
tyYdSw|�tt�|�ttd��d�|�ttdd��d�tddd�}|�|jd�|�|jd�|�t|�d�td	ddd
�}|�|jd�|�|jd
�|�|jd�|�|j	d�|�|j
d�|�t|�d�td	ddd�}|�|jd
�|�|jd�|�|jd�|�|j	d�|�|j
d�|�t|�d�tdd�}|�|jd�|�|jd�|�|jd�|�|j	d�|�|j
d�dS)Ni�Z1001�messagez[Errno 1001] messager��foo�barz[Errno 9] foo: 'bar'rr�rz[WinError 3] foo: 'bar'�z[WinError 1001] foo)�WindowsErrorrC�assertIsr;r0r/�errno�winerror�strerror�filename�	filename2)rr5rrr�test_WindowsErrorosD��
z ExceptionTests.test_WindowsError�win32ztest specific to WindowscCsNtd�}d}|�td|��|j�|�Wd�dS1s wYdS)z:Should fill in unknown error code in Windows error message�ctypeslcs�@zWindows Error 0x%xN)r
�assertRaisesRegexr;Z	pythonapiZPyErr_SetFromWindowsErr)rr��coderrr�test_windows_message�s
"�z#ExceptionTests.test_windows_messagecCstdddiftdddiftdddiftdddiftdddd�ftddddddd�ftd	d	dddd
d�ftdd	dddd
d�ftd
d	ddd�ftdddddd�ftddddddd�ftddddddddd�ftdddddddddd�ftddd ddddd!d"d#d$�	ftd%dd%dddddddd&�	ftdddiftd'd'd(d)d*d+d,�ftd(td-�d*dd+fd(td-�d*dd+fd(d-d*d+d,�ftd.d.d(d-d*d+d,�ftd/d/d0d1d*dd2�ft	dddd3�ft
dddd3�fg}z|�tdddddddd4�f�Wn	t
y�Ynw|D]�\}}}z||�}Wntd5||ftjd6�Yq�t|�j�d7��s$|�t|�jd8�t|�}|D]}t||�}|�t|�t||�d9|||||f��q*tfD]7}	t|	jd�D],}
|	�||
�}|	�|�}|D]}tt||��}t||�}
|�||
d:||f��qc�qT�qKq�dS);Nr�args)rE)r�)r�rEr�)r�r�)r�r�r�r�r�)r�r�r�)r�r��bazr�)r�r�r�N�quuxr�)r�r�r�)�errnoStr�strErrorStr�filenameStr)r�r�r�r�r�)r�r�r�r�)rEr�r�)rEr�rE)r�r�r�r�r�)rfrwr�rqrrrv�print_file_and_line)�msgStrr�)r�rwr�rfr�rqrrrv)r�)r��	linenoStr�	offsetStr�textStr�endLinenoStr�endOffsetStrr�r�r�r�r�)	rrrwr�r�rfr�rqrurv)r�r�r�r�r�r�r�Zprint_file_and_lineStr)	rwr�r�rfr�rqrrrurv)�ascii�arrE�ordinal not in ranger�r�rr�)r�r8�object�start�reason��)r�r�rrEr�)�あrrE�ouchr�r�)r�r�r�r��end)r�r)r�r�r�r�r�r�z
exc=%r, args=%r)�filer�builtinsz%r.%s == %r, expected %rzpickled "%r", attribute "%s)�
BaseExceptionrNr;rI�UnicodeError�UnicodeEncodeError�UnicodeDecodeError�	bytearray�UnicodeTranslateErrorrr!�appendr�rC�printrU�stderr�typerr�r0rr/rT�repr�pickler]�HIGHEST_PROTOCOL�dumpsrZ)rZ
exceptionListr,r��expectedrcrlZcheckArgName�value�p�protocol�newZgotZwantrrr�testAttributes�s0���������
����������	��
�������������U����


��

������zExceptionTests.testAttributescCs�ztd��t��d}Yt��|�}|�|t�|�|j|�td��|�}|�|t�|�|j|�Gdd�dt�}|��|�}|�||�|�|j|�dS)Nr�rr�c@r�)z5ExceptionTests.testWithTraceback.<locals>.MyExceptionNr�rrrr�MyException2r�r�)	r=rUr�r��with_traceback�assertIsInstancer0�
__traceback__r')rr�rcr�rrr�testWithTraceback$sz ExceptionTests.testWithTracebackc
CsRzdt�_Wnty!}z|�dt|��WYd}~dSd}~ww|�d�dS)Nr�z!__traceback__ must be a traceback�No exception raised)r'r�rOr{r/r_�rrcrrr�testInvalidTraceback9s��z#ExceptionTests.testInvalidTracebackcCsP|�ttt�dd�|�ttt�d�|�ttt�dd�|�ttt�d�dS)N�	__cause__rE�__context__)rSrO�setattrr'�delattrr(rrr�testInvalidAttrsAszExceptionTests.testInvalidAttrscCsBztd��t��d}Yt�}||_d|_|�|jd�dS)Nr�r)r=rUr�r'r�r0)rr�rcrrr�testNoneClearsTracebackAttrGsz*ExceptionTests.testNoneClearsTracebackAttrcCsnt�}|�|j�|�|j�t�}|�|j�|�|j�Gdd�dt�}|�}|�|j�|�|j�dS)Nc@r�)z5ExceptionTests.testChainingAttrs.<locals>.MyExceptionNr�rrrrr�[r�r�)r'�assertIsNoner�r�rOr;)rrcr�rrr�testChainingAttrsRsz ExceptionTests.testChainingAttrsc
Cs�zt��ty}z|}WYd}~nd}~ww|�|j�|�|j�|�|j�t�|_d|_|�|jt�|�|j�|�|j�d|_|�|j�dS)NF)	r'r�r�r�ZassertFalse�__suppress_context__rCr�r�)rr,rcrrr�testChainingDescriptorsbs ��z&ExceptionTests.testChainingDescriptorscCs<|jttdd�Gdd�dt�}|dd�}|�|jd�dS)NrE)r�c@r)z8ExceptionTests.testKeywordArgs.<locals>.DerivedExceptioncSst�|�||_dSr)r�r�	fancy_arg)rrrrrrzs

zAExceptionTests.testKeywordArgs.<locals>.DerivedException.__init__Nrrrrr�DerivedExceptionyrr�*)r)rSrOr�r0r)rrrrrr�testKeywordArgsts
zExceptionTests.testKeywordArgscs4�fdd��|�t���fdd��|�t��dS)Ncs��Srrr)�frrr��z/ExceptionTests.testInfiniteRecursion.<locals>.fcsz��WStyYdSw)Nr��rPr��grrr	�s
�z/ExceptionTests.testInfiniteRecursion.<locals>.g)rSrHr(r)rr	r�testInfiniteRecursion�sz$ExceptionTests.testInfiniteRecursioncCs8|�tt��|�ttd���|�ttdd���dS)Nr��b)r�r/r'r(rrr�test_str�szExceptionTests.test_strc
Cszzt��ty}z|�|t�WYd}~nd}~ww|�dt��|�t��|Wd�dS1s6wYdS�Nrc�r'r��assertNotIn�localsrS�UnboundLocalErrorr�rrr�test_exception_cleanup_names�s��"�z+ExceptionTests.test_exception_cleanup_namesc
Cs|zt��ty}z
|�|t�~WYd}~nd}~ww|�dt��|�t��|Wd�dS1s7wYdSr
rr�rrr�test_exception_cleanup_names2�s��"�z,ExceptionTests.test_exception_cleanup_names2cs�Gdd�dt��Gdd�d�}��fdd�}|��t���}z|�Wn�y5}zWYd}~nd}~wwd�t�|��|���|��t���}z|�Wn	�yYYnwd�t�|��|���|��t���}z|�WnYd�t�|��|���|��t���}dD]}z|�Wq�Yd�t�|��|���|��t���}z
z|�Wnt�Wn*ty�}zd|_d�t�|��tdd	�r�t�|���WYd}~nd}~ww|��t���}z|�Wn��yzz����yYnwYnwd�tdd	��rt�|��|���Gd
d�d�}|��t���}|��|�Wd�n	1�sDwYd�tdd	��rTt�|��|���dS)Nc@r)z=ExceptionTests.testExceptionCleanupState.<locals>.MyExceptioncSrr��obj�rrrrrr�rzFExceptionTests.testExceptionCleanupState.<locals>.MyException.__init__Nrrrrrr��rr�c@r�)z7ExceptionTests.testExceptionCleanupState.<locals>.MyObjNr�rrrr�MyObj�r�rcs�}����rr)Z	local_ref�r�rrr�inner_raising_func�szDExceptionTests.testExceptionCleanupState.<locals>.inner_raising_func)rF)Zcpythonc@�eZdZdd�Zdd�ZdS)z9ExceptionTests.testExceptionCleanupState.<locals>.ContextcS�|Srrr(rrr�	__enter__�zCExceptionTests.testExceptionCleanupState.<locals>.Context.__enter__cSsdS)NTr)r�exc_type�	exc_value�exc_tbrrr�__exit__rzBExceptionTests.testExceptionCleanupState.<locals>.Context.__exit__N�rrrrr!rrrr�Context�r#)r'�weakref�refrr�r?r�r)rrr�wrrc�ir#rrr�testExceptionCleanupState�s�

��


�








�
��

��

�z(ExceptionTests.testExceptionCleanupStatec
sD�fdd�}ztWdSty!�z
|�WYd��dSd��ww)Ncs�dSrrr�rcrr�print_error&r*zIExceptionTests.test_exception_target_in_nested_scope.<locals>.print_error)�	somethingr')rr+rr*r�%test_exception_target_in_nested_scope#s
��z4ExceptionTests.test_exception_target_in_nested_scopecCs�dd�}|�}|�t|�t�|�t��dd�|�t|�t�|�t��dd�|�t|�d�ztd��ty{|�}|�t|�t�|�t��dt�|�t|�t�|�t��dt�|�t|�t�~|�t��dt�YdSw)NcssL�ztd��tyt��dVt��dVYnwt��dVdS)NZcaughtr)r?rUr�rrrr�yield_raise1s��z:ExceptionTests.test_generator_leaking.<locals>.yield_raiserr�)r0�nextr?rUr�rO)rr.r	rrr�test_generator_leaking.s&�z%ExceptionTests.test_generator_leakingcCsbdd�}zt�ty|�}t|�Ynwzt|�Wn	ty&Ynw|�t��d�dS)Ncss�dVdSrrrrrrr	N��
z1ExceptionTests.test_generator_leaking2.<locals>.g�NNN)rGr/�
StopIterationr0rUr��rr	�itrrr�test_generator_leaking2Ls��z&ExceptionTests.test_generator_leaking2c
Cs�dd�}|�}t|�zddWn1tyB}z%|�t��d|�|�|�}|�t��d|�|�||�WYd}~nd}~ww|�t��d�dS)Ncss2�zdVWdStyt��dVYdSw�NrE�rQrUr�rrrrr	^s��z1ExceptionTests.test_generator_leaking3.<locals>.grErr2)r/rQr�rUr��throwr0)rr	r5rcZgen_excrrr�test_generator_leaking3[s
��z&ExceptionTests.test_generator_leaking3c
Cs�dd�}|�}zt�tyt|�}Ynw|�|t�zt|�Wnty?}z|�t��d|�WYd}~nd}~ww|�t��d�dS)Ncss0�zddWdStyt��dV�w�NrErr8rrrrr	qs��z1ExceptionTests.test_generator_leaking4.<locals>.grEr2)rOr/r�rQrUr�r0)rr	r5�tprcrrr�test_generator_leaking4ns� ��z&ExceptionTests.test_generator_leaking4csD�fdd�}|�}zt�tyt|�Ynw��tt|�dS)Nc3s0���t��dt�dV��t��d�dS)NrEr2)r�rUr�rGr0rr(rrr	�s�z>ExceptionTests.test_generator_doesnt_retain_old_exc.<locals>.g)rGr/rSr3r4rr(r�$test_generator_doesnt_retain_old_exc�s�z3ExceptionTests.test_generator_doesnt_retain_old_exccs4dd���fdd�}|�t�|�t��d�dS)Ncss�dVdSr7rrrrr�
simple_gen�r1zIExceptionTests.test_generator_finalizing_and_exc_info.<locals>.simple_gencs&��}zt�tyt|�YSwr)rGr/)�gen�r?rr�run_gen�s�zFExceptionTests.test_generator_finalizing_and_exc_info.<locals>.run_genr2)rr0rUr�)rrBrrAr�&test_generator_finalizing_and_exc_info�s
z5ExceptionTests.test_generator_finalizing_and_exc_infocstGdd�dt��Gdd�d�}��fdd�}|��t���}|�}t|�||�d}�t�|��|���dS)Nc@r)zFExceptionTests._check_generator_cleanup_exc_state.<locals>.MyExceptioncSrrrrrrrr�rzOExceptionTests._check_generator_cleanup_exc_state.<locals>.MyException.__init__Nrrrrrr��rr�c@r�)z@ExceptionTests._check_generator_cleanup_exc_state.<locals>.MyObjNr�rrrrr�r�rc3s&�z�����ydVYdSwrrrrrr�raising_gen�s��zFExceptionTests._check_generator_cleanup_exc_state.<locals>.raising_gen)r'r%r&r/rr�)rZtestfuncrrDr'r	rrr�"_check_generator_cleanup_exc_state�s
z1ExceptionTests._check_generator_cleanup_exc_statecC�dd�}|�|�dS)NcSs(z	|�t��WdStyYdSwr)r9rGrrrr�do_throw�s
�zGExceptionTests.test_generator_throw_cleanup_exc_state.<locals>.do_throw�rE)rrGrrr�&test_generator_throw_cleanup_exc_state�sz5ExceptionTests.test_generator_throw_cleanup_exc_statecCrF)NcSs|��dSr)rWrrrr�do_close��zGExceptionTests.test_generator_close_cleanup_exc_state.<locals>.do_closerH)rrJrrr�&test_generator_close_cleanup_exc_state��z5ExceptionTests.test_generator_close_cleanup_exc_statecCrF)NcSsd}dSrrrrrr�do_del�r*zCExceptionTests.test_generator_del_cleanup_exc_state.<locals>.do_delrH)rrNrrr�$test_generator_del_cleanup_exc_state�rMz3ExceptionTests.test_generator_del_cleanup_exc_statec��fdd�}��|�dS)Ncs0zt|�Wn
tyYdSw��d�dS�Nz should have raised StopIteration)r/r3r_rr(rr�do_next�s�zEExceptionTests.test_generator_next_cleanup_exc_state.<locals>.do_nextrH)rrRrr(r�%test_generator_next_cleanup_exc_state��z4ExceptionTests.test_generator_next_cleanup_exc_statecrP)Ncs2z|�d�Wn
tyYdSw��d�dSrQ)�sendr3r_rr(rr�do_send�s�zEExceptionTests.test_generator_send_cleanup_exc_state.<locals>.do_sendrH)rrVrr(r�%test_generator_send_cleanup_exc_state�rTz4ExceptionTests.test_generator_send_cleanup_exc_statecs@G�fdd�d�}d�zt|���Yt�|��d�dS)Nc�eZdZ�fdd�ZdS)z*ExceptionTests.test_3114.<locals>.MyObjectcst���dSr)rUr�r(r*rr�__del__�sz2ExceptionTests.test_3114.<locals>.MyObject.__del__N�rrrrYrr*rr�MyObject��r[rr2)r'rr0)rr[rr*r�	test_3114�s
zExceptionTests.test_3114cCsHGdd�dt�}Gdd�dt�}Gdd�dt�}z[z|�|ys}zL|}z|�|yn}z;|}z|�|yi}z*|}	|�||�|�||�|�|	|�|�|j�|�|j|�|�|	j|�|�d}~wwd}~wwd}~ww|y�}
z|
}WYd}
~
nd}
~
ww|�||�|�|j|	�|�|	j|�|�|j�dS)Nc@r�)zHExceptionTests.test_raise_does_not_create_context_chain_cycle.<locals>.ANr�rrrr�A�r�r^c@r�)zHExceptionTests.test_raise_does_not_create_context_chain_cycle.<locals>.BNr�rrrr�B�r�r_c@r�)zHExceptionTests.test_raise_does_not_create_context_chain_cycle.<locals>.CNr�rrrr�C�r�r`)r'r�r�r�r�)rr^r_r`Za_r�Zb_rZc_�crcr,rrr�.test_raise_does_not_create_context_chain_cycle�sJ��������z=ExceptionTests.test_raise_does_not_create_context_chain_cyclec
Csldd�}z|�Wnty}z|}WYd}~nd}~ww|�|t�|�|jt�|�|jj|j�dS)Nc
Ss0ztd��ty}z||_td��d}~ww)NrEr)rPr�rO��exrrr�cycles��zBExceptionTests.test_no_hang_on_context_chain_cycle1.<locals>.cycle)r'r�rOr�rPr�)rrercr,rrr�$test_no_hang_on_context_chain_cycle1s
��z3ExceptionTests.test_no_hang_on_context_chain_cycle1zSee issue 44895cCs�Gdd�dt�}Gdd�dt�}Gdd�dt�}|�|��<}z|��|yX}z+|}z|��|yS}z|}z|��|yN}	z|	}
|
|_|
�d}	~	wwd}~wwd}~ww1s\wY|�|j|
�|�|
j|�|�|j|�|�|j|
�dS)Nc@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle2.<locals>.ANr�rrrrr^0r�r^c@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle2.<locals>.BNr�rrrrr_2r�r_c@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle2.<locals>.CNr�rrrrr`4r�r`�r'rSr�r�rn)rr^r_r`r|�_ar��_br�_crarrr�$test_no_hang_on_context_chain_cycle2,s:�������z3ExceptionTests.test_no_hang_on_context_chain_cycle2cCsdGdd�dt�}Gdd�dt�}Gdd�dt�}Gdd�dt�}Gd	d
�d
t�}|�|��Q}z|��|y}}z@|}z|��|yx}	z.|	}
z|��|ys}z|}||_z|��|yn}
z|
}|�}|�d}
~
wwd}~wwd}	~	wwd}~ww1s�wY|�|j|�|�|j|�|�|j|�|�|j|
�|�|
j|�|�|j|�dS)Nc@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle3.<locals>.ANr�rrrrr^Tr�r^c@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle3.<locals>.BNr�rrrrr_Vr�r_c@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle3.<locals>.CNr�rrrrr`Xr�r`c@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle3.<locals>.DNr�rrrr�DZr�rlc@r�)z>ExceptionTests.test_no_hang_on_context_chain_cycle3.<locals>.ENr�rrrr�E\r�rmrg)rr^r_r`rlrmr|rhr�rirrjraZ_d�drcrrr�$test_no_hang_on_context_chain_cycle3QsP���������z3ExceptionTests.test_no_hang_on_context_chain_cycle3cCsftddddd�}|�t|�d�d|_|�t|�d�d|_d	|_|�t|�d
�d|_|�t|�d�d
|_|�t|�d�tddddd�}|�t|�d�d|_|�t|�d�d|_d	|_|�t|�d�d|_|�t|�d�d
|_|�t|�d�tdddd�}|�t|�d�d|_|�t|�d�d|_d	|_|�t|�d�d
|_|�t|�d�dS)Nr�ZxxxxxrEr�r�z8'baz' codec can't encode characters in position 1-4: foorz<'baz' codec can't encode character '\x78' in position 1: foolESh
MQ)EzJ'baz' codec can't encode characters in position 1-4: 965230951443685724997i�zK'4000' codec can't encode characters in position 1-4: 965230951443685724997i�zN'4000' codec can't encode characters in position 1000-4: 965230951443685724997sxxxxxz3'baz' codec can't decode bytes in position 1-4: fooz5'baz' codec can't decode byte 0x78 in position 1: foozE'baz' codec can't decode bytes in position 1-4: 965230951443685724997zF'4000' codec can't decode bytes in position 1-4: 965230951443685724997zI'4000' codec can't decode bytes in position 1000-4: 965230951443685724997Zxxxxz/can't translate characters in position 1-4: fooz3can't translate character '\x78' in position 1: foozAcan't translate characters in position 1-4: 965230951443685724997zDcan't translate characters in position 1000-4: 965230951443685724997)	r�r0r/r�r�r8r�r�r�)r�urrr�test_unicode_change_attributes�s>z-ExceptionTests.test_unicode_change_attributescCs.tttf}|D]
}|�t|�|��d�qdS)N�)r�r�r�r0r/�__new__)rZklasses�klassrrr�test_unicode_errors_no_object�s
�z,ExceptionTests.test_unicode_errors_no_objectcs�Gdd�dt�}Gdd�dt|d�}t��3}zt��|y0}z|�d�WYd}~nd}~wty8Yn	|�d�YWd�n1sKwY�fdd	����\}}}|�|tt|��|�d
t|��dS)Nc@r)z/ExceptionTests.test_badisinstance.<locals>.MetacS�t��rr)�cls�subclassrrr�__subclasscheck__�rzAExceptionTests.test_badisinstance.<locals>.Meta.__subclasscheck__N)rrrryrrrr�Meta�rrzc@r�)z6ExceptionTests.test_badisinstance.<locals>.MyExceptionNr�rrrrr��r�r�)�	metaclassz%exception should not be a MyExceptionzShould have raised KeyErrorcs$z��WStyt��YSwr)rHrUr�rrrrr	�s
�z,ExceptionTests.test_badisinstance.<locals>.gz maximum recursion depth exceeded)	r�r'rr?r_r�rHr{r/)rrzr�r�rc�vr�rrr�test_badisinstance�s$���z!ExceptionTests.test_badisinstancecCsdd�}|�t��dS)NcSst�}td�D]}|j}qdS)Ni@B)r�r]�__dir__)�orrrrr��s�z3ExceptionTests.test_trashcan_recursion.<locals>.foo)rr)rr�rrr�test_trashcan_recursion�sz&ExceptionTests.test_trashcan_recursioncCsPdt}t�dd|�\}}}|�|d�|�d|�|�d|�|�d|�dS)Na�if 1:
            import sys
            from _testinternalcapi import get_recursion_depth

            class MyException(Exception): pass

            def setrecursionlimit(depth):
                while 1:
                    try:
                        sys.setrecursionlimit(depth)
                        return depth
                    except RecursionError:
                        # sys.setrecursionlimit() raises a RecursionError if
                        # the new recursion limit is too low (issue #25274).
                        depth += 1

            def recurse(cnt):
                cnt -= 1
                if cnt:
                    recurse(cnt)
                else:
                    generator.throw(MyException)

            def gen():
                f = open(%a, mode='rb', buffering=0)
                yield

            generator = gen()
            next(generator)
            recursionlimit = sys.getrecursionlimit()
            depth = get_recursion_depth()
            try:
                # Upon the last recursive invocation of recurse(),
                # tstate->recursion_depth is equal to (recursion_limit - 1)
                # and is equal to recursion_limit when _gen_throw() calls
                # PyErr_NormalizeException().
                recurse(setrecursionlimit(depth + 2) - depth)
            finally:
                sys.setrecursionlimit(recursionlimit)
                print('Done.')
        �-Wd�-crEsRecursionErrorsResourceWarning�Done.)�__file__r�assert_python_failurer0r{�rr��rc�outr1rrr�$test_recursion_normalizing_exception�s(�)z3ExceptionTests.test_recursion_normalizing_exceptioncCs>d}t�d|�\}}}|�|d�|�d|�|�d|�dS)Nz�if 1:
            import _testcapi
            try:
                raise _testcapi.RecursingInfinitelyError
            finally:
                print('Done.')
        r�rEsORecursionError: maximum recursion depth exceeded while normalizing an exceptionr�)rr�r0r{r�rrr�-test_recursion_normalizing_infinite_exceptions�z<ExceptionTests.test_recursion_normalizing_infinite_exceptionc
s�dd�}�fdd���fdd���fdd��t��}z>|d	����fD],}|j|d
��z|�Wn	ty;Ynw|�d�Wd�n1sKwYq$Wt�|�dSt�|�w)NcSsFd}	zt�|�Wn
ty|d7}Ynwnqt�||�dSr7)rU�setrecursionlimitrH)�n�depthrrr�set_relative_recursion_limit)s��zUExceptionTests.test_recursion_in_except_handler.<locals>.set_relative_recursion_limitcs"zddWdS��YdSr;rr)�recurse_in_exceptrrr�4szJExceptionTests.test_recursion_in_except_handler.<locals>.recurse_in_exceptcs zddWnY��dSr;rr)�recurse_after_exceptrrr�:s

zMExceptionTests.test_recursion_in_except_handler.<locals>.recurse_after_exceptcs z��WdS��YdSrrr)�recurse_in_body_and_exceptrrr�AszSExceptionTests.test_recursion_in_except_handler.<locals>.recurse_in_body_and_exceptr>)�funcz#Should have raised a RecursionError)rU�getrecursionlimitr.rHr_r�)rr�Zrecursionlimitr�r)r�r�r�r� test_recursion_in_except_handler's(
�
����	z/ExceptionTests.test_recursion_in_except_handlercCsNd}t��t�d|�\}}}|�d|�Wd�dS1s wYdS)Na+if 1:
            import _testcapi
            class C(): pass
            def recurse(cnt):
                cnt -= 1
                if cnt:
                    recurse(cnt)
                else:
                    _testcapi.set_nomemory(0)
                    C()
            recurse(16)
        r�smFatal Python error: _PyErr_NormalizeException: Cannot recover from MemoryErrors while normalizing exceptions.)r	rr�r{r�rrr�)test_recursion_normalizing_with_no_memoryVs�"�z8ExceptionTests.test_recursion_normalizing_with_no_memorycs@ddl�ddlm����fdd�}|�}|�}��||�dS)Nr��raise_memoryerrorc
sJz��Wnty}z	|j}WYd}~n
d}~ww��d���|�S)Nz Should have raised a MemoryError)rBr�r_�	format_tb)rcr��r�r�	tracebackrr�
raiseMemErrorts
��

z6ExceptionTests.test_MemoryError.<locals>.raiseMemError)r�r�r�r0)rr�Ztb1Ztb2rr�r�test_MemoryErrorns	zExceptionTests.test_MemoryErrorc
Cs"ddl}d}d}|�t|jd�|�d�}|�t|�t�|�t|t��|�	|j
�|�d|�}|�|j
|�|jd|d�}|�t||��Gd	d
�d
t�}|�d|||f�}|�t||��|�t||��|�|j
|�|�dd
|ddi�}	|�t|	|��|�|	j
d�|�|	j
d
�dS)NrzThis is a test docstring.zThis is another test docstring.�error1z_testcapi.error1z_testcapi.error2z_testcapi.error3)�basec@r�)z1ExceptionTests.test_exception_with_doc.<locals>.CNr�rrrrr`�r�r`z_testcapi.error4z_testcapi.error5rrr�rE)r�rSrMZmake_exception_with_docr�r�r��
issubclassr'r��__doc__r0r�r�)
rr�Zdoc2Zdoc4r�Zerror2Zerror3r`Zerror4Zerror5rrr�test_exception_with_doc�s:
�
���z&ExceptionTests.test_exception_with_docc
s�ddlm�Gdd�d��d����fdd�}z|�Wnty5}z
|���d�WYd}~n
d}~ww|�d�t�|���d�dS)Nrr�c@r�)z3ExceptionTests.test_memory_error_cleanup.<locals>.CNr�rrrrr`�r�r`c���}t�|����dSr�r%r&�ra�r`r�r'rr�inner��

z7ExceptionTests.test_memory_error_cleanup.<locals>.innerzMemoryError not raised)r�r�rB�assertNotEqualr_rr0)rr�rcrr�r�test_memory_error_cleanup�s
��
z(ExceptionTests.test_memory_error_cleanupc
s�Gdd�d��d����fdd��z��Wnty/}z
|���d�WYd}~n
d}~ww|�d�t�|���d�dS)Nc@r�)z6ExceptionTests.test_recursion_error_cleanup.<locals>.CNr�rrrrr`�r�r`cr�rr�r��r`r�r'rrr��r�z:ExceptionTests.test_recursion_error_cleanup.<locals>.innerzRecursionError not raised)rHr�r_rr0r�rr�r�test_recursion_error_cleanup�s
��
z+ExceptionTests.test_recursion_error_cleanupcCsN|�t��
}t�t�Wd�n1swY|�|jjtj|j�dSr)	rSr;�os�listdirr�r0rnr��ENOTDIR)rr|rrr�test_errno_ENOTDIR�s�z!ExceptionTests.test_errno_ENOTDIRcCsjGdd�d�}|�}t���}~t�|�|jj|j�|�|jj�Wd�dS1s.wYdS)Nc@r)z1ExceptionTests.test_unraisable.<locals>.BrokenDelcSstd�}|�)Nz
del is brokenr�rr,rrrrY�sz9ExceptionTests.test_unraisable.<locals>.BrokenDel.__del__NrZrrrr�	BrokenDel�rr�)	rZcatch_unraisable_exceptionrr0Z
unraisabler�rYZassertIsNotNone�
exc_traceback)rr�rr|rrr�test_unraisable�s
"�zExceptionTests.test_unraisablec
Cs�ttfD]q}|�|��bz|d�}|�|y5t��}tjt���Wd�n1s.wYYnw|��}|�d|�|�d|�|�|j	|�|turX|�d|�n|�d|�|�
|�d��Wd�n1spwYqdS)Nztest messager�z	raise excz<exception str() failed>rt)rPr$r.rrU�__excepthook__r��getvaluer{rr�r�)rrr,r��reportrrr�test_unhandled�s,������zExceptionTests.test_unhandledcCsFd}tdd�D]}t�d||�\}}}|�|d�|�d|�qdS)Nz�if 1:
            import _testcapi
            class C(): pass
            _testcapi.set_nomemory(0, %d)
            C()
        rEr�r�)rE�xsMemoryError)r]rr�r{)rr�r(r�r�r1rrr�"test_memory_error_in_PyErr_PrintExs
�z1ExceptionTests.test_memory_error_in_PyErr_PrintExcszGdd�dt��Gdd�dt����fdd�}|�}|�d�|����|����Wd�dS1s6wYdS)Nc@r�)zBExceptionTests.test_yield_in_nested_try_excepts.<locals>.MainErrorNr�rrrr�	MainErrorr�r�c@r�)zAExceptionTests.test_yield_in_nested_try_excepts.<locals>.SubErrorNr�rrrr�SubErrorr�r�c3s6�z����yzdVW��yY�wwrrr�r�r�rr�mains����z=ExceptionTests.test_yield_in_nested_try_excepts.<locals>.main)r'rUrSr9)rr��cororr�r� test_yield_in_nested_try_exceptss

"�z/ExceptionTests.test_yield_in_nested_try_exceptscsN�fdd�}|�}zt�ty��t|�d�Ynw��t|�d�dS)Nc3s:�zt�tydVYnw��t��d�dVdS)NrEr2r)rPr0rUr�rr(rrr	*s�
�
z?ExceptionTests.test_generator_doesnt_retain_old_exc2.<locals>.grEr)r=r0r/)rr	r@rr(r�%test_generator_doesnt_retain_old_exc2(s�z4ExceptionTests.test_generator_doesnt_retain_old_exc2cCstdd�}|�t��'|�}zddWnt|�t|�YWd�dSWd�dS1s3wYdS)Ncss
�dV�r7rrrrrr	<s�z1ExceptionTests.test_raise_in_generator.<locals>.grEr)rSrQr/)rr	r(rrr�test_raise_in_generator:s�"�z&ExceptionTests.test_raise_in_generatorTz Won't work if __debug__ is Falsec
CsRtazJd��ty(}zb|�|t�|�t|�d�WYd}~dSd}~ww)NFZhello)rO�AssertionErrorr�r�r0r/r_r�rrr�test_assert_shadowingIs��z$ExceptionTests.test_assert_shadowingcCs�Gdd�dt�}zt�ty}z|}WYd}~nd}~wwz|�ty*Ynwtd�D]}zt�tyE}zWYd}~nd}~wwt�q/dS)Nc@r�)zBExceptionTests.test_memory_error_subclasses.<locals>.TestExceptionNr�rrrr�
TestExceptionbr�r�r>)rBr'r]r)rr�r,�inst�_rrr�test_memory_error_subclassesYs*	������z+ExceptionTests.test_memory_error_subclasses)NNr6)Hrrrr2rdrmror~r�r�rr�r��unittestZ
skipUnlessrUr�r�r�r�r�r�r�r�rrrr
rrrr)r-r0r6r:r=r>rCrErIrLrOrSrWr]rbrf�skiprkrorqrur}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr+&s�
T
)a
/'�

y

(
$/%


:
/


'




r+c@�deZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�NameErrorTestsc
Cs@ztWdSty}z|�d|j�WYd}~dSd}~ww)N�bluch)r�rCr0�namer�rrr�test_name_error_has_namezs
��z'NameErrorTests.test_name_error_has_namecCs�dd�}dd�}dd�}dd�}d	d
�}dd�}|d
f|df|df|df|df|dffD]A\}}d}	z|�Wn-tyd}
z!t���}	tjt���Wd�n1sUwYWYd}
~
nd}
~
ww|�||	���q,dS)NcS� d}}}}d}tt�dSr�r�r�)�noise�
more_noiser��bc�blechrrr�Substitution��z@NameErrorTests.test_name_error_suggestions.<locals>.SubstitutioncSr�rr�)r�r�r�r��blchrrr�Elimination�r�z?NameErrorTests.test_name_error_suggestions.<locals>.EliminationcSr�rr�)r�r�r�r��bluchinrrr�Addition�r�z<NameErrorTests.test_name_error_suggestions.<locals>.AdditioncS�d}d}tt�dSrr�)�blach�blucrrr�SubstitutionOverElimination��zONameErrorTests.test_name_error_suggestions.<locals>.SubstitutionOverEliminationcSr�rr�)r��bluchirrr�SubstitutionOverAddition�r�zLNameErrorTests.test_name_error_suggestions.<locals>.SubstitutionOverAdditioncSr�rr�)�bluchar�rrr�EliminationOverAddition�r�zKNameErrorTests.test_name_error_suggestions.<locals>.EliminationOverAddition�'blech'?�'blch'?�
'bluchin'?z	'blucha'?�'blach'?�rCrrrUr�r�r{r�)rr�r�r�r�r�r�r��
suggestionr1r,rrr�test_name_error_suggestions�s0�

����z*NameErrorTests.test_name_error_suggestionscC�dd�}z|�Wn-ty6}z!t���}tjt���Wd�n1s'wYWYd}~nd}~ww|�d|���dS)NcS�tt�dSr)r�Zglobal_for_suggestiorrrrr��rKzENameErrorTests.test_name_error_suggestions_from_globals.<locals>.funcz'global_for_suggestions'?r��rr�r,r1rrr�(test_name_error_suggestions_from_globals��

���z7NameErrorTests.test_name_error_suggestions_from_globalscCr�)NcSr�r)r�ZZeroDivisionErrrrrrrrrr��rKzFNameErrorTests.test_name_error_suggestions_from_builtins.<locals>.funcz'ZeroDivisionError'?r�r�rrr�)test_name_error_suggestions_from_builtins�r�z8NameErrorTests.test_name_error_suggestions_from_builtinscCr�)NcSsd}tt�dSr)r�Zsomethingverywronghe)Zsomethingverywrongheheheheheherrrr�szSNameErrorTests.test_name_error_suggestions_do_not_trigger_for_long_names.<locals>.fZsomethingverywronghehe�rCrrrUr�r�rr��rrr,r1rrr�9test_name_error_suggestions_do_not_trigger_for_long_names�s

���zHNameErrorTests.test_name_error_suggestions_do_not_trigger_for_long_namescCs�d}}}}}|jdd��jztWn-tyB}z!t���}tjt���Wd�n1s3wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��Wd�n1s}wY|jd	d��jzt
Wn-ty�}z!t���}tjt���Wd�n1s�wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��Wd�n1s�wY|jd
d��lztWn/t�y4}z"t���}tjt���Wd�n	1�s%wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��Wd�n	1�spwY|jdd��mztWn/t�y�}z"t���}tjt���Wd�n	1�s�wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d|�	��Wd�dS1�s�wYdS)Nr�r��you mean�vvv�mom�'id'�'w'�'pytho'r|�m�py)
r.rrCrrrUr�r�rr�r|r�r�)rr�r�r5�id�pythor,r1rrr�>test_name_error_bad_suggestions_do_not_trigger_for_small_names�s�
����

����

����

���$�zMNameErrorTests.test_name_error_bad_suggestions_do_not_trigger_for_small_namescCs�dd�}z|�Wn-ty6}z!t���}tjt���Wd�n1s'wYWYd}~nd}~ww|�|��d�dS)Nc Ss�d}}}}}}}}}}	}
}}}
}}}}}}}}}}}}}}}}}}} }!}"}#}$}%}&}'}(})}*}+},}-}.}/}0}1}2}3}4}5}6}7}8}9}:};}<}=}>}?}@}A}B}C}D}E}F}G}H}I}J}K}L}M}N}O}P}Q}R}S}T}U}V}W}X}Y}Z}[}\}]}^}_}`}a}b}c}d}e}f}g}h}i}j}k}l}m}n}o}p}q}r}s}t}u}v}w}x}y}z}{}|}}}~}}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}��}�}�}�}�}�}�}�}�}�}	�}
�}�}�}
�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�} �}!�}"�}#�}$�}%�}&�}'�}(�})�}*�}+�},�}-�}.�}/�}0�}1�}2�}3�}4�}5�}6�}7�}8�}9�}:�};�}<�}=�}>�}?�}@�}A�}B�}C�}D�}E�}F�}G�}H�}I�}J�}K�}L�}M�}N�}O�}P�}Q�}R�}S�}T�}U�}V�}W�}X�}Y�}Z�}[�}\�}]�}^�}_�}`�}a�}b�}c�}d�}e�}f�}g�}h�}i�}j�}k�}l�}m�}n�}o�}p�}q�}r�}s�}t�}u�}v�}w�}x�}y�}z�}{�}|�}}�}~�}�}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}�}�}�}�}�}�}�}�}�}	�}
�}�}�}
�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�} �}!�}"�}#�}$�}%�}&�}'�}(�})�}*�}+�},�}-�}.�}/�}0�}1�}2�}3�}4�}5�}6�}7�}8�}9�}:�};�}<�}=�}>�}?�}@�}A�}B�}C�}D�}E�}F�}G�}H�}I�}J�}K�}L�}M�}N�}O�}P�}Q�}R�}S�}T�}U�}V�}W�}X�}Y�}Z�}[�}\�}]�}^�}_�}`�}a�}b�}c�}d�}e�}f�}g�}h�}i�}j�}k�}l�}m�}n�}o�}p�}q�}r�}s�}t�}u�}v�}w�}x�}y�}z�}{�}|�}}�}~�}�}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}��}�}�}�}�}�}�}�}�}�}	�}
�}�}�}
�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}�}tt�dSr)r�Za0( Za1Za2�a3Za4Za5Za6Za7Za8Za9Za10Za11Za12Za13Za14Za15Za16Za17Za18Za19Za20Za21Za22Za23Za24Za25Za26Za27Za28Za29Za30Za31Za32Za33Za34Za35Za36Za37Za38Za39Za40Za41Za42Za43Za44Za45Za46Za47Za48Za49Za50Za51Za52Za53Za54Za55Za56Za57Za58Za59Za60Za61Za62Za63Za64Za65Za66Za67Za68Za69Za70Za71Za72Za73Za74Za75Za76Za77Za78Za79Za80Za81Za82Za83Za84Za85Za86Za87Za88Za89Za90Za91Za92Za93Za94Za95Za96Za97Za98Za99Za100Za101Za102Za103Za104Za105Za106Za107Za108Za109Za110Za111Za112Za113Za114Za115Za116Za117Za118Za119Za120Za121Za122Za123Za124Za125Za126Za127Za128Za129Za130Za131Za132Za133Za134Za135Za136Za137Za138Za139Za140Za141Za142Za143Za144Za145Za146Za147Za148Za149Za150Za151Za152Za153Za154Za155Za156Za157Za158Za159Za160Za161Za162Za163Za164Za165Za166Za167Za168Za169Za170Za171Za172Za173Za174Za175Za176Za177Za178Za179Za180Za181Za182Za183Za184Za185Za186Za187Za188Za189Za190Za191Za192Za193Za194Za195Za196Za197Za198Za199Za200Za201Za202Za203Za204Za205Za206Za207Za208Za209Za210Za211Za212Za213Za214Za215Za216Za217Za218Za219Za220Za221Za222Za223Za224Za225Za226Za227Za228Za229Za230Za231Za232Za233Za234Za235Za236Za237Za238Za239Za240Za241Za242Za243Za244Za245Za246Za247Za248Za249Za250Za251Za252Za253Za254Za255Za256Za257Za258Za259Za260Za261Za262Za263Za264Za265Za266Za267Za268Za269Za270Za271Za272Za273Za274Za275Za276Za277Za278Za279Za280Za281Za282Za283Za284Za285Za286Za287Za288Za289Za290Za291Za292Za293Za294Za295Za296Za297Za298Za299Za300Za301Za302Za303Za304Za305Za306Za307Za308Za309Za310Za311Za312Za313Za314Za315Za316Za317Za318Za319Za320Za321Za322Za323Za324Za325Za326Za327Za328Za329Za330Za331Za332Za333Za334Za335Za336Za337Za338Za339Za340Za341Za342Za343Za344Za345Za346Za347Za348Za349Za350Za351Za352Za353Za354Za355Za356Za357Za358Za359Za360Za361Za362Za363Za364Za365Za366Za367Za368Za369Za370Za371Za372Za373Za374Za375Za376Za377Za378Za379Za380Za381Za382Za383Za384Za385Za386Za387Za388Za389Za390Za391Za392Za393Za394Za395Za396Za397Za398Za399Za400Za401Za402Za403Za404Za405Za406Za407Za408Za409Za410Za411Za412Za413Za414Za415Za416Za417Za418Za419Za420Za421Za422Za423Za424Za425Za426Za427Za428Za429Za430Za431Za432Za433Za434Za435Za436Za437Za438Za439Za440Za441Za442Za443Za444Za445Za446Za447Za448Za449Za450Za451Za452Za453Za454Za455Za456Za457Za458Za459Za460Za461Za462Za463Za464Za465Za466Za467Za468Za469Za470Za471Za472Za473Za474Za475Za476Za477Za478Za479Za480Za481Za482Za483Za484Za485Za486Za487Za488Za489Za490Za491Za492Za493Za494Za495Za496Za497Za498Za499Za500Za501Za502Za503Za504Za505Za506Za507Za508Za509Za510Za511Za512Za513Za514Za515Za516Za517Za518Za519Za520Za521Za522Za523Za524Za525Za526Za527Za528Za529Za530Za531Za532Za533Za534Za535Za536Za537Za538Za539Za540Za541Za542Za543Za544Za545Za546Za547Za548Za549Za550Za551Za552Za553Za554Za555Za556Za557Za558Za559Za560Za561Za562Za563Za564Za565Za566Za567Za568Za569Za570Za571Za572Za573Za574Za575Za576Za577Za578Za579Za580Za581Za582Za583Za584Za585Za586Za587Za588Za589Za590Za591Za592Za593Za594Za595Za596Za597Za598Za599Za600Za601Za602Za603Za604Za605Za606Za607Za608Za609Za610Za611Za612Za613Za614Za615Za616Za617Za618Za619Za620Za621Za622Za623Za624Za625Za626Za627Za628Za629Za630Za631Za632Za633Za634Za635Za636Za637Za638Za639Za640Za641Za642Za643Za644Za645Za646Za647Za648Za649Za650Za651Za652Za653Za654Za655Za656Za657Za658Za659Za660Za661Za662Za663Za664Za665Za666Za667Za668Za669Za670Za671Za672Za673Za674Za675Za676Za677Za678Za679Za680Za681Za682Za683Za684Za685Za686Za687Za688Za689Za690Za691Za692Za693Za694Za695Za696Za697Za698Za699Za700Za701Za702Za703Za704Za705Za706Za707Za708Za709Za710Za711Za712Za713Za714Za715Za716Za717Za718Za719Za720Za721Za722Za723Za724Za725Za726Za727Za728Za729Za730Za731Za732Za733Za734Za735Za736Za737Za738Za739Za740Za741Za742Za743Za744Za745Za746Za747Za748Za749Za750Za751Za752Za753Za754Za755Za756Za757Za758Za759Za760Za761Za762Za763Za764Za765Za766Za767Za768Za769Za770Za771Za772Za773Za774Za775Za776Za777Za778Za779Za780Za781Za782Za783Za784Za785Za786Za787Za788Za789Za790Za791Za792Za793Za794Za795Za796Za797Za798Za799Za800rrrrsXR*���������������������������������������������������������������������������������	�	�	�	�	�	�	�	�	�	�
�
�
�
�
�
�
�
�
�
���������������������
�
�
�
�
�
�
�
�
�
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� � � � � � � � � � �!�!�!�!�!�!�!�!�!�!�"�"�"�"�"�"�"�"�"�"�#�#�#�#�#�#�#�#�#�#�$�$�$�$�$�$�$�$�$�$�%�%�%�%�%�%�%�%�%�%�&�&�&�&�&�&�&�&�&�&�'�'�'�'�'�'�'�'�'�'�(�(�(�(�(�(�(�(�(�(�)�)�)�)�)�)�)�)�)�)�*�*�*�*�*�*�*�*�*�*�+�+�+�+�+�+�+�+�+�+�,�,�,�,�,�,�,�,�,�,�-�-�-�-�-�-�-�-�-�-�.�.�.�.�.�.�.�.�.�.�/�/�/�/�/�/�/�/�/�/�0�0�0�0�0�0�0�0�0�0�1�1�1�1�1�1�1�1�1�1�2�2�2�2�2�2�2�2�2�2�3�3�3�3�3�3�3�3�3�3�4�4�4�4�4�4�4�4�4�4�5�5�5�5�5�5�5�5�5�5�6�6�6�6�6�6�6�6�6�6�7�7�7�7�7�7�7�7�7�7�8�8�8�8�8�8�8�8�8�8�9�9�9�9�9�9�9�9�9�9�:�:�:�:�:�:�:�:�:�:�;�;�;�;�;�;�;�;�;�;�<�<�<�<�<�<�<�<�<�<�=�=�=�=�=�=�=�=�=�=�>�>�>�>�>�>�>�>�>�>�?�?�?�?�?�?�?�?�?�?�@�@�@�@�@�@�@�@�@�@�A�A�A�A�A�A�A�A�A�A�B�B�B�B�B�B�B�B�B�B�C�C�C�C�C�C�C�C�C�C�D�D�D�D�D�D�D�D�D�D�E�E�E�E�E�E�E�E�E�E�F�F�F�F�F�F�F�F�F�F�G�G�G�G�G�G�G�G�G�G�H�H�H�H�H�H�H�H�H�H�I�I�I�I�I�I�I�I�I�I�J�J�J�J�J�J�J�J�J�J�K�K�K�K�K�K�K�K�K�K�L�L�L�L�L�L�L�L�L�L�M�M�M�M�M�M�M�M�M�M�N�N�N�N�N�N�N�N�N�N�O�O�O�O�O�O�O�O�OzXNameErrorTests.test_name_error_suggestions_do_not_trigger_for_too_many_locals.<locals>.fz
NameError.*a1)rCrrrUr�r�ZassertNotRegexr�r�rrr�>test_name_error_suggestions_do_not_trigger_for_too_many_localssU

���zMNameErrorTests.test_name_error_suggestions_do_not_trigger_for_too_many_localscCsdd�}z|�Wn-ty6}z!t���}tjt���Wd�n1s'wYWYd}~nd}~ww|�d|���dd�}z|�Wn-tyu}z!t���}tjt���Wd�n1sfwYWYd}~nd}~ww|�d|���dS)NcSs
d}t��r�rC�r�rrrrdsz@NameErrorTests.test_name_error_with_custom_exceptions.<locals>.fr�cSsd}t�rrrrrrrpsr�r�rrr�&test_name_error_with_custom_exceptionscs(

���

���z5NameErrorTests.test_name_error_with_custom_exceptionscCr�)NcSsd}t|�d}dS)Nr�)r�)r,Z	somethongrrrr�}szDNameErrorTests.test_unbound_local_error_doesn_not_match.<locals>.foor,)rrrrUr�r�rr�)rr�r,r1rrr�(test_unbound_local_error_doesn_not_match|s

���z7NameErrorTests.test_unbound_local_error_doesn_not_matchcsv�fdd�}z|�Wn%�jy0t���}tjt���Wd�n1s)wYYnw��d|���dS)Ncs6��td��tWd�dS1swYdS)NZaaa)r�rC�aabrr(rrr�s"�z)NameErrorTests.test_issue45826.<locals>.fr)ZfailureExceptionrrrUr�r�r{r��rrr1rr(r�test_issue45826�s

���zNameErrorTests.test_issue45826cCs�dd�}z|�Wn$ty-t���}tjt���Wd�n1s&wYYnw|�d|���|�d|���dS)Nc
Ss4ztWdSty}z|�d�t��d}~wwr)�nonsenser�r�rQ)rmrrrr�s

��z1NameErrorTests.test_issue45826_focused.<locals>.fr	rQ)rQrrrUr�r�r{r�rrrr�test_issue45826_focused�s

���z&NameErrorTests.test_issue45826_focusedN)rrrr�r�r�r�r�r�rrrrr
rrrrr�ys-


7^r�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�AttributeErrorTestscCsTtd�}|�|j�|�|j�t�}tdd|d�}|�|jd�|�|j|�dS)NzOuch!ZOuchZcarry�r�r)r3r�r�rr�r0r�)rr,�sentinelrrr�test_attributes�sz#AttributeErrorTests.test_attributesc
Cs�Gdd�d�}|�}z|jWn ty/}z|�d|j�|�||j�WYd}~nd}~wwz	t�|d�WdStyZ}z|�d|j�|�||j�WYd}~dSd}~ww)Nc@�eZdZdZdS)z<AttributeErrorTests.test_getattr_has_name_and_obj.<locals>.AN�rrrr�rrrrr^��r^r�)r�r3r0r�rr��__getattribute__�rr^rr,rrr�test_getattr_has_name_and_obj�s 
����z1AttributeErrorTests.test_getattr_has_name_and_objc
CsfGdd�d�}|�}z|��WdSty2}z|�d|j�|�||j�WYd}~dSd}~ww)Nc@r)zGAttributeErrorTests.test_getattr_has_name_and_obj_for_method.<locals>.AcS�dSrrr(rrrr��rzMAttributeErrorTests.test_getattr_has_name_and_obj_for_method.<locals>.A.blechNrrrrrr^�rr^r�)r�r3r0r�rrrrr�(test_getattr_has_name_and_obj_for_method�s��z<AttributeErrorTests.test_getattr_has_name_and_obj_for_methodcCsGdd�d�}Gdd�d�}Gdd�d�}Gdd�d�}Gd	d
�d
�}Gdd�d�}|d
f|df|df|df|df|dffD]@\}}z|�jWn-tyu}	z!t���}
tjt���Wd�n1sfwYWYd}	~	nd}	~	ww|�||
���q>dS)Nc@� eZdZdZZZZdZdS)zBAttributeErrorTests.test_getattr_suggestions.<locals>.SubstitutionN)rrrr�r�r�r�r�rrrrr���r�c@r)zAAttributeErrorTests.test_getattr_suggestions.<locals>.EliminationN)rrrr�r�r�r�r�rrrrr��rr�c@r)z>AttributeErrorTests.test_getattr_suggestions.<locals>.AdditionN)rrrr�r�r�r�r�rrrrr��rr�c@�eZdZdZdZdS)zQAttributeErrorTests.test_getattr_suggestions.<locals>.SubstitutionOverEliminationN)rrrr�r�rrrrr���r�c@r)zNAttributeErrorTests.test_getattr_suggestions.<locals>.SubstitutionOverAdditionN)rrrr�r�rrrrr��rr�c@r)zMAttributeErrorTests.test_getattr_suggestions.<locals>.EliminationOverAdditionN)rrrr�r�rrrrr��rr�r�r�r�z'bluc'?r��	r�r3rrrUr�r�r{r�)rr�r�r�r�r�r�rwr�r,r1rrr�test_getattr_suggestions�s.�
����z,AttributeErrorTests.test_getattr_suggestionscC�Gdd�d�}z|�jWn-ty:}z!t���}tjt���Wd�n1s+wYWYd}~nd}~ww|�d|���dS)Nc@r)zZAttributeErrorTests.test_getattr_suggestions_do_not_trigger_for_long_attributes.<locals>.ANrrrrrr^�rr^r�)	Zsomethingverywrongr3rrrUr�r�rr��rr^r,r1rrr�;test_getattr_suggestions_do_not_trigger_for_long_attributes��
���zOAttributeErrorTests.test_getattr_suggestions_do_not_trigger_for_long_attributescCs�Gdd�d�}|jdd��kz|jWn-ty@}z!t���}tjt���Wd�n1s1wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d	|�	��|�d
|�	��Wd�n1s{wY|jdd��kz|j
Wn-ty�}z!t���}tjt���Wd�n1s�wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d	|�	��|�d
|�	��Wd�n1s�wY|jdd��mz|jWn/t�y4}z"t���}tjt���Wd�n	1�s%wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d	|�	��|�d
|�	��Wd�n	1�spwY|jd
d��nz|jWn/t�y�}z"t���}tjt���Wd�n	1�s�wYWYd}~nd}~ww|�d|�	��|�d|�	��|�d|�	��|�d|�	��|�d	|�	��|�d
|�	��Wd�dS1�s�wYdS)Nc@s eZdZdZZZZZdS)zfAttributeErrorTests.test_getattr_error_bad_suggestions_do_not_trigger_for_small_names.<locals>.MyClassN)rrrr�r�r5r�r�rrrr�MyClasssr!rr�r�r�r�r�r�r�r|r�r�)
r.rr3rrrUr�r�rr�r|r�r�)rr!r,r1rrr�Atest_getattr_error_bad_suggestions_do_not_trigger_for_small_namess�

����


����


����


���$�zUAttributeErrorTests.test_getattr_error_bad_suggestions_do_not_trigger_for_small_namescCs�Gdd�d�}td�D]}t|d|��d�qz|�jWn-tyJ}z!t���}tjt���Wd�n1s;wYWYd}~nd}~ww|�	d|�
��dS)Nc@r)zTAttributeErrorTests.test_getattr_suggestions_do_not_trigger_for_big_dicts.<locals>.ANrrrrrr^?rr^i�Zindex_r�)r]r�r�r3rrrUr�r�rr�)rr^�indexr,r1rrr�5test_getattr_suggestions_do_not_trigger_for_big_dicts>s
���zIAttributeErrorTests.test_getattr_suggestions_do_not_trigger_for_big_dictscCsGdd�d�}z|�jWn-ty:}z!t���}tjt���Wd�n1s+wYWYd}~nd}~ww|�d|���Gdd�d�}z|�jWn-ty}}z!t���}tjt���Wd�n1snwYWYd}~nd}~ww|�d|���dS)Nc@�eZdZdZdd�ZdS)�?AttributeErrorTests.test_getattr_suggestions_no_args.<locals>.ANcSrvr�r3�r�attrrrr�__getattr__Qr�KAttributeErrorTests.test_getattr_suggestions_no_args.<locals>.A.__getattr__�rrrr�r*rrrrr^Or#r^r�c@r%)r&NcS�t�rr'r(rrrr*^rr+r,rrrrr^\r#rrrrr� test_getattr_suggestions_no_argsNs(
���
���z4AttributeErrorTests.test_getattr_suggestions_no_argscs�Gdd�d��G�fdd�d�}Gdd�d�}Gdd�d�}|||fD]>}z|�jWn-tyX}z!t���}tjt���Wd�n1sIwYWYd}~nd}~ww|�d	|���q#dS)
Nc@r)zTAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.NonStringifyClassN)rrrr)�__repr__rrrr�NonStringifyClassjrr0cseZdZdZ�fdd�ZdS)zDAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.ANcs
t����rr'r(�r0rrr*przPAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.A.__getattr__r,rr1rrr^nsr^c@r%)zDAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.BNcSs
tdd��)N�Error�r'r(rrrr*urzPAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.B.__getattr__r,rrrrr_sr#r_c@r%)zDAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.CNcSr%)Nr3r'r(rrrr*zr*zPAttributeErrorTests.test_getattr_suggestions_invalid_args.<locals>.C.__getattr__r,rrrrr`xr#r`r�r)rr^r_r`rwr,r1rr1r�%test_getattr_suggestions_invalid_argsis
����z9AttributeErrorTests.test_getattr_suggestions_invalid_argscCr)Nc@r)zEAttributeErrorTests.test_getattr_suggestions_for_same_name.<locals>.AcSsdgS)Nr�rr(rrrr~�rzMAttributeErrorTests.test_getattr_suggestions_for_same_name.<locals>.A.__dir__N)rrrr~rrrrr^�rr^�Did you mean)	r�r3rrrUr�r�rr�rrrr�&test_getattr_suggestions_for_same_name�r z:AttributeErrorTests.test_getattr_suggestions_for_same_namecCs�Gdd�d�}z|�jWn-ty:}z!t���}tjt���Wd�n1s+wYWYd}~nd}~ww|�d|���|�d|���dS)Nc@r )zEAttributeErrorTests.test_attribute_error_with_failing_dict.<locals>.TrEcSr%)N�oh no!r'r(rrrr~�r*zMAttributeErrorTests.test_attribute_error_with_failing_dict.<locals>.T.__dir__N)rrrr�r~rrrr�T�r#r8r�r7)	�blichr3rrrUr�r�rr�)rr8r,r1rrr�&test_attribute_error_with_failing_dict�s
���z:AttributeErrorTests.test_attribute_error_with_failing_dictcCs|ztddd��ty3}z!t���}tjt���Wd�n1s$wYWYd}~nd}~ww|�d|���dS)N�r3r�?)r3rrrUr�r�rr�)rr,r1rrr�"test_attribute_error_with_bad_name�s
���z6AttributeErrorTests.test_attribute_error_with_bad_namecs�Gdd�d��G�fdd�d�}z|�jWn-tyC}z!t���}tjt���Wd�n1s4wYWYd}~nd}~ww|�d|���|�d|���dS)Nc@seZdZdZdS)zIAttributeErrorTests.test_attribute_error_inside_nested_getattr.<locals>.ArEN)rrrr�rrrrr^�rr^crX)zIAttributeErrorTests.test_attribute_error_inside_nested_getattr.<locals>.Bcs��}|jSr)r9)rr)r��r^rrr�szZAttributeErrorTests.test_attribute_error_inside_nested_getattr.<locals>.B.__getattribute__N)rrrrrr>rrr_�r\r_r5r�)	r,r3rrrUr�r�r{r�)rr_r,r1rr>r�*test_attribute_error_inside_nested_getattr�s
���z>AttributeErrorTests.test_attribute_error_inside_nested_getattrN)rrrrrrrrr"r$r.r4r6r:r=r?rrrrr�s'9	rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ImportErrorTestscCs�td�}|�|j�|�|j�tddd�}|�|jd�|�|j�tddd�}|�|jd�|�|j�tdddd�}|�|jd�|�|jd�d}|�t|��tdd	d
�Wd�n1sdwY|�t|��tddd	d�Wd�n1s�wY|�t|��tdd
d	d�Wd�n1s�wY|�t|��
td	d
�Wd�n1s�wY|�t|��tdd	dd�Wd�dS1s�wYdS)N�testZ
somemoduler��somepath��path�somename)rDr�z8'invalid' is an invalid keyword argument for ImportError�keyword)�invalidr�)r�rGrD)rDrGT)rGZanother)r<r�r�rDr0r�rO)rr,rfrrrr�s8����"�z ImportErrorTests.test_attributescCs�tdddd�}|�|jd�|�|jd�|�|jd�|�|jd�|��|�|jd�|�|jd�|�|jd�|�|jd�dS)NrAr�rD�r�rD�rAr)r<r0r�rfr�rDrr�rrr�test_reset_attributes�sz&ImportErrorTests.test_reset_attributescCsVtdtfdd��d}t|�}|�t|�t|��Wd�dS1s$wYdS)NrrT)�quietsabc)r
�BytesWarningr<r0r/)r�argr,rrr�test_non_str_argument�s
"�z&ImportErrorTests.test_non_str_argumentcCs�t�tdd�tdd�tddd�fD]e}tdi|��}ttjd�D])}t�t�||��}|�|jd�|�|j	d�|�|j
|j
�|�|j|j�q!tjtj
fD]$}||�}|�|jd�|�|j	d�|�|j
|j
�|�|j|j�qQqdS)	NrEr�rBrCrHrArErI)�dictr<r]r�r�rZr�r0r�rfr�rD�copy�deepcopy)r�kwargsZorig�protor,rarrr�test_copy_pickle�s(
���z!ImportErrorTests.test_copy_pickleN)rrrrrJrNrTrrrrr@�s
"r@c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�SyntaxErrorTestsc
Csdtd�fdtd�fdtd�fdtd�fdtd	�fd
td	�fdtd	�fdtd	�fd
td�fg	}|D]W\}}|j|d��Eztd|��tyx}z+t���}tjt���Wd�n1s_wY|�||�	��|}WYd}~nd}~wwWd�n1s�wYq1dS)N)�bad.pyrEr�abcdefgrEr�z�
               File "bad.py", line 1
                 abcdefg
                  ^^^^^
             SyntaxError: bad bad
             )rVrErrWrEr�z�
               File "bad.py", line 1
                 abcdefg
                  ^
             SyntaxError: bad bad
             )rVrErrWrE���)rVrEr�rWrErz�
               File "bad.py", line 1
                 abcdefg
                    ^
             SyntaxError: bad bad
             )rVrE���rWrErXzn
               File "bad.py", line 1
                 abcdefg
             SyntaxError: bad bad
             )rVrErYrWrE���)rVrErrWrEr)rVrErrWrEr��rVrErrWrE�dz�
               File "bad.py", line 1
                 abcdefg
                  ^^^^^^
             SyntaxError: bad bad
             )r��bad bad)
rr.rIrrrUr�r�r{r�)r�casesr�r�r,r1�
the_exceptionrrr�test_range_of_offsets
	s|��	��	��	��	�����������O

������z&SyntaxErrorTests.test_range_of_offsetscCs2d}zDttddd��
}|�|�Wd�n1swYt�dddt�\}}}|�d���}|�|d	d
�|�|dd�Wtt�ntt�wd
}zEttddd��
}|�|�Wd�n1sfwYt�dddt�\}}}|�d���}|�|d	d�|�|dd�Wtt�dStt�w)NuU# -*- coding: cp437 -*-
"¢¢¢¢¢¢" + f(4, x for x in range(1))
r5�cp437r7r��-X�utf8r6���u@    "┬ó┬ó┬ó┬ó┬ó┬ó" + f(4, x for x in range(1))rXz-                          ^^^^^^^^^^^^^^^^^^^z# -*- coding: ascii -*-

(
r�z    (z    ^)	rVr�writerr�ry�
splitlinesr0r)rrp�testfiler�r�r1rrr�test_encodingsd	s*���zSyntaxErrorTests.test_encodingscCs�z;ttd��
}|�d�Wd�n1swYt�dddt�\}}}|�d���}|�d|d�Wtt�dStt�w)	NZbw��r�rbrcr6z8SyntaxError: Non-UTF-8 code starting with '\x89' in filer�)	rVrrerr�ryrfr{r)rrgr�r�r1rrr�
test_non_utf8�	s�zSyntaxErrorTests.test_non_utf8c	Cs�d}td|�}|\}}}}}}|�||j�|�||j�|�||j�|�||j�|�||j�|�||j�|�d|j�dS)Nr[r]�	rIr0r�rqrurrrvrwrf)	rr�r_r�rqrr�errorrurvrrr�test_attributes_new_constructor�	s
z0SyntaxErrorTests.test_attributes_new_constructorcCs�d}td|�}|\}}}}|�||j�|�||j�|�d|j�|�||j�|�d|j�|�||j�|�d|j�dS)N)rVrErrWr]rk)rr�r_r�rqrrrlrrr�test_attributes_old_constructor�	s
z0SyntaxErrorTests.test_attributes_old_constructorcCs@d}|�ttd|�d}|�ttd|�d}|�ttd|�dS)N)rVrErr])rVrErr�r�r�r�)rVrErrWrE)rSrOrI�rr�rrr�test_incorrect_constructor�	sz+SyntaxErrorTests.test_incorrect_constructorN)	rrrr`rhrjrmrnrprrrrrU		sZrUc@r�)�PEP626Testsc
Gs�z|�Wnty}z	|j}WYd}~n
d}~ww|�d�g}|j}|r@|j}|�|jdur3dn|j|jj�|j}|s'|�	t
|�|�dS)Nr�)r'r�r_�tb_nextr�r��f_linenor��co_firstlinenor0�tuple)rrr�rd�t�lines�framerrr�lineno_after_raise�	s$
��
��zPEP626Tests.lineno_after_raisecC�dd�}|�|d�dS)NcS�dddSr;rrrrr�simple�	sz:PEP626Tests.test_lineno_after_raise_simple.<locals>.simplerE�ry)rr|rrr�test_lineno_after_raise_simple�	sz*PEP626Tests.test_lineno_after_raise_simplecCrz)NcSs$zddWdSddYdSr;rrrrr�	in_except�	s
z@PEP626Tests.test_lineno_after_raise_in_except.<locals>.in_exceptr�r})rrrrr�!test_lineno_after_raise_in_except�	�z-PEP626Tests.test_lineno_after_raise_in_exceptcCrz)Nc
Ss6zddWdSty}zWYd}~dSd}~wwr;)rOrcrrr�other_except�	s��z@PEP626Tests.test_lineno_after_other_except.<locals>.other_exceptr�r})rr�rrr�test_lineno_after_other_except�	�z*PEP626Tests.test_lineno_after_other_exceptcCrz)Nc
Ss>zddWdSty}zddWYd}~dSd}~wwr;r&rcrrr�in_named_except�	s��z@PEP626Tests.test_lineno_in_named_except.<locals>.in_named_exceptr�r})rr�rrr�test_lineno_in_named_except�	r�z'PEP626Tests.test_lineno_in_named_exceptcCrz)NcSszddWdSwr;rrrrr�in_try�	s
z.PEP626Tests.test_lineno_in_try.<locals>.in_tryr�r})rr�rrr�test_lineno_in_try�	r�zPEP626Tests.test_lineno_in_trycCrz)NcSszWdddSddwr;rrrrr�in_finally_normal�	s�zDPEP626Tests.test_lineno_in_finally_normal.<locals>.in_finally_normalr�r})rr�rrr�test_lineno_in_finally_normal�	r�z)PEP626Tests.test_lineno_in_finally_normalcCrz)NcSs"zddWdddSddwr;rrrrr�in_finally_except�	s
�zDPEP626Tests.test_lineno_in_finally_except.<locals>.in_finally_exceptr�r})rr�rrr�test_lineno_in_finally_except�	r�z)PEP626Tests.test_lineno_in_finally_exceptcs*Gdd�d���fdd�}|�|d�dS)Nc@r)z0PEP626Tests.test_lineno_after_with.<locals>.NoopcSrrrr(rrrr
rz:PEP626Tests.test_lineno_after_with.<locals>.Noop.__enter__cWrrrrorrrr!
rz9PEP626Tests.test_lineno_after_with.<locals>.Noop.__exit__Nr"rrrr�Noop�	r$r�c�4���
ddWd�dS1swYdSr;rr�r�rr�
after_with
s"�z6PEP626Tests.test_lineno_after_with.<locals>.after_withrr}�rr�rr�r�test_lineno_after_with�	sz"PEP626Tests.test_lineno_after_withcCs4dd�}|�|d�|jjdd�|_|�|d�dS)NcSr{r;rrrrrr
rKz8PEP626Tests.test_missing_lineno_shows_as_none.<locals>.frEs���)�co_linetable)ry�__code__rs)rrrrr�!test_missing_lineno_shows_as_none

sz-PEP626Tests.test_missing_lineno_shows_as_nonecs,Gdd�d���fdd�}|�|dd�dS)Nc@r)zCPEP626Tests.test_lineno_after_raise_in_with_exit.<locals>.ExitFailscSrrrr(rrrr
rzMPEP626Tests.test_lineno_after_raise_in_with_exit.<locals>.ExitFails.__enter__cWr-rrrorrrr!
rzLPEP626Tests.test_lineno_after_raise_in_with_exit.<locals>.ExitFails.__exit__Nr"rrrr�	ExitFails
r$r�cr�r;rr�r�rrr�
s
"�zDPEP626Tests.test_lineno_after_raise_in_with_exit.<locals>.after_withrEr}r�rr�r�$test_lineno_after_raise_in_with_exit
sz0PEP626Tests.test_lineno_after_raise_in_with_exitN)rrrryr~r�r�r�r�r�r�r�r�r�rrrrrq�	s				rq�__main__))rP�gcr�rUr�r�r%r��textwraprZtest.supportrrrrrrr	Ztest.support.import_helperr
Ztest.support.os_helperrrZtest.support.warnings_helperr
rArr'rr!r$ZTestCaser+Zglobal_for_suggestionsr�rr@rUrqrr�rrrr�<module>sX$]3L(m�