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.7/test/__pycache__/test_inspect.cpython-37.pyc
B

��g�D�@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZyddlmZWnek
r�dZYnXddlmZmZmZmZddlmZmZddlmZm Z ddl!m"Z#ddl!m$Z%dd	l!m&Z&dd
l'm(Z(e#j)Z*e*�+d��rTe*dd�Z*e
e*�Z*d
d�Z,e#�-�Z.dd�Z/dd�Z0d�1�Z2Gdd�dej3�Z4dd�Z5dd�Z6dd�Z7ej8dd��Z9Gdd�d�Z:Gd d!�d!e4�Z;Gd"d#�d#e4�Z<Gd$d%�d%ej3�Z=Gd&d'�d'e=�Z>Gd(d)�d)e=�Z?Gd*d+�d+e=�Z@Gd,d-�d-e=�ZAGd.d/�d/e=�ZBGd0d1�d1e=�ZCGd2d3�d3eD�ZEGd4d5�d5eD�ZFd6d7�ZGGd8d9�d9ej3�ZHeD�ZIGd:d;�d;ej3�ZJGd<d=�d=ej3�ZKGd>d?�d?eK�ZLGd@dA�dAeL�ZMGdBdC�dCej3�ZNGdDdE�dEej3�ZOGdFdG�dGej3�ZPGdHdI�dIejQ�ZRGdJdK�dKejS�ZTGdLdM�dMej3�ZUGdNdO�dOej3�ZVGdPdQ�dQej3�ZWGdRdS�dSej3�ZXGdTdU�dUej3�ZYGdVdW�dWej3�ZZGdXdY�dY�Z[GdZd[�d[ej3�Z\Gd\d]�d]ej3�Z]Gd^d_�d_ej3�Z^d`da�Z_e`dbk�re_�dS)c�N)�normcase)�ThreadPoolExecutor)�run_unittest�TESTFN�
DirsOnSysPath�cpython_only)�MISSING_C_DOCSTRINGSr)�assert_python_ok�assert_python_failure)�inspect_fodder)�inspect_fodder2)�support)�_ready_to_import)�c�o���cGst|�f|S)N)r)�filename�args�r�-/usr/local/lib/python3.7/test/test_inspect.py�revise7srccs�ddddddddg}x~td	d
t|��D]h}g}d	}x.tt|��D]}|||>@rB|�||�qBWdd�|�d
}i}t|||�|dVq(WdS)z�
    Yields a whole bunch of functions with only keyword-only parameters,
    where those parameters are always in lexicographically sorted order.
    �a�barrZdeltaZephraimZmagicalZyoyo�z��zdef foo(*, z, z): pass�fooN)�range�len�append�join�exec)�
parameters�i�p�bit�jZfn_textZsymbolsrrr�5signatures_with_lexicographic_keyword_only_parameters=sr'cCsdS)Nr)�throw�outZtheZbabyZwith_Zthe_Z	bathwaterrrr�#unsorted_keyword_only_parameters_fnOsr*z'throw out the baby with_ the_ bathwaterc@sTeZdZeejejejejej	ej
ejejej
ejejejejejg�Zdd�ZdS)�
IsTestBasecCs�t|�}|�||�d|j|f�x\|jt|g�D]H}|tjksV|tjksV|tjkrb|tj	krbq4|�
||�d|j|f�q4WdS)Nz%s(%s)z
not %s(%s))�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�isasyncgenfunction�iscoroutinefunction�
isfunction�assertFalse)�selfZ	predicate�exp�obj�otherrrr�istest]s



zIsTestBase.istestN)r.�
__module__�__qualname__r0r1�	isbuiltin�isclass�iscode�isframer5�ismethod�ismodule�istraceback�isgeneratorr2�iscoroutiner4�
isasyncgenr3r/r;rrrrr+Usr+ccsxtd�D]
}|Vq
WdS)Nr)r)r7r#rrr�generator_function_exampleisrHc	Cs:x4td�2y3dH}Wn
tk
s*X|Vq
YWdS)Nr)r�StopAsyncIteration)r7r#rrr� async_generator_function_examplems"rJc�sdS)N�spamr)r7rrr�coroutine_function_exampleqsrLccs
dVdS)NrKr)r7rrr�gen_coroutine_function_exampletsrMc@seZdZdd�ZdS)�EqualsToAllcCsdS)NTr)r7r:rrr�__eq__zszEqualsToAll.__eq__N)r.r<r=rOrrrrrNysrNc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestPredicatesc	Cs�|�tjd�|�tjd�|�tjd�zxyddWnft��da|�tjd�|�tjd�t	t
d	�r�|�tjd
�n|�t�t
tj�j��YnXWddaX|�tjd�|�tjd�|�tjd
�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�t���,t�d�|�tjd�|�tjd�WdQRXt	t
d��r~|�tjd�n|�t�tjj ��dS)Nzsys.exitz	[].appendzmod.spam.__code__rrrztb.tb_frame�tb�GetSetDescriptorTypeztype(tb.tb_frame).f_localszmod.spamzmod.StupidGit.abusez	git.argue�modz'collections.defaultdict.default_factoryz(x for x in range(2))rHz#async_generator_function_example(1)rJ�ignorezcoroutine_function_example(1)rL�MemberDescriptorTypezdatetime.timedelta.days)!r;r1r>r@�sys�exc_inforQrArD�hasattr�typesZisgetsetdescriptorr6�type�tb_frame�f_localsr5rBrC�isdatadescriptorrEr2rGr3�warnings�catch_warnings�simplefilterrFr4Zismemberdescriptor�datetimeZ	timedeltaZdays)r7rrr�test_excluding_predicatess@
"

z(TestPredicates.test_excluding_predicatescCs�td�}td�}|�t�t��|�t�|��|�t�t��|�t�|��|�t�t��|�t�|��|�t�t��|�t�|��|�	�|�	�dS)Nr)
rMrLr6r1r4rFr-r2rE�close)r7�gen_coro�cororrr�test_iscoroutine�s zTestPredicates.test_iscoroutinecCs�dd�}|�t�|���td�}td�}|�t�|��|�t�|��Gdd�d�}|�t�|���|�t�|��Gdd�d�}|�}dd	�|_|�t�|��|��|��dS)
Ncss
dVdS)Nrrrrr�gen��z,TestPredicates.test_isawaitable.<locals>.genrc@seZdZdd�ZdS)z/TestPredicates.test_isawaitable.<locals>.FuturecSsdS)Nrrrrr�	__await__�sz9TestPredicates.test_isawaitable.<locals>.Future.__await__N)r.r<r=rirrrr�Future�srjc@seZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN)r.r<r=rrrr�	NotFuture�srkcSsdS)Nrrrrr�<lambda>�rhz1TestPredicates.test_isawaitable.<locals>.<lambda>)r6r1ZisawaitablerLrMr-rirc)r7rgrerdrjrkZnot_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|�t�tj��|�t�gj��dS)N)r-r1Z	isroutinerSrK�count)r7rrr�test_isroutine�szTestPredicates.test_isroutinecCsD|�tjd�|�t�t��Gdd�dt�}|�t�|���dS)Nz
mod.StupidGitc@seZdZdd�ZdS)z2TestPredicates.test_isclass.<locals>.CustomGetattrcSsdS)Nr)r7�attrrrr�__getattr__�sz>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)r.r<r=rqrrrr�
CustomGetattr�srr)r;r1r?r-�list�objectr6)r7rrrrr�test_isclass�szTestPredicates.test_isclasscCsFGdd�dt�}|�}d|_tt�|��}|�d|�|�d|�dS)Nc@seZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C)r�bN)r.r<r=�	__slots__rrrr�C�srx�*rrv)rtr�dictr1�
getmembers�assertIn�assertNotIn)r7rx�x�membersrrr�test_get_slot_members�sz$TestPredicates.test_get_slot_memberscs�ddlm}m�G�fdd�d|d�}Gdd�d|�}|�}|�t�|��|�t�|��|�t�|��|�t�t��|�t�d��dS)	Nr)�ABCMeta�abstractmethodcseZdZ�dd��ZdS)z<TestPredicates.test_isabstract.<locals>.AbstractClassExamplecSsdS)Nr)r7rrrr�sz@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN)r.r<r=rr)r�rr�AbstractClassExample�sr�)�	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdS)Nr)r7rrrr�sz8TestPredicates.test_isabstract.<locals>.ClassExample.fooN)r.r<r=rrrrr�ClassExample�sr��)�abcr�r�r-r1�
isabstractr6�int)r7r�r�r�rr)r�r�test_isabstract�szTestPredicates.test_isabstractcs�ddlm}m�g�G�fdd�d|d�}G�fdd�d|�}Gdd	�d	|�}|��d
dg����Gdd
�d
|�}Gdd�d|�}Gdd�d|�}|��d
d
dg�dS)Nr)r�r�cseZdZ�fdd�ZdS)zLTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckercs��t�|��dS)N)rr1r�)�cls)�isabstract_checksrr�__init_subclass__sz^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)r.r<r=r�r)r�rr�AbstractCheckersr�)r�cseZdZ�dd��ZdS)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSsdS)Nr)r7rrrrszUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooN)r.r<r=rr)r�rrr�sr�c@seZdZdd�ZdS)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSsdS)Nr)r7rrrrszMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooN)r.r<r=rrrrrr�sr�TFc@seZdZdS)zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildN)r.r<r=rrrr�
AbstractChildsr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildN)r.r<r=rrrr�AbstractGrandchildsr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildN)r.r<r=rrrr�ConcreteGrandchildsr�)r�r�r��assertEqual�clear)r7r�r�r�r�r�r�r�r)r�r�r�$test_isabstract_during_init_subclasssz3TestPredicates.test_isabstract_during_init_subclassN)r.r<r=rbrfrmrorur�r�r�rrrrrP}s)		rPc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs&tjj|f|�|�t�ddd�dS)N���	)�unittest�TestCase�__init__�git�abuse)r7r�kwargsrrrr�szTestInterpreterStack.__init__cCs |�tjd�|�tjd�dS)Nz	git.ex[2]zmod.fr)r;r1rDrA)r7rrr�test_abuse_done sz$TestInterpreterStack.test_abuse_donecCs&|�ttj�dk�|�ttjddd��tdddgdf�|�ttjddd��tddd	gdf�|�ttjd
dd��tddd
gdf�|�ttjddd��tdddgdf�tjd}|�|jtj	�|�|j
d�|�|jtj�|�|j
d�|�d|jd�|�|jd�dS)Nr�rr��eggsz    st = inspect.stack()
r�rKz    eggs(b + d, c + f)
r�+�arguez            spam(a, b, c)
��'r�z        self.argue(a, b, c)
zinspect.stack())r-rrS�str�r�modfile�assertIs�frame�fr�linenor�__file__Zfunctionr|�code_context�index)r7�recordrrr�
test_stack$s 
zTestInterpreterStack.test_stackcCs�|�ttj�d�|�ttjddd��tdddgdf�|�ttjddd��tddd	gdf�|�ttjd
dd��tddd
gdf�dS)Nr�rrr�r�z            spam(a, b, c)
r�rKz    eggs(b + d, c + f)
r�r�z    q = y / 0
)r�rr��trrr�)r7rrr�
test_trace7szTestInterpreterStack.test_tracecCslt�tj�\}}}}|�|ddg�|�|d�|�|d�|�|dddd��|�t�||||�d�dS)Nr~�y��)r~r$r�z(x=11, y=14))r1�getargvaluesrSr�r��formatargvalues)r7r�varargs�varkw�localsrrr�
test_frame@szTestInterpreterStack.test_framec	Csbt�tjj�\}}}}|�|ddddddg�|�|d�|�|d�|�t�||||�d	�dS)
Nrrvr�d�e�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))r1r�rSr��f_backr�r�)r7rr�r�r�rrr�test_previous_frameIsz(TestInterpreterStack.test_previous_frameN)	r.r<r=r�r�r�r�r�r�rrrrr�s		r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNc	Cs*tt�|j���}|��|_WdQRXdS)N)�openr1�
getsourcefile�fodderModule�read�source)r7�fprrr�setUpUszGetSourceBase.setUpcCs.|j�d�}d�||d|��|r(dndS)N�
r�)r��splitr )r7�top�bottom�linesrrr�sourcerangeYszGetSourceBase.sourcerangecCs|�t�|�|�||��dS)N)r�r1�	getsourcer�)r7r9r�r�rrr�assertSourceEqual]szGetSourceBase.assertSourceEqual)r.r<r=r�r�r�r�rrrrr�Qsr�c@s�eZdZeZdd�Zdd�Ze�e	j
jdkd�dd��Ze�e	j
jdkd�d	d
��Z
e�ed�dd
��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,S)-�TestRetrievingSourceCodecCst�ttj�}|�|dtjfdtjfdtjfdtjfdtjfg�t�	dd�|D��}|�|t
dftjt
fftjtjtjffgtjt
fftjtjfftjtjtjffgggg�t�	d	d�|D�d
�}|�|t
dftjt
fftjt
fftjtjfftjtjtjffgggg�dS)N�FesteringGob�MalodorousPervert�ParrotDroppings�	StupidGitZTitcSsg|]}|d�qS)rr)�.0r�rrr�
<listcomp>msz<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>rcSsg|]}|d�qS)rr)r�r�rrrr�|sT)r1r{rSr?r�r�r�r�r�Zgetclasstreert)r7�classesZtreerrr�test_getclassesds2




z(TestRetrievingSourceCode.test_getclassescCs6t�ttj�}|�|dtjfdtjfdtjfg�dS)Nr��lobbestrK)r1r{rSr5r�r�r�rK)r7Z	functionsrrr�test_getfunctions�sz*TestRetrievingSourceCode.test_getfunctionsrz)Docstrings are omitted with -O2 and abovecCs>|�t�t�d�|�t�tj�d�|�t�tj�d�dS)NzA module docstring.zA longer,

indented

docstring.z$Another

docstring

containing

tabs)r�r1�getdocrSr�r�r�)r7rrr�test_getdoc�s
z$TestRetrievingSourceCode.test_getdoccCs\|�t�tj�d�|�t�tjj�d�|�t�t��j�d�|�t�tjj�d�dS)NzA longer,

indented

docstring.z$Another

docstring

containing

tabszThe automatic gainsaying.)r�r1r�rSr�r�Z
contradiction)r7rrr�test_getdoc_inherited�sz.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringscCsvtj}|�|t�tj�|�|tj�tjj�|�|t�j�tjj�|�|tj�tjj�|�|tj�tjj�dS)N)r1Z_finddocr�r��__doc__�to_bytes�
from_bytes�real)r7Zfinddocrrr�test_finddoc�sz%TestRetrievingSourceCode.test_finddoccCs|�t�d�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r�r1Zcleandoc)r7rrr�
test_cleandoc�sz&TestRetrievingSourceCode.test_cleandoccCsV|�t�t�d�|�t�tj�d�tddd�}|�t�|��|�t�t��dS)Nz	# line 1
z
# line 20
zx=1z_non_existing_filename.pyr!)r�r1ZgetcommentsrSr��compile�assertIsNoners)r7�corrr�test_getcomments�s
z)TestRetrievingSourceCode.test_getcommentscCs�|�t�t�t�|�t�tj�t�|�t�tjj�t�|�t�tjj�t�|�t�t�tjd�|�t�dt	�t�dS)N�builtins)
r�r1�	getmodulerSr�r��strrV�modulesr�)r7rrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs8t�|jjd�}|�|jdd�|�|jdd�dS)N�2rz	# line 1
rz'A module docstring.'
)r1Zgetframeinfor�r�r�r�)r7Z
frame_inforrr� test_getframeinfo_get_first_line�sz9TestRetrievingSourceCode.test_getframeinfo_get_first_linecCs4|�tjdd�|�tjdd�|�tjdd�dS)N�r���3�K�L)r�r�r�rSr�r�)r7rrr�test_getsource�sz'TestRetrievingSourceCode.test_getsourcecCs�|�tt�tj��t�|�tt�tj��t�d}t	d|d�}|�t�|�d�ddd|j
ftj|j
<z|�tt�|��|�Wdtj|j
=XdS)Nz2_non_existing_filename_used_for_sourcefile_test.pyzx=1r!r�None)
r�rr1r�rSrKr�r�r�r��co_filename�	linecache�cache)r7�fnr�rrr�test_getsourcefile�sz+TestRetrievingSourceCode.test_getsourcefilecCs|�t�tj�tj�dS)N)r�r1�getfilerSr�r�)r7rrr�test_getfile�sz%TestRetrievingSourceCode.test_getfilec	Cs:|�t��}t�t�WdQRX|�t|j��d��dS)Nz<module)	�assertRaises�	TypeErrorr1rrVr-r��	exception�
startswith)r7r�rrr�test_getfile_builtin_module�sz4TestRetrievingSourceCode.test_getfile_builtin_modulec	Cs:|�t��}t�t�WdQRX|�t|j��d��dS)Nz<class)	rrr1rr�r-r�rr)r7r�rrr�test_getfile_builtin_class�sz3TestRetrievingSourceCode.test_getfile_builtin_classc	Csj|�t��}t�t�WdQRX|�dt|j��|�t��}t�tj	�WdQRX|�dt|j��dS)Nz
expected, got)
rrr1r�absr|r�rrsr)r7Ze_absZe_appendrrr�'test_getfile_builtin_function_or_method�sz@TestRetrievingSourceCode.test_getfile_builtin_function_or_methodc	CsFGdd�dt�}Gdd�d|d�}|�t��t�|�WdQRXdS)Nc@seZdZedd��ZdS)zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMcSst�dS)N)�AttributeError)r�rrrr<�szQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)r.r<r=�propertyrrrr�CM�src@seZdZdS)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CN)r.r<r=rrrrrx�srx)r�)rZrrr1r)r7rrxrrr�!test_getfile_class_without_module�sz:TestRetrievingSourceCode.test_getfile_class_without_modulec	Cs8Gdd�d�}|�}|�t��t�|�WdQRXdS)Nc@seZdZdd�ZdS)zDTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorReprcSstd��dS)NZxyz)�	Exception)r7rrr�__repr__�szMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r.r<r=rrrrr�	ErrorRepr�sr)rrr1r)r7rZerrrr�test_getfile_broken_repr�sz1TestRetrievingSourceCode.test_getfile_broken_reprcCsnddlm}d}||�}tj|<d|_d|_td|j�|�t	�
|jj�d�tj|=t	�
tddd	��dS)
Nr)�
ModuleTypeZ__inspect_dummyz<string>Zdummyz
def x(): passza=10r��single)rYrrVr�r��
__loader__r!�__dict__r�r1r�r~�__code__r�r�)r7r�name�mrrr�test_getmodule_recursionsz1TestRetrievingSourceCode.test_getmodule_recursioncs\d\��tj�d���fdd�	}|t_z(i}tt��d�|�t�|d�Wd�t_XdS)z4doctest monkeypatches linecache to enable inspection)z<test>zdef x(): pass
Ncs"|�kr�jdd�S�||�SdS)NT)�keepends)�
splitlines)r�module_globals)r��getlinesr�rr�monkeyszHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyrr~)N)r�rr!r�r1r�)r7r�nsr)r�rr�r�test_proceed_with_fake_filenamesz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecCs|�tjjdd�dS)N�r�)r�rSr�r)r7rrr�test_getsource_on_code_object!sz6TestRetrievingSourceCode.test_getsource_on_code_objectN)r.r<r=rSr�r�r�r��skipIfrV�flags�optimizer�r�rr�r�r�r�r�r�r�rrrr	r
rrr r"rrrrr�as.%		
r�c@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dS)Nr)ZmaxDiffr�rSZcurrentframe)r7rrr�test_range_toplevel_frame'sz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dS)Nr)r�rSrQ)r7rrr�#test_range_traceback_toplevel_frame+szETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r.r<r=rSr�r'r(rrrrr&$sr&c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscCs|�tjdd�dS)Nr��)r��mod2�wrapped)r7rrr�test_wrapped_decorator1sz%TestDecorators.test_wrapped_decoratorcCs|�tjdd�dS)Nr��
)r�r+Zgone)r7rrr�test_replacing_decorator4sz'TestDecorators.test_replacing_decoratorcCs|�tjdd�dS)N��)r�r+r�)r7rrr�test_getsource_unwrap7sz$TestDecorators.test_getsource_unwrapcCs|�tjdd�dS)N�q�s)r�r+Zfunc114)r7rrr�test_decorator_with_lambda:sz)TestDecorators.test_decorator_with_lambdaN)	r.r<r=r+r�r-r/r2r5rrrrr).s
r)c@sPeZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscCs|�tjdd�dS)N�)r�r+Zoll)r7rrr�test_oneline_lambda?sz!TestOneliners.test_oneline_lambdacCs|�tjdd�dS)N��)r�r+Ztll)r7rrr�test_threeline_lambdaCsz#TestOneliners.test_threeline_lambdacCs|�tjdd�dS)N�!�")r�r+Ztlli)r7rrr�test_twoline_indented_lambdaHsz*TestOneliners.test_twoline_indented_lambdacCs|�tjdd�dS)N�%)r�r+Zonelinefunc)r7rrr�test_onelinefuncMszTestOneliners.test_onelinefunccCs|�tjdd�dS)N�(�))r�r+Zmanyargs)r7rrr�
test_manyargsQszTestOneliners.test_manyargscCs|�tjdd�dS)N�,�-)r�r+Ztwolinefunc)r7rrr�test_twolinefuncWszTestOneliners.test_twolinefunccCs|�tjddd�dS)Nr�1)r�r+r)r7rrr�test_lambda_in_list]sz!TestOneliners.test_lambda_in_listcCs|�tjdd�dS)N�7)r�r+Z	anonymous)r7rrr�test_anonymousbszTestOneliners.test_anonymousN)
r.r<r=r+r�r8r;r>r@rCrFrHrJrrrrr6=sr6c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
eed�p^ej�d�d�dd��Zdd�Zdd�Zdd�Zdd�ZdS)�TestBuggyCasescCs|�tjdd�dS)N�:�;)r�r+Zwith_comment)r7rrr�test_with_commentjsz TestBuggyCases.test_with_commentcCs|�tjddd�dS)Nr�?�@)r�r+Z
multiline_sig)r7rrr�test_multiline_sigmsz!TestBuggyCases.test_multiline_sigcCs|�t��jdd�dS)N�G�H)r�r+Zfunc69Zfunc71)r7rrr�test_nested_classpsz TestBuggyCases.test_nested_classcCs|�tjdd�dS)N�M)r�r+Zfunc77)r7rrr�#test_one_liner_followed_by_non_namessz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|�tjjdd�dS)N�S)r�r+Zcls82Zfunc83)r7rrr�test_one_liner_dedent_non_namevsz-TestBuggyCases.test_one_liner_dedent_non_namecCs|�tjdd�dS)N�X�Z)r�r+Zfunc88)r7rrr�&test_with_comment_instead_of_docstringysz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|�tjdd�dS)N�_�a)r�r+Zmethod_in_dynamic_class)r7rrr�test_method_in_dynamic_class|sz+TestBuggyCases.test_method_in_dynamic_classr�z.pyz,unicodedata is not an external binary modulecCs$|�ttjt�|�ttjt�dS)N)r�OSErrorr1r��unicodedata�
findsource)r7rrr�test_findsource_binary�sz%TestBuggyCases.test_findsource_binarycCs�dg}t|ddd�}|�ttj|�|�ttj|�dd||jftj|j<z0|�	t�|�|df�|�	t�|�|d�Wdtj|j=XdS)Nzx=1rZ_dynamically_created_filer!r)
r�rr_r1rar�r�r�r�r�)r7r�r�rrr�!test_findsource_code_in_linecache�sz0TestBuggyCases.test_findsource_code_in_linecachecCs>x8dD]0}td|d�}|�ttj|�|�ttj|�qWdS)N)r�z<string>zx=1r!)r�r�IOErrorr1rar�)r7Zfnamer�rrr� test_findsource_without_filename�s
z/TestBuggyCases.test_findsource_without_filenamecCs|�tjjdd�dS)N�v�w)r�r+ZClassWithMethod�method)r7rrr�test_getsource_on_method�sz'TestBuggyCases.test_getsource_on_methodcCs|�tjjdd�dS)N��)r�r+Zcls135Zfunc136)r7rrr�test_nested_func�szTestBuggyCases.test_nested_funcN)r.r<r=r+r�rNrQrTrVrXr[r^r�r#rXr`r��endswithrbrcrerirlrrrrrKgs
rKcs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�	TestNoEOLc	sztd|_t�|j�ttj�|jdtj�d��}|�d�WdQRXt	|j��ddl
}WdQRX||_t��
�dS)NZ_dirzinspect_fodder3%spy�wzclass X:
    pass # No EOLr)r�tempdir�os�mkdirr��pathr �extsep�writerZinspect_fodder3r��superr�)r7r�Zmod3)�	__class__rrr��s
zTestNoEOL.setUpcCst�|j�dS)N)�shutilZrmtreerp)r7rrr�tearDown�szTestNoEOL.tearDowncCs|�|jjdd�dS)Nrr)r�r��X)r7rrr�
test_class�szTestNoEOL.test_class)r.r<r=r�ryr{�
__classcell__rr)rwrrn�srnc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGstd��dS)Nzbroken data descriptor)r
)rrrr�__get__�sz_BrokenDataDescriptor.__get__cGst�dS)N)�RuntimeError)rrrr�__set__�sz_BrokenDataDescriptor.__set__cGstd��dS)Nzbroken data descriptor)r
)rrrrrq�sz!_BrokenDataDescriptor.__getattr__N)r.r<r=r�r~r�rqrrrrr}�sr}c@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGstd��dS)Nzbroken method descriptor)r
)rrrrr~�sz_BrokenMethodDescriptor.__get__cGstd��dS)Nzbroken method descriptor)r
)rrrrrq�sz#_BrokenMethodDescriptor.__getattr__N)r.r<r=r�r~rqrrrrr��sr�cCsdd�t�|�D�S)NcSsg|]}|dd��qS)Nr�r)r��trrrr��sz!attrs_wo_objs.<locals>.<listcomp>)r1�classify_class_attrs)r�rrr�
attrs_wo_objs�sr�c@seZdZdd�Zd5dd�Zdddgdidfdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
e�e
d�dd��Zee�e
d�dd���Zee�e
d�dd���Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�ZdS)6�TestClassesAndFunctionscCsjGdd�dt�}Gdd�d|�}Gdd�d|�}Gdd�d||�}||||tf}t�|�}|�||�dS)	Nc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.AN)r.r<r=rrrr�A�sr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BN)r.r<r=rrrr�B�sr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CN)r.r<r=rrrrrx�srxc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DN)r.r<r=rrrr�D�sr�)rtr1Zgetmror�)r7r�r�rxr��expectedZgotrrr�test_newstyle_mro�s
z)TestClassesAndFunctions.test_newstyle_mroNc	Cs�|�t��t�|�\}}}	}
WdQRX|�||�|�||�|�|	|�|�|
|�|dk	r�|�t��|�t�|||	|
�|�WdQRXdS)N)�assertWarns�DeprecationWarningr1Z
getargspecr��
formatargspec)r7�routine�args_e�	varargs_e�varkw_e�
defaults_e�	formattedrr�r��defaultsrrr�assertArgSpecEquals�sz+TestClassesAndFunctions.assertArgSpecEqualsc
Cs�t�|�\}
}}}
}}}|�|
|�|�||�|�||�|�|
|�|�||�|�||�|�||�|	dk	r�|�t��$|�t�|
|||
|||�|	�WdQRXdS)N)r1�getfullargspecr�r�r�r�)r7r�r�r�r�r��kwonlyargs_e�kwonlydefaults_e�ann_er�rr�r�r��
kwonlyargsZkwonlydefaults�annrrr�assertFullArgSpecEquals�sz/TestClassesAndFunctions.assertFullArgSpecEqualsc	Csx|jtjddgdd�|�tjddddd	d
gddd
d�|�t|jtjg�|�t|jtjg�|�t|jtj	g�dS)Nr~r�z(x, y))r�rrvrr�r�r�r�r�)r��r�z!(a, b, c, d=3, e=4, f=5, *g, **h))
r�rSr�rKr�
ValueErrorr+�	keyworded�	annotated�keyword_only_arg)r7rrr�test_getargspec�s




z'TestClassesAndFunctions.test_getargspeccCsR|jtjgddgddidd�|jtjdgdtidd�|jtjgdgd	d
�dS)N�arg1�arg2rz(*arg1, arg2=1))r�r�r�r�z(arg1: list))r�r��argz(*, arg))r�r�)r�r+r�r�rsr�)r7rrr�test_getfullargspecs
z+TestClassesAndFunctions.test_getfullargspeccs�t�tj�dd��}�j|ddgdd��j|ddgdd��jt�|�ddgdd��fdd�}Gd	d
�d
�}||��||j�||�j�||j�||�j�Gdd�d�}||�Gd
d�d�}||�dS)NcSsdS)Nr)r~r�rrr�hamszETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamr~r�z(x, y))r�cs�j|dddgdd�dS)Nr7r~r�z(self, x, y))r�)r�)r�)r7rr�check_method'szNTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.check_methodc@s>eZdZe�ej�dd��Ze�e�Z	e�ej�dd��Z
dS)zCTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.CcSsdS)Nr)r7r~r�rrrr�+szGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSsdS)Nr)r7r~r�rrr�__call__/szLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)r.r<r=�	functools�wrapsrSrKr��
partialmethod�phamr�rrrrrx*s
rxc@s eZdZe�ej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSsdS)Nr)r7r~r�rrr�__new__9szOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)r.r<r=r�r�rSrKr�rrrr�C_new8sr�c@s eZdZe�ej�dd��ZdS)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSsdS)Nr)r7r~r�rrrr�?szQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)r.r<r=r�r�rSrKr�rrrr�C_init>sr�)	r�r�rSrKr�r��partialr�r�)r7r�r�rxr�r�r)r7r� test_argspec_api_ignores_wrappeds 


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}t�dtjj�}tj|fd�|_|j|dgdd�dS)NcSsdS)Nrrrrr�testEszHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrK)r"z(spam))r�r�)r1�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r�)r7r�Z
spam_paramrrr�"test_getfullargspec_signature_attrDsz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsPddd�dd�}t�|�}|�|j|j�dd�}t�|�}|�|j|j�dS)NrKr�)r�returncSsdS)Nr)rrrrr�MrhzITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdS)Nrrrrrr�Qrh)r1r�r��__annotations__Zannotations)r7r��specrrr�#test_getfullargspec_signature_annosLs

z;TestClassesAndFunctions.test_getfullargspec_signature_annosz6Signature information for builtins requires docstringscCs^|jtjjddgdd�|jt�t���jddgdd�|jtjdgddgddd	�d
d�dS)Nr7r9z(self, obj))r�r�rs�dir_fd�follow_symlinksT)r�r�z,(path, *, dir_fd=None, follow_symlinks=True))r�r�r�r�)r��_pickle�Pickler�dump�io�BytesIOrq�stat)r7rrr�#test_getfullargspec_builtin_methodsUs
z;TestClassesAndFunctions.test_getfullargspec_builtin_methodscCs.ddl}|j}t�|�}|�|jdd�dS)Nr�avocado)�	_testcapi�&docstring_with_signature_with_defaultsr1r�r�r�)r7r��builtinr�rrr� test_getfullagrspec_builtin_funces
z8TestClassesAndFunctions.test_getfullagrspec_builtin_funcc	Cs2ddl}|j}|�t��t�|�WdQRXdS)Nr)r��docstring_no_signaturerrr1r�)r7r�r�rrr�-test_getfullagrspec_builtin_func_no_signaturenszETestClassesAndFunctions.test_getfullagrspec_builtin_func_no_signaturecCsfx@t�D]6}t�|�}t|j�}t|�}|�|�|�||�qWt�t�}t|j�}|�|t	�dS)N)
r'r1r�rsr��sortedr-r�r*� unsorted_keyword_only_parameters)r7r��	signature�l�sorted_lrrr�8test_getfullargspec_definition_order_preserved_on_kwonlyws




zPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlycCs$Gdd�dt�}|�|jdg�dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getargspec_method.<locals>.AcSsdS)Nr)r7rrrr�sz;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN)r.r<r=rrrrrr��sr�r7)rtr�r)r7r�rrr�test_getargspec_method�sz.TestClassesAndFunctions.test_getargspec_methodcCsGdd�dt�}t|�}|�ddtf|d�|�ddtf|d�|�d	d|f|d
�|�dd|f|d
�|�dd|f|d�|�dd|f|d|�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gdd�d|�}t|�}|�d	d|f|d
�|�dd|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gdd�d|�}t|�}|�d	d|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gd d!�d!||�}t|�}|�d	d|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�dS)"Nc@s\eZdZdd�Zee�Zdd�Zee�Zdd�Zee�Z	dd�Z
d	d
�ZdZe
�Ze�ZdS)
z9TestClassesAndFunctions.test_classify_newstyle.<locals>.AcSsdS)Nrrrrr�s�rhz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSsdS)Nr)r�rrrr�rhz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSsdS)Nr)r7rrr�getp�rhz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSsdS)Nr)r7rrrr�rhz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSsdS)Nr)r7rrr�m1�rhz<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)r.r<r=r��staticmethodr�classmethodr�rr$rr��datablobr}�ddr��mdrrrrr��sr�r�z
static methodzmissing __new__r�rhzmissing __init__r�zmissing static methodrzclass methodzmissing class methodr$rzmissing propertyrzmissing plain method: %rr�zmissing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSsdS)Nr)r7rrrr�rhz;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mN)r.r<r=rrrrrr��sr�c@seZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSsdS)Nr)r7rrrr�rhz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSsdS)Nr)r7rrrr�rhz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r.r<r=rrrrrrrx�srxc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdS)Nr)r7rrrr��rhz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r.r<r=r�rrrrr��sr�)rtr�r|)r7r��attrsr�rxr�rrr�test_classify_newstyle�sX
z.TestClassesAndFunctions.test_classify_newstylecCs�x.tt�D]"}tt|�}t|t�r
t�|�q
Wtt�}|�	ddtf|d�|�	ddt
f|d�|�	ddt
f|d	�|�	d
dt
f|d	�|�	ddtf|d	�dS)Nr�z
static methodzmissing __new__r�zclass methodzmissing class methodr�rhzmissing plain method�__add__�__and__)�dir�__builtins__�getattr�
isinstancerZr1r�r��boolr|r�)r7rr�r�rrr�test_classify_builtin_types�s

z3TestClassesAndFunctions.test_classify_builtin_typescCspGdd�dt�}Gdd�d|d�}t�dd||jd�}|�|t�|��t�dd|d�}|�|t�|��dS)	NcseZdZ�fdd�Z�ZS)zITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metacs|dkrdSt��|�S)Nr�rK)rvrq)r7r)rwrrrq�szUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__)r.r<r=rqr|rr)rwr�Meta�sr�c@seZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcSsdS)Nr�r)r7rrrr��szKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r.r<r=rY�DynamicClassAttributer�rrrr�VA�sr�)r�r�r�rK)rZr1�	Attributerr|r�)r7r�r�Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttribute�sz;TestClassesAndFunctions.test_classify_DynamicClassAttributecsPG�fdd�dt��G�fdd�dt�}t�dd||j�}|�|t�|��dS)Ncs eZdZ�fdd�Zdd�ZdS)zDTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolcs��S)Nr)r7r:)�NoBoolrrrO�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSstd��dS)Nz,This object does not specify a boolean value)�NotImplementedError)r7rrr�__bool__szMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)r.r<r=rOr�r)r�rrr��sr�cseZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)r.r<r=r�r)r�rr�HasNBsr�r�r�)rtr1r�r�r|r�)r7r�Zshould_find_attrr)r�r�test_classify_overrides_bool�sz4TestClassesAndFunctions.test_classify_overrides_boolcCsHGdd�dt�}Gdd�d|d�}t�dd|d�}|�|t�|��dS)	Nc@seZdZdZdd�ZdS)zMTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta�slapcSsddddgS)Nrwr<r.�fishr)r7rrr�__dir__szUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r.r<r=r�r�rrrrr�sr�c@seZdZdS)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassN)r.r<r=rrrr�Classsr�)r�r�r�r�)rZr1r�r|r�)r7r�r��should_findrrr�'test_classify_metaclass_class_attributesz?TestClassesAndFunctions.test_classify_metaclass_class_attributecCsHGdd�dt�}Gdd�d|d�}t�dd|d�}|�|t�|��dS)	Ncs$eZdZdd�Z�fdd�Z�ZS)zDTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.MetacSsddddgS)Nrwr<r.�BOOMr)r�rrrr�szLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs|dkrdSt��|�S)Nr�ry)rvZ_Meta__getattr)r7r)rwrrrqszPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__)r.r<r=r�rqr|rr)rwrr�sr�c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassN)r.r<r=rrrrr�sr�)r�r�r�ry)rZr1r�r|r�)r7r�r�r�rrr�test_classify_VirtualAttributesz6TestClassesAndFunctions.test_classify_VirtualAttributec	s�Gdd�dt��Gdd�dt��G��fdd�d���}Gdd�d�d	�}Gd
d�d||d	�}t�dd
�d�}t�dd
�d�}t�dd
|d�}t�|�}x|||fD]}|�||�q�WdS)Ncs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1cSsddddgS)Nrwr<r.�oner)r�rrrr�$sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs|dkrdSt��|�S)Nr�r)rvrq)r7r)rwrrrq&sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__)r.r<r=r�rqr|rr)rwr�Meta1#sr�cs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)Nrwr<r.�twor)r�rrrr�+sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs|dkrdSt��|�S)Nr�r)rvrq)r7r)rwrrrq-sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__)r.r<r=r�rqr|rr)rwr�Meta2*sr�cs*eZdZ��fdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs,tttddddg��|���|����S)Nrwr<r.�three)rsr�r0r�)r�)r�r�rrr�2sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cs|dkrdSt��|�S)Nr�r�)rvrq)r7r)rwrrrq5sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__)r.r<r=r�rqr|r)r�r�)rwr�Meta31sr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1N)r.r<r=rrrr�Class19sr)r�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2N)r.r<r=rrrr�Class2;srr�r�rr�rr�r�)rZr1r�r�r|)	r7r�rrZshould_find1Zshould_find2Zshould_find3ZccaZsfr)r�r�r�,test_classify_VirtualAttribute_multi_classes"s
zDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classescCsFGdd�dt�}Gdd�d|d�}dd�t�|�D�}|�d|�dS)	Nc@seZdZdd�ZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.McSs
dddgS)Nrwr.�missingr)r�rrrr�GszSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N)r.r<r=r�rrrr�MFsrc@seZdZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CN)r.r<r=rrrrrxIsrx)r�cSsg|]}|d�qS)rr)r�rrrrr�KszTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r)rZr1r�r})r7rrxr�rrr�(test_classify_class_attrs_with_buggy_dirEsz@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dircCs�Gdd�dt�}dd�}|tj�}|tj�}|�t�||�d|jdfg�|�t�||�d|jdfg�Gdd�d|�}|�t�||�d|jdfg�|�t�||�d|jdfg�dS)	Nc@seZdZe�Ze�ZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)r.r<r=r}r�r�r�rrrrr�Osr�cs"Gdd�dt����fdd�}|S)Nc@seZdZdS)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyN)r.r<r=rrrr�EmptyVsrcs$dt|�krt�|j�rdS�|�S)Nr.F)r�rXr.)r~)r�predrrr,XszZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped)rt)rr,r)rrr�pred_wrapperSszITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr�r�c@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BN)r.r<r=rrrrr�fsr�)rtr1�ismethoddescriptorr]r�r{r)r7r�rr	r]r�rrr�test_getmembers_descriptorsNs

z3TestClassesAndFunctions.test_getmembers_descriptorscCs�Gdd�d�}|�d|jft�|��|�d|jft�|tj��|�}|�d|jft�|��|�d|jft�|tj��dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getmembers_method.<locals>.BcSsdS)Nr)r7rrrr�psz;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN)r.r<r=r�rrrrr�osr�r�)r|r�r1r{r}rB)r7r�rvrrr�test_getmembers_methodnsz.TestClassesAndFunctions.test_getmembers_methodcCsLGdd�dt�}Gdd�d|d�}|�dt�|��|�dt�|���dS)NcseZdZ�fdd�Z�ZS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mcs|dkrdSt��|�S)Nr��	scrambled)rvrq)r�r)rwrrrq{szOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__)r.r<r=rqr|rr)rwrrzsrc@seZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdS)NrKr)r7rrrr��szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)r.r<r=rYr�r�rrrrr�sr�)r�)r�r)r�rK)rZr|r1r{)r7rr�rrr� test_getmembers_VirtualAttributeysz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCsFGdd�dt�}Gdd�d|d�}dd�t�|�D�}|�d|�dS)	Nc@seZdZdd�ZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSs
dddgS)Nrwr.rr)r�rrrr��szITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__N)r.r<r=r�rrrrr�src@seZdZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CN)r.r<r=rrrrrx�srx)r�cSsg|]}|d�qS)rr)r�rrrrr��szJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r)rZr1r{r})r7rrxr�rrr�test_getmembers_with_buggy_dir�sz6TestClassesAndFunctions.test_getmembers_with_buggy_dir)NNNN) r.r<r=r�r�r�r�r�r�r�r�r�r#rr�rr�r�r�r�r�r�r�r�r�r�rrr
rr
rrrrrr��sD

(	Q

#	 
r�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestGetClosureVarscCsVdd�}t�}d|i}dti}dti}dh}t�||||�}|�t�||��|�dS)Ncs�fdd�}|S)Ncst|�tt�dS)N)�print�_global_ref�unbound_ref)�	local_ref)�nonlocal_refrrr��sz=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.gr)rr�r)rrr��sz2TestGetClosureVars.test_name_resolution.<locals>.frrrr)rtrrr1�ClosureVarsr��getclosurevars)r7r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesr�rrr�test_name_resolution�sz'TestGetClosureVars.test_name_resolutioncCsVdd�}t�}d|i}dti}dti}dh}t�||||�}|�t�||��|�dS)Ncs�fdd�}|S)Nc3st|�tt�dVdS)N)rrr)r)rrrr��sz?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.gr)rr�r)rrr��sz4TestGetClosureVars.test_generator_closure.<locals>.frrrr)rtrrr1rr�r)r7r�rrrrrr�rrr�test_generator_closure�sz)TestGetClosureVars.test_generator_closurecCs`Gdd�d�}t�}d|i}dti}dti}dh}t�||||�}|�t�|��|��|�dS)Nc@seZdZdd�ZdS)z1TestGetClosureVars.test_method_closure.<locals>.Ccs�fdd�}|S)Ncst|�tt�dS)N)rrr)r)rrrr��sz>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r7rr�r)rrr��sz3TestGetClosureVars.test_method_closure.<locals>.C.fN)r.r<r=r�rrrrrx�srxrrrr)rtrrr1rr�rr�)r7rxrrrrrr�rrr�test_method_closure�sz&TestGetClosureVars.test_method_closurecs�dd��dd�}dd�}dd�}�fd	d
�����fdd�}|d
�}|d�}||d�}���|�dd
i����|�ddi����|�d|d�����dd�d��ddi��|�dS)NcSst�|�jS)N)r1rZ	nonlocals)r�rrr�_nonlocal_vars�sz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscs�fdd�}|S)Ncs�|S)Nr)r�)r~rr�add�szFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r~r r)r~r�
make_adder�sz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�S)Nr)r�)r��funcrrrl�rhzFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r"r�r)r�r"r�curry�sz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kS)Nr)rrvrrr�	less_than�sz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�S)Nr)r~)r�rrrl�rhzMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>r)r�)�le)r�rr��sz;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)�g_ref)r%r�)�Y)r%rr'�sz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs���|�d�ji�dS)Nr�)r�r&)r")r'rr7rr�check_y_combinator�szATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorrrr�r~)r�r"cs�fdd�S)Ncs�|S)Nr)r�)r~rrrl�rhzITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>r)r~r)r~rrl�rhz7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r7r!r#r$r(ZincZadd_twoZgreater_than_fiver)r'rr7r�test_nonlocal_vars�s 


z%TestGetClosureVars.test_nonlocal_varscCsFdd�}t�iiit��}|�t�dd��|�|�t�|�|�dS)NcSsdS)Nrrrrrr�rhz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdS)NTrrrrrrl�rhz>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)r1rr0r�r)r7rZ_emptyrrr�test_getclosurevars_empty�sz,TestGetClosureVars.test_getclosurevars_emptycCsBGdd�d�}|�ttjd�|�ttjt�|�ttji�dS)Nc@seZdZdS)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TN)r.r<r=rrrr�T�sr+r)rrr1rrs)r7r+rrr�test_getclosurevars_error�sz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r�)r!)r7�coderrrr�_private_globals�s
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nr�rrs)r.�popr1rrr�r)r7r�rr�rrr�test_builtins_fallback�sz)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nrsrr�r)r.r1rr�r)r7r�rr�rrr�test_builtins_as_dict�sz(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nr�rsr)r.rqr1rrsr�r)r7r�rr�rrr�test_builtins_as_modulesz*TestGetClosureVars.test_builtins_as_moduleN)
r.r<r=rrrr)r*r,r.r0r1r2rrrrr�s&rc@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|�||�dS)N)r"zfunc(%s)zinspect.getcallargs(func, %s))rzr,r�)r7r"�call_params_string�locsZr1Zr2rrr�assertEqualCallArgs
s

z,TestGetcallargsFunctions.assertEqualCallArgsc
Cs�t|pi|d�}ytd|d|�Wn&tk
rJ}z|}Wdd}~XYnX|�d�ytd|d|�Wn&tk
r�}z|}Wdd}~XYnX|�d�|�t|�t|��|�t|�t|��~~dS)N)r"zfunc(%s)zException not raisedzinspect.getcallargs(func, %s))rzr,rZfailr�rZr�r�)r7r"Zcall_param_stringr5r�Zex1Zex2rrr�assertEqualExceptions



z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r,)r7r�r-rrr�makeCallable'sz%TestGetcallargsFunctions.makeCallablecCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nza, b=1�2z2, 3za=2zb=3, a=2z2, b=3z*(2,)z*[2]z*(2, 3)z*[2, 3]z	**{"a":2}zb=3, **{"a":2}z2, **{"b":3}z**{"b":3, "a":2}z*collections.UserList([2])z*collections.UserList([2, 3])z**collections.UserDict(a=2)z2, **collections.UserDict(b=3)z b=2, **collections.UserDict(a=3))r8r6)r7r�rrr�
test_plain,s&
z#TestGetcallargsFunctions.test_plaincCsV|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nz
a, b=1, *cr9z2, 3z2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4]))r8r6)r7r�rrr�test_varargsCs
z%TestGetcallargsFunctions.test_varargscCsz|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�dS)Nza, b=1, **cza=2z2, b=3, c=4z
b=3, a=2, c=4zc=4, **{"a":2, "b":3}z2, c=4, **{"b":3}zb=2, **{"a":3, "c":4}z%**collections.UserDict(a=2, b=3, c=4)z#2, c=4, **collections.UserDict(b=3)z%b=2, **collections.UserDict(a=3, c=4))r8r6)r7r�rrr�
test_varkwLs
z#TestGetcallargsFunctions.test_varkwcCsV|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nz**cr�za=1za=1, b=2zc=3, **{"a": 1, "b": 2}z **collections.UserDict(a=1, b=2)z%c=3, **collections.UserDict(a=1, b=2))r8r6)r7r�rrr�test_varkw_onlyXs
z(TestGetcallargsFunctions.test_varkw_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�d
�}|�|d�|�|d�|�|d�dS)
Nza=3, *, c, d=2zc=3zc=3, a=3za=2, c=4z4, c=4r��3za=3zd=4z	*, c, d=2zc=3, d=4zd=4, c=3)r8r6r7)r7r�rrr�test_keyword_onlybs

z*TestGetcallargsFunctions.test_keyword_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�d	�}|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d
�dS)Nza, b=2, *f, **gz2, 3, 7z	2, 3, x=8z2, 3, x=8, *[(4,[5,6]), 7]z2, x=8, *[3, (4,[5,6]), 7], y=9zx=8, *[2, 3, (4,[5,6])], y=9z@x=8, *collections.UserList([2, 3, (4,[5,6])]), **{"y":9, "z":10}zP2, x=8, *collections.UserList([3, (4,[5,6])]), **collections.UserDict(y=9, z=10)za, b=2, *f, x, y=99, **gz%2, x=8, *[3, (4,[5,6]), 7], y=9, z=10z"x=8, *[2, 3, (4,[5,6])], y=9, z=10zEx=8, *collections.UserList([2, 3, (4,[5,6])]), q=0, **{"y":9, "z":10}zU2, x=8, *collections.UserList([3, (4,[5,6])]), q=0, **collections.UserDict(y=9, z=10))r8r6)r7r�rrr�test_multiple_featuresrs

z/TestGetcallargsFunctions.test_multiple_featuresc		Cs6|�d�}|�d�}|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�x�||fD]�}|�|d	�|�|d
�|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�q�W|�d�}|�|d�|�|d�|�d�}|�|d�|�|d�dd�}|�td��t�|�WdQRXdd�}|�td��t�|�WdQRX|�td��tjdtjjd d!�WdQRX|�td"��tjd#d$d d!�WdQRX|�td%��tjd&d'd(�WdQRXdS))Nr�za, bza, b=1r�zx=1z1,x=1za=2zb=3z2, 3, 4z1, 2, 3, a=1z2, 3, 4, c=5zc=2z2, c=3z	2, 3, c=4z2, c=4, b=3u**{u"πι": 4}z1, a=2z1, **{"a":2}z	1, 2, b=3z**cz1, 2z1, 2, a=1, b=2z	*, a, b=0cSsdS)Nr)rrrr�f5�rhz0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSsdS)Nr)rrvrrrr�f6�sz0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesrry)�kind�defaultz%value 5 is not a valid Parameter.kindrr�zname must be a str, not a int�{r�)rC)	r8r7�assertRaisesRegexrr1Zgetcallargsr�r��VAR_KEYWORD)	r7Zf0�f1�f2r��f3�f4rArBrrr�test_errors�s^




z$TestGetcallargsFunctions.test_errors)N)N)
r.r<r=r6r7r8r:r;r<r=r?r@rLrrrrr3s

	
r3cs$eZdZdd�Z�fdd�Z�ZS)�TestGetcallargsMethodscCs"Gdd�dt�}||_|�|_dS)Nc@seZdZdS)z)TestGetcallargsMethods.setUp.<locals>.FooN)r.r<r=rrrr�Foo�srN)rtr��inst)r7rNrrrr��szTestGetcallargsMethods.setUpcs0d|kst�tt|�j}|d|�|j_|jjS)Nr7zself, )�AssertionErrorrvrMr8r�rhrO)r7r��mk)rwrrr8�sz#TestGetcallargsMethods.makeCallable)r.r<r=r�r8r|rr)rwrrM�srMcsBeZdZ�fdd�Zd
�fdd�	Zd�fdd�	Zddd	�Z�ZS)
�TestGetcallargsUnboundMethodscstt|��|�|jjS)N)rvrRr8r�rh)r7r�)rwrrr8�sz*TestGetcallargsUnboundMethods.makeCallableNcstt|�j|�|||��S)N)rvrRr6�_getAssertEqualParams)r7r"r4r5)rwrrr6�s
z1TestGetcallargsUnboundMethods.assertEqualCallArgscstt|�j|�|||��S)N)rvrRr7rS)r7r"r4r5)rwrrr7�s
z2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,d|kst�t|pi|jd�}|d||fS)NrO)rOzinst,)rPrzrO)r7r"r4r5rrrrS�sz3TestGetcallargsUnboundMethods._getAssertEqualParams)N)N)N)r.r<r=r8r6r7rSr|rr)rwrrR�srRc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�TestGetattrStaticc	Cs�Gdd�dt�}|�}|�t�|d�|j�|�t�|dd�|j�|�t��t�|d�WdQRX|�t�|dd�d�dS)Nc@seZdZe�ZdS)z+TestGetattrStatic.test_basic.<locals>.ThingN)r.r<r=rtr~rrrr�Thing�srUr~r�r�)rtr�r1�getattr_staticr~rr
)r7rU�thingrrr�
test_basic�szTestGetattrStatic.test_basiccCs@Gdd�dt�}Gdd�d|�}|�}|�t�|d�|j�dS)Nc@seZdZe�ZdS)z/TestGetattrStatic.test_inherited.<locals>.ThingN)r.r<r=rtr~rrrrrUsrUc@seZdZdS)z4TestGetattrStatic.test_inherited.<locals>.OtherThingN)r.r<r=rrrr�
OtherThingsrYr~)rtr�r1rVr~)r7rUrYZ	somethingrrr�test_inheritedsz TestGetattrStatic.test_inheritedcCsHGdd�dt�}|d�}|�t�|d�d�|`|�t�|d�d�dS)Nc@seZdZdZdd�ZdS)z3TestGetattrStatic.test_instance_attr.<locals>.ThingrcSs
||_dS)N)r~)r7r~rrrr�sz<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)r.r<r=r~r�rrrrrU
srUr�r~r)rtr�r1rVr~)r7rUrWrrr�test_instance_attrs
z$TestGetattrStatic.test_instance_attrcCs0Gdd�dt�}|�}|�t�|d�|j�dS)Nc@seZdZedd��ZdS)z.TestGetattrStatic.test_property.<locals>.ThingcSstd��dS)NzI'm pretending not to exist)r
)r7rrrr~sz0TestGetattrStatic.test_property.<locals>.Thing.xN)r.r<r=rr~rrrrrUsrUr~)rtr�r1rVr~)r7rUrWrrr�
test_propertyszTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@seZdZdd�ZdS)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWstd��dS)NzI'm pretending not to exist)r
)�_rrrr~ szSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__N)r.r<r=r~rrrr�
descriptorsr^cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN)r.r<r=r~r)�descrrrU#srUr~)rtr�r1rV)r7r^rUrWr)r_r�%test_descriptor_raises_AttributeErrors
z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs*Gdd�dt�}|�t�|d�|j�dS)Nc@seZdZe�ZdS)z4TestGetattrStatic.test_classAttribute.<locals>.ThingN)r.r<r=rtr~rrrrrU)srUr~)rtr�r1rVr~)r7rUrrr�test_classAttribute(sz%TestGetattrStatic.test_classAttributecCs.Gdd�dt�}|�t�|d�|jd�dS)Nc@s eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jS)N)�_x)r7rrrr~0sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r.r<r=rYr�r~rtrbrrrrrU/srUr~)rtr�r1rVr)r7rUrrr�test_classVirtualAttribute.sz,TestGetattrStatic.test_classVirtualAttributecCs:Gdd�dt�}Gdd�d|�}|�t�|d�|j�dS)Nc@seZdZe�ZdS)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingN)r.r<r=rtr~rrrrrU8srUc@seZdZdS)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingN)r.r<r=rrrrrY:srYr~)rtr�r1rVr~)r7rUrYrrr�test_inherited_classattribute7sz/TestGetattrStatic.test_inherited_classattributecCs^Gdd�dt�}|�}|�t�|d�|j�|�t�|d�d�|`|�t�|d�|j�dS)Nc@seZdZdZdgZdd�ZdS)z+TestGetattrStatic.test_slots.<locals>.Thingrr~cSs
d|_dS)Nr)r~)r7rrrr�Csz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)r.r<r=r�rwr�rrrrrU@srUr~r�r)rtr�r1rVr~)r7rUrWrrr�
test_slots?szTestGetattrStatic.test_slotscCs�Gdd�dt�}Gdd�dt|d�}|�t�|d�d�Gdd	�d	|�}Gd
d�dt|d�}|�t�|d�d�Gdd
�d
|�}|�t�|d�d�dS)Nc@seZdZdZdS)z.TestGetattrStatic.test_metaclass.<locals>.metarN)r.r<r=rprrrr�metaMsrfc@seZdZdS)z/TestGetattrStatic.test_metaclass.<locals>.ThingN)r.r<r=rrrrrUOsrU)r�rprc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subN)r.r<r=rrrr�subSsrgc@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�N)r.r<r=r~rrrrrYUsrYc@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingN)r.r<r=rrrr�OtherOtherThingYsrhr~r�)rZrtr�r1rV)r7rfrUrgrYrhrrr�test_metaclassLsz TestGetattrStatic.test_metaclasscCs.|�t�ddd�d�|�t�dd�d�dS)Nrr�lower)r�r1rV�assertNotEqual)r7rrr�test_no_dict_no_slots^sz'TestGetattrStatic.test_no_dict_no_slotsc	Cs2tt�� }|�t�|d�t|�j�WdQRXdS)Nr)r�r�r�r1rVrZr)r7Zhandlerrr�%test_no_dict_no_slots_instance_memberbs
z7TestGetattrStatic.test_no_dict_no_slots_instance_membercCs<Gdd�dt�}Gdd�d|�}|�t�|�d�|j�dS)Nc@seZdZdgZdd�ZdS)z5TestGetattrStatic.test_inherited_slots.<locals>.Thingr~cSs
d|_dS)Nr)r~)r7rrrr�ksz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)r.r<r=rwr�rrrrrUisrUc@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingN)r.r<r=rrrrrYnsrYr~)rtr�r1rVr~)r7rUrYrrr�test_inherited_slotsgsz&TestGetattrStatic.test_inherited_slotscspGdd�dt��G�fdd�dt�}|�}d|jd<|�t�|d�d�dd��_|�t�|d�|jd�dS)	Nc@seZdZdd�ZdS)z5TestGetattrStatic.test_descriptor.<locals>.descriptorcSsdS)Nr�r)r7�instance�ownerrrrr~vsz=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__N)r.r<r=r~rrrrr^usr^cseZdZ��ZdS)z.TestGetattrStatic.test_descriptor.<locals>.FooN)r.r<r=r�r)r^rrrNxsrNrr�cSsdS)Nr)r�r#�vrrrrl�rhz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)rtrr�r1rVr�)r7rNrr)r^r�test_descriptorts

z!TestGetattrStatic.test_descriptorcsVGdd�dt��G�fdd�dt�}Gdd�dt|d�}|�t�|d�|jd�dS)	Nc@seZdZdd�ZdS)zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSsdS)Nr�r)r7rorprrrr~�szLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__N)r.r<r=r~rrrrr^�sr^cseZdZ��ZdS)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaN)r.r<r=r�r)r^rrrf�srfc@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingN)r.r<r=rrrrrU�srU)r�r�)rtrZr�r1rVr)r7rfrUr)r^r�test_metaclass_with_descriptor�sz0TestGetattrStatic.test_metaclass_with_descriptorcCs^Gdd�dt�}Gdd�d|�}|�}|�t�|d�d�|�|j�|�t�|d�d�dS)Nc@seZdZdZdS)z6TestGetattrStatic.test_class_as_property.<locals>.Baser�N)r.r<r=rrrrr�Base�srtc@seZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tS)NT)�executedrt)r7rrrrw�szETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r.r<r=rurrwrrrr�	Something�srvrr�)rtr�r1rVr6ru)r7rtrvrorrr�test_class_as_property�sz(TestGetattrStatic.test_class_as_propertycCsbGdd�dt�}Gdd�dt�}Gdd�d||d�}|�t�|�d�d	�|�t�|d�d	�dS)
Nc@seZdZedd��ZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.MetacSstfS)N)rt)r7rrr�__mro__�sz<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)r.r<r=rrxrrrrr��sr�c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�N)r.r<r=rrrrrrt�srtc@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingN)r.r<r=rrrrrv�srv)r�rr�)rZrtr�r1rV)r7r�rtrvrrr�test_mro_as_property�s
z&TestGetattrStatic.test_mro_as_propertycsN|�d�_G�fdd�dt�}|�}d|_|�t�|d�d�|��j�dS)NFcs eZdZdZe�fdd��ZdS)z4TestGetattrStatic.test_dict_as_property.<locals>.Foor�cs
d�_iS)NT)�called)r7)r�rrr�sz=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r.r<r=rrrr)r�rrrN�srNr�rr�)rzrzrr�r1rVr6)r7rNrr)r�r�test_dict_as_property�sz'TestGetattrStatic.test_dict_as_propertycs`|�d�_G�fdd�dt�}Gdd�dt�}|�}|�|_|�t�|d�d�|��j�dS)NFcs eZdZd��fdd�	Z�ZS)z9TestGetattrStatic.test_custom_object_dict.<locals>.CustomNcsd�_t��||�dS)NT)rzrv�get)r7�keyrD)rwr�rrr|�sz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get)N)r.r<r=r|r|r)r�)rwr�Custom�sr~c@seZdZdZdS)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)r.r<r=rrrrrrN�srNrr�)rzrzrtrr�r1rVr6)r7r~rNrr)r�r�test_custom_object_dict�sz)TestGetattrStatic.test_custom_object_dictcCsLGdd�dt�}Gdd�d|d�}|�}|�t�|d�d�|�|j�dS)Nc@seZdZedd��ZdS)z?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.MetacSs
d|_dS)NT)ru)r7rrrr�szHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N)r.r<r=rrrrrrr��sr�c@seZdZdZdd�ZdS)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSs
d|_dS)Nry)rK)r7rrrr��szITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)r.r<r=rur�rrrrrU�srU)r�rKry)rZr�r1rVr6ru)r7r�rUrorrr�test_metaclass_dict_as_property�s
z1TestGetattrStatic.test_metaclass_dict_as_propertycCs t�}|�t�td|�|�dS)N�version)rt�assertIsNotr1rVrV)r7�sentinelrrr�test_module�szTestGetattrStatic.test_modulec	CshGdd�dt�}Gdd�dt|d�}Gdd�d|d�}|�t��t�|d�WdQRX|�|j�dS)	Nc@seZdZedd��ZdS)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTry)rK)rurz)r7rrrr�sz`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__N)r.r<r=rrrrrr�MetaMeta�sr�c@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)r.r<r=rurrrrr��sr�)r�c@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingN)r.r<r=rrrrrU�srUrK)rZrr
r1rVr6ru)r7r�r�rUrrr�3test_metaclass_with_metaclass_with_dict_as_property�szETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)r.r<r=rXrZr[r\r`rarcrdrerirlrmrnrrrsrwryr{rr�r�r�rrrrrT�s,	

	

rTc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestGetGeneratorStatecCsdd�}|�|_dS)Ncssxtd�D]
}|Vq
WdS)Nr�)r)�numberrrr�number_generator�sz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r7r�rrrr��szTestGetGeneratorState.setUpcCst�|j�S)N)r1Zgetgeneratorstater�)r7rrr�_generatorstate�sz%TestGetGeneratorState._generatorstatecCs|�|��tj�dS)N)r�r�r1ZGEN_CREATED)r7rrr�test_createdsz"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dS)N)�nextr�r�r�r1Z
GEN_SUSPENDED)r7rrr�test_suspendeds
z$TestGetGeneratorState.test_suspendedcCs&x|jD]}qW|�|��tj�dS)N)r�r�r�r1�
GEN_CLOSED)r7r#rrr�test_closed_after_exhaustion	sz2TestGetGeneratorState.test_closed_after_exhaustionc	Cs8|�t��|j�t�WdQRX|�|��tj�dS)N)rrr�r(r�r�r1r�)r7rrr�%test_closed_after_immediate_exceptionsz;TestGetGeneratorState.test_closed_after_immediate_exceptioncs,�fdd�}|��_t�j�t�j�dS)Nc3s@x:td�D].}�����tj�|V�����tj�q
WdS)Nr�)rr�r�r1ZGEN_RUNNING)r�)r7rr�running_check_generatorszCTestGetGeneratorState.test_running.<locals>.running_check_generator)r�r�)r7r�r)r7r�test_runnings
z"TestGetGeneratorState.test_runningcCsDd��}x6|D].}tt|�}|�|t|��|�|t|��qWdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED)r�r�r1r|�reprr�)r7�namesr�staterrr�test_easy_debugging#s


z)TestGetGeneratorState.test_easy_debuggingc	Cs�ddd�}|dddg�}|�t�|�ddddgd��t|�|�t�|�ddddgddd��t|�|�t�|�ddddgddd��t|�|�t�|�ddddgddd	d
��yt|�Wntk
r�YnX|�t�|�i�dS)Ncss(d}x|D]}|dkrd}|Vq
WdS)N)rrr�r�r!r)�lstrrvrqrrrr�each,s

z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrrr�)rr�)rrr�)rr�rqrvr!)rr�rqrvr)N)r�r1�getgeneratorlocalsr��
StopIteration)r7r�Znumbersrrr�test_getgeneratorlocals+s*


z-TestGetGeneratorState.test_getgeneratorlocalscCsXdd�}|�}|�t�|�i�yt|�Wntk
r@YnX|�t�|�i�dS)Ncss
dVdS)Nrrrrrr�	yield_oneIszFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one)r�r1r�r�r�)r7r�r�rrr�test_getgeneratorlocals_emptyHsz3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|�ttjd�|�ttjdd��|�ttjt�|�ttjd�dS)NrcSsdS)NTr)r~rrrrlUrhzETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)rr�)rrr1r�r0)r7rrr�test_getgeneratorlocals_errorSsz3TestGetGeneratorState.test_getgeneratorlocals_errorN)r.r<r=r�r�r�r�r�r�r�r�r�r�r�rrrrr��sr�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs&tjdd����fdd�}|�|_dS)Ncssxtd�D]
}|Vq
WdS)Nr�)r)r�rrr�number_coroutine]sz5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s��IdHdS)Nrr)r�rr�	coroutineasz.TestGetCoroutineState.setUp.<locals>.coroutine)rYr�)r7r�r)r�rr�\szTestGetCoroutineState.setUpcCs|j��dS)N)r�rc)r7rrrryeszTestGetCoroutineState.tearDowncCst�|j�S)N)r1Zgetcoroutinestater�)r7rrr�_coroutinestatehsz%TestGetCoroutineState._coroutinestatecCs|�|��tj�dS)N)r�r�r1ZCORO_CREATED)r7rrrr�ksz"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dS)N)r��sendr�r�r1ZCORO_SUSPENDED)r7rrrr�nsz$TestGetCoroutineState.test_suspendedcCsDx,y|j�d�Wqtk
r(PYqXqW|�|��tj�dS)N)r�r�r�r�r�r1�CORO_CLOSED)r7rrrr�rsz2TestGetCoroutineState.test_closed_after_exhaustionc	Cs8|�t��|j�t�WdQRX|�|��tj�dS)N)rrr�r(r�r�r1r�)r7rrrr�{sz;TestGetCoroutineState.test_closed_after_immediate_exceptioncCsDd��}x6|D].}tt|�}|�|t|��|�|t|��qWdS)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSED)r�r�r1r|r�r�)r7r�rr�rrrr��s


z)TestGetCoroutineState.test_easy_debuggingcshtjdd������d�fdd�	}|�}|�t�|�d�d��|�d�|�t�|�d�dd��dS)	Ncss
dVdS)Nrrrrr�gencoro�sz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�sd}�IdHdS)NrKr)rrv)r�rrr"�sz;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rr�rK)rr�rv)N)rYr�r�r1Zgetcoroutinelocalsr�)r7r"rer)r�r�test_getcoroutinelocals�s
z-TestGetCoroutineState.test_getcoroutinelocalsN)r.r<r=r�ryr�r�r�r�r�r�r�rrrrr�Zs		r�c@seZdZdS)�MySignatureN)r.r<r=rrrrr��sr�c@seZdZdS)�MyParameterN)r.r<r=rrrrr��sr�c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Ze
e�ed�dd���Ze
e�ed�dd���Ze
dd��Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Ze�ed�d2d3��Z e�ed�d4d5��Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+e�ed�dJdK��Z,dLdM�Z-dNS)O�TestSignatureObjectcKs<tj|f|�}tdd�|j��D��|j|jkr4dn|jfS)NcssJ|]B}|j|j|jkrdn|j|j|jkr.dn|jt|j���fVqdS).N)rrD�empty�
annotationr�rCrj)r��paramrrr�	<genexpr>�sz0TestSignatureObject.signature.<locals>.<genexpr>.)r1r��tupler"�values�return_annotationr�)r"�kw�sigrrrr��s
zTestSignatureObject.signaturec
	Cstj}tj}|�t|��d�ddd�}t�|�}|jdj|jd�}|jdj|jd�}|jd	}|jd
}|jd}	|jd}
|jd
}||||	|
|f�|�	t
d��||||	|
|f�WdQRX|�	t
d��|||	||
|f�WdQRX|�	t
d��||	|||
|f�WdQRX|�	t
d��||||	||
f�WdQRX|jdd�}|�	t
d��||||	||
f�WdQRX|�	t
d��|||f�WdQRX|�	t
d��||||f�WdQRX|�	t
d��|||f�WdQRX|�t|��
d��|�dt|�k�dS)Nz()ry�dc_sdS)Nr)�po�pk�pod�pkd�korr�rrrr��sz7TestSignatureObject.test_signature_object.<locals>.testr�)rCr�r�r�rr�r�zwrong parameter order)rzduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)ryr�)r1r�r�r�r�r�r"�replacer�rFr�r-r�r)
r7�S�Pr�r�r�r�r�r�rr�r�Zkwargs2rrr�test_signature_object�s@






z)TestSignatureObject.test_signature_objectc	
Csbid�dddid�dd�}tj|dd�}t�|�}xNttjd�D]<}|j|d	d
��$t�t�	||��}|�
||�WdQRXqBWt�|�}tdtjj
d�}tj|j|d�}t�j|��|jd
�}|�t|t��|�t|jdt��xtttjd�D]b}|j|dd
��Jt�t�	||��}|�
||�|�t|t��|�t|jdt��WdQRXq�WdS)N)rrryr�)rr�c[sdS)Nr)rrvrr�rrrr�rhz=TestSignatureObject.test_signature_object_pickle.<locals>.foo)rF)�
pickle_ver�subclassr)rrC)r"r�T)r�r�r1r�r�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�r�r�r��collections�OrderedDictr"r�r�r�r�r-r�)	r7rZfoo_partialr��verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_pickle�s*


z0TestSignatureObject.test_signature_object_picklec	CsRdd�}t�|�}|�t��d|_WdQRX|�t��d|jd<WdQRXdS)NcSsdS)Nr)rrrrr��sz=TestSignatureObject.test_signature_immutability.<locals>.testrr)r1r�rr
rrr")r7r�r�rrr�test_signature_immutability�s
z/TestSignatureObject.test_signature_immutabilitycCsdd�}|�|�|�d�dS)NcSsdS)Nrrrrrr�
sz9TestSignatureObject.test_signature_on_noarg.<locals>.test)r.)r�r�)r7r�rrr�test_signature_on_noarg	sz+TestSignatureObject.test_signature_on_noargcCs&ddd�dd�}|�|�|�d�dS)NrrE)rvr�cSsdS)Nr)rrvrrrr�sz9TestSignatureObject.test_signature_on_wargs.<locals>.test)))r..�positional_or_keyword)rv.rr�rE)r�r�)r7r�rrr�test_signature_on_wargssz+TestSignatureObject.test_signature_on_wargscCs@tttd�dd�}|�|�|�ddtdfddtdfftf�dS)N)rrvr�cSsdS)Nr)rrvrrrr�sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testr.�keyword_onlyrv)�floatr�r�r�r�)r7r�rrr�test_signature_on_wkwonlys

z-TestSignatureObject.test_signature_on_wkwonlycCsJddd�dddtd�dd	�}|�|�|�d
ddd
dddtdffdf�dS)Nr.rE)r�rr�baz)rvrrKr�c_sdS)Nr)rrvrKr�rr�rrrr�sz@TestSignatureObject.test_signature_on_complex_args.<locals>.test)r..r�)rvr.rr�)r.r�var_positional)rK.r�r�)r�rE.r�r�.�var_keyword)r.)r�r�r�)r7r�rrr�test_signature_on_complex_argssz2TestSignatureObject.test_signature_on_complex_argscs�dd��dd��G��fdd�d�}|�|���d�|�|���d�|�|�|j�d�|�|�|j�d�|�|�|j�d�|�|�|j�d�dS)	NcWsdS)Nr)rrrr�test_args_only+szGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_sdS)Nr)rr�rrr�test_args_kwargs_only.szNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_onlycsTeZdZedd��Zedd��Ze�ed�Z	e��d�Z
e�ed�Ze��d�ZdS)z:TestSignatureObject.test_signature_without_self.<locals>.AcWsdS)Nr)rrrr�test_classmethod2szKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWsdS)Nr)rrrr�test_staticmethod6szLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodrN)
r.r<r=r�r�r�r�r�r�rHrIrJrKr)r�r�rrr�1sr�)))r..r�.)))r..r�)r�..r�.)r�r�rHrIrJrK)r7r�r)r�r�r�test_signature_without_self*sz/TestSignatureObject.test_signature_without_selfz6Signature information for builtins requires docstringsc	s�ddl}�fdd�}�fdd�}||j���fdd�}��|d�d	���|d
�d���|d�d
���|d�d���|d�d���|d�d���|d�d���|d�d���|d�tj���d�j�|t�|tj	j
�t�	t���}||j
�|t
j�|dj�|tj�|ij�|tj�|tj�|dj�|tj���td��Gdd�d�}||��WdQRX|tj�|tj�||j�dS)Nrcs<t�|�}��t|tj����t|j���dj	d�|S)zAUse this to test unbound methods (things that should have a self)rr7)
r1r�r-r�r�r�rsr"r�r)rr�)r7rr�test_unbound_methodSs
zKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_methodcsBt�|�}��t|tj��|jr>��t|j���dj	d�|S)zRUse this to test bound methods or normal callables (things that don't expect self)rr7)
r1r�r-r�r�r"rkrsr�r)rr�)r7rr�
test_callableZs

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jS)N)r"rD)r)r�rrr$crhz9TestSignatureObject.test_signature_on_builtins.<locals>.pr�r�rvsbytesr�g��Q�	@r#�#�nr�Tr�FZlocalr�rVr8r�zno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r.r<r=rZr�rrrr�ThisWorksNow�sr�)r�r�r�rV�maxsizer}r"rtr�r�r�r��StringIOr��	maketransrz�fromkeysrZr�r�r��minrFr��__delitem__r�
__delete__Z#docstring_with_signature_but_no_doc)r7r�r�r�r$r�r�r)r7r�r�test_signature_on_builtinsMsB











z.TestSignatureObject.test_signature_on_builtinscCsdddl}|j}dd�}||�}|�t�|�t�|��td�dd�}|�tj|dd�t�|��dS)	Nrcs t���td��fdd��}|S)N)r�cs
�||�S)Nr)rr�)r"rr�wrapper�sz\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)r�r�r�)r"r�r)r"r�	decorator�szKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator)r�c_sdS)Nr)rr�rrr�wrapper_like�rhzNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF)�follow_wrapped)r�r�r�r1r�r�)r7r�r"r�Zdecorated_funcr�rrr�$test_signature_on_decorated_builtins�s
z8TestSignatureObject.test_signature_on_decorated_builtinsc	CsRddl}|�td��t�|j�WdQRX|�td��t�t�WdQRXdS)Nrzno signature found for builtin)r�rFr�r1r�r�r�)r7r�rrr�'test_signature_on_builtins_no_signature�sz;TestSignatureObject.test_signature_on_builtins_no_signaturec	Cs&|�td��t�d�WdQRXdS)Nzis not a callable objectry)rFrr1r�)r7rrr�test_signature_on_non_function�sz2TestSignatureObject.test_signature_on_non_functionc	s�dd�dd�}Gdd�d�}tj�|�}tj�||��}|�||�t�||��}|�||�||�}|`|�|�|�d�tj��fdd	�}tj�	d
|��F||�}|�
t�|��d|_|�t�|��|�t�|�|�WdQRXdS)NT)�kwonlyc_sdS)Nr)rrvr��	kwonlyreqrr�rrrr"�szITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@seZdZdd�Zdd�ZdS)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecSs2|j|_|j|_|j|_|j|_|j|_||_dS)N)r.rr��__defaults__�__kwdefaults__r")r7r"rrrr��szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_s|j||�S)N)r")r7rr�rrrr��szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N)r.r<r=r�r�rrrr�funclike�sr�)))r..r�)r�..r�.cst|d�rdS�|�S)N�_builtinmockT)rX)r9)�_orig_isdescrr�_isdesc�s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
r1r��
from_callabler�r�r�r	r�ZmockZpatchr6r�r-)r7r"r�Zsig_funcZsig_funclikeZflr�Zbuiltin_funcr)r�r�'test_signature_from_functionlike_object�s&z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|�tt�|��d�dS)NT)r�c_sdS)Nr)rrvr�r�rr�rrrr"�szCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSsdS)Nr)r7Zmarkerrrrr��szPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)r.r<r=r�rr�r�r�r)r"rrr��sr�z(marker))r�r�r1r�)r7r�r)r"r�!test_signature_functionlike_class�s
z5TestSignatureObject.test_signature_functionlike_classc	CsxGdd�d�}|�|�|�j�dtf�|�|�|�j�d�|�|�|�d�|�td��|�|��WdQRXdS)Nc@s4eZdZdd�Zded�dd�Zdd�Zd	d
�ZdS)
z:TestSignatureObject.test_signature_on_method.<locals>.TestcWsdS)Nr)rrrrr�	szCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r)r�cSsdS)Nr)r7r�r�rrrr�	sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWsdS)Nr)rrrr�m2
	sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSsdS)Nr)rrrrr�	szCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__N)r)r.r<r=r�r�r�r�r�rrrr�Test	sr�))r�..r�)r�r.r�)))r..r�.zinvalid method signature)r�r�r�r�r�rFr�)r7r�rrr�test_signature_on_method	s
z,TestSignatureObject.test_signature_on_methodcCs>Gdd�d�}t�|�j�dd��}|�|�|�dtf�dS)Nc@seZdZded�dd�ZdS)zETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr)r�cSsdS)Nr)r7r�r�rrrr�"	szHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1N)r)r.r<r=r�r�rrrrr�!	sr�c_sdS)Nr)rr�rrr�m1d$	szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1d))r�..r�)r�r.r�)r�r�r�r�r�r�)r7r�r�rrr�#test_signature_wrapped_bound_method	s
z7TestSignatureObject.test_signature_wrapped_bound_methodcCsDGdd�d�}|�j}|�|�|�d�|j}|�|�|�d�dS)Nc@seZdZedd�dd��ZdS)z?TestSignatureObject.test_signature_on_classmethod.<locals>.Testr)r�cSsdS)Nr)r�r�r�rrrr.	szCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)r.r<r=r�rrrrrr�-	sr�)))r�..r�)r�r.r�.)rr�r�)r7r��methrrr�test_signature_on_classmethod,	sz1TestSignatureObject.test_signature_on_classmethodcCsDGdd�d�}|�j}|�|�|�d�|j}|�|�|�d�dS)Nc@seZdZedd��ZdS)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSsdS)Nr)r�r�rrrr@	szDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)r.r<r=r�rrrrrr�?	sr�)))r�..r�)r�..r�.)rr�r�)r7r�r�rrr�test_signature_on_staticmethod>	sz2TestSignatureObject.test_signature_on_staticmethodc
CsHddlm}tj}dd�}|�|�||��d�|�td��t�||d��WdQRX|�td��t�||dd��WdQRXd	d�}|�|�||��d
�|�|�||d��d�|�|�||ddd
��d�|�|�||ddd��d�|�|�||dddd��d�|�|�||dd��d�dd�}|�|�||d��d�|�|�||dd��d�|�|�||ddd��d�|�|�||ddddd��d�|�|�||dddddd��d�|�|�||dd��d�|�|�||ddd��d�tdd�d d�}t�|�}|_	|�|�|||d���d!d"d#td$ffdf�|�|�|||d�d��d"d#td$ffdf�t�|||d�d��}d%d&�}|||d'd�d(d�}|�|�|�d)�|�|�d(�d*d&�}|||dd(d�d+d�}|�|�|�d,�|�|d'd
�d-�d.d&�}|||d(d(d/�d'd+d0�}|�|�|�d1�t�|�j
d2d3d4�}|�||j|j�d5�dGd6d&�}||d7d
�}t�|�j
d3d�}|�||j|j�d8�t�|��
d3d9�}|�||j|j�d:�t�|�j
d3d9d�}|�||j|j�d:�t�|�j
d9d�}|�||j|j�d;�||d'd(d�}t�|��
d9�}|�||j|j�d<�d=d&�}t�|�}|j
��}	|	d>j|jd?�|	d><|	d@j|jd?�|	d@<t�|	���|_	t�|�}|�t|�dA�|�|�||d��dB�|�|�||dd��dC�|�|�||ddd��dD�|�|�||dddd
��dE�|�|�||ddd
��dF�dS)HNr)r�cSsdS)Nrrrrrr�U	sz;TestSignatureObject.test_signature_on_partial.<locals>.test)r.zhas incorrect argumentsr)rcSsdS)Nr)rrvrr�rrrr�`	s)))r..r�)rv..r�)r..r�)r�..r�.)))rv..r�)r..r�)r�..r�.r)r)))rv..r�)rr.r�)r�..r�.)rvr)))r..r�)rvr.r�)rr.r�)r�..r�.)))rvr.r�)rr.r�)r�..r�.)))rr.r�)rv..r�)r..r�)r�..r�.c_sdS)Nr)rrvrr�rrrr��	s)))r..r�)rv..r�)r�..r�.)))rr.r�)rv..r�)r�..r�.r�T)r�)r�rv)))r..r�)rvr.r�)r�..r�.)rv)))r..r�)r..r�)rvr.r�)r�..r�.)rvr�ry)rr�cSsdS)Nr)rrvrrrrr��	s)rv..r�r.r�cSs|S)Nr)rrrrr�	sz:TestSignatureObject.test_signature_on_partial.<locals>.foor.�)))rr.r�.cSs
|||fS)Nr)rrvrrrrr�	sr:)))rvr:.r�)r..r�.)rr:r.cSs||||fS)Nr)rrvrr�rrrr�	s)r�r)rvr�)))r..r�)rvr..r�)rr.r�)r�r:.r�.��r�)rrv)rr�rr:cSs
|||fS)Nr)rrvrrrrr�	s�
)r�rrr!)r�r!r)rr!r)r!r.rc[sdS)Nr)rrvrr�r�rrrr�	sr)rCrvz(a, b, /, c, d, **kwargs))))rv..�positional_only)r..r�)r�..r�)r�..r�.)))r..r�)r�..r�)r�..r�.)))r�..r�)r�..r�.)))rr�.r�)r�..r�)r�..r�.)))rv..r)rr�.r�)r�..r�)r�..r�.)rrr�)r�r�r1r�r�r�rFr�r�r��bindrr�r"�copyr�r�r�r�r�)
r7r�r�r�r�ZpsigrZ_foo�ba�paramsrrr�test_signature_on_partialP	s�



z-TestSignatureObject.test_signature_on_partialc	s�ddlm�G�fdd�d�}|�td��t�|j�WdQRXG�fdd�d�}|�|�|j�d�|�|�|�j�d�G�fd	d�d�}|�|�|j�d
�dS)Nr)r�cseZdZdd�Z�e�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSsdS)Nrrrrrr�,
szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN)r.r<r=r�r�r)r�rr�Spam+
sr	zhas incorrect argumentscs&eZdZdd�dd�Z�edd�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamrK)r�cSsdS)Nr)�itrrrrrr�4
szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testr)rN)r.r<r=r�r�r)r�rrr	3
s)))r
..r�)r..r�)rr.r�rK)))r..r�)rr.r�rKcs$eZdZdd�dd�Z�ed�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spam�anno)r7cSsdS)Nr)r7r~rrrr�D
szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testrN)r.r<r=r�r�r)r�rrr	C
s)))r7.rr�.)	r�r�rFr�r1r�r�r�r�)r7r	r)r�r�test_signature_on_partialmethod(
sz3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSsdS)Nr)rrrrrN
rhzETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorKz(a))�_partialmethodr�r�r1r�)r7rrrr�$test_signature_on_fake_partialmethodM
sz8TestSignatureObject.test_signature_on_fake_partialmethodcs�ddl��fdd��G�fdd�d�}|�|�|j�d�|�|�|�j�d�|�|j|jdd	�d
��fdd��G�fdd�d�}|�|�|j�d�|�|�|�j�d
�dd�}|j|_|�|�|�d�dS)Nrcs ����td��fdd��}|S)N)r�cs
�||�S)Nr)rr�)r"rrr�V
szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)r�r�)r"r�)r�)r"rr�U
szBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcseZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r7rrvrrrr\
sz@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)r.r<r=rr)r�rrrN[
srN)))r7..r�)r..r�)rv..r�.)))r..r�)rv..r�.F)r�)))r..r�)r�..r�.csN����td��fdd��}t���}t|j���dd�}|j|d�|_|S)N)r�cs�d|�|�S)Nry)ryr)rr�)r"rrr�t
szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperr)r")	r�r�r1r�r�r"r�r�r�)r"r�r��
new_params)r�)r"rr�s
s
cseZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r7rrvrrrr�}
szETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N)r.r<r=r�r)r�rrrN|
s)))rv..r�.cSsdS)Nrrrrr�wrapped_foo_call�
szITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)r�r�r�rr��__wrapped__)r7rNrr)r�r�r�test_signature_on_decoratedR
s&	z/TestSignatureObject.test_signature_on_decoratedcCs>Gdd�d�}|�|�|�d�Gdd�dt�}Gdd�d|d�}|�|�|�d�Gdd�dt�}Gd	d�d|d�}|�|�|�d
�|�|�|�d�Gdd
�d
t�}Gdd�dt|d�}Gdd�d|d�}|�|�|�d�|�|�|�d�|�|�|�d
�Gdd�dt�}Gdd�d|d�}|�|�|�d�dS)Nc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r7rrrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)r.r<r=r�rrrrrx�
srx)))r..r�.c@seZdZdd�ZdS)z7TestSignatureObject.test_signature_on_class.<locals>.CMcSsdS)Nr)r�rrrrr��
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__N)r.r<r=r�rrrrr�
src@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r7rvrrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)r.r<r=r�rrrrrx�
s)r�cs"eZdZdd��fdd�
Z�ZS)z7TestSignatureObject.test_signature_on_class.<locals>.CMr)rcst��||||�S)N)rvr�)�mclsr�bases�dctr)rwrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)r.r<r=r�r|rr)rwrr�
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r7rvrrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)r.r<r=r�rrrrrx�
s)))rv..r�.)))r..r�)r..r�)r..r�)rr.r�.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMr)rcst��||||�S)N)rvr�)rrrrr)rwrrr��
sz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�S)N)rZ)r��nm�bs�dtrrrr��
szATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r.r<r=r�r�r|rr)rwr�CMM�
srcs"eZdZdd��fdd�
Z�ZS)z7TestSignatureObject.test_signature_on_class.<locals>.CMr)rcst��||||�S)N)rvr�)rrrrr)rwrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)r.r<r=r�r|rr)rwrr�
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r7rvrrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)r.r<r=r�rrrrrx�
s)))r..r�)r..r�)r..r�.cs"eZdZdd��fdd�
Z�ZS)z7TestSignatureObject.test_signature_on_class.<locals>.CMr)rcst��|||�S)N)rvr�)r�rrrr)rwrrr��
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r.r<r=r�r|rr)rwrr�
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r7rvrrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)r.r<r=r�rrrrrx�
s)))r..r�)r..r�)r..r�)rr.r�.)r�r�rZ)r7rxrrrrr�test_signature_on_class�
s4z+TestSignatureObject.test_signature_on_classc	Cs�Gdd�d�}|�tt�|��d�Gdd�d|�}|�tt�|��d�Gdd�dt�}Gdd�d|�}|�td��|�t�|�d�WdQRX|�td��|�t�|�d�WdQRXdS)	Nc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)r.r<r=rrrrrx�
srxz()c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)r.r<r=rrrrr��
sr�c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)r.r<r=rrrrrx�
sc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)r.r<r=rrrrr��
szcallable.*is not supported)r�r�r1r�rZrFr�)r7rxr�rrr�$test_signature_on_class_without_init�
sz8TestSignatureObject.test_signature_on_class_without_initcCs�|�tt�tj��d�Gdd�dtj�}Gdd�d�}Gdd�d||�}|�tt�|��d�|�tt�|��d�Gdd	�d	|�}|�tt�|��d
�Gdd�dt�}Gd
d�d||d�}|�tt�|��d�dS)Nz'(file, protocol=None, fix_imports=True)c@seZdZdS)z>TestSignatureObject.test_signature_on_builtin_class.<locals>.PN)r.r<r=rrrrr��
sr�c@seZdZdS)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitN)r.r<r=rrrr�
EmptyTrait�
src@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2N)r.r<r=rrrr�P2�
src@seZdZdd�ZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSsdS)Nr)r7rKrrrr�szHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__N)r.r<r=r�rrrr�P3srz(spam)c@seZdZdd�ZdS)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSsdS)Nr)r�rrrrrr�szKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__N)r.r<r=r�rrrr�MetaP
src@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4N)r.r<r=rrrr�P4
sr )r�z
(foo, bar))r�r�r1r�r�r�rZ)r7r�rrrrr rrr�test_signature_on_builtin_class�
sz3TestSignatureObject.test_signature_on_builtin_classc	Cs�Gdd�d�}|�|�|��d�Gdd�d�}|�td��t�|��WdQRXGdd�d||�}|�|�|��d�Gd	d
�d
�}dd�|_|�|�|�d�||_|�td
��|�|�WdQRXdS)Nc@seZdZdd�ZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.FoocSsdS)Nr)r7rrrrr�szLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__N)r.r<r=r�rrrrrNsrN)))r..r�.c@seZdZdS)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamN)r.r<r=rrrrr	sr	zis not a callable objectc@seZdZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarN)r.r<r=rrrr�Barsr"c@seZdZdS)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedN)r.r<r=rrrr�Wrapped&sr#cSsdS)Nr)rrrrrl(rhzHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>zwrapper loop)r�r�rFrr1rr�)r7rNr	r"r#rrr�"test_signature_on_callable_objectss 
z6TestSignatureObject.test_signature_on_callable_objectscCs|�|�ddd��d�dS)Nr.cSs|S)Nr)rrrrrl2rhz?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rr..r�.)r.)r�r�)r7rrr�test_signature_on_lambdas1sz-TestSignatureObject.test_signature_on_lambdascCsPttd�dd�}|�t�|�dk�|�t�|�dk�|�t�|�t�k�|�t�|�t�k�ttd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���ttd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���td�d	d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd�ttd�d
d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���td�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���ttd�d
d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���ttd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd�}dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dd�dd�}dd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dd�dd�}dd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dd�}dd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd�td�dd�}dd�td�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dS)N)rvr�cSsdS)Nr)rrvrrrr7rhz8TestSignatureObject.test_signature_equality.<locals>.foorycSsdS)Nr)rrvrrrr=rhz8TestSignatureObject.test_signature_equality.<locals>.barcSsdS)Nr)rrvrrrrCrh)rvcSsdS)Nr)rrvrrrrIrhcSsdS)Nr)rrvrrrrOrh)r�cSsdS)Nr)rrrrrrUrhcSsdS)Nr)rrvrrrr[rhcSsdS)Nr)rvrrrrrK`rhz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdS)Nr)rrvrrrrrfrhcSsdS)Nr)rrvrrrrrgrhr)rcSsdS)Nr)rrvrrrrrmrhcSsdS)Nr)rrvrrrrrnrhcSsdS)Nr)�posrrvrrrrrtrhcSsdS)Nr)r&rrvrrrrrurhcSsdS)Nr)r&rrvrrrrr{rhcSsdS)Nr)r&rrvrrrrr|rh)r�c_sdS)Nr)r&rrvrrr�rrrr�rhc_sdS)Nr)r&rrvrrr�rrrr�rh)
r�r�r6r1r�r-rNr��hashrk)r7rrrKrrr�test_signature_equality6s�z+TestSignatureObject.test_signature_equalityc	Cs�tj}tj}dd�}t�|�}||d|j�gd�}|�t|�t|��|�t|�t|jdd���dd�d	d
�}|�t|�tt�|���ifdd�}|�	t
d��tt�|��WdQRXid�d
d�}|�	t
d��tt�|��WdQRXdS)NcSsdS)Nr)rrrrr�rhz8TestSignatureObject.test_signature_hashable.<locals>.foor)r"rK)r�r)r�cSsdS)Nr)rrrrr�rhz8TestSignatureObject.test_signature_hashable.<locals>.barcSsdS)Nr)rrrrr�rhzunhashable typecSsdS)Nr)rrrrr�rh)r1r�r�r��POSITIONAL_OR_KEYWORDr�r'rkr�rFr)r7r�r�r�foo_sigZ
manual_sigrrrr�test_signature_hashable�s 

z+TestSignatureObject.test_signature_hashablecCs~ddd�tdd�dd�}|�tt�|��d�d
dd�tdd�dd�}|�tt�|��d	�d
d�}|�tt�|��d�dS)Nr)rry)rr�c[sdS)Nr)rrvrr�rrrr�sz3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c_sdS)Nr)rrvrrr�rrrr�sz.(a: int = 1, *args, b, c=None, **kwargs) -> 42cSsdS)Nrrrrrr�sz())r)r)r�r�r�r1r�)r7rrrr�test_signature_str�sz&TestSignatureObject.test_signature_strcCs�tj}tj}dd�}t�|�}t|j���}|dj|jd�|d<|j|d�|_	|�
tt�|��d�|�
t||d|j�gd��d�|�
t||d|j�|d	|j�gd��d
�|�
t||d|j�|d	|j
�gd��d�dS)Nc[s||fS)Nr)�a_porvr�rrrr��szDTestSignatureObject.test_signature_str_positional_only.<locals>.testr)rC)r"z(a_po, /, *, b, **kwargs)rz(foo, /)rz(foo, /, **bar)z(foo, /, *bar))r1r�r�r�rsr"r�r�r�r�r�r�rG�VAR_POSITIONAL)r7r�r�r�r�rrrr�"test_signature_str_positional_only�s&


z6TestSignatureObject.test_signature_str_positional_onlycCs�dd�dd�}t�|�}|jdd�}|�|jd�|j|jd�}|�|j|j�|jdd�}|�|jd�|�|t�|��dS)Nry)r�cSsdS)Nrrrrrr��sz=TestSignatureObject.test_signature_replace_anno.<locals>.test)r�)r1r�r�r�r�r�r�)r7r�r�rrr�test_signature_replace_anno�s
z/TestSignatureObject.test_signature_replace_annocCsRGdd�d�}Gdd�d|�}|�|�|j�d�|�|�|j�|�|j��dS)Nc@s$eZdZd	dd�ddd�dd�ZdS)
zFTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamrr�)�	_Spam__p2r)�	_Spam__p1r1cSsdS)Nr)r7r2r1rrrr�szJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)r)r.r<r=rrrrrr	�sr	c@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamN)r.r<r=rrrr�Ham�sr3)))r7..r�)r2rrr�)r1r�rr�.)r�r�r)r7r	r3rrr�$test_signature_on_mangled_parameters�sz8TestSignatureObject.test_signature_on_mangled_parameterscCs:Gdd�dtj�}dd�dd�}|�|�}|�||�dS)Nc@seZdZdS)zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureN)r.r<r=rrrrr��sr�r)rvcSsdS)Nr)rrvrrrr�rhzHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo)r1r�r��assertIsInstance)r7r�rr*rrr�'test_signature_from_callable_python_obj�s
z;TestSignatureObject.test_signature_from_callable_python_objcCs:Gdd�dtj�}Gdd�d�}|�|�}|�||�dS)Nc@seZdZdS)zKTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureN)r.r<r=rrrrr��sr�c@seZdZdS)zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooN)r.r<r=rrrrr�sr)r1r�r�r5)r7r�rr*rrr�"test_signature_from_callable_class�s
z6TestSignatureObject.test_signature_from_callable_classcCs.Gdd�dtj�}|�tj�}|�||�dS)Nc@seZdZdS)zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureN)r.r<r=rrrrr��sr�)r1r�r�r�r�r5)r7r�r�rrr�(test_signature_from_callable_builtin_obj�sz<TestSignatureObject.test_signature_from_callable_builtin_objcCsfx@t�D]6}t�|�}t|j�}t|�}|�|�|�||�qWt�t�}t|j�}|�|t	�dS)N)
r'r1r�rsr"r�r-r�r*r�)r7r�r�r�r�rrr�3test_signature_definition_order_preserved_on_kwonly�s




zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlyN).r.r<r=r�r�r�r�r�r�r�r�r�r�rr�r#rr�r�r�r�r�r�r�r�r�r�rrrrrrr!r$r%r(r+r,r/r0r4r6r7r8r9rrrrr��s\/#G5
Y%CQ S
r�c@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�TestParameterObjectcCsltj}|�|j|jko:|jko:|jko:|jkn�|�t	|j�d�|�dt
|j�k�dS)Nr�)r1r�r-r�r)r.�KEYWORD_ONLYrGr�r�r�)r7r�rrr�test_signature_parameter_kinds
s
(z2TestParameterObject.test_signature_parameter_kindsc	Cs�tjddtjjd�}|�|jd�|�|jd�|�|j|j�|�|j	tjj�|�
td��tjdddd�WdQRX|�
td��tjdtjjd�WdQRX|�
t
d	��tjdtjjd�WdQRX|�
td
��tjdtjjd�WdQRX|�
td
��tjdtjjd�WdQRX|�
td
��tjddtjjd�WdQRX|�
td
��tjddtjjd�WdQRXtjddtjjd�}|�
td
��|jtjjd�WdQRX|�t|��d��|�dt|�k�dS)Nrr.)rDrCz)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer�)rCzname must be a strzis not a valid parameter name�$z.azcannot have default valuesrryz
<Parameterz"a=42")r1r�r�r�rrDr�r�r�rCrFr�rGrr.r)r�r-r�r)r7r$rrr�test_signature_parameter_objects<z3TestParameterObject.test_signature_parameter_objectc	Csttj}|d|jd�}|�t|�t|d|jd���|�t|�t|d|jdd���|�t|�t|j|jd���dS)Nr)rCry)rCrD)r1r�r�r�r'rkr�r.)r7r�rrrr�!test_signature_parameter_hashable<s
z5TestParameterObject.test_signature_parameter_hashablecCs�tj}|ddtjjd�}|�||k�|�||k�|�|dk�|�|dk�|�|t�k�|�|t�k�|�||ddtjjd�k�|�||ddtjjd�k�dS)Nrry)rDrC)r1r�r;r-r6rN)r7r�r$rrr�!test_signature_parameter_equalityEsz5TestParameterObject.test_signature_parameter_equalityc	Csltjddtjjd�}|�||���|�||���|jdd�}|�|jd�|j|jd�}|�||�|jdd�}|�|jd�|�	||�|�
td��|j|jd�}WdQRX|jddd	�}|�|j
d�|�	||�|jd|jd	�}|�|j
|j�|jd|jd�}|�|j|j�|�	||�|�
td
��|j|jd�}WdQRX|j|jd�}|�||�dS)Nrry)rDrCr)r�r)rzname is a required attribute)rrDz<value <class 'inspect._empty'> is not a valid Parameter.kind)rC)r1r�r;r�r�r�r�r�rrkrFr�r�rDr)rC)r7r$Zp2rrr� test_signature_parameter_replaceUs6z4TestParameterObject.test_signature_parameter_replacec	Cs.|�td��tjdtjjd�WdQRXdS)Nzname must be a str)rC)rFrr1r�r�)r7rrr�(test_signature_parameter_positional_only}sz<TestParameterObject.test_signature_parameter_positional_onlyc	Cs`|�td��tjdtjjd�WdQRXtjdtjjd�}|�|jtjj�|�|jd�dS)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0)rCZ	implicit0)	rFr�r1r�r�r)r�rCr)r7r�rrr�!test_signature_parameter_implicit�sz5TestParameterObject.test_signature_parameter_implicitc	CsNtjdtjjd�}|�t��d|_WdQRX|�t��d|_WdQRXdS)NrK)rCrrE)r1r�r;rr
rrC)r7r$rrr�%test_signature_parameter_immutability�s
z9TestParameterObject.test_signature_parameter_immutabilityN)r.r<r=r<r>r?r@rArBrrCrDrrrrr:	s*	(
r:c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zedd��ZdS)�TestSignatureBindcOs$t�|�}|j||�}||j|j�S)N)r1r�rrr�)r"rr�r�rrrr�call�s
zTestSignatureBind.callc	Cs�dd�}|�|�|�d�|�td��|�|d�WdQRX|�td��|j|ddd�WdQRX|�td��|j|dd�WdQRXdS)	NcSsdS)Nryrrrrrr��sz9TestSignatureBind.test_signature_bind_empty.<locals>.testryztoo many positional argumentsrr.)rKz)got an unexpected keyword argument 'spam')r�rFrFr)r7r�rrr�test_signature_bind_empty�s
z+TestSignatureBind.test_signature_bind_emptycCs�dd�}|�|�|�dif�|�|�|d�dif�|�|�|dd�dif�|�|j|dd	�dd
dif�|�|j|ddd	�dd
dif�|�|j|dd�dd
dif�|�|j|dddd	�dd
dif�dS)Nc_s||fS)Nr)rr�rrrr��sz7TestSignatureBind.test_signature_bind_var.<locals>.testrr)rr)rrr)rrr.)rr)r�rF)r7r�rrr�test_signature_bind_var�s z)TestSignatureBind.test_signature_bind_varc	Csdd�}|�|�|ddd�d�|�td��|�|dddd�WdQRX|�td	��|�|d�WdQRX|�td
��|�|�WdQRXddd�}|�|�|ddd�d�|�|�|dd�d
�ddd�}|�|j|ddd�d�|�|j|dd�d�|�|j|dd�d�dS)NcSs
|||fS)Nr)rrvrrrrr��sz=TestSignatureBind.test_signature_bind_just_args.<locals>.testrrr�)rrr�ztoo many positional argumentsr�z missing a required argument: 'b'z missing a required argument: 'a'r.cSs
|||fS)Nr)rrvrrrrr��s)rrr.cSs
|||fS)Nr)rrvrrrrr��sr)rr)r.rr)r)r.rr�)rv)rr.r�)r.)rrr�)r�rFrFr)r7r�rrr�test_signature_bind_just_args�s"

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|�|�|�d�|�|�|ddd�d�dS)NcWs|S)Nr)rrrrr��szATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrrrr�)rrr�)r�rF)r7r�rrr�!test_signature_bind_varargs_order�sz3TestSignatureBind.test_signature_bind_varargs_orderc
Cs�ddd�}|�|�|ddddd�d�|�|�|dd�d	�|�|j|ddd
�d�|�|j|ddd�d	�|�td
��|j|ddddd�WdQRXdS)Nr�cWs||||fS)Nr)rrvrrrrrr��szDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testrrr�r�)rrr�)r�r�)rrr�r)rvr)rrr�r)rvz multiple values for argument 'c')r)r�)r�rFrFr)r7r�rrr�$test_signature_bind_args_and_varargs�s
z6TestSignatureBind.test_signature_bind_args_and_varargscCs<dd�}|�|�|�i�|�|j|ddd�ddd��dS)Nc[s|S)Nr)r�rrrr��sz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrr�)rrK)r�rF)r7r�rrr�test_signature_bind_just_kwargs�sz1TestSignatureBind.test_signature_bind_just_kwargsc
CsJddd�}|�|�|dd�dddif�|�|j|ddddd�dddddd�f�|�|j|ddddd	�dddddd�f�|�|j|ddddd
�dddddd�f�|�|j|ddddd�dddddd�f�|�|j|dddddd
�dddddd�f�|�|j|ddddd�dddddif�|�|j|dddd�dddif�dS)Nr�c[s||||fS)Nr)rrvrr�rrrr��szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrrrr�)rrK)rvrrrK)rrvrrK)rvrrKr�)rvrrrK)rrr�)rrrv)r�)r�rF)r7r�rrr�#test_signature_bind_args_and_kwargs�s 
z5TestSignatureBind.test_signature_bind_args_and_kwargsc	CsTdd�}|�td��|�|d�WdQRX|�|j|dd�d�dd�dd�}|�td��|�|d�WdQRXdd�}|�|j|dd	d
�d�|�|j|d	dd�d�|�td
��|j|d	ddd�WdQRX|�td��|�|dd	�WdQRX|�td��|j|dd	d	d
�WdQRX|�td
��|j|dd	dd�WdQRX|�td��|�|d�WdQRXdd�}|�|j|dd	d
�dd	if�|�|j|dd	d�dd	if�|�|j|dd	dd�dd	ddif�|�|j|ddd	d�dd	ddif�|�td��|j|dd	d�WdQRX|�|j|dd	ddd�dd	ddd�f�dS)NcSs|S)Nr)rrrrr�
sz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testztoo many positional argumentsr)rcSs|S)Nr)rrrrrrr�
sz"missing a required argument: 'bar'cSs||fS)Nr)rrrrrr�
sr)r)rr)rrz)got an unexpected keyword argument 'spam'r.)rrrKr�)rrKc[s
|||fS)Nr)rr�binrrrr�/
s)rrrK)rKrrz"missing a required argument: 'foo')rKr)rrNrK)rNrK)rFrrFr�)r7r�rrr�test_signature_bind_kwonly
sN

z,TestSignatureBind.test_signature_bind_kwonlycCs�dd�dd�}t�|�}|jddddd	d
d�}|�t|j���dd
dddd	d
d�ff�|�|jddd	d
d��|�|jd�dS)Nr�)rc_sdS)Nr)rrvrrr�rrrr�>
sz=TestSignatureBind.test_signature_bind_arguments.<locals>.testr.rr:rAr��<)rvrrr�)rr.)r)r)rvr:r�)rrr�)r.r)	r1r�rr�r��	arguments�itemsr�r)r7r�r�rrrr�test_signature_bind_arguments=
s
z/TestSignatureBind.test_signature_bind_argumentsc
Csftj}ddd�dd�}t�|�}t�t|j����}x"dD]}||j|j	d�||<q:W|j|�
�d	�}||_|�|j
|d
ddd
dd�d
ddd
dif�|�|�
|d
d�d
ddddif�|�|j
|d
ddd
d�d
dddd
if�|�td��|j
|d
ddd
dd�WdQRX|�td��|j
|d
ddd�WdQRX|�td��|j
|d
dd�WdQRXdS)Nr�ryr�)rc[s||||||fS)Nr)r-�b_po�c_porrr�rrrr�N
szCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)r-rTrU)rC)r"rrr�r��)rrzbut was passed as a keywordr.)rrrUzparameter is positional only)rU)r-rT)r�ry)r1r�r�r�r�r�r"rRr�r�r�r�r�rFrFr)r7r�r�r�rrZnew_sigrrr�#test_signature_bind_positional_onlyK
s(

 z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}t�|�}|�ddd�}|�|jd�|jdddd�}|�|jd�dS)NcSsdS)Nr)rr7rvrrrr�l
szATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testrrr�)rrr�)r7rv)r1r�rr�r)r7r�r�rrrr�!test_signature_bind_with_self_argj
s
z3TestSignatureBind.test_signature_bind_with_self_argc	Cs�dd�}t�|�}|�td��|jddd�WdQRXdd�}|�|j|dd�d	d
dif�t�|�}|jdd�}|�|jdd
dii�dS)NcWs||fS)Nr)rrrrrr�u
sz?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rr)rrc_s||fS)Nr)rr�rrrr�~
s)rrrr�)r1r�rFrrr�rFrQ)r7r�r�rrrr�test_signature_bind_vararg_namet
s


z1TestSignatureBind.test_signature_bind_vararg_namecCsNdd�}|jjd}t�|i�}ttd��}|�|�||�dddddh�dS)	NcSsdd�td�D�S)NcSsh|]}||�qSrr)r�rrrr�	<setcomp>�
szWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<setcomp>r�)rrrrr�make_set�
szDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setrr�rr�r�r�)r�	co_constsrY�FunctionType�iterrr�rF)r7r[Zsetcomp_codeZsetcomp_func�iteratorrrr� test_signature_bind_implicit_arg�
s
z2TestSignatureBind.test_signature_bind_implicit_argN)r.r<r=r�rFrGrHrIrJrKrLrMrOrSrWrXrYrr`rrrrrE�s

7
rEc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoundArgumentsc	Cs<dd�}t�|��d�}|�td��t|�WdQRXdS)NcSsdS)Nr)rrrrr�
rhzITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foorzunhashable type)r1r�rrFrr')r7rrrrr�)test_signature_bound_arguments_unhashable�
sz<TestBoundArguments.test_signature_bound_arguments_unhashablec	CsTdd�}t�|��d�}|�||k�|�||k�|�|t�k�|�|t�k�t�|��d�}|�||k�|�||k�t�|��d�}|�||k�|�||k�d|jd<|�||k�|�||k�dd�}t�|��d�}|�||k�|�||k�dd�}t�|�}|jddd	�}|jddd
�}|�||k�|�||k�dS)NcSsdS)Nr)rrrrr�
rhzGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorrrcSsdS)Nr)rvrrrr�
rhzGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSsdS)Nr)rrvrrrr�
rh)rrv)rvr)r1r�rr-r6rNrQ)	r7rrZba2Zba3rZba4r�Zba1rrr�'test_signature_bound_arguments_equality�
s2

z:TestBoundArguments.test_signature_bound_arguments_equalityc
Cs�id�dddid�dd�}t�|�}|jdd	id
�}xLttjd�D]:}|j|d��$t�t�||��}|�	||�WdQRXqDWdS)N)rrryr�)rr�c[sdS)Nr)rrvrr�rrrr�
rhzETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foorr:)r)r�)
r1r�rrr�r�r�r�r�r�)r7rr�rr�Z
ba_pickledrrr�%test_signature_bound_arguments_pickle�
s
z8TestBoundArguments.test_signature_bound_arguments_picklecCsHid�dddid�dd�}t�|�}|jdd	id
�}|�t|�d�dS)N)rrryr�)rr�c[sdS)Nr)rrvrr�rrrr�
rhzCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foorr:)rz <BoundArguments \(a=20,.*\}\}\)>)r1r�rZassertRegexr�)r7rr�rrrr�#test_signature_bound_arguments_repr�
s
z6TestBoundArguments.test_signature_bound_arguments_reprc
CsTdid�dd�dd�}t�|�}|�d�}|��|�t|j���dddd	ifd
ifg�|jddddd
�}|��|�t|j���dddd	ifd
ddifg�dd�}t�|�}|�d�}|��|�t|j���dg�dd�}t�|�}|��}|��|�t|j���g�ddd�}t�|�}|��}|��|�t|j���dg�dS)Nr)rc_sdS)Nr)rrvrrr�rrrr�
rhzMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor)rr)rvr)rrrr�r.r:)r�)rr.)rvr)r)r:r�cSsdS)Nr)rrvrrrr�
rhcSsdS)Nrrrrrr�
rhrKcSsdS)Nr)rrrrr�
rh)rrK)r)rK)	r1r�rZapply_defaultsr�rsrQrRZbind_partial)r7rr�rrrr�-test_signature_bound_arguments_apply_defaults�
s:






z@TestBoundArguments.test_signature_bound_arguments_apply_defaultsN)r.r<r=rbrcrdrerfrrrrra�
s

rac@s$eZdZdd�Zdd�Zdd�ZdS)�TestSignaturePrivateHelperscCs:tj}|�|d�d�|�|d�d�|�|d�d�dS)Nz($self)r7z($self, obj)z($cls, /, obj)r�)r1Z_signature_get_bound_paramr�)r7�getterrrr�test_signature_get_bound_param�
sz:TestSignaturePrivateHelpers.test_signature_get_bound_paramcCs8t�|�\}}}|�||�|�||�|�||�dS)N)r1Z"_signature_strip_non_python_syntaxr�)r7�inputZclean_signatureZself_parameterZlast_positional_onlyZcomputed_clean_signatureZcomputed_self_parameterZcomputed_last_positional_onlyrrr�_strip_non_python_syntax�
sz4TestSignaturePrivateHelpers._strip_non_python_syntaxcCst|�dddd�|�dddd�|�dddd�|�dddd�|�d	ddd�|�d
d
dd�|�dddd�dS)NzZ($module, /, path, mode, *, dir_fd=None, effective_ids=False,
       follow_symlinks=True)zO(module, path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)rz($module, word, salt, /)z(module, word, salt)rz(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r�)rk)r7rrr�&test_signature_strip_non_python_syntaxsFzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r.r<r=rirkrlrrrrrg�
s
rgc@s$eZdZee�ed�dd���ZdS)�TestSignatureDefinitionsz6Signature information for builtins requires docstringsc

Cs
t�}dddddddh}||O}dh}||O}d	d
ddd
h}||O}ddh}||O}t�}tt�}xpt|���D]`\}}	t|	�s�qpt|	t�r�||kr�|�|�||kr�qp|j	|d��|�
t�|	��WdQRXqpWx0|D](}|j	|d��|�
|	j�WdQRXq�WdS)Nr�slicer�r�r�r^�vars�round�
breakpointr��maxr�__build_class__r��
__import__)r�)r0ror�r�rR�callabler�rZr r�ZassertIsNotNoner1r�r��__text_signature__)
r7Zno_signatureZneeds_groupsZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrrr9rrr�test_builtins_have_signatures7s2


z6TestSignatureDefinitions.test_builtins_have_signaturesN)r.r<r=rr�r#rrwrrrrrm3srmc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dS)N)r��_next)r7r�rrrr�mszNTimesUnwrappable.__init__cCs2|jdkrtd��|jdkr,t|jd�|_|jS)NrzUnwrapped too many timesr)r�rryrx)r7rrrrqs


zNTimesUnwrappable.__wrapped__N)r.r<r=r�rrrrrrrxlsrxc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
TestUnwrapcCs.dd�}tjdd�|�}|�t�|�|�dS)NcSs||S)Nr)rrvrrrr"|sz(TestUnwrap.test_unwrap_one.<locals>.funcr)r�)r��	lru_cacher�r1�unwrap)r7r"r�rrr�test_unwrap_one{szTestUnwrap.test_unwrap_onecCsTdd�}|}x"td�D]}t�|�dd��}qW|�|j|�|�t�|�|�dS)NcSs||S)Nr)rrvrrrr"�sz,TestUnwrap.test_unwrap_several.<locals>.funcr.cSsdS)Nrrrrrr��sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)rr�r�r�rr�r1r|)r7r"r��__rrr�test_unwrap_several�szTestUnwrap.test_unwrap_severalcCsTdd�}t�|�dd��}t�|�dd��}d|_tj|dd	�d
�}|�||�dS)NcSs||S)Nr)rrvrrr�func1�sz#TestUnwrap.test_stop.<locals>.func1cSsdS)Nrrrrr�func2�sz#TestUnwrap.test_stop.<locals>.func2cSsdS)Nrrrrrr��sz%TestUnwrap.test_stop.<locals>.wrapperrcSs
t|d�S)N�	stop_here)rX)r�rrrrl�rhz&TestUnwrap.test_stop.<locals>.<lambda>)�stop)r�r�r�r1r|r�)r7r�r�r�Z	unwrappedrrr�	test_stop�szTestUnwrap.test_stopc	Cs�dd�}||_|�td��t�|�WdQRXdd�}||_||_|�td��t�|�WdQRX|�td��t�|�WdQRXdS)NcSsdS)Nrrrrrr��rhz$TestUnwrap.test_cycle.<locals>.func1zwrapper loopcSsdS)Nrrrrrr��rhz$TestUnwrap.test_cycle.<locals>.func2)rrFr�r1r|)r7r�r�rrr�
test_cycle�szTestUnwrap.test_cyclecs6dd��d�_G�fdd�d�}|�t�|���dS)NcSsdS)Nrrrrrr"�rhz(TestUnwrap.test_unhashable.<locals>.funccseZdZdZ�ZdS)z%TestUnwrap.test_unhashable.<locals>.CN)r.r<r=�__hash__rr)r"rrrx�srx)rr�r1r|)r7rxr)r"r�test_unhashable�szTestUnwrap.test_unhashablec	Cs6tt��d�}|�td��t�|�WdQRXdS)Nrzwrapper loop)rxrV�getrecursionlimitrFr�r1r|)r7r9rrr�test_recursion_limit�szTestUnwrap.test_recursion_limitN)	r.r<r=r}rr�r�r�r�rrrrrzysrzc@sDeZdZdd�Zdd�Ze�edkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nr�z-mr1rrh)�	importlib�
import_moduler	�decoderr�r1r�)r7�module�rcr)�errr�rrr�test_only_source�s
zTestMain.test_only_sourcec	Cs2dd�}d|_|�t��t�|�WdQRXdS)NcSsdS)Nrrrrrr�sz)TestMain.test_custom_getattr.<locals>.foory)r�rrr1r�)r7rrrr�test_custom_getattr�szTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|����}|�|dd�t�t����|�|d�dS)Nz-mr1z%concurrent.futures:ThreadPoolExecutorrrh)r	r�rr�r1r�r)r7r�r)r�r�rrr�test_qualname_source�szTestMain.test_qualname_sourcecCs:t�d�}tddd�\}}}|����}|�|dg�dS)Nr�z-mr1rVz#Can't get info for builtin modules.)r�r�r
r�rr�)r7r�r]r)r�r�rrr�
test_builtins�s

zTestMain.test_builtinscCsft�d�}t��}t|d��\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nr��-mr1�	--detailsrh)r�r1r�r�)r�r�r
Z!optim_args_from_interpreter_flagsr	r�r|r.r��
__cached__r�)r7r�rr�r)r��outputrrr�test_details�s
zTestMain.test_details)r.r<r=r�r�r�r#rr�r�r�rrrrr��s	

r�c@s0eZdZe�d�Ze�d�Zdd�Zdd�ZdS)�
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    c	Cs>t�|�}t|��"}|�|���d�|�d��WdQRXdS)NT)r1r�r�r�r�r)r7rsr�Z
inspected_src�srcrrr�assertInspectEqual�s


zTestReload.assertInspectEqualc
Csdtd|j��N\}}t�|�}|�||�t|d��}|�|j�WdQRX|�||�WdQRXdS)NZ
reload_bugro)r�
src_beforer�r�r�r�ru�	src_after)r7rrsr�r�rrr�test_getsource_reload�s
z TestReload.test_getsource_reloadN)	r.r<r=�textwrap�dedentr�r�r�r�rrrrr��sr�cCs<tttttttttt	t
ttt
tttttttttttt�dS)N)rr)r�r6rKr�r�rPr3rMrRrTr�rnr�rEr:rargrmrrzr�r�r�r&rrrr�	test_mainsr��__main__)ar�r�rar�r�r1r�r�rqZos.pathrr�r�rxrVrYr�r`r�Z
unittest.mockr^�concurrent.futuresr�ImportErrorZtest.supportrrrrrZtest.support.script_helperr	r
r�rrSrr+r
Ztest.test_importrr�r�rmrr�r�r'r*r�r�r�r+rHrJrLr�rMrNrPr�r�r�r&r)r6rKrnrtr}r�r�r�rrr3rMrRrTr�r�r�r�r�r�r�r:rErargrmrxrzr�r�r�r.rrrr�<module>s�

7D
*:AzIc@k{b?9
<0