Your IP : 216.73.216.60


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_inspect.cpython-35.opt-2.pyc



���]\#�@sQddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZyddlmZWnek
r.dZYnXddlmZmZmZmZddlmZmZddlm Z m!Z!ddl"m#Z$ddl"m%Z&dd	l'm(Z(e$j)Z*e*j+d
df�r�e*dd�Z*e
e*�Z*d
d�Z,ddlZe$j-�Z.Gdd�dej/�Z0dd�Z1dd�Z2ej3dd��Z4Gdd�d�Z5Gdd�de0�Z6Gdd�de0�Z7Gdd�dej/�Z8Gdd �d e8�Z9Gd!d"�d"e8�Z:Gd#d$�d$e8�Z;Gd%d&�d&e8�Z<Gd'd(�d(e8�Z=Gd)d*�d*e>�Z?Gd+d,�d,e>�Z@d-d.�ZAGd/d0�d0ej/�ZBe>�ZCGd1d2�d2ej/�ZDGd3d4�d4ej/�ZEGd5d6�d6eE�ZFGd7d8�d8eF�ZGGd9d:�d:ej/�ZHGd;d<�d<ej/�ZIGd=d>�d>ej/�ZJGd?d@�d@ejK�ZLGdAdB�dBejM�ZNGdCdD�dDej/�ZOGdEdF�dFej/�ZPGdGdH�dHej/�ZQGdIdJ�dJej/�ZRGdKdL�dLej/�ZSGdMdN�dNej/�ZTGdOdP�dPej/�ZUGdQdR�dRej/�ZVGdSdT�dTej/�ZWdUdV�ZXeYdWkrMeX�dS)X�N)�normcase)�ThreadPoolExecutor)�run_unittest�TESTFN�
DirsOnSysPath�cpython_only)�MISSING_C_DOCSTRINGSr)�assert_python_ok�assert_python_failure)�inspect_fodder)�inspect_fodder2)�_ready_to_import�c�o�cGst|�f|S)N)r)�filename�args�r�1/opt/alt/python35/lib64/python3.5/test_inspect.py�revise7src
@speZdZeejejejejej	ej
ejejej
ejejejg�Zdd�ZdS)�
IsTestBasecCs�t|�}|j||�d|j|f�xq|jt|g�D]Y}|tjksj|tjkr||tjkr|qF|j	||�d|j|f�qFWdS)Nz%s(%s)z
not %s(%s))
�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�iscoroutinefunction�
isfunction�assertFalse)�self�	predicate�exp�obj�otherrrr�istestEs#zIsTestBase.istestN)r�
__module__�__qualname__rr�	isbuiltin�isclass�iscode�isframer�ismethod�ismodule�istraceback�isgeneratorr�iscoroutinerrr&rrrrr>srccs xtd�D]}|Vq
WdS)N�)�range)r!�irrr�generator_function_examplePsr5c�sdS)N�spamr)r!rrr�coroutine_function_exampleTsr7ccs	dVdS)Nr6r)r!rrr�gen_coroutine_function_exampleWsr8c@seZdZdd�ZdS)�EqualsToAllcCsdS)NTr)r!r%rrr�__eq__]szEqualsToAll.__eq__N)rr'r(r:rrrrr9\sr9c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestPredicatescCs�|jtjd�|jtjd�|jtjd�z�yddWn�tj�da|jtjd�|jtjd�t	t
d	�r�|jtjd
�n"|jtjt
tj�j��YnXWddaX|jtjd�|jtjd�|jtjd
�|jtjd�|jtjd�|jtjd�|jtjd�tj��8tjd�|jtjd�|jtjd�WdQRXt	t
d�r�|jtjd�n|jtjtjj��dS)Nzsys.exitz	[].appendzmod.spam.__code__rrr2ztb.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))r5�ignorezcoroutine_function_example(1)r7�MemberDescriptorTypezdatetime.timedelta.days)r&rr)r+�sys�exc_infor<r,r/�hasattr�typesZisgetsetdescriptorr �type�tb_frame�f_localsrr-r.�isdatadescriptorr0r�warnings�catch_warnings�simplefilterr1rZismemberdescriptor�datetimeZ	timedeltaZdays)r!rrr�test_excluding_predicatesbs8
+

z(TestPredicates.test_excluding_predicatescCs�td�}td�}|jtjt��|jtj|��|jtjt��|jtj|��|jtjt��|jtj|��|jtjt��|jtj|��|j	�|j	�dS)Nr)
r8r7r rrr1rrr0�close)r!�gen_coro�cororrr�test_iscoroutine�s 
zTestPredicates.test_iscoroutinecCsdd�}|jtj|���td�}td�}|jtj|��|jtj|��Gdd�d�}|jtj|���|jtj|��Gdd�d�}|�}dd	�|_|jtj|��|j�|j�dS)
Ncss	dVdS)Nrrrrr�gen�sz,TestPredicates.test_isawaitable.<locals>.genrc@seZdZdd�ZdS)z/TestPredicates.test_isawaitable.<locals>.FuturecSsdS)Nrrrrr�	__await__�sz9TestPredicates.test_isawaitable.<locals>.Future.__await__N)rr'r(rSrrrr�Future�srTc@seZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN)rr'r(rrrr�	NotFuture�srUcSsdS)Nrrrrr�<lambda>�sz1TestPredicates.test_isawaitable.<locals>.<lambda>)r rZisawaitabler7r8rrSrN)r!rRrPrOrTrUZnot_futrrr�test_isawaitable�s	
zTestPredicates.test_isawaitablecCs6|jtjtj��|jtjgj��dS)N)rrZ	isroutiner>r6�count)r!rrr�test_isroutine�szTestPredicates.test_isroutinecCs\|jtjd�|jtjt��Gdd�dt�}|jtj|���dS)Nz
mod.StupidGitc@seZdZdd�ZdS)z2TestPredicates.test_isclass.<locals>.CustomGetattrcSsdS)Nr)r!�attrrrr�__getattr__�sz>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)rr'r(r[rrrr�
CustomGetattr�sr\)r&rr*r�list�objectr )r!r\rrr�test_isclass�szTestPredicates.test_isclasscCsaGdd�dt�}|�}d|_ttj|��}|jd|�|jd|�dS)Nc@seZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C�a�bN)r`ra)rr'r(�	__slots__rrrr�C�src�*r`ra)r^r`�dictr�
getmembers�assertIn�assertNotIn)r!rc�x�membersrrr�test_get_slot_members�s		z$TestPredicates.test_get_slot_memberscs�ddlm}m�G�fdd�dd|�}Gdd�d|�}|�}|jtj|��|jtj|��|jtj|��|jtjt��|jtjd��dS)	Nr)�ABCMeta�abstractmethodcs"eZdZ�dd��ZdS)z<TestPredicates.test_isabstract.<locals>.AbstractClassExamplecSsdS)Nr)r!rrr�foo�sz@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN)rr'r(rnr)rmrr�AbstractClassExample�sro�	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdS)Nr)r!rrrrn�sz8TestPredicates.test_isabstract.<locals>.ClassExample.fooN)rr'r(rnrrrr�ClassExample�srq�)�abcrlrmrrZ
isabstractr �int)r!rlrorqr`r)rmr�test_isabstract�s	zTestPredicates.test_isabstractN)
rr'r(rMrQrWrYr_rkrurrrrr;`s%		r;c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs-tjj|||�tjddd�dS)N���	)�unittest�TestCase�__init__�git�abuse)r!r�kwargsrrrr|�szTestInterpreterStack.__init__cCs*|jtjd�|jtjd�dS)Nz	git.ex[2]zmod.fr)r&rr/r,)r!rrr�test_abuse_done�sz$TestInterpreterStack.test_abuse_donecCs�|jttj�dk�|jttjddd��tdddgdf�|jttjddd��tddd	gdf�|jttjd
dd��tddd
gdf�|jttjddd��tdddgdf�tjd}|j|jtj	�|j|j
d�|j|jtj�|j|j
d�|jd|jd�|j|jd�dS)Nrrrr��eggsz    st = inspect.stack()
ryr6z    eggs(b + d, c + f)
r2�+�arguez            spam(a, b, c)
��'r~z        self.argue(a, b, c)
zinspect.stack())r�lenr>�st�assertEqualr�modfile�assertIs�frame�fr�linenor�__file__�functionrg�code_context�index)r!�recordrrr�
test_stack�s     
zTestInterpreterStack.test_stackcCs�|jttj�d�|jttjddd��tdddgdf�|jttjddd��tddd	gdf�|jttjd
dd��tddd
gdf�dS)Nr�rrr�r�z            spam(a, b, c)
ryr6z    eggs(b + d, c + f)
r2�r�z    q = y / 0
)r�r�r}�trrr�)r!rrr�
test_trace�s   zTestInterpreterStack.test_tracecCs�tjtj�\}}}}|j|ddg�|j|d�|j|d�|j|ddddddi�|jtj||||�d�dS)Nri�y��p�z(x=11, y=14))r�getargvaluesr>r�r��formatargvalues)r!r�varargs�varkw�localsrrr�
test_frames"zTestInterpreterStack.test_framecCs�tjtjj�\}}}}|j|ddddddg�|j|d�|j|d�|jtj||||�d	�dS)
Nr`rar�d�e�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))rr�r>r��f_backr�r�)r!rr�r�r�rrr�test_previous_frames!"z(TestInterpreterStack.test_previous_frameN)	rr'r(r|r�r�r�r�r�rrrrrv�s		rvc@s:eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNc	Cs5ttj|j���}|j�|_WdQRXdS)N)�openr�
getsourcefile�fodderModule�read�source)r!�fprrr�setUpszGetSourceBase.setUpcCs1|jjd�}dj||d|��dS)N�
r)r��split�join)r!�top�bottom�linesrrr�sourcerange szGetSourceBase.sourcerangecCs)|jtj|�|j||��dS)N)r�r�	getsourcer�)r!r$r�r�rrr�assertSourceEqual$szGetSourceBase.assertSourceEqual)rr'r(r�r�r�r�rrrrr�sr�c@s$eZdZeZdd�Zdd�Zeje	j
jdkd�dd��Zeje	j
jdkd�d	d
��Z
ejed�dd
��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$S)%�TestRetrievingSourceCodec
Cs�tjttj�}|j|dtjfdtjfdtjfdtjfdtjfg�tj	dd�|D��}|j|t
fftjt
fftjtjtjffgtjt
fftjtjfftjtjtjffgggg�tj	dd�|D�d	�}|j|t
fftjt
fftjt
fftjtjfftjtjtjffgggg�dS)
N�FesteringGob�MalodorousPervert�ParrotDroppings�	StupidGitZTitcSsg|]}|d�qS)rr)�.0�clsrrr�
<listcomp>4s	z<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>cSsg|]}|d�qS)rr)r�r�rrrr�Cs	T)rrfr>r*r�r�r�r�r�Zgetclasstreer^)r!�classesZtreerrr�test_getclasses+s2					z(TestRetrievingSourceCode.test_getclassescCsMtjttj�}|j|dtjfdtjfdtjfg�dS)Nr��lobbestr6)rrfr>rr�r�r�r6)r!Z	functionsrrr�test_getfunctionsPsz*TestRetrievingSourceCode.test_getfunctionsr2z)Docstrings are omitted with -O2 and abovecCsU|jtjt�d�|jtjtj�d�|jtjtj�d�dS)NzA module docstring.zA longer,

indented

docstring.z$Another

docstring

containing

tabs)r�r�getdocr>r�r}r~)r!rrr�test_getdocVs
z$TestRetrievingSourceCode.test_getdoccCs�|jtjtj�d�|jtjtjj�d�|jtjtj�j�d�|jtjtjj�d�dS)NzA longer,

indented

docstring.z$Another

docstring

containing

tabszThe automatic gainsaying.)r�rr�r>r�r~Z
contradiction)r!rrr�test_getdoc_inherited_sz.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringscCs�tj}|j|t�tj�|j|tj�tjj�|j|t�j�tjj�|j|tj�tjj�|j|tj�tjj�dS)N)rZ_finddocr�rt�__doc__�to_bytes�
from_bytes�real)r!Zfinddocrrr�test_finddocks	"z%TestRetrievingSourceCode.test_finddoccCs|jtjd�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r�rZcleandoc)r!rrr�
test_cleandoctsz&TestRetrievingSourceCode.test_cleandoccCsw|jtjt�d�|jtjtj�d�tddd�}|jtj|��|jtjt��dS)Nz	# line 1
z
# line 20
zx=1z_non_existing_filename.py�exec)r�rZgetcommentsr>r��compile�assertIsNoner])r!�corrr�test_getcommentsxs
z)TestRetrievingSourceCode.test_getcommentscCs�|jtjt�t�|jtjtj�t�|jtjtjj�t�|jtjtjj�t�|jtjt�tjd�|jtjdt	�t�dS)N�builtins)
r�r�	getmoduler>r�r~�strrA�modulesr�)r!rrr�test_getmodule�s z'TestRetrievingSourceCode.test_getmodulecCsJtj|jjd�}|j|jdd�|j|jdd�dS)N�2rz	# line 1
rz'A module docstring.'
)rZgetframeinfor�r�r�r�)r!Z
frame_inforrr� test_getframeinfo_get_first_line�sz9TestRetrievingSourceCode.test_getframeinfo_get_first_linecCsF|jtjdd�|jtjdd�|jtjdd�dS)N�r���3�K�L)r�r}r~r>r�r�)r!rrr�test_getsource�sz'TestRetrievingSourceCode.test_getsourcecCs�|jttjtj��t�|jttjtj��t�d}t	d|d�}|jtj|�d�ddd|j
ftj|j
<z#|jttj|��|�Wdtj|j
=XdS)Nz2_non_existing_filename_used_for_sourcefile_test.py�Noner�r)
r�rrr�r>r6r�r}r~r��co_filename�	linecache�cache)r!�fnr�rrr�test_getsourcefile�s""#z+TestRetrievingSourceCode.test_getsourcefilecCs#|jtjtj�tj�dS)N)r�r�getfiler>r�r�)r!rrr�test_getfile�sz%TestRetrievingSourceCode.test_getfilec	CsWGdd�dt�}Gdd�dd|�}|jt��tj|�WdQRXdS)Nc@s"eZdZedd��ZdS)zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMcSs
t�dS)N)�AttributeError)r�rrrr'�szQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)rr'r(�propertyrrrr�CM�sr�c@seZdZdS)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CN)rr'r(rrrrrc�srcrp)rE�assertRaises�	TypeErrorrr�)r!r�rcrrr�!test_getfile_class_without_module�sz:TestRetrievingSourceCode.test_getfile_class_without_modulecCs�ddlm}d}||�}tj|<d|_d|_td|j�|jt	j
|jj�d�tj|=t	j
tddd	��dS)
Nr)�
ModuleTypeZ__inspect_dummyz<string>�dummyz
def x(): passza=10��single)rDr�rAr�r��
__loader__r��__dict__r�rr�ri�__code__r�r�)r!r��name�mrrr�test_getmodule_recursion�s		
z1TestRetrievingSourceCode.test_getmodule_recursioncs~d\��tj�d���fdd�}|t_z4i}tt��d�|�tj|d�Wd�t_XdS)N�<test>�def x(): pass
cs-|�kr�jdd�S�||�SdS)N�keependsT)�
splitlines)r�module_globals)r��getlinesr�rr�monkey�szHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr�ri)r�r�)r�r�r�r�rr�)r!r��nsr)r�r�r�r�test_proceed_with_fake_filename�s		z8TestRetrievingSourceCode.test_proceed_with_fake_filenamecCs|jtjjdd�dS)N�r�)r�r>r�r�)r!rrr�test_getsource_on_code_object�sz6TestRetrievingSourceCode.test_getsource_on_code_objectN)rr'r(r>r�r�r�rz�skipIfrA�flags�optimizer�r�rr�r�r�r�r�r�r�r�r�r�rrrrrrr�(s&%		
r�c@sFeZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscCs|jtjdd�dS)Nr��)r��mod2�wrapped)r!rrr�test_wrapped_decorator�sz%TestDecorators.test_wrapped_decoratorcCs|jtjdd�dS)Nry�
)r�r	Zgone)r!rrr�test_replacing_decorator�sz'TestDecorators.test_replacing_decoratorcCs|jtjdd�dS)N��)r�r	r�)r!rrr�test_getsource_unwrap�sz$TestDecorators.test_getsource_unwrapcCs|jtjdd�dS)N�q�s)r�r	Zfunc114)r!rrr�test_decorator_with_lambda�sz)TestDecorators.test_decorator_with_lambdaN)	rr'r(r	r�rr
rrrrrrr�s
rc@sveZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscCs|jtjdd�dS)N�)r�r	Zoll)r!rrr�test_oneline_lambda�sz!TestOneliners.test_oneline_lambdacCs|jtjdd�dS)N��)r�r	Ztll)r!rrr�test_threeline_lambda�sz#TestOneliners.test_threeline_lambdacCs|jtjdd�dS)N�!�")r�r	Ztlli)r!rrr�test_twoline_indented_lambda�sz*TestOneliners.test_twoline_indented_lambdacCs|jtjdd�dS)N�%)r�r	Zonelinefunc)r!rrr�test_onelinefunc�szTestOneliners.test_onelinefunccCs|jtjdd�dS)N�(�))r�r	Zmanyargs)r!rrr�
test_manyargs�szTestOneliners.test_manyargscCs|jtjdd�dS)N�,�-)r�r	Ztwolinefunc)r!rrr�test_twolinefunc�szTestOneliners.test_twolinefunccCs|jtjddd�dS)Nr�1)r�r	r`)r!rrr�test_lambda_in_listsz!TestOneliners.test_lambda_in_listcCs|jtjdd�dS)N�7)r�r	Z	anonymous)r!rrr�test_anonymousszTestOneliners.test_anonymousN)
rr'r(r	r�rrrrr!r$r&r(rrrrr�src@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zej
eed�p�ejjd�d�dd��Zdd�Zdd�Zdd�Zdd�ZdS)�TestBuggyCasescCs|jtjdd�dS)N�:�;)r�r	Zwith_comment)r!rrr�test_with_comment
sz TestBuggyCases.test_with_commentcCs|jtjddd�dS)Nr�?�@)r�r	Z
multiline_sig)r!rrr�test_multiline_sigsz!TestBuggyCases.test_multiline_sigcCs |jtj�jdd�dS)N�G�H)r�r	Zfunc69Zfunc71)r!rrr�test_nested_classsz TestBuggyCases.test_nested_classcCs|jtjdd�dS)N�M)r�r	Zfunc77)r!rrr�#test_one_liner_followed_by_non_namesz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|jtjjdd�dS)N�S)r�r	Zcls82Zfunc83)r!rrr�test_one_liner_dedent_non_namesz-TestBuggyCases.test_one_liner_dedent_non_namecCs|jtjdd�dS)N�X�Z)r�r	Zfunc88)r!rrr�&test_with_comment_instead_of_docstringsz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|jtjdd�dS)N�_�a)r�r	Zmethod_in_dynamic_class)r!rrr�test_method_in_dynamic_classsz+TestBuggyCases.test_method_in_dynamic_classr�z.pyz,unicodedata is not an external binary modulecCs0|jttjt�|jttjt�dS)N)r��OSErrorrr��unicodedata�
findsource)r!rrr�test_findsource_binary$sz%TestBuggyCases.test_findsource_binarycCs�dg}t|ddd�}|jttj|�|jttj|�dd||jftj|j<z@|j	tj|�|df�|j	tj|�|d�Wdtj|j=XdS)Nzx=1rZ_dynamically_created_filer�r)
r�r�r=rr?r�r�r�r�r�)r!r�r�rrr�!test_findsource_code_in_linecache+s	!z0TestBuggyCases.test_findsource_code_in_linecachecCsYxRddgD]D}td|d�}|jttj|�|jttj|�q
WdS)Nr�z<string>zx=1r�)r�r��IOErrorrr?r�)r!Zfnamer�rrr� test_findsource_without_filename7sz/TestBuggyCases.test_findsource_without_filenamecCs|jtjjdd�dS)N�v�w)r�r	ZClassWithMethod�method)r!rrr�test_getsource_on_method=sz'TestBuggyCases.test_getsource_on_methodcCs|jtjjdd�dS)N��)r�r	Zcls135Zfunc136)r!rrr�test_nested_func@szTestBuggyCases.test_nested_funcN)rr'r(r	r�r,r/r2r4r6r9r<rzrrCr>r��endswithr@rArCrGrJrrrrr)
sr)cs:eZdZ�fdd�Zdd�Zdd�Z�S)�	TestNoEOLcs�td|_tj|j�ttjj|jdtj�d��}|jd�WdQRXt	|j��ddl
}WdQRX||_t�j
�dS)NZ_dirzinspect_fodder3%spy�wzclass X:
    pass # No EOLr)r�tempdir�os�mkdirr��pathr��extsep�writerZinspect_fodder3r��superr�)r!r�Zmod3)�	__class__rrr�Es
	zTestNoEOL.setUpcCstj|j�dS)N)�shutil�rmtreerN)r!rrr�tearDownPszTestNoEOL.tearDowncCs|j|jjdd�dS)Nrr2)r�r��X)r!rrr�
test_classSszTestNoEOL.test_class)rr'r(r�rXrZrr)rUrrLDsrLc@s4eZdZdd�Zdd�Zdd�ZdS)�_BrokenDataDescriptorcGstd��dS)Nzbroken data descriptor)r�)rrrr�__get__[sz_BrokenDataDescriptor.__get__cGs
t�dS)N)�RuntimeError)rrrr�__set__^sz_BrokenDataDescriptor.__set__cGstd��dS)Nzbroken data descriptor)r�)rrrrr[asz!_BrokenDataDescriptor.__getattr__N)rr'r(r\r^r[rrrrr[Wsr[c@s(eZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorcGstd��dS)Nzbroken method descriptor)r�)rrrrr\isz_BrokenMethodDescriptor.__get__cGstd��dS)Nzbroken method descriptor)r�)rrrrr[lsz#_BrokenMethodDescriptor.__getattr__N)rr'r(r\r[rrrrr_esr_cCsdd�tj|�D�S)NcSs g|]}|dd��qS)Nr�r)r��trrrr�rs	z!attrs_wo_objs.<locals>.<listcomp>)r�classify_class_attrs)r�rrr�
attrs_wo_objsqsrbc	@s�eZdZdd�Zdddddd�Zdddgdiddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
eje
d�dd��Zeeje
d�dd���Zeeje
d�dd���Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�ZdS)3�TestClassesAndFunctionscCs�Gdd�dt�}Gdd�d|�}Gdd�d|�}Gdd�d||�}||||tf}tj|�}|j||�dS)	Nc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.AN)rr'r(rrrr�Axsrdc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BN)rr'r(rrrr�Bysrec@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CN)rr'r(rrrrrczsrcc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DN)rr'r(rrrr�D{srf)r^rZgetmror�)r!rdrercrf�expectedZgotrrr�test_newstyle_mrovsz)TestClassesAndFunctions.test_newstyle_mroNc
Cs�|jt�� tj|�\}}}	}
WdQRX|j||�|j||�|j|	|�|j|
|�|dk	r�|jtj|||	|
�|�dS)N)ZassertWarns�DeprecationWarningrZ
getargspecr��
formatargspec)r!�routine�args_e�	varargs_e�varkw_e�
defaults_e�	formattedrr�r��defaultsrrr�assertArgSpecEquals�s"z+TestClassesAndFunctions.assertArgSpecEqualsc
	Cs�tj|�\}
}}}
}}}|j|
|�|j||�|j||�|j|
|�|j||�|j||�|j||�|	dk	r�|jtj|
|||
|||�|	�dS)N)r�getfullargspecr�rj)r!rkrlrmrnro�kwonlyargs_e�kwonlydefaults_e�ann_erprr�r�rqZ
kwonlyargsZkwonlydefaultsZannrrr�assertFullArgSpecEquals�s$z/TestClassesAndFunctions.assertFullArgSpecEqualscCs�|jtjddgdd�|jtjddddd	d
gdddd�|jt|jtjg�|jt|jtjg�|jt|jtj	g�dS)Nrir�rpz(x, y)r`rarr�r�r�r�r�r��rrz!(a, b, c, d=3, e=4, f=5, *g, **h))r�rxrr)
rrr>r�r6r��
ValueErrorr	�	keyworded�	annotated�keyword_only_arg)r!rrr�test_getargspec�s	

z'TestClassesAndFunctions.test_getargspeccCs�|jtjgddddgdddidd�|jtjdgd	dtidd
�|jtjgddgdd�dS)
Nrm�arg1rt�arg2rurrpz(*arg1, arg2=1)rvz(arg1: list)�argz(*, arg))rwr	rzr{r]r|)r!rrr�test_getfullargspec�s		z+TestClassesAndFunctions.test_getfullargspeccs%tjtj�dd��}�j|ddgdd��j|ddgdd��jtj|�ddgdd��fdd�}Gd	d
�d
�}||��||j�||�j�||j�||�j�Gdd�d�}||�Gd
d�d�}||�dS)NcSsdS)Nr)rir�rrr�ham�szETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamrir�rpz(x, y)cs#�j|dddgdd�dS)Nr!rir�rpz(self, x, y))rr)r�)r!rr�check_method�szNTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.check_methodc@s[eZdZejej�dd��Zeje�Z	ejej�dd��Z
dS)zCTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.CcSsdS)Nr)r!rir�rrrr��szGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSsdS)Nr)r!rir�rrr�__call__�szLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)rr'r(�	functools�wrapsr>r6r��
partialmethod�phamr�rrrrrc�srcc@s.eZdZejej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSsdS)Nr)r!rir�rrr�__new__�szOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)rr'r(r�r�r>r6r�rrrr�C_new�sr�c@s.eZdZejej�dd��ZdS)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSsdS)Nr)r!rir�rrrr|�szQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)rr'r(r�r�r>r6r|rrrr�C_init�sr�)	r�r�r>r6rrrw�partialr�r�)r!r�r�rcr�r�r)r!r� test_argspec_api_ignores_wrapped�s 



z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs\dd�}tjdtjj�}tjd|f�|_|j|ddgdd�dS)NcSsdS)Nrrrrr�test�szHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testr6�
parametersrlrpz(spam))r�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__rw)r!r�Z
spam_paramrrr�"test_getfullargspec_signature_attr�sz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsrddddd��}tj|�}|j|j|j�dd�}tj|�}|j|j|j�dS)Nr6r�)r`�returncSsdS)Nr)r`rrrr��szITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdS)Nrrrrrr��s)rrsr��__annotations__Zannotations)r!r��specrrr�#test_getfullargspec_signature_annos�sz;TestClassesAndFunctions.test_getfullargspec_signature_annosz6Signature information for builtins requires docstringscCs�|jtjjdddgdd�|jtjtj��jdddgdd�|jtjddgddd	gd
ddd	didd�dS)
Nrlr!r$rpz(self, obj)rQrt�dir_fd�follow_symlinksruTz,(path, *, dir_fd=None, follow_symlinks=True))rw�_pickle�Pickler�dump�io�BytesIOrO�stat)r!rrr�#test_getfullargspec_builtin_methods�s		z;TestClassesAndFunctions.test_getfullargspec_builtin_methodscCs?ddl}|j}tj|�}|j|jdd�dS)Nr�avocado)�	_testcapi�&docstring_with_signature_with_defaultsrrsr�rq)r!r��builtinr�rrr� test_getfullagrspec_builtin_funcs	z8TestClassesAndFunctions.test_getfullagrspec_builtin_funcc	Cs=ddl}|j}|jt��tj|�WdQRXdS)Nr)r��docstring_no_signaturer�r�rrs)r!r�r�rrr�-test_getfullagrspec_builtin_func_no_signatures	zETestClassesAndFunctions.test_getfullagrspec_builtin_func_no_signaturecCs0Gdd�dt�}|j|jdg�dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getargspec_method.<locals>.AcSsdS)Nr)r!rrrr�sz;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN)rr'r(r�rrrrrdsrdr!)r^rrr�)r!rdrrr�test_getargspec_methodsz.TestClassesAndFunctions.test_getargspec_methodcCsKGdd�dt�}t|�}|jddtf|d�|jddtf|d�|jdd	|f|d
�|jdd|f|d
�|jdd|f|d�|jdd|f|d|�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�Gdd�d|�}t|�}|jdd	|f|d
�|jdd|f|d
�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�Gdd�d|�}t|�}|jdd	|f|d
�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�Gd d!�d!||�}t|�}|jdd	|f|d
�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|f|d�|jdd|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!sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSsdS)Nr)r�rrrr$sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSsdS)Nr)r!rrr�getp'sz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSsdS)Nr)r!rrrr�*sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSsdS)Nr)r!rrr�m1,sz<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)rr'r(r��staticmethodr�classmethodr�r�r�r�r��datablobr[�ddr_�mdrrrrrds	rdr�rFzmissing __new__r|zmissing __init__r�z
static methodzmissing static methodrzclass methodzmissing class methodr�r�zmissing propertyr�zmissing plain method: %rr�zmissing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSsdS)Nr)r!rrrr�Dsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mN)rr'r(r�rrrrreBsrec@s(eZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSsdS)Nr)r!rrrr�Ssz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSsdS)Nr)r!rrrrTsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)rr'r(r�rrrrrrcQsrcc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdS)Nr)r!rrrr�bsz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)rr'r(r�rrrrrf`srf)r^rbrg)r!rd�attrsrercrfrrr�test_classify_newstylesVz.TestClassesAndFunctions.test_classify_newstylecCsFx?tt�D]1}tt|�}t|t�r
tj|�q
WdS)N)�dir�__builtins__�getattr�
isinstancerErra)r!r�r�rrr�test_classify_builtin_typesnsz3TestClassesAndFunctions.test_classify_builtin_typescCs�Gdd�dt�}Gdd�dd|�}tjdd||jd�}|j|tj|��tjdd|d�}|j|tj|��dS)	Ncs"eZdZ�fdd�Z�S)zITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metacs |dkrdSt�j|�S)Nr�r6)rTr[)r!r�)rUrrr[xszUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__)rr'r(r[rr)rUr�Metawsr�c@s%eZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcSsdS)Nr�r)r!rrrr�}szKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)rr'r(rD�DynamicClassAttributer�rrrr�VA|sr�rpr�r�r6)rEr�	Attributer�rgra)r!r�r�Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttributevsz;TestClassesAndFunctions.test_classify_DynamicClassAttributecspG�fdd�dt��G�fdd�dt�}tjdd||j�}|j|tj|��dS)Ncs.eZdZ�fdd�Zdd�ZdS)zDTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolcs��S)Nr)r!r%)�NoBoolrrr:�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSstd��dS)Nz,This object does not specify a boolean value)�NotImplementedError)r!rrr�__bool__�szMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)rr'r(r:r�r)r�rrr��sr�cseZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)rr'r(r�r)r�rr�HasNB�sr�r�r�)r^rr�r�rgra)r!r�Zshould_find_attrr)r�r�test_classify_overrides_bool�sz4TestClassesAndFunctions.test_classify_overrides_boolcCsdGdd�dt�}Gdd�dd|�}tjdd|d�}|j|tj|��dS)	Nc@s"eZdZdZdd�ZdS)zMTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta�slapcSsddddgS)NrUr'r�fishr)r!rrr�__dir__�szUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)rr'r(r�r�rrrrr��sr�c@seZdZdS)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassN)rr'r(rrrr�Class�sr�rpr�r�r�)rErr�rgra)r!r�r��should_findrrr�'test_classify_metaclass_class_attribute�sz?TestClassesAndFunctions.test_classify_metaclass_class_attributecCsdGdd�dt�}Gdd�dd|�}tjdd|d�}|j|tj|��dS)	Ncs.eZdZdd�Z�fdd�Z�S)zDTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.MetacSsddddgS)NrUr'r�BOOMr)r�rrrr��szLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs |dkrdSt�j|�S)Nr�rd)rTZ_Meta__getattr)r!r�)rUrrr[�szPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__)rr'r(r�r[rr)rUrr��sr�c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassN)rr'r(rrrrr��sr�rpr�r�rd)rErr�rgra)r!r�r�r�rrr�test_classify_VirtualAttribute�sz6TestClassesAndFunctions.test_classify_VirtualAttributec	sGdd�dt��Gdd�dt��G��fdd�d���}Gdd�dd	��}Gd
d�d|d	|�}tjdd
�d�}tjdd
�d�}tjdd
|d�}tj|�}x'|||fD]}|j||�q�WdS)Ncs.eZdZdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1cSsddddgS)NrUr'r�oner)r�rrrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs |dkrdSt�j|�S)Nr�r)rTr[)r!r�)rUrrr[�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__)rr'r(r�r[rr)rUr�Meta1�sr�cs.eZdZdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)NrUr'r�twor)r�rrrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs |dkrdSt�j|�S)Nr�r2)rTr[)r!r�)rUrrr[�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__)rr'r(r�r[rr)rUr�Meta2�sr�cs7eZdZ��fdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs<tttddddg�j|��j|����S)NrUr'r�three)r]�sortedrr�)r�)r�r�rrr��s	z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cs |dkrdSt�j|�S)Nr�r�)rTr[)r!r�)rUrrr[�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__)rr'r(r�r[r)r�r�)rUr�Meta3�sr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1N)rr'r(rrrr�Class1�sr�rpc@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2N)rr'r(rrrr�Class2�sr�r�r�rr�r2r�r�)rErr�rarg)	r!r�r�r�Zshould_find1Zshould_find2Zshould_find3ZccaZsfr)r�r�r�,test_classify_VirtualAttribute_multi_classes�s"zDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classescCs_Gdd�dt�}Gdd�dd|�}dd�tj|�D�}|jd|�dS)	Nc@seZdZdd�ZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.McSs
dddgS)NrUr�missingr)r�rrrr��szSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N)rr'r(r�rrrr�M�sr�c@seZdZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CN)rr'r(rrrrrc�srcrpcSsg|]}|d�qS)rr)r�r`rrrr��s	zTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r�)rErrarh)r!r�rcr�rrr�(test_classify_class_attrs_with_buggy_dir�sz@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dircCs
Gdd�dt�}dd�}|tj�}|tj�}|jtj||�d|jdfg�|jtj||�d|jdfg�Gdd�d|�}|jtj||�d|jdfg�|jtj||�d|jdfg�dS)	Nc@s"eZdZe�Ze�ZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)rr'r(r[r�r_r�rrrrrd�s	rdcs/Gdd�dt����fdd�}|S)Nc@seZdZdS)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyN)rr'r(rrrr�Empty�sr�cs2dt|�kr(t�|j�r(dS�|�S)NrF)r�rCr)ri)r��predrrr
�s$zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped)r^)r�r
r)r�r�r�pred_wrapper�szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr�r�c@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BN)rr'r(rrrrre�sre)r^r�ismethoddescriptorrHr�rfr�)r!rdr�r�rHrerrr�test_getmembers_descriptors�sz3TestClassesAndFunctions.test_getmembers_descriptorscCs�Gdd�d�}|jd|jftj|��|jd|jftj|tj��|�}|jd|jftj|��|jd|jftj|tj��dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getmembers_method.<locals>.BcSsdS)Nr)r!rrrr��sz;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN)rr'r(r�rrrrre�srer�)rgr�rrfrhr-)r!rerarrr�test_getmembers_method�s"(	"z.TestClassesAndFunctions.test_getmembers_methodcCshGdd�dt�}Gdd�dd|�}|jd	tj|��|jd
tj|���dS)Ncs"eZdZ�fdd�Z�S)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mcs |dkrdSt�j|�S)Nr��	scrambled)rTr[)r�r�)rUrrr[szOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__)rr'r(r[rr)rUrr�sr�c@s%eZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdS)Nr6r)r!rrrr�	szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)rr'r(rDr�r�rrrrrdsrdrpr�r�r6)r�r�)r�r6)rErgrrf)r!r�rdrrr� test_getmembers_VirtualAttributesz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCs_Gdd�dt�}Gdd�dd|�}dd�tj|�D�}|jd|�dS)	Nc@seZdZdd�ZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSs
dddgS)NrUrr�r)r�rrrr�szITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__N)rr'r(r�rrrrr�sr�c@seZdZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CN)rr'r(rrrrrcsrcrpcSsg|]}|d�qS)rr)r�r`rrrr�s	zJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r�)rErrfrh)r!r�rcr�rrr�test_getmembers_with_buggy_dirsz6TestClassesAndFunctions.test_getmembers_with_buggy_dir)rr'r(rhrrrwr}r�r�r�r�rzrrr�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrcusB
(				P

#	 
rcc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestGetClosureVarscCs}dd�}t�}d|i}dti}dti}dh}tj||||�}|jtj||��|�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)r�r�r)r�rr�sz2TestGetClosureVars.test_name_resolution.<locals>.fr�r�r�r�)r^r�r�r�ClosureVarsr��getclosurevars)r!r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesrgrrr�test_name_resolutions		z'TestGetClosureVars.test_name_resolutioncCs}dd�}t�}d|i}dti}dti}dh}tj||||�}|jtj||��|�dS)Ncs�fdd�}|S)Nc3st|�tt�dVdS)N)r�r�r�)r�)r�rrr�-sz?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.gr)r�r�r)r�rr�,sz4TestGetClosureVars.test_generator_closure.<locals>.fr�r�r�r�)r^r�r�rr�r�r�)r!r�r�r�r�r�r�rgrrr�test_generator_closure+s		z)TestGetClosureVars.test_generator_closurecCs�Gdd�d�}t�}d|i}dti}dti}dh}tj||||�}|jtj|�j|��|�dS)Nc@seZdZdd�ZdS)z1TestGetClosureVars.test_method_closure.<locals>.Ccs�fdd�}|S)Ncst|�tt�dS)N)r�r�r�)r�)r�rrr�=sz>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r!r�r�r)r�rr�<sz3TestGetClosureVars.test_method_closure.<locals>.C.fN)rr'r(r�rrrrrc;srcr�r�r�r�)r^r�r�rr�r�r�r�)r!rcr�r�r�r�r�rgrrr�test_method_closure:s		z&TestGetClosureVars.test_method_closurecsdd��dd�}dd�}dd�}�fd	d
�����fdd�}|d
�}|d�}||d�}�j�|�dd
i��j�|�ddi��j�|�ddd|i��j�dd�d��ddi��|�dS)NcSstj|�jS)N)rr�Z	nonlocals)r�rrr�_nonlocal_varsKsz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscs�fdd�}|S)Ncs�|S)Nr)r�)rirr�addOszFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)rir�r)rir�
make_adderNsz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�S)Nr)r)r~�funcrrrVTszFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�r~r)r~r�r�currySsz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs
||kS)Nr)r`rarrr�	less_thanVsz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs%�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�S)Nr)ri)r�rrrV\szMTestGetClosureVars.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�Zs	z0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs#�j�|�d�ji�dS)Nr�)r�r�)r�)r�r�r!rr�check_y_combinator`szATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorrr2rrrir~r�cs�fdd�S)Ncs�|S)Nr)r�)rirrrVkszITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>r)rir)rirrVksz7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r!r�r�r�r�ZincZadd_twoZgreater_than_fiver)r�r�r!r�test_nonlocal_varsIs 
z%TestGetClosureVars.test_nonlocal_varscCscdd�}tjiiit��}|jtjdd��|�|jtj|�|�dS)NcSsdS)Nrrrrrrnpsz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdS)NTrrrrrrVrsz>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)rr�rr�r�)r!rnZ_emptyrrr�test_getclosurevars_emptyosz,TestGetClosureVars.test_getclosurevars_emptycCsYGdd�d�}|jttjd�|jttjt�|jttji�dS)Nc@seZdZdS)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TN)rr'r(rrrr�Tvsr�r)r�r�rr�r])r!r�rrr�test_getclosurevars_errorusz,TestGetClosureVars.test_getclosurevars_errorcCs'd}i}t||�|d|fS)Nzdef f(): print(path)r�)r�)r!�coderrrr�_private_globals{s
z#TestGetClosureVars._private_globalscCs`|j�\}}|jdd�tjiidtidh�}|jtj|�|�dS)Nr�r�rQ)r�poprr�r�r�r�)r!r�rrgrrr�test_builtins_fallback�s!z)TestGetClosureVars.test_builtins_fallbackcCs`|j�\}}ddi|d<tjiiddidh�}|jtj|�|�dS)NrQrr�r�)rrr�r�r�)r!r�rrgrrr�test_builtins_as_dict�s!z(TestGetClosureVars.test_builtins_as_dictcCs]|j�\}}t|d<tjiidtjidh�}|jtj|�|�dS)Nr�rQr�)rrOrr�rQr�r�)r!r�rrgrrr�test_builtins_as_module�s
$z*TestGetClosureVars.test_builtins_as_moduleN)
rr'r(r�r�r�r�r�rrrrrrrrrr�s&r�c@s�eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCsXt|pid|�}td|d|�}td|d|�}|j||�dS)Nr�zfunc(%s)zinspect.getcallargs(func, %s))rerr�)r!r��call_params_string�locsZr1Zr2rrr�assertEqualCallArgs�s

	z,TestGetcallargsFunctions.assertEqualCallArgsc Cst|pid|�}ytd|d|�Wn+tk
r]}z|}WYdd}~XnX|jd�ytd|d|�Wn+tk
r�}z|}WYdd}~XnX|jd�|jt|�t|��|jt|�t|��~~dS)Nr�zfunc(%s)zException not raisedzinspect.getcallargs(func, %s))rer�	ExceptionZfailr�rEr�r�)r!r�Zcall_param_stringr	r�Zex1Zex2rrr�assertEqualException�s


z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)Nzlambda %s: locals())r)r!�	signaturerrrr�makeCallable�sz%TestGetcallargsFunctions.makeCallablecCs3|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d	�|j|d
�|j|d�|j|d�|j|d
�|j|d�|j|d�|j|d�|j|d�|j|d�|j|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))rr
)r!r�rrr�
test_plain�s&z#TestGetcallargsFunctions.test_plaincCss|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�dS)Nz
a, b=1, *crz2, 3z2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4]))rr
)r!r�rrr�test_varargs�sz%TestGetcallargsFunctions.test_varargscCs�|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d	�|j|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))rr
)r!r�rrr�
test_varkw�sz#TestGetcallargsFunctions.test_varkwcCss|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|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))rr
)r!r�rrr�test_varkw_only�sz(TestGetcallargsFunctions.test_varkw_onlycCs�|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d	�|jd
�}|j|d�|j|d�|j|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)rr
r)r!r�rrr�test_keyword_only�sz*TestGetcallargsFunctions.test_keyword_onlycCs�|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|jd	�}|j|d�|j|d�|j|d
�|j|d�|j|d�|j|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))rr
)r!r�rrr�test_multiple_features�sz/TestGetcallargsFunctions.test_multiple_featuresc	CsL|jd�}|jd�}|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�x�||fD]�}|j|d	�|j|d
�|j|d�|j|d�|j|d
�|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�q�W|jd�}|j|d�|j|d�|jd�}|j|d�|j|d�dd�}|jtd��tj|�WdQRXdd�}|jtd��tj|�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)r`rrr�f5Bsz0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSsdS)Nr)r`rarrrr�f6Isz0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c')rr�assertRaisesRegexr�rZgetcallargs)	r!Zf0�f1�f2r��f3�f4rrrrr�test_errorssJ	
z$TestGetcallargsFunctions.test_errors)
rr'r(r
rrrrrrrrrrrrrr�s	
rcs.eZdZdd�Z�fdd�Z�S)�TestGetcallargsMethodscCs/Gdd�dt�}||_|�|_dS)Nc@seZdZdS)z)TestGetcallargsMethods.setUp.<locals>.FooN)rr'r(rrrr�FooQsr )r^r��inst)r!r rrrr�Ps	zTestGetcallargsMethods.setUpcs2tt|�j}|d|�|j_|jjS)Nzself, )rTrrr�rFr!)r!r
�mk)rUrrrVsz#TestGetcallargsMethods.makeCallable)rr'r(r�rrr)rUrrNsrcs[eZdZ�fdd�Zd�fdd�Zd�fdd�Zddd	�Z�S)
�TestGetcallargsUnboundMethodscs tt|�j|�|jjS)N)rTr#rr�rF)r!r
)rUrrr^sz*TestGetcallargsUnboundMethods.makeCallableNcs%tt|�j|j|||��S)N)rTr#r
�_getAssertEqualParams)r!r�rr	)rUrrr
bsz1TestGetcallargsUnboundMethods.assertEqualCallArgscs%tt|�j|j|||��S)N)rTr#rr$)r!r�rr	)rUrrrfsz2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,t|pid|j�}|d||fS)Nr!zinst,)rer!)r!r�rr	rrrr$jsz3TestGetcallargsUnboundMethods._getAssertEqualParams)rr'r(rr
rr$rr)rUrr#\sr#c@seZdZdd�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�}|�}|jtj|d�|j�|jtj|dd�|j�|jt��tj|d�WdQRX|jtj|dd�d�dS)Nc@seZdZe�ZdS)z+TestGetattrStatic.test_basic.<locals>.ThingN)rr'r(r^rirrrr�Thingssr&rir�r�)r^r�r�getattr_staticrir�r�)r!r&�thingrrr�
test_basicrs	"zTestGetattrStatic.test_basiccCsXGdd�dt�}Gdd�d|�}|�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z/TestGetattrStatic.test_inherited.<locals>.ThingN)rr'r(r^rirrrrr&sr&c@seZdZdS)z4TestGetattrStatic.test_inherited.<locals>.OtherThingN)rr'r(rrrr�
OtherThing�sr*ri)r^r�rr'ri)r!r&r*Z	somethingrrr�test_inherited~s	z TestGetattrStatic.test_inheritedcCsdGdd�dt�}|d�}|jtj|d�d�|`|jtj|d�d�dS)Nc@s"eZdZdZdd�ZdS)z3TestGetattrStatic.test_instance_attr.<locals>.Thingr2cSs
||_dS)N)ri)r!rirrrr|�sz<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)rr'r(rir|rrrrr&�sr&r�rir2)r^r�rr'ri)r!r&r(rrr�test_instance_attr�s
z$TestGetattrStatic.test_instance_attrcCsBGdd�dt�}|�}|jtj|d�|j�dS)Nc@s"eZdZedd��ZdS)z.TestGetattrStatic.test_property.<locals>.ThingcSstd��dS)NzI'm pretending not to exist)r�)r!rrrri�sz0TestGetattrStatic.test_property.<locals>.Thing.xN)rr'r(r�rirrrrr&�sr&ri)r^r�rr'ri)r!r&r(rrr�
test_property�s	zTestGetattrStatic.test_propertycsdGdd�dt�}|��G�fdd�dt�}|�}|jtj|d���dS)Nc@seZdZdd�ZdS)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWstd��dS)NzI'm pretending not to exist)r�)�_rrrr\�szSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__N)rr'r(r\rrrr�
descriptor�sr/cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN)rr'r(rir)�descrrr&�sr&ri)r^r�rr')r!r/r&r(r)r0r�%test_descriptor_raises_AttributeError�s
		z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs9Gdd�dt�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z4TestGetattrStatic.test_classAttribute.<locals>.ThingN)rr'r(r^rirrrrr&�sr&ri)r^r�rr'ri)r!r&rrr�test_classAttribute�sz%TestGetattrStatic.test_classAttributecCs=Gdd�dt�}|jtj|d�|jd�dS)Nc@s.eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jS)N)�_x)r!rrrri�sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)rr'r(rDr�rir^r3rrrrr&�sr&ri)r^r�rr'r�)r!r&rrr�test_classVirtualAttribute�sz,TestGetattrStatic.test_classVirtualAttributecCsOGdd�dt�}Gdd�d|�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingN)rr'r(r^rirrrrr&�sr&c@seZdZdS)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingN)rr'r(rrrrr*�sr*ri)r^r�rr'ri)r!r&r*rrr�test_inherited_classattribute�sz/TestGetattrStatic.test_inherited_classattributecCs�Gdd�dt�}|�}|jtj|d�|j�|jtj|d�d�|`|jtj|d�|j�dS)Nc@s+eZdZdZdgZdd�ZdS)z+TestGetattrStatic.test_slots.<locals>.Thing�barricSs
d|_dS)Nrn)ri)r!rrrr|�sz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)rr'r(r�rbr|rrrrr&�s	r&rir�r6)r^r�rr'ri)r!r&r(rrr�
test_slots�s	zTestGetattrStatic.test_slotscCs�Gdd�dt�}Gdd�dtd|�}|jtj|d�d�Gdd	�d	|�}Gd
d�dtd|�}|jtj|d�d�Gdd
�d
|�}|jtj|d�d�dS)Nc@seZdZdZdS)z.TestGetattrStatic.test_metaclass.<locals>.metarnN)rr'r(rZrrrr�meta�sr8c@seZdZdS)z/TestGetattrStatic.test_metaclass.<locals>.ThingN)rr'r(rrrrr&�sr&rprZrnc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subN)rr'r(rrrr�sub�sr9c@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�N)rr'r(rirrrrr*�sr*c@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingN)rr'r(rrrr�OtherOtherThing�sr:rir�)rEr^r�rr')r!r8r&r9r*r:rrr�test_metaclass�sz TestGetattrStatic.test_metaclasscCs?|jtjddd�d�|jtjdd�d�dS)Nrrn�lower)r�rr'�assertNotEqual)r!rrr�test_no_dict_no_slots�sz'TestGetattrStatic.test_no_dict_no_slotscCs?tt��,}|jtj|d�t|�j�WdQRXdS)Nr�)r�r�r�rr'rEr�)r!�handlerrr�%test_no_dict_no_slots_instance_member�sz7TestGetattrStatic.test_no_dict_no_slots_instance_membercCsRGdd�dt�}Gdd�d|�}|jtj|�d�|j�dS)Nc@s%eZdZdgZdd�ZdS)z5TestGetattrStatic.test_inherited_slots.<locals>.ThingricSs
d|_dS)Nrn)ri)r!rrrr|�sz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)rr'r(rbr|rrrrr&�s	r&c@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingN)rr'r(rrrrr*�sr*ri)r^r�rr'ri)r!r&r*rrr�test_inherited_slots�sz&TestGetattrStatic.test_inherited_slotscs�Gdd�dt��G�fdd�dt�}|�}d|jd<|jtj|d�d�dd��_|jtj|d�|jd�dS)	Nc@seZdZdd�ZdS)z5TestGetattrStatic.test_descriptor.<locals>.descriptorcSsdS)Nr�r)r!�instance�ownerrrrr\�sz=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__N)rr'r(r\rrrrr/�sr/cseZdZ��ZdS)z.TestGetattrStatic.test_descriptor.<locals>.FooN)rr'r(r�r)r/rrr �sr rr�cSsdS)Nr)r�r4�vrrrrV�sz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r^r�r�rr'r^)r!r rnr)r/r�test_descriptor�s	
z!TestGetattrStatic.test_descriptorcsuGdd�dt��G�fdd�dt�}Gdd�dtd|�}|jtj|d�|jd�dS)	Nc@seZdZdd�ZdS)zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSsdS)Nr�r)r!rBrCrrrr\szLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__N)rr'r(r\rrrrr/sr/cseZdZ��ZdS)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaN)rr'r(r�r)r/rrr8sr8c@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingN)rr'r(rrrrr&sr&rpr�)r^rEr�rr'r�)r!r8r&r)r/r�test_metaclass_with_descriptorsz0TestGetattrStatic.test_metaclass_with_descriptorcCs�Gdd�dt�}Gdd�d|�}|�}|jtj|d�d�|j|j�|jtj|d�d�dS)Nc@seZdZdZdS)z6TestGetattrStatic.test_class_as_property.<locals>.Baser�N)rr'r(rnrrrr�BasesrGc@s(eZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tS)NT)�executedr^)r!rrrrUs	zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)rr'r(rHr�rUrrrr�	SomethingsrIrnr�)r^r�rr'r rH)r!rGrIrBrrr�test_class_as_property
s	z(TestGetattrStatic.test_class_as_propertycCs�Gdd�dt�}Gdd�dt�}Gdd�d|d|�}|jtj|�d�d	�|jtj|d�d	�dS)
Nc@s"eZdZedd��ZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.MetacSstfS)N)r^)r!rrr�__mro__sz<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)rr'r(r�rKrrrrr�sr�c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�N)rr'r(rnrrrrrG#srGc@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingN)rr'r(rrrrrI&srIrprnr�)rEr^r�rr')r!r�rGrIrrr�test_mro_as_propertys
z&TestGetattrStatic.test_mro_as_propertycsm|�d�_G�fdd�dt�}|�}d|_|jtj|d�d�|j�j�dS)NFcs.eZdZdZe�fdd��ZdS)z4TestGetattrStatic.test_dict_as_property.<locals>.Foor�cs
d�_iS)NT)�called)r!)r�rrr�2s	z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)rr'r(r`r�r�r)r�rrr 0sr rxr`r�)rMrer`r�rr'r )r!r rnr)r�r�test_dict_as_property,s			z'TestGetattrStatic.test_dict_as_propertycs�|�d�_G�fdd�dt�}Gdd�dt�}|�}|�|_|jtj|d�d�|j�j�dS)NFcs(eZdZd��fdd�Z�S)z9TestGetattrStatic.test_custom_object_dict.<locals>.CustomNcs d�_t�j||�dS)NT)rMrT�get)r!�key�default)rUr�rrrOAs	z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get)rr'r(rOr)r�)rUr�Custom@srRc@seZdZdZdS)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)rr'r(r`rrrrr Esr r`r�)rMrer^r�r�rr'r )r!rRr rnr)r�r�test_custom_object_dict<s		z)TestGetattrStatic.test_custom_object_dictcCshGdd�dt�}Gdd�dd|�}|�}|jtj|d�d�|j|j�dS)Nc@s"eZdZedd��ZdS)z?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.MetacSs
d|_dS)NT)rH)r!rrrr�NszHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N)rr'r(r�r�rrrrr�Msr�c@s"eZdZdZdd�ZdS)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSs
d|_dS)Nrd)r6)r!rrrr|UszITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)rr'r(rHr|rrrrr&Rsr&rpr6rd)rEr�rr'r rH)r!r�r&rBrrr�test_metaclass_dict_as_propertyLs
	z1TestGetattrStatic.test_metaclass_dict_as_propertycCs,t�}|jtjtd|�|�dS)N�version)r^�assertIsNotrr'rA)r!�sentinelrrr�test_module\s	zTestGetattrStatic.test_modulec
Cs�Gdd�dt�}Gdd�dtd|�}Gdd�dd|�}|jt��tj|d�WdQRX|j|j�dS)	Nc@s"eZdZedd��ZdS)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTr6rd)rHre)r!rrrr�cs	z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__N)rr'r(r�r�rrrr�MetaMetabsrYc@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rr'r(rHrrrrr�hsr�rpc@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingN)rr'r(rrrrr&ksr&r6)rEr�r�rr'r rH)r!rYr�r&rrr�3test_metaclass_with_metaclass_with_dict_as_propertyaszETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)rr'r(r)r+r,r-r1r2r4r5r7r;r>r@rArErFrJrLrNrSrTrXrZrrrrr%ps,	

	

r%c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestGetGeneratorStatecCsdd�}|�|_dS)Ncss xtd�D]}|Vq
WdS)Nrr)r3)�numberrrr�number_generatorusz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r!r]rrrr�tszTestGetGeneratorState.setUpcCstj|j�S)N)rZgetgeneratorstater^)r!rrr�_generatorstatezsz%TestGetGeneratorState._generatorstatecCs|j|j�tj�dS)N)r�r_rZGEN_CREATED)r!rrr�test_created}sz"TestGetGeneratorState.test_createdcCs*t|j�|j|j�tj�dS)N)�nextr^r�r_rZ
GEN_SUSPENDED)r!rrr�test_suspended�s
z$TestGetGeneratorState.test_suspendedcCs1x|jD]}q
W|j|j�tj�dS)N)r^r�r_r�
GEN_CLOSED)r!r4rrr�test_closed_after_exhaustion�sz2TestGetGeneratorState.test_closed_after_exhaustionc
CsD|jt��|jjt�WdQRX|j|j�tj�dS)N)r�r]r^�throwr�r_rrc)r!rrr�%test_closed_after_immediate_exception�sz;TestGetGeneratorState.test_closed_after_immediate_exceptioncs<�fdd�}|��_t�j�t�j�dS)Nc3sRxKtd�D]=}�j�j�tj�|V�j�j�tj�q
WdS)Nrr)r3r�r_rZGEN_RUNNING)r\)r!rr�running_check_generator�szCTestGetGeneratorState.test_running.<locals>.running_check_generator)r^ra)r!rgr)r!r�test_running�s
z"TestGetGeneratorState.test_runningcCs\dj�}xI|D]A}tt|�}|j|t|��|j|t|��qWdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED)r�r�rrg�reprr�)r!�namesr��staterrr�test_easy_debugging�s

z)TestGetGeneratorState.test_easy_debuggingcCsdddd�}|dddg�}|jtj|�ddddddgi�t|�|jtj|�ddddddgddd	di�t|�|jtj|�ddddddgddd	d
i�t|�|jtj|�ddddddgddd	dd
di�yt|�Wntk
rFYnX|jtj|�i�dS)Ncss2d}x%|D]}|dkr%d}|Vq
WdS)Nrr2r�r)rr2r�r)�lstr`rarDrrrr�each�s

z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrr2r�r`rmrDrarr)rr2r�)rr2r�)rr2r�)r�r�getgeneratorlocalsra�
StopIteration)r!rnZnumbersrrr�test_getgeneratorlocals�s*





z-TestGetGeneratorState.test_getgeneratorlocalscCsndd�}|�}|jtj|�i�yt|�Wntk
rPYnX|jtj|�i�dS)Ncss	dVdS)Nrrrrrr�	yield_one�szFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one)r�rrorarp)r!rrr�rrr�test_getgeneratorlocals_empty�s	
z3TestGetGeneratorState.test_getgeneratorlocals_emptycCsb|jttjd�|jttjdd��|jttjt�|jttjd�dS)NrcSsdS)NTr)rirrrrV�szETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>r2r�)r2r�)r�r�rror)r!rrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)rr'r(r�r_r`rbrdrfrhrlrqrsrtrrrrr[rsr[c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs7tjdd����fdd�}|�|_dS)Ncss xtd�D]}|Vq
WdS)Nrr)r3)r\rrr�number_coroutine�sz5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s��IdHdS)Nrr)rvrr�	coroutine�sz.TestGetCoroutineState.setUp.<locals>.coroutine)rDrw)r!rwr)rvrr��szTestGetCoroutineState.setUpcCs|jj�dS)N)rwrN)r!rrrrX�szTestGetCoroutineState.tearDowncCstj|j�S)N)rZgetcoroutinestaterw)r!rrr�_coroutinestate�sz%TestGetCoroutineState._coroutinestatecCs|j|j�tj�dS)N)r�rxrZCORO_CREATED)r!rrrr`�sz"TestGetCoroutineState.test_createdcCs-|jjd�|j|j�tj�dS)N)rw�sendr�rxrZCORO_SUSPENDED)r!rrrrb�sz$TestGetCoroutineState.test_suspendedcCsNx.y|jjd�Wqtk
r,PYqXqW|j|j�tj�dS)N)rwryrpr�rxr�CORO_CLOSED)r!rrrrd�s

z2TestGetCoroutineState.test_closed_after_exhaustionc
CsD|jt��|jjt�WdQRX|j|j�tj�dS)N)r�r]rwrer�rxrrz)r!rrrrf�sz;TestGetCoroutineState.test_closed_after_immediate_exceptioncCs\dj�}xI|D]A}tt|�}|j|t|��|j|t|��qWdS)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSED)r�r�rrgrir�)r!rjr�rkrrrrl�s

z)TestGetCoroutineState.test_easy_debuggingcs�tjdd������d�fdd�}|�}|jtj|�ddd�i�|jd�|jtj|�ddd�ddi�dS)	Ncss	dVdS)Nrrrrr�gencorosz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�sd}�IdHdS)Nr6r)r`ra)r{rrr�	sz;TestGetCoroutineState.test_getcoroutinelocals.<locals>.funcr`r{rar6)rDrwr�rZgetcoroutinelocalsry)r!r�rPr)r{r�test_getcoroutinelocalss		
z-TestGetCoroutineState.test_getcoroutinelocalsN)rr'r(r�rXrxr`rbrdrfrlr|rrrrru�s		ruc@seZdZdS)�MySignatureN)rr'r(rrrrr}sr}c@seZdZdS)�MyParameterN)rr'r(rrrrr~sr~c@s2eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Ze
ejed�dd���Ze
ejed�dd���Ze
dd��Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zejed�d2d3��Z ejed�d4d5��Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*ejed�dHdI��Z+dJS)K�TestSignatureObjectcKsStj||�}tdd�|jj�D��|j|jkrIdn|jfS)Ncssi|]_}|j|j|jkr'dn|j|j|jkrEdn|jt|j�j�fVqdS).N)r�rQ�empty�
annotationr��kindr<)r�Zparamrrr�	<genexpr>%sz0TestSignatureObject.signature.<locals>.<genexpr>.)rr
�tupler��values�return_annotationr�)r��kw�sigrrrr
"s
zTestSignatureObject.signaturec
<Cs�tj}tj}|jt|��d�dddd�}tj|�}|jdjd|j�}|jdjd|j�}|jd	}|jd
}|jd}	|jd}
|jd
}||||	|
|f�|j	t
d��||||	|
|f�WdQRX|j	t
d��|||	||
|f�WdQRX|j	t
d��||	|||
|f�WdQRX|j	t
d��||||	||
f�WdQRX|jdd�}|j	t
d��||||	||
f�WdQRX|j	t
d��|||f�WdQRX|j	t
d��||||f�WdQRX|j	t
d��|||f�WdQRX|jt|�j
d��|jdt|�k�dS)Nz()rd�dc_sdS)Nr)�po�pk�pod�pkd�korrrrrr�4sz7TestSignatureObject.test_signature_object.<locals>.testr�r�r�r�r�rr�rzwrong parameter orderr�zduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)rr�r�r�r�r
r��replacer�rryrri�
startswith)
r!�S�Pr�r�r�r�r�r�rr�rZkwargs2rrr�test_signature_object.s@		




     z)TestSignatureObject.test_signature_objectc	Cs�didddiddd��}tj|dd�}tj|�}xfttjd�D]Q}|jd	|d
d��0tjtj	||��}|j
||�WdQRXq\Wtj|�}tdd
dtjj
�}tj|jd|�}t�jd|j�d|j�}|jt|t��|jt|jd
t��x�ttjd�D]�}|jd	|d
d��ctjtj	||��}|j
||�|jt|t��|jt|jd
t��WdQRXq^WdS)Nrrrdr�)rr�c[sdS)Nr)r`rarr�rrrrn^sz=TestSignatureObject.test_signature_object_pickle.<locals>.foor`�
pickle_ver�subclassFr��zr�r�r�T)r�r�rr
r3�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�r~r�r��collections�OrderedDictr�r}r�r�r�rr�)	r!rnZfoo_partialr��verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_pickle]s*$z0TestSignatureObject.test_signature_object_picklecCscdd�}tj|�}|jt��d|_WdQRX|jt��d|jd<WdQRXdS)NcSsdS)Nr)r`rrrr�zsz=TestSignatureObject.test_signature_immutability.<locals>.testr6r`)rr
r�r�rnr�r�)r!r�r�rrr�test_signature_immutabilityysz/TestSignatureObject.test_signature_immutabilitycCs/dd�}|j|j|�fdf�dS)NcSsdS)Nrrrrrr��sz9TestSignatureObject.test_signature_on_noarg.<locals>.test.)r�r
)r!r�rrr�test_signature_on_noarg�sz+TestSignatureObject.test_signature_on_noargcCs5ddddd��}|j|j|�d
�dS)Nrn�{)rar�cSsdS)Nr)r`rarrrr��sz9TestSignatureObject.test_signature_on_wargs.<locals>.testr`.�positional_or_keywordra�r`..r��ra.rnr��r�r�)r�r�)r�r
)r!r�rrr�test_signature_on_wargs�s
z+TestSignatureObject.test_signature_on_wargscCs\tttddd��}|j|j|�ddtdfddtdfftf�dS)N)r`rar�cSsdS)Nr)r`rarrrr��sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testr`.�keyword_onlyra)�floatr�rtr�r
)r!r�rrr�test_signature_on_wkwonly�s
z-TestSignatureObject.test_signature_on_wkwonlycCshddddddtddd	��}|j|j|�dddddddtdffdf�dS)Nrr�r�rnr6�baz)rarr6rc_sdS)Nr)r`rar6r�rrrrrr��sz@TestSignatureObject.test_signature_on_complex_args.<locals>.testr`.r�rar�var_positionalr6r�r�var_keyword)r`..r�)rarrnr�)r.r6r�)r6.r�r�)r�r�.r�)rtr�r
)r!r�rrr�test_signature_on_complex_args�s'z2TestSignatureObject.test_signature_on_complex_argscs�dd��dd��G��fdd�d�}|j|j��d�|j|j��d�|j|j|j�d�|j|j|j�d�|j|j|j�d�|j|j|j�d�dS) NcWsdS)Nr)rrrr�test_args_only�szGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_sdS)Nr)rrrrr�test_args_kwargs_only�szNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_onlycs|eZdZedd��Zedd��Zejed�Z	ej�d�Z
ejed�Zej�d�ZdS)z:TestSignatureObject.test_signature_without_self.<locals>.AcWsdS)Nr)rrrr�test_classmethod�szKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWsdS)Nr)rrrr�test_staticmethod�szLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodrN)
rr'r(r�r�r�r�r�r�rrrrr)r�r�rrrd�srdr.r�rr��r..r��r�)r�.�r..r��r..r��r�r�)r�.�r..r��r�)r�.�r..r��r�)r�.�r..r��r�)r�.�r..r��r..r��r�r�)r�.)r�r
rrrr)r!rdr)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�}�j|d�d	��j|d
�d��j|d�d
��j|d�d��j|d�d��j|d�d��j|d�d��j|d�d��j|d�tj��j|d�tjd�|t�|tjj�tjt	j
��}||j�|tj�|dj�|t
j�|ij�|tj�|tj�|dj�|tj��jtd��%Gdd�d�}||��WdQRX|t
j�|tj�||j�dS)NrcsRtj|�}�jt|tj���jt|jj��dj	d�|S)Nrr!)
rr
rr�r�r�r]r�r�r�)rr
)r!rr�test_unbound_method�s&zKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_methodcs[tj|�}�jt|tj��|jrW�jt|jj��dj	d�|S)Nrr!)
rr
rr�r�r�r=r]r�r�)rr
)r!rr�
test_callable�s
	&zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jS)N)r�rQ)r�)r
rrr��sz9TestSignatureObject.test_signature_on_builtins.<locals>.pr�r�rasbytesr�g��Q�	@r4�#�nr`Tr�F�localr�rAr#rrszno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rr'r(rEr�rrrr�ThisWorksNowsr�)r�r�r�rA�maxsizer^r�r�r�r��StringIOr��	maketransre�fromkeysrEr�rt�__add__�minrry�__delitem__r��
__delete__Z#docstring_with_signature_but_no_doc)r!r�r�r�r�r�r�r)r!r
r�test_signature_on_builtins�sB











z.TestSignatureObject.test_signature_on_builtinscCs�ddl}|j}dd�}||�}|jtj|�tj|��tddd��}|jtj|dd�tj|��dS)	Nrcs.tj��td�fdd���}|S)N)r�cs
�||�S)Nr)rr)r�rr�wrappersz\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)r�r�rt)r�r�r)r�r�	decoratorszKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator)r�c_sdS)Nr)rrrrr�wrapper_like#szNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_like�follow_wrappedF)r�r�r�rr
rt)r!r�r�r�Zdecorated_funcr�rrr�$test_signature_on_decorated_builtinss	z8TestSignatureObject.test_signature_on_decorated_builtinscCsaddl}|jtd��tj|j�WdQRX|jtd��tjt�WdQRXdS)Nrzno signature found for builtin)r�rryrr
r�r�)r!r�rrr�'test_signature_on_builtins_no_signature(s	
	
z;TestSignatureObject.test_signature_on_builtins_no_signaturec	Cs+|jtd��tjd�WdQRXdS)Nzis not a callable objectrd)rr�rr
)r!rrr�test_signature_on_non_function3sz2TestSignatureObject.test_signature_on_non_functionc
sEdddd�}Gdd�d�}tjj|�}tjj||��}|j||�tj||��}|j||�||�}|`|j|j|�d�tj��fdd
�}tjj	d|��_||�}|j
tj|��d|_|jtj|��|jtj|�|�WdQRXdS)N�kwonlyTc_sdS)Nr)r`rar��	kwonlyreqrrrrrr�8szITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@s(eZdZdd�Zdd�ZdS)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecSsI|j|_|j|_|j|_|j|_|j|_||_dS)N)rr�r��__defaults__�__kwdefaults__r�)r!r�rrrr|@szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_s|j||�S)N)r�)r!rrrrrr�HszVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N)rr'r(r|r�rrrr�funclike;sr�r.r�rr�cst|d�rdS�|�S)N�_builtinmockT)rC)r$)�_orig_isdescrr�_isdesc_szLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor�r..r��r..r��r�r�)r�.)
rr��
from_callabler�r
r�r�rzZmockZpatchr r�r)r!r�r�Zsig_funcZsig_funclikeZflr�Zbuiltin_funcr)r�r�'test_signature_from_functionlike_object7s*		z;TestSignatureObject.test_signature_from_functionlike_objectcsNdddd��G�fdd�d�}|jttj|��d�dS)Nr�Tc_sdS)Nr)r`rar�r�rrrrrr�pszCTestSignatureObject.test_signature_functionlike_class.<locals>.funccsIeZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSsdS)Nr)r!�markerrrrr|tszPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)rr'r(r|r�r�r�r�r)r�rrr�ss				r�z(marker))r�r�rr
)r!r�r)r�r�!test_signature_functionlike_classls
z5TestSignatureObject.test_signature_functionlike_classc	Cs�Gdd�d�}|j|j|�j�d
tf�|j|j|�j�d�|j|j|�d�|jtd
��|j|��WdQRXdS)Nc@sLeZdZdd�Zdeddd��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)r!r~rrrrr��sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWsdS)Nr)rrrr�m2�sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSsdS)Nr)r`rrrr��szCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__N)rr'r(r|rtr�r�r�rrrr�Test�sr�r~.r�rrrr�zinvalid method signature�r~..r��rr.r�)r�r��r..r��r�)r�.�r..r��r�)r�.)r�r
r�rtr�rry)r!r�rrr�test_signature_on_methods

z,TestSignatureObject.test_signature_on_methodcCsWGdd�d�}tj|�j�dd��}|j|j|�dtf�dS)
Nc@s(eZdZdeddd��ZdS)zETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr)r�cSsdS)Nr)r!r~rrrrr��szHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1N)rr'r(rtr�rrrrr��sr�c_sdS)Nr)rrrrr�m1d�szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dr~.r�rr�r~..r��rr.r�)r�r�)r�r�r�r�r
rt)r!r�r�rrr�#test_signature_wrapped_bound_method�s!z7TestSignatureObject.test_signature_wrapped_bound_methodcCs^Gdd�d�}|�j}|j|j|�d�|j}|j|j|�d�dS)Nc@s(eZdZedddd��ZdS)z?TestSignatureObject.test_signature_on_classmethod.<locals>.TestrrcSsdS)Nr)r�r~rrrrrn�szCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)rr'r(r�rnrrrrr��sr�r~.r�rrr��r~..r��rr.r��r�r�)r�.�r~..r��rr.r��r�r�)r�.)rnr�r
)r!r��methrrr�test_signature_on_classmethod�s	z1TestSignatureObject.test_signature_on_classmethodcCs^Gdd�d�}|�j}|j|j|�d�|j}|j|j|�d�dS)Nc@s"eZdZedd��ZdS)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSsdS)Nr)r�r�rrrrn�szDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)rr'r(r�rnrrrrr��sr�r�.r�r�r��r�..r��r�..r��r�r�)r�.�r�..r��r�..r��r�r)r.)rnr�r
)r!r�r�rrr�test_signature_on_staticmethod�s	z2TestSignatureObject.test_signature_on_staticmethodc
Cs�ddlm}tj}dd�}|j|j||��fdf�|jtd��tj||d��WdQRX|jtd��tj||dd��WdQRXd	d�}|j|j||��d0�|j|j||d��d5�|j|j||ddd��d:�|j|j||dddd��d@�|j|j||ddddd��dE�|j|j||dd��dK�dd�}|j|j||d��dP�|j|j||dd��dU�|j|j||ddd��dZ�|j|j||ddddd��d_�|j|j||ddddddd��dd�|j|j||dd��dj�|j|j||dddd��dp�tdddd��}tj|�}|_	|j|j|||d���dqddtd
ffdf�|j|j|||d�d��ddtd
ffdf�tj|||d�d��}dd�}|||dd�dd�}|j|j|�dt�|j|�d�dd�}|||ddd�dd �}|j|j|�dx�|j|dd�dy�d!d�}|||dddd�dddd �}|j|j|�d�tj|�j
dd"dd#�}|j||j|j�d��dddd$d�}||dd%�}tj|�j
dd#�}|j||j|j�d��tj|�j
d#d&�}|j||j|j�d��tj|�j
d#dd&�}|j||j|j�d��tj|�j
dd&�}|j||j|j�d��||dddd�}tj|�j
d&�}|j||j|j�d��d'd�}tj|�}|j
j�}	|	djd(|j�|	d<|	djd(|j�|	d<tj|	j��|_	tj|�}|jt|�d)�|j|j||d��d��|j|j||dd��d��|j|j||ddd��d��|j|j||dddd��d��|j|j||ddd��d��dS)�Nr)r�cSsdS)Nrrrrrr��sz;TestSignatureObject.test_signature_on_partial.<locals>.test.zhas incorrect argumentsrr`cSsdS)Nr)r`rarr�rrrr��sr�rarr�r�r2c_sdS)Nr)r`rarrrrrr�	srr�rr�r�r�Trd)rr�cSsdS)Nr)r`rarrrrr�4	scSs|S)Nr)r`rrrrnD	sz:TestSignatureObject.test_signature_on_partial.<locals>.foor�cSs
|||fS)Nr)r`rarrrrrnN	srcSs||||fS)Nr)r`rarr�rrrrnX	s��r�cSs
|||fS)Nr)r`rarrrrrne	s�
rc[sdS)Nr)r`rarr�rrrrrnz	sr�z(a, b, /, c, d, **kwargs)�positional_only�r`..r��ra..r��r..r��r�..r��rrr	r
)r.�ra..r��r..r��r�..r��rr
r)r.�ra..r��rr2.r��r�..r��rrr)r.�r`..r��rar.r��rr2.r��r�..r��rrrr)r.�rar.r��rr2.r��r�..r��rrr)r.�r`r.r��ra..r��r..r��r�..r��rrrr )r!.�r..r��ra..r��r..r��r"r#r$)r%.�r`r.r��ra..r��r..r��r&r'r()r).�r..r��ra..r��r..r��r*r+r,)r-.�r..r��ra..r��r..r��r.r/r0)r1.�r..r��rar.r��r..r��r2r3r4)r5.�r`..r��r..r��rar.r��r..r��r6r7r8r9)r:.�r`..r��r..r��rar.r��r..r��r;r<r=r>)r?.)ra..r��r`r.r��r@)rA.�rar.r��r..r��rBrC)rD.)rrr�r`..r��rar.r��rr.r��r�r.r��rErFrGrH)rI.)rr�rr)r�r2r)r�rr)r�rr)rrr)rrr�ra..r�r..r��r�..r��r..r��rJrKrLrM)rN.�r..r��r�..r��r..r��rOrPrQ)rR.�r�..r��r..r��rSrT)rU.�rr�.r��r�..r��r..r��rVrWrX)rY.�ra..r�rr�.r��r�..r��r..r��rZr[r\r])r^.)r�r�rr�r�r
rryrtr��bindrrr��copyr�r�r�r�r�)
r!r�r�r�r�ZpsigrnZ_foo�ba�paramsrrr�test_signature_on_partial�s@	% !$'!'-$!
$
!!*!!$!z-TestSignatureObject.test_signature_on_partialcs�ddlm�G�fdd�d�}|jtd��tj|j�WdQRXG�fdd�d�}|j|j|j�d�|j|j|�j�d�dS)Nr)r�cs(eZdZdd�Z�e�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSsdS)Nrrrrrr��	szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN)rr'r(r�r�r)r�rr�Spam�	srdzhas incorrect argumentscs7eZdZdddd��Z�edd�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamr6)r�cSsdS)Nr)�itr`rrrrr��	szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testrrN)rr'r(r�r�r)r�rrrd�	sre.r�r`rrr�r6�re..r��r`..r��rr.r��rfrgrh)rir6�r`..r��rr.r��rjrk)rlr6)r�r�rryrr
r�r�)r!rdr)r�r�test_signature_on_partialmethod�	sz3TestSignatureObject.test_signature_on_partialmethodcCs8dd�}d|_|jttj|��d�dS)NcSsdS)Nr)r`rrrrn�	szETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foor6z(a))�_partialmethodr�r�rr
)r!rnrrr�$test_signature_on_fake_partialmethod�	s	z8TestSignatureObject.test_signature_on_fake_partialmethodcs/ddl��fdd��G�fdd�d�}|j|j|j�d�|j|j|�j�d�|j|j|jdd�d!��fdd��G�fdd�d�}|j|j|j�d%�|j|j|�j�d(�dd�}|j|_|j|j|�d,�dS)-Nrcs.�j��td�fdd���}|S)N)r�cs
�||�S)Nr)rr)r�rrr��	szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)r�rt)r�r�)r�)r�rr��	szBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcs"eZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r!r`rarrrr6�	sz@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)rr'r(r6r)r�rrr �	sr r!.r�r`rar�Frr�rr�csq�j��td�fdd���}tj��}t|jj��dd�}|jd|�|_|S)N)r�cs�d||�S)Nrdr)rr)r�rrr��	szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperrr�)	r�rtrr
r�r�r�r�r�)r�r�r��
new_params)r�)r�rr��	scs"eZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r!r`rarrrr��	szETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N)rr'r(r�r)r�rrr �	scSsdS)Nrrrrr�wrapped_foo_call�	szITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call�r!..r��r`..r��ra..r��rrrsrt)ru.�r`..r��ra..r��rvrw)rx.�r..r��r..r��ryrz)r{.�r`..r��ra..r��r|r})r~.�ra..r��r)r�.�r`..r��ra..r��r�r�)r�.)r�r�r
r6r��__wrapped__)r!r rqr)r�r�r�test_signature_on_decorated�	s>	z/TestSignatureObject.test_signature_on_decoratedc	Cs�Gdd�d�}|j|j|�d �Gdd�dt�}Gdd�dd	|�}|j|j|�d#�Gd
d�dt�}Gdd�dd	|�}|j|j|�d&�|j|j|�d,�Gdd�dt�}Gdd�dtd	|�}Gdd�dd	|�}|j|j|�d2�|j|j|�d7�|j|j|�d:�Gdd�dt�}Gdd�dd	|�}|j|j|�d@�dS)ANc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!r`rrrr|
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr'r(r|rrrrrc
srcr`.r�c@seZdZdd�ZdS)z7TestSignatureObject.test_signature_on_class.<locals>.CMcSsdS)Nr)r�r`rrrr�
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__N)rr'r(r�rrrrr�
sr�c@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!rarrrr|
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr'r(r|rrrrrc
srpcs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMrnrcst�j||||�S)N)rTr�)�mclsr��bases�dctrn)rUrrr�
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr'r(r�rr)rUrr�
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!rarrrr|
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr'r(r|rrrrrc
srar�r�r�rnrr�cs4eZdZdd�fdd�Zdd�Z�S)z8TestSignatureObject.test_signature_on_class.<locals>.CMMrnrcst�j||||�S)N)rTr�)r�r�r�r�rn)rUrrr�-
sz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�S)N)rE)r��nm�bs�dtrrrr�/
szATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)rr'r(r�r�rr)rUr�CMM,
sr�cs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMr6r2cst�j||||�S)N)rTr�)r�r�r�r�r6)rUrrr�2
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr'r(r�rr)rUrr�1
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!rarrrr|5
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr'r(r|rrrrrc4
sr�r�r�cs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMr6r2cst�j|||�S)N)rTr|)r�r�r�r�r6)rUrrr|J
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)rr'r(r|rr)rUrr�I
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!rarrrr|M
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr'r(r|rrrrrcL
sr6r2�r`..r��r�)r�.�r`..r��r�)r�.�ra..r��r�)r�.�r�..r��r�..r��r�..r��rnr.r��r�r�r�r�)r�.�r�..r��r�..r��r�..r��rnr.r��r�r�r�r�)r�.�r�..r��r�..r��r�..r��r�r�r�)r�.�ra..r��r�)r�.�r�..r��r�..r��r�..r��r6r2.r��r�r�r�r�)r�.)r�r
rE)r!rcr�r�rrr�test_signature_on_class
sZz+TestSignatureObject.test_signature_on_classcCs�Gdd�d�}|jttj|��d�Gdd�d|�}|jttj|��d�Gdd�dt�}Gdd�d|�}|jtd��|jtj|�d�WdQRX|jtd��|jtj|�d�WdQRXdS)	Nc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr'r(rrrrrc[
srcz()c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr'r(rrrrrf]
srfc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr'r(rrrrrca
sc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr'r(rrrrrfb
szcallable.*is not supported)r�r�rr
rErry)r!rcrfrrr�$test_signature_on_class_without_initW
s z8TestSignatureObject.test_signature_on_class_without_initcCs/|jttjtj��d�Gdd�dtj�}Gdd�d�}Gdd�d||�}|jttj|��d�|jttj|��d�Gdd	�d	|�}|jttj|��d
�Gdd�dt�}Gd
d�d|d|�}|jttj|��d�dS)Nz'(file, protocol=None, fix_imports=True)c@seZdZdS)z>TestSignatureObject.test_signature_on_builtin_class.<locals>.PN)rr'r(rrrrr�n
sr�c@seZdZdS)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitN)rr'r(rrrr�
EmptyTraito
sr�c@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2N)rr'r(rrrr�P2p
sr�c@seZdZdd�ZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSsdS)Nr)r!r6rrrr|w
szHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__N)rr'r(r|rrrr�P3v
sr�z(spam)c@seZdZdd�ZdS)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSsdS)Nr)r�rnr6rrrr�|
szKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__N)rr'r(r�rrrr�MetaP{
sr�c@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4N)rr'r(rrrr�P4~
sr�rpz
(foo, bar))r�r�rr
r�r�rE)r!r�r�r�r�r�r�rrr�test_signature_on_builtin_classh
sz3TestSignatureObject.test_signature_on_builtin_classcCsGdd�d�}|j|j|��d�Gdd�d�}|jtd��tj|��WdQRXGd	d
�d
||�}|j|j|��d�Gdd�d�}d
d�|_|j|j|�d�||_|jtd��|j|�WdQRXdS)Nc@seZdZdd�ZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.FoocSsdS)Nr)r!r`rrrr��
szLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__N)rr'r(r�rrrrr �
sr r`.r�c@seZdZdS)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamN)rr'r(rrrrrd�
srdzis not a callable objectc@seZdZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarN)rr'r(rrrr�Bar�
sr�c@seZdZdS)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedN)rr'r(rrrr�Wrapped�
sr�cSsdS)Nr)r`rrrrV�
szHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>zwrapper loop�r`..r��r�)r�.�r`..r��r�)r�.�r`..r��r�)r�.)r�r
rr�rr�ry)r!r rdr�r�rrr�"test_signature_on_callable_objects�
s&	z6TestSignatureObject.test_signature_on_callable_objectscCs&|j|jddd��d	�dS)
NrcSs|S)Nr)r`rrrrV�
sz?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>r`.r��r`r.r��r�)r�.)r�r
)r!rrr�test_signature_on_lambdas�
sz-TestSignatureObject.test_signature_on_lambdascCs�ttddd��}|jtj|�dk�|jtj|�dk�|jtj|�t�k�|jtj|�t�k�ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���tdd	d��}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���d
dttddd��}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���tdd
d��}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���dd�}dd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dddd�}dddd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dddd�}dddd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dd�}dddd�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���ddtddd��}ddtddd��}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dS)N)rar�cSsdS)Nr)r`rarrrrn�
sz8TestSignatureObject.test_signature_equality.<locals>.foordcSsdS)Nr)r`rarrrr6�
sz8TestSignatureObject.test_signature_equality.<locals>.barcSsdS)Nr)r`rarrrr6�
s)racSsdS)Nr)r`rarrrr6�
sracSsdS)Nr)r`rarrrr6�
s)r�cSsdS)Nr)r`rrrrr6�
scSsdS)Nr)r`rarrrr6�
scSsdS)Nr)rar`rrrr6�
sz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdS)Nr)r`rarrrrrn�
scSsdS)Nr)rrar`rrrr6�
sr`rcSsdS)Nr)r`rarrrrrn�
scSsdS)Nr)rrar`rrrr6�
scSsdS)Nr)�posr`rarrrrrn�
scSsdS)Nr)r�rrar`rrrr6�
scSsdS)Nr)r�r`rarrrrrn�
scSsdS)Nr)r�rrar`rrrr6�
s)rc_sdS)Nr)r�r`rarrrrrrrn�
sc_sdS)Nr)r�rrar`rrrrrr6�
s)
rtr�r rr
rr9r��hashr=)r!rnr6r6rrr�test_signature_equality�
s�%%(%%(%%(%%(%%(%%(%%(%%(%%(%%(%%(%%z+TestSignatureObject.test_signature_equalitycCsKtj}tj}dd�}tj|�}|d|d|j�g�}|jt|�t|��|jt|�t|jdd���ddd	d
��}|jt|�ttj|���idd�}|j	t
d��ttj|��WdQRXidd
d��}|j	t
d��ttj|��WdQRXdS)NcSsdS)Nr)r`rrrrn�
sz8TestSignatureObject.test_signature_hashable.<locals>.foor�r`r�r6r)r�cSsdS)Nr)r`rrrr6sz8TestSignatureObject.test_signature_hashable.<locals>.barcSsdS)Nr)r`rrrrn
szunhashable typecSsdS)Nr)r`rrrrns)rr�r�r
�POSITIONAL_OR_KEYWORDr�r�r=r�rr�)r!r�r�rn�foo_sigZ
manual_sigr6rrr�test_signature_hashable�
s 		%z+TestSignatureObject.test_signature_hashablecCs�dddtdddd��}|jttj|��d�dddtdddd��}|jttj|��d	�d
d�}|jttj|��d�dS)Nrrrd)r`r�c[sdS)Nr)r`rarrrrrrnsz3TestSignatureObject.test_signature_str.<locals>.fooz'(a:int=1, *, b, c=None, **kwargs) -> 42c_sdS)Nr)r`rarrrrrrrnsz+(a:int=1, *args, b, c=None, **kwargs) -> 42cSsdS)Nrrrrrrnsz())rtr�r�rr
)r!rnrrr�test_signature_strs!!z&TestSignatureObject.test_signature_strcCs?tj}tj}dd�}tj|�}t|jj��}|djd|j�|d<|jd|�|_	|j
ttj|��d�|j
t|d|d|j�g��d�|j
t|d|d|j�|d	|j�g��d
�|j
t|d|d|j�|d	|j
�g��d�dS)Nc[s
||fS)Nr)�a_porarrrrr�%szDTestSignatureObject.test_signature_str_positional_only.<locals>.testrr�r�z(a_po, /, *, b, **kwargs)rnz(foo, /)r6z(foo, /, **bar)z(foo, /, *bar))rr�r�r
r]r�r�r�r�r�r�r��VAR_KEYWORD�VAR_POSITIONAL)r!r�r�r�r�rprrr�"test_signature_str_positional_only!s&		'z6TestSignatureObject.test_signature_str_positional_onlycCs�dddd��}tj|�}|jdd�}|j|jd�|jd|j�}|j|j|j�|jdd�}|j|jd�|j|tj|��dS)Nrd)r�cSsdS)Nrrrrrr�>sz=TestSignatureObject.test_signature_replace_anno.<locals>.testr�)rr
r�r�r�r�r�)r!r�r�rrr�test_signature_replace_anno=sz/TestSignatureObject.test_signature_replace_annocCsqGdd�d�}Gdd�d|�}|j|j|j�d�|j|j|j�|j|j��dS)Nc@s1eZdZdddddddd��ZdS)	zFTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamr2�	_Spam__p2r�r)�	_Spam__p1r�cSsdS)Nr)r!r�r�rrrrnLszJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)rr'r(rnrrrrrdKsrdc@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamN)rr'r(rrrr�HamNsr�r!.r�r�r2rr�r�r��r!..r��r�r2rr��r�r�r2r��r�r�r�)r�.)r�r
rn)r!rdr�rrr�$test_signature_on_mangled_parametersJsz8TestSignatureObject.test_signature_on_mangled_parameterscCsWGdd�dtj�}dddd��}|j|�}|jt||��dS)Nc@seZdZdS)zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureN)rr'r(rrrrr}[sr}r)racSsdS)Nr)r`rarrrrn\szHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo)rr�r�rr�)r!r}rnr�rrr�'test_signature_from_callable_python_objZsz;TestSignatureObject.test_signature_from_callable_python_objcCsEGdd�dtj�}|jtj�}|jt||��dS)Nc@seZdZdS)zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureN)rr'r(rrrrr}csr})rr�r�r�r�rr�)r!r}r�rrr�(test_signature_from_callable_builtin_obj`sz<TestSignatureObject.test_signature_from_callable_builtin_objN),rr'r(r�r
r�r�r�r�r�r�r�r�rrzrrr�r�r�r�r�r�r�r�r�rrcrmror�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr!sV/#	G	5
�CQ		 S
	rc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestParameterObjectcCs�tj}|j|j|jkoK|jkoK|jkoK|jkn�|jt	|j�d�|jdt
|j�k�dS)Nr�)rr�rr�r�r��KEYWORD_ONLYr�r�r�ri)r!r�rrr�test_signature_parameter_kindsis
	.z2TestParameterObject.test_signature_parameter_kindsc5Cs>tjddddtjj�}|j|jd�|j|jd�|j|j|j�|j|j	tjj�|j
td��tjddddd�WdQRX|j
td��tjddtjj�WdQRX|j
t
d	��tjddtjj�WdQRX|j
td
��tjddtjj�WdQRX|j
td��$tjd
dddtjj�WdQRX|j
td��$tjd
dddtjj�WdQRXtjd
dddtjj�}|j
td��|jdtjj�WdQRX|jt|�jd��|jdt|�k�dS)NrnrQrr�z
invalid valueZ123znot a valid parameter namer�zname must be a strzis not a valid parameter name�$zcannot have default valuesr`rdz
<Parameterz"a=42")rr�r�r�r�rQr�r�r�r�rryr�r�r�r�r�rrir�)r!r�rrr�test_signature_parameter_objectqs6   	
 z3TestParameterObject.test_signature_parameter_objectc	Cs�tj}|dd|j�}|jt|�t|dd|j���|jt|�t|dd|jdd���|jt|�t|jd|j���dS)Nrnr�rQrd)rr�r�r�r�r=r�r�)r!r�rnrrr�!test_signature_parameter_hashable�s	+$
z5TestParameterObject.test_signature_parameter_hashablecCs�tj}|ddddtjj�}|j||k�|j||k�|j|dk�|j|dk�|j|t�k�|j|t�k�|j||ddddtjj�k�|j||ddddtjj�k�dS)NrnrQrdr�)rr�r�rr r9)r!r�r�rrr�!test_signature_parameter_equality�s	z5TestParameterObject.test_signature_parameter_equalitycCstjddddtjj�}|j||j��|j||j��|jdd�}|j|jd�|jd|j�}|j||�|jdd�}|j|jd�|j	||�|j
td	��|jd|j�}WdQRX|jdddd�}|j|j
d�|j	||�|jddd|j�}|j|j
|j�|jddd|j�}|j|j|j�|j	||�|j
td
��|jd|j�}WdQRX|jd|j�}|j||�dS)NrnrQrdr�r�rr�r6zname is a required attributezinvalid value for)rr�r�rVr�r�r�r�r�r=rryr�rQr�r�)r!r�Zp2rrr� test_signature_parameter_replace�s4	
z4TestParameterObject.test_signature_parameter_replacecCs7|jtd��tjddtjj�WdQRXdS)Nzname must be a strr�)rr�rr�r�)r!rrr�(test_signature_parameter_positional_only�sz<TestParameterObject.test_signature_parameter_positional_onlycCs_tjddtjj�}|jt��d|_WdQRX|jt��d|_WdQRXdS)Nr6r�r6r�)rr�r�r�r�rnr�)r!r�rrr�%test_signature_parameter_immutability�s
z9TestParameterObject.test_signature_parameter_immutabilityN)
rr'r(r�r�r�r�r�r�r�rrrrr�hs%	&r�c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestSignatureBindcOs4tj|�}|j||�}||j|j�S)N)rr
r_rr)r�rrr�rarrr�call�szTestSignatureBind.callcCs�dd�}|j|j|�d�|jtd��|j|d�WdQRX|jtd��|j|ddd�WdQRX|jtd��|j|dd�WdQRXdS)	NcSsdS)Nrdrrrrrr��sz9TestSignatureBind.test_signature_bind_empty.<locals>.testrdztoo many positional argumentsrr6rz)got an unexpected keyword argument 'spam')r�r�rr�)r!r�rrr�test_signature_bind_empty�s
z+TestSignatureBind.test_signature_bind_emptycCs+dd�}|j|j|�fif�|j|j|d�d	if�|j|j|dd�d
if�|j|j|dd�fddif�|j|j|ddd�dddif�|j|j|dd�fddif�|j|j|dddd�dddif�dS)
Nc_s
||fS)Nr)rrrrrr��sz7TestSignatureBind.test_signature_bind_var.<locals>.testrr2rnr6rr)r)rr2)r)rr2)r�r�)r!r�rrr�test_signature_bind_var�s"%+.+z)TestSignatureBind.test_signature_bind_varcCs~dd�}|j|j|ddd�d�|jtd��|j|dddd�WdQRX|jtd��|j|d�WdQRX|jtd	��|j|�WdQRXd
dd�}|j|j|ddd�d�|j|j|dd�d�ddddd�}|j|j|d
d
dd�d�|j|j|d
d
�d�|j|j|dd
�d�dS)NcSs
|||fS)Nr)r`rarrrrr�sz=TestSignatureBind.test_signature_bind_just_args.<locals>.testrr2r�ztoo many positional argumentsrxz missing a required argument: 'b'z missing a required argument: 'a'rcSs
|||fS)Nr)r`rarrrrr�scSs
|||fS)Nr)r`rarrrrr�sr`rrra)rr2r�)rr2r�)rr2r)rr2r)rr2r�)rrr�)r�r�rr�)r!r�rrr�test_signature_bind_just_argss"" 	
	
"%z/TestSignatureBind.test_signature_bind_just_argscCsKdd�}|j|j|�f�|j|j|ddd�d�dS)NcWs|S)Nr)rrrrr�"szATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr2r�)rr2r�)r�r�)r!r�rrr�!test_signature_bind_varargs_order!sz3TestSignatureBind.test_signature_bind_varargs_ordercCs�ddd�}|j|j|ddddd�d
�|j|j|dd�dddff�|j|j|ddd	d�dddff�|j|j|ddd�dddff�|jtd
��!|j|ddddd�WdQRXdS)Nr�cWs||||fS)Nr)r`rarrrrrr�)szDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testrr2rxrrrar`z multiple values for argument 'c'r�rxrr)rr2r�r�)r�r�rr�)r!r�rrr�$test_signature_bind_args_and_varargs(s(+1.	
z6TestSignatureBind.test_signature_bind_args_and_varargscCsZdd�}|j|j|�i�|j|j|dddd�ddddi�dS)Nc[s|S)Nr)rrrrr�6sz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrnr6r6r�)r�r�)r!r�rrr�test_signature_bind_just_kwargs5sz1TestSignatureBind.test_signature_bind_just_kwargscCsddd�}|j|j|dd�dddif�|j|j|dddddd	�ddddddd	if�|j|j|d
ddddddd	�ddddddd	if�|j|j|ddd
ddddd	�ddddddd	if�|j|j|dd
ddddd	�ddddddd	if�|j|j|dd
ddd
dddd	�ddd
dddd	if�|j|j|ddd
dd�ddd
ddif�|j|j|dddd
d
d�d
ddif�dS)Nr�c[s||||fS)Nr)r`rarrrrrr�>szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrr2rnr6r6r�rar`rrxrr)r�r�)r!r�rrr�#test_signature_bind_args_and_kwargs=s +$**'-!$z5TestSignatureBind.test_signature_bind_args_and_kwargscBCs-dd�}|jtd��|j|d�WdQRX|j|j|dd�d�dddd�}|jtd��|j|d�WdQRXdd�}|j|j|dd	d
�d�|j|j|d	d
dd�d�|jtd��$|j|d	d
dddd
�WdQRX|jtd��|j|dd
�WdQRX|jtd��|j|dd
d	d
�WdQRX|jtd��!|j|dd	d
dd�WdQRX|jtd��|j|d�WdQRXdd�}|j|j|dd	d
�dd
if�|j|j|ddd	d
�dd
if�|j|j|dd	d
dd�dd
ddif�|j|j|ddddd	d
�dd
ddif�|jtd��|j|ddd	d
�WdQRX|j|j|dd	d
dddd
�dd
dddd
if�dS)NcSs|S)Nr)rnrrrr�Rsz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testztoo many positional argumentsrrncSs|S)Nr)r`rnr6rrrr�Ysz"missing a required argument: 'bar'cSs
||fS)Nr)rnr6rrrr�_sr6r2z)got an unexpected keyword argument 'spam'r6rr�c[s
|||fS)Nr)rnr6�binrrrr�zsz"missing a required argument: 'foo'r�)rr2)rr2)rr�r�r�)r!r�rrr�test_signature_bind_kwonlyQsN	
	
"%
&	
	
 
#	
+.!$	
 'z,TestSignatureBind.test_signature_bind_kwonlycCs�dddd�}tj|�}|jddddd	d
ddd
d�}|jt|jj��dddd
d	d
ddd
diff�|j|jddd	d
ddd
di�|j|jd�dS)Nr�r�c_sdS)Nr)r`rar�rrrrrr��sz=TestSignatureBind.test_signature_bind_arguments.<locals>.testrrrarrrrr�r�<r`)r`r�r)rr�)rar)rr)	rr
r_r�r��	arguments�itemsrr)r!r�r�rarrr�test_signature_bind_arguments�s*	"z/TestSignatureBind.test_signature_bind_argumentscCs�tj}dddddd�}tj|�}tjt|jj���}x+dD]#}||jd
|j	�||<qUW|jd|j
��}||_|j|j
|dd
dddd�dd
dddif�|j|j
|dd
�dd
dddif�|j|j
|dd
dddd�dd
dddif�|jtd��*|j
|dd
ddddd	d�WdQRX|jtd��|j
|dd
d	d�WdQRX|jtd��|j
|dddd
�WdQRXdS)Nr�rdr6r�c[s||||||fS)Nr)r��b_po�c_pornr6rrrrr��szCTestSignatureBind.test_signature_bind_positional_only.<locals>.testr�r�r�r�r�rr2rxrr�rnzbut was passed as a keywordrzparameter is positional only)r�r�r�)rr�r
r�r�r�r�r�r�r�r�r�r�r�rr�)r!r�r�r�rpr�Znew_sigrrr�#test_signature_bind_positional_only�s(	
!	$$, z5TestSignatureBind.test_signature_bind_positional_onlycCsudd�}tj|�}|jddd�}|j|jd�|jddddd�}|j|jd	�dS)
NcSsdS)Nr)r`r!rarrrr��szATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testrr2r�r!ra)rr2r�)rr2r�)rr
r_r�r)r!r�r�rarrr�!test_signature_bind_with_self_arg�sz3TestSignatureBind.test_signature_bind_with_self_argcCs�dd�}tj|�}|jtd��|jdddd�WdQRXdd�}|j|j|dd�fddif�tj|�}|jdd�}|j|jd	ddii�dS)
NcWs
||fS)Nr)r`rrrrr��sz?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'r`rrrc_s
||fS)Nr)rrrrrr��sr)rr
rr�r_r�r�r�)r!r�r�rarrr�test_signature_bind_vararg_name�s
+z1TestSignatureBind.test_signature_bind_vararg_nameN)rr'r(r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s

7
r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoundArgumentsc	CsLdd�}tj|�jd�}|jtd��t|�WdQRXdS)NcSsdS)Nr)r`rrrrn�szITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foorzunhashable type)rr
r_rr�r�)r!rnrarrr�)test_signature_bound_arguments_unhashable�sz<TestBoundArguments.test_signature_bound_arguments_unhashablec	Cs�dd�}tj|�jd�}|j||k�|j||k�|j|t�k�|j|t�k�tj|�jd�}|j||k�|j||k�tj|�jd�}|j||k�|j||k�d|jd<|j||k�|j||k�dd�}tj|�jd�}|j||k�|j||k�dd�}tj|�}|jddd	d�}|jd	ddd�}|j||k�|j||k�dS)
NcSsdS)Nr)r`rrrrn�szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorr2r`cSsdS)Nr)rarrrr6�szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSsdS)Nr)r`rarrrrn�sra)rr
r_rr r9r�)	r!rnraZba2Zba3r6Zba4r�Zba1rrr�'test_signature_bound_arguments_equality�s2
z:TestBoundArguments.test_signature_bound_arguments_equalitycCs�didddiddd��}tj|�}|jdd	d
i�}x`ttjd�D]K}|jd|��0tjtj||��}|j	||�WdQRXq_WdS)Nrrrdr�)rr�c[sdS)Nr)r`rarr�rrrrn�szETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foorrr�r�)
rr
r_r3r�r�r�r�r�r�)r!rnr�rar�Z
ba_pickledrrr�%test_signature_bound_arguments_pickle�s$z8TestBoundArguments.test_signature_bound_arguments_picklecCsedidddiddd��}tj|�}|jdd	d
i�}|jt|�d�dS)Nrrrdr�)rr�c[sdS)Nr)r`rarr�rrrrn
szCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foorrr�z <BoundArguments \(a=20,.*\}\}\)>)rr
r_ZassertRegexri)r!rnr�rarrr�#test_signature_bound_arguments_repr
s$z6TestBoundArguments.test_signature_bound_arguments_reprc	Cs�ddidddd��}tj|�}|jd�}|j�|jt|jj��ddd	ffdifd
ifg�|jdddd
d�}|j�|jt|jj��ddddifd
d
difg�dd�}tj|�}|jd�}|j�|jt|jj��dg�dd�}tj|�}|j�}|j�|jt|jj��g�ddd�}tj|�}|j�}|j�|jt|jj��dg�dS)Nrr)rc_sdS)Nr)r`rarrr�rrrrn

szMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foorr`rarr�rrr�cSsdS)Nr)r`rarrrrn
scSsdS)Nrrrrrrn&
sr6cSsdS)Nr)r`rrrrn-
s)r`r)rar)r`r)rar�r)rr�)r`r)r`r6)	rr
r_Zapply_defaultsr�r]r�r�Zbind_partial)r!rnr�rarrr�-test_signature_bound_arguments_apply_defaults	
s:
(
(



z@TestBoundArguments.test_signature_bound_arguments_apply_defaultsN)rr'r(r�r�r�r�r�rrrrr��s

r�c@s4eZdZdd�Zdd�Zdd�ZdS)�TestSignaturePrivateHelperscCsOtj}|j|d�d�|j|d�d�|j|d�d�dS)Nz($self)r!z($self, obj)z($cls, /, obj)r�)rZ_signature_get_bound_paramr�)r!�getterrrr�test_signature_get_bound_param5
s	z:TestSignaturePrivateHelpers.test_signature_get_bound_paramcCsLtj|�\}}}|j||�|j||�|j||�dS)N)rZ"_signature_strip_non_python_syntaxr�)r!�inputZclean_signatureZself_parameterZlast_positional_onlyZcomputed_clean_signatureZcomputed_self_parameterZcomputed_last_positional_onlyrrr�_strip_non_python_syntax<
sz4TestSignaturePrivateHelpers._strip_non_python_syntaxcCs�|jdddddd�|jdddd�|jd	d
dd�|jd
d
dd�|jdd
dd�|jdddd�|jdddd�dS)
Nz)($module, /, path, mode, *, dir_fd=None, z1effective_ids=False,
       follow_symlinks=True)z%(module, path, mode, *, dir_fd=None, z*effective_ids=False, follow_symlinks=True)rz($module, word, salt, /)z(module, word, salt)r2z(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r�)r�)r!rrr�&test_signature_strip_non_python_syntaxF
sJzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)rr'r(r�r�r�rrrrr�4
s
r�c@s4eZdZeejed�dd���ZdS)�TestSignatureDefinitionsz6Signature information for builtins requires docstringsc
Cs`t�}dddddddh}||O}dh}||O}d	d
ddh}||O}d
dh}||O}t�}tt�}x�t|j��D]�\}}	t|	�s�q�t|	t�r�||kr�|j|�||kr�q�|j	d|��|j
tj|	��WdQRXq�Wx8|D]0}|j	d|��|j
|	j�WdQRXq(WdS)Nr3�slicer�r�ra�iter�vars�roundr��maxr��__build_class__r��
__import__r�)rrr�r�r��callabler�rEr�r�ZassertIsNotNonerr
r��__text_signature__)
r!Zno_signatureZneeds_groupsZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrr�r$rrr�test_builtins_have_signaturesw
s0	
	


	
!
z6TestSignatureDefinitions.test_builtins_have_signaturesN)rr'r(rrzrrr
rrrrrs
s	rc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestUnwrapcCsAdd�}tjdd�|�}|jtj|�|�dS)NcSs||S)Nr)r`rarrrr��
sz(TestUnwrap.test_unwrap_one.<locals>.funcr�r)r��	lru_cacher�r�unwrap)r!r�r�rrr�test_unwrap_one�
szTestUnwrap.test_unwrap_onecCstdd�}|}x/td�D]!}tj|�dd��}qW|j|j|�|jtj|�|�dS)NcSs||S)Nr)r`rarrrr��
sz,TestUnwrap.test_unwrap_several.<locals>.funcrcSsdS)Nrrrrrr��
sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)r3r�r�rVr�r�rr
)r!r�r��__rrr�test_unwrap_several�
szTestUnwrap.test_unwrap_severalcCszdd�}tj|�dd��}tj|�dd��}d|_tj|dd	d
��}|j||�dS)NcSs||S)Nr)r`rarrr�func1�
sz#TestUnwrap.test_stop.<locals>.func1cSsdS)Nrrrrr�func2�
sz#TestUnwrap.test_stop.<locals>.func2cSsdS)Nrrrrrr��
sz%TestUnwrap.test_stop.<locals>.wrapperr�stopcSs
t|d�S)N�	stop_here)rC)r�rrrrV�
sz&TestUnwrap.test_stop.<locals>.<lambda>)r�r�rrr
r�)r!rrr�Z	unwrappedrrr�	test_stop�
s	zTestUnwrap.test_stopcCs�dd�}||_|jtd��tj|�WdQRXdd�}||_||_|jtd��tj|�WdQRX|jtd��tj|�WdQRXdS)NcSsdS)Nrrrrrr�
sz$TestUnwrap.test_cycle.<locals>.func1zwrapper loopcSsdS)Nrrrrrr�
sz$TestUnwrap.test_cycle.<locals>.func2)r�rryrr
)r!rrrrr�
test_cycle�
s			zTestUnwrap.test_cyclecsKdd��d�_G�fdd�d�}|jtj|���dS)NcSsdS)Nrrrrrr��
sz(TestUnwrap.test_unhashable.<locals>.funccseZdZdZ�ZdS)z%TestUnwrap.test_unhashable.<locals>.CN)rr'r(�__hash__r�r)r�rrrc�
src)r�r�rr
)r!rcr)r�r�test_unhashable�
s	zTestUnwrap.test_unhashableN)rr'r(rrrrrrrrrr�
s
rc@sdeZdZdd�Zdd�Zejedkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsytjd�}tddd�\}}}|j�j�}|j|dd�tj|�j��|j|d�dS)Nrzz-mrr����)�	importlib�
import_moduler	�decoder�r�rr�)r!�module�rc�out�errr�rrr�test_only_source�
s	)zTestMain.test_only_sourcec	Cs=dd�}d|_|jt��tj|�WdQRXdS)NcSsdS)Nrrrrrrn�
sz)TestMain.test_custom_getattr.<locals>.foord)r�r�r�rr
)r!rnrrr�test_custom_getattr�
s	zTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsjtddd�\}}}|j�j�}|j|dd�tjt�j��|j|d�dS)Nz-mrz%concurrent.futures:ThreadPoolExecutorrrr)r	rr�r�rr�r)r!r r!r"r�rrr�test_qualname_source�
s	zTestMain.test_qualname_sourcecCsStjd�}tddd�\}}}|j�j�}|j|dg�dS)Nrzz-mrrAz#Can't get info for builtin modules.)rrr
rr�r�)r!rr.r!r"r�rrr�
test_builtins�
s
	zTestMain.test_builtinscCs�tjd�}tdddd�\}}}|j�}|j|j|�|j|j|�tjj	s~|j|j
|�|j|d�dS)Nrzz-mrz	--detailsr)rrr	rrgrr�rArr�
__cached__r�)r!rr r!r"�outputrrr�test_detailss	zTestMain.test_details)rr'r(r#r$rzrrr%r&r)rrrrr�
s	
rc@sFeZdZejd�Zejd�Zdd�Zdd�ZdS)�
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    cCsQtj|�}t|��/}|j|j�jd�|jd��WdQRXdS)NT)rr�r�r�r�r�)r!rQr�Z
inspected_src�srcrrr�assertInspectEquals
zTestReload.assertInspectEqualcCs~td|j��e\}}tj|�}|j||�t|d��}|j|j�WdQRX|j||�WdQRXdS)NZ
reload_bugrM)r
�
src_beforerrr,r�rS�	src_after)r!r�rQrr+rrr�test_getsource_reload&sz TestReload.test_getsource_reloadN)	rr'r(�textwrap�dedentr-r.r,r/rrrrr*s		r*cCsStttttttttt	t
ttt
ttttttttttt�dS)N)rrr�rr)rvrcr;rrr#r%r[rLrr�r�r�r�rr�rrr*rurrrr�	test_main0s		r2�__main__)Zr�r�rLr�rrr�r�rOZos.pathrr�r��rerVrArDr0r>rzZ
unittest.mockrI�concurrent.futuresr�ImportErrorZtest.supportrrrrrZtest.support.script_helperr	r
r�rr>rr	Ztest.test_importr
r�r�rKrr�r}r{rr5r7rwr8r9r;rvr�r�rrr)rLr^r[r_rbrcr�r�rrr#r%r[rur�r}r�r~rr�r�r�r�rrrr*r2rrrrr�<module>s�
"
	�7�*:��	z��c@����K{�b?870