Your IP : 216.73.216.85


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-1.pyc



��Yf\#�@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�6/opt/alt/python35/lib64/python3.5/test/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)�selfZ	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_examplePsr4c�sdS)N�spamr)r!rrr�coroutine_function_exampleTsr6ccs	dVdS)Nr5r)r!rrr�gen_coroutine_function_exampleWsr7c@seZdZdd�ZdS)�EqualsToAllcCsdS)NTr)r!r$rrr�__eq__]szEqualsToAll.__eq__N)rr&r'r9rrrrr8\sr8c@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__rrr1ztb.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))r4�ignorezcoroutine_function_example(1)r6�MemberDescriptorTypezdatetime.timedelta.days)r%rr(r*�sys�exc_infor;r+r.�hasattr�typesZisgetsetdescriptorr �type�tb_frame�f_localsrr,r-�isdatadescriptorr/r�warnings�catch_warnings�simplefilterr0rZismemberdescriptor�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)
r7r6r rrr0rrr/�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'rRrrrr�Future�srSc@seZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN)rr&r'rrrr�	NotFuture�srTcSsdS)Nrrrrr�<lambda>�sz1TestPredicates.test_isawaitable.<locals>.<lambda>)r rZisawaitabler6r7rrRrM)r!rQrOrNrSrTZnot_futrrr�test_isawaitable�s	
zTestPredicates.test_isawaitablecCs6|jtjtj��|jtjgj��dS)N)rrZ	isroutiner=r5�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'rZrrrr�
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_r`)rr&r'�	__slots__rrrr�C�srb�*r_r`)r]r_�dictr�
getmembers�assertIn�assertNotIn)r!rb�xZmembersrrr�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'rlr)rkrr�AbstractClassExample�srm�	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdS)Nr)r!rrrrl�sz8TestPredicates.test_isabstract.<locals>.ClassExample.fooN)rr&r'rlrrrr�ClassExample�sro�)�abcrjrkrrZ
isabstractr �int)r!rjrmror_r)rkr�test_isabstract�s	zTestPredicates.test_isabstractN)
rr&r'rLrPrVrXr^rirsrrrrr:`s%		r:c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs-tjj|||�tjddd�dS)N���	)�unittest�TestCase�__init__�git�abuse)r!r�kwargsrrrrz�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)Nrprr��eggsz    st = inspect.stack()
rwr5z    eggs(b + d, c + f)
r1�+�arguez            spam(a, b, c)
��'r|z        self.argue(a, b, c)
zinspect.stack())r�lenr=�st�assertEqualr�modfile�assertIs�frame�fr�linenor�__file__Zfunctionrf�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)
rwr5z    eggs(b + d, c + f)
r1�r�z    q = y / 0
)r�r�r{Ztrrr�)r!rrr�
test_trace�s   zTestInterpreterStack.test_tracecCs�tjtj�\}}}}|j|ddg�|j|d�|j|d�|j|ddddddi�|jtj||||�d�dS)Nrh�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_r`r�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'rzr~r�r�r�r�rrrrrt�s		rtc@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)rrer=r)r�r�r�r�r�Zgetclasstreer])r!�classesZtreerrr�test_getclasses+s2					z(TestRetrievingSourceCode.test_getclassescCsMtjttj�}|j|dtjfdtjfdtjfg�dS)Nr��lobbestr5)rrer=rr�r�r�r5)r!Z	functionsrrr�test_getfunctionsPsz*TestRetrievingSourceCode.test_getfunctionsr1z)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�rr�__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|�strr@�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=r5r�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'rrrrrb�srbrn)rD�assertRaises�	TypeErrorrr�)r!r�rbrrr�!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>Zdummyz
def x(): passza=10��single)rCr�r@r�r��
__loader__r��__dict__r�rr�rh�__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)	z4doctest monkeypatches linecache to enable inspection�<test>�def x(): pass
Ncs-|�kr�jdd�S�||�SdS)N�keependsT)�
splitlines)r�module_globals)r��getlinesr�rr�monkey�szHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr�rh)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�rx�skipIfr@�flags�optimizer�r�rr�r�r�r�r�r�r�r�r�r�r�r�rrrrr�(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)Nrw�
)r�rZgone)r!rrr�test_replacing_decorator�sz'TestDecorators.test_replacing_decoratorcCs|jtjdd�dS)N��)r�rr�)r!rrr�test_getsource_unwrap�sz$TestDecorators.test_getsource_unwrapcCs|jtjdd�dS)N�q�s)r�rZfunc114)r!rrr�test_decorator_with_lambda�sz)TestDecorators.test_decorator_with_lambdaN)	rr&r'rr�rrrrrrrrr�s
rc@sveZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscCs|jtjdd�dS)N�)r�rZoll)r!rrr�test_oneline_lambda�sz!TestOneliners.test_oneline_lambdacCs|jtjdd�dS)N��)r�rZtll)r!rrr�test_threeline_lambda�sz#TestOneliners.test_threeline_lambdacCs|jtjdd�dS)N�!�")r�rZtlli)r!rrr�test_twoline_indented_lambda�sz*TestOneliners.test_twoline_indented_lambdacCs|jtjdd�dS)N�%)r�rZonelinefunc)r!rrr�test_onelinefunc�szTestOneliners.test_onelinefunccCs|jtjdd�dS)N�(�))r�rZmanyargs)r!rrr�
test_manyargs�szTestOneliners.test_manyargscCs|jtjdd�dS)N�,�-)r�rZtwolinefunc)r!rrr�test_twolinefunc�szTestOneliners.test_twolinefunccCs|jtjddd�dS)Nr�1)r�rr_)r!rrr�test_lambda_in_listsz!TestOneliners.test_lambda_in_listcCs|jtjdd�dS)N�7)r�rZ	anonymous)r!rrr�test_anonymousszTestOneliners.test_anonymousN)
rr&r'rr�rrrrrrr!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�rZwith_comment)r!rrr�test_with_comment
sz TestBuggyCases.test_with_commentcCs|jtjddd�dS)Nr�?�@)r�rZ
multiline_sig)r!rrr�test_multiline_sigsz!TestBuggyCases.test_multiline_sigcCs |jtj�jdd�dS)N�G�H)r�rZfunc69Zfunc71)r!rrr�test_nested_classsz TestBuggyCases.test_nested_classcCs|jtjdd�dS)N�M)r�rZfunc77)r!rrr�#test_one_liner_followed_by_non_namesz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|jtjjdd�dS)N�S)r�rZcls82Zfunc83)r!rrr�test_one_liner_dedent_non_namesz-TestBuggyCases.test_one_liner_dedent_non_namecCs|jtjdd�dS)N�X�Z)r�rZfunc88)r!rrr�&test_with_comment_instead_of_docstringsz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|jtjdd�dS)N�_�a)r�rZmethod_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�r8rr: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�rZClassWithMethod�method)r!rrr�test_getsource_on_method=sz'TestBuggyCases.test_getsource_on_methodcCs|jtjjdd�dS)N��)r�rZcls135Zfunc136)r!rrr�test_nested_func@szTestBuggyCases.test_nested_funcN)rr&r'rr�r'r*r-r/r1r4r7rxr�rBr9r��endswithr;r<r>rBrErrrrr$
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)�shutilZrmtreerI)r!rrr�tearDownPszTestNoEOL.tearDowncCs|j|jjdd�dS)Nrr1)r�r��X)r!rrr�
test_classSszTestNoEOL.test_class)rr&r'r�rRrTrr)rPrrGDsrGc@s:eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGstd��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�)rrrrrZasz!_BrokenDataDescriptor.__getattr__N)rr&r'r�rVrXrZrrrrrUWsrUc@s.eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGstd��dS)Nzbroken method descriptor)r�)rrrrrVisz_BrokenMethodDescriptor.__get__cGstd��dS)Nzbroken method descriptor)r�)rrrrrZlsz#_BrokenMethodDescriptor.__getattr__N)rr&r'r�rVrZrrrrrYesrYcCsdd�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_objsqsr\c	@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r^c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BN)rr&r'rrrr�Bysr_c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CN)rr&r'rrrrrbzsrbc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DN)rr&r'rrrr�D{sr`)r]rZgetmror�)r!r^r_rbr`�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�rd)r!rerfrgrhri�kwonlyargs_e�kwonlydefaults_e�ann_erjrr�r�rkZ
kwonlyargsZkwonlydefaultsZannrrr�assertFullArgSpecEquals�s$z/TestClassesAndFunctions.assertFullArgSpecEqualscCs�|jtjddgdd�|jtjddddd	d
gdddd�|jt|jtjg�|jt|jtjg�|jt|jtj	g�dS)Nrhr�rjz(x, y)r_r`rr�r�r�r�r�r��rpz!(a, b, c, d=3, e=4, f=5, *g, **h))r�rrrp)
rlr=r�r5r��
ValueErrorr�	keyworded�	annotated�keyword_only_arg)r!rrr�test_getargspec�s	

z'TestClassesAndFunctions.test_getargspeccCs�|jtjgddddgdddidd�|jtjdgd	dtidd
�|jtjgddgdd�dS)
Nrg�arg1rn�arg2rorrjz(*arg1, arg2=1)rpz(arg1: list)�argz(*, arg))rqrrtrur\rv)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)rhr�rrr�ham�szETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamrhr�rjz(x, y)cs#�j|dddgdd�dS)Nr!rhr�rjz(self, x, y))rl)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!rhr�rrrr|�szGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSsdS)Nr)r!rhr�rrr�__call__�szLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)rr&r'�	functools�wrapsr=r5r|�
partialmethod�phamr~rrrrrb�srbc@s.eZdZejej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSsdS)Nr)r!rhr�rrr�__new__�szOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)rr&r'rr�r=r5r�rrrr�C_new�sr�c@s.eZdZejej�dd��ZdS)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSsdS)Nr)r!rhr�rrrrz�szQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)rr&r'rr�r=r5rzrrrr�C_init�sr�)	rr�r=r5rlrq�partialr|r�)r!r|r}rbr�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>.testr5�
parametersrfrjz(spam))r�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__rq)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)Nr5r|)r_�returncSsdS)Nr)r_rrrr��szITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdS)Nrrrrrr��s)rrmr��__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)
Nrfr!r#rjz(self, obj)rLrn�dir_fd�follow_symlinksroTz,(path, *, dir_fd=None, follow_symlinks=True))rq�_pickle�Pickler�dump�io�BytesIOrJ�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_defaultsrrmr�rk)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�rrm)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�rrrrr^sr^r!)r]rlr�)r!r^rrr�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��datablobrU�ddrY�mdrrrrr^s	r^r�rAzmissing __new__rzzmissing __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�rrrrr_Bsr_c@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�rrrrrrbQsrbc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdS)Nr)r!rrrr�bsz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)rr&r'r�rrrrr``sr`)r]r\rf)r!r^�attrsr_rbr`rrr�test_classify_newstylesVz.TestClassesAndFunctions.test_classify_newstylecCsFx?tt�D]1}tt|�}t|t�r
tj|�q
WdS)N)�dir�__builtins__�getattr�
isinstancerDrr[)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|r5)rOrZ)r!r�)rPrrrZxszUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__)rr&r'rZrr)rPr�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'rC�DynamicClassAttributer|rrrr�VA|sr�rnr|r�r5)rDr�	Attributer�rfr[)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$)�NoBoolrrr9�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'r9r�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�rfr[)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)NrPr&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�rnr�r�r�)rDrr�rfr[)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)NrPr&r�BOOMr)r�rrrr��szLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs |dkrdSt�j|�S)Nr�rc)rOZ_Meta__getattr)r!r�)rPrrrZ�szPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__)rr&r'r�rZrr)rPrr��sr�c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassN)rr&r'rrrrr��sr�rnr�r�rc)rDrr�rfr[)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)NrPr&r�oner)r�rrrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs |dkrdSt�j|�S)Nr�r)rOrZ)r!r�)rPrrrZ�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__)rr&r'r�rZrr)rPr�Meta1�sr�cs.eZdZdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)NrPr&r�twor)r�rrrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs |dkrdSt�j|�S)Nr�r1)rOrZ)r!r�)rPrrrZ�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__)rr&r'r�rZrr)rPr�Meta2�sr�cs7eZdZ��fdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs<tttddddg�j|��j|����S)NrPr&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�)rOrZ)r!r�)rPrrrZ�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__)rr&r'r�rZr)r�r�)rPr�Meta3�sr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1N)rr&r'rrrr�Class1�sr�rnc@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2N)rr&r'rrrr�Class2�sr�r�r�rr�r1r�r�)rDrr�r[rf)	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)NrPr�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'rrrrrb�srbrncSsg|]}|d�qS)rr)r�r_rrrr��s	zTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r�)rDrr[rg)r!r�rbr�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'rUr�rYr�rrrrr^�s	r^cs/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�rBr)rh)r��predrrr�s$zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped)r])r�rr)r�r�r�pred_wrapper�szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr�r�c@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BN)rr&r'rrrrr_�sr_)r]r�ismethoddescriptorrGr�rer�)r!r^r�r�rGr_rrr�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�rrrrr_�sr_r�)rfr�rrergr,)r!r_r`rrr�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)rOrZ)r�r�)rPrrrZszOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__)rr&r'rZrr)rPrr�sr�c@s%eZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdS)Nr5r)r!rrrr�	szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)rr&r'rCr�r�rrrrr^sr^rnr�r�r5)r�r�)r�r5)rDrfrre)r!r�r^rrr� 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)NrPrr�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'rrrrrbsrbrncSsg|]}|d�qS)rr)r�r_rrrr�s	zJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r�)rDrrerg)r!r�rbr�rrr�test_getmembers_with_buggy_dirsz6TestClassesAndFunctions.test_getmembers_with_buggy_dir)rr&r'rbrlrqrwr{r�r�r�rxr�rr�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr]usB
(				P

#	 
r]c@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_namesrarrr�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�rarrr�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�rrrrrb;srbr�r�r�r�)r]r�r�rr�r�r�r�)r!rbr�r�r�r�r�rarrr�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�)rhrr�addOszFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)rhr�r)rhr�
make_adderNsz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�S)Nr)ry)rx�funcrrrUTszFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�rxr)rxr�r�currySsz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs
||kS)Nr)r_r`rrr�	less_thanVsz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs%�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�S)Nr)rh)r�rrrU\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_combinatorrr1rprhrxr�cs�fdd�S)Ncs�|S)Nr)r�)rhrrrUkszITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>r)rhr)rhrrUksz7TestGetClosureVars.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)Nrrrrrrlpsz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdS)NTrrrrrrUrsz>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)rr�rr�r�)r!rlZ_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!�coder�rrr�_private_globals{s
z#TestGetClosureVars._private_globalscCs`|j�\}}|jdd�tjiidtidh�}|jtj|�|�dS)Nr�r�rL)r��poprr�r�r�r�)r!r�r�rarrr�test_builtins_fallback�s!z)TestGetClosureVars.test_builtins_fallbackcCs`|j�\}}ddi|d<tjiiddidh�}|jtj|�|�dS)NrLrr�r�)r�rr�r�r�)r!r�r�rarrr�test_builtins_as_dict�s!z(TestGetClosureVars.test_builtins_as_dictcCs]|j�\}}t|d<tjiidtjidh�}|jtj|�|�dS)Nr�rLr�)r�rJrr�rLr�r�)r!r�r�rarrr�test_builtins_as_module�s
$z*TestGetClosureVars.test_builtins_as_moduleN)
rr&r'r�r�r�r�r�r�r�r�r�rrrrrr�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))rdrr�)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))rdr�	ExceptionZfailr�rDr�r�)r!r�Zcall_param_stringrr�Zex1Zex2rrr�assertEqualException�s


z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r)r!�	signaturer�rrr�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, *cr	z2, 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)rrr)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_r`rrrr�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'rrrr
rrr
rrrrrrrr�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!rrrrr�Ps	zTestGetcallargsMethods.setUpcs2tt|�j}|d|�|j_|jjS)Nzself, )rOrrr�rAr)r!rZmk)rPrrrVsz#TestGetcallargsMethods.makeCallable)rr&r'r�rrr)rPrrNsrcs[eZdZ�fdd�Zd�fdd�Zd�fdd�Zddd	�Z�S)
�TestGetcallargsUnboundMethodscs tt|�j|�|jjS)N)rOrrr�rA)r!r)rPrrr^sz*TestGetcallargsUnboundMethods.makeCallableNcs%tt|�j|j|||��S)N)rOrr�_getAssertEqualParams)r!r�rr)rPrrrbsz1TestGetcallargsUnboundMethods.assertEqualCallArgscs%tt|�j|j|||��S)N)rOrrr)r!r�rr)rPrrrfsz2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,t|pid|j�}|d||fS)Nrzinst,)rdr)r!r�rrrrrrjsz3TestGetcallargsUnboundMethods._getAssertEqualParams)rr&r'rrrrrr)rPrr\src@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]rhrrrr�Thingssrrhr�r�)r]r�r�getattr_staticrhr�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]rhrrrrrsrc@seZdZdS)z4TestGetattrStatic.test_inherited.<locals>.OtherThingN)rr&r'rrrr�
OtherThing�sr#rh)r]r�rr rh)r!rr#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>.Thingr1cSs
||_dS)N)rh)r!rhrrrrz�sz<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)rr&r'rhrzrrrrr�srr�rhr1)r]r�rr rh)r!rr!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!rrrrh�sz0TestGetattrStatic.test_property.<locals>.Thing.xN)rr&r'r�rhrrrrr�srrh)r]r�rr rh)r!rr!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�)�_rrrrV�szSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__N)rr&r'rVrrrr�
descriptor�sr(cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN)rr&r'rhr)�descrrr�srrh)r]r�rr )r!r(rr!r)r)r�%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]rhrrrrr�srrh)r]r�rr rh)r!rrrr�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!rrrrh�sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)rr&r'rCr�rhr]r,rrrrr�srrh)r]r�rr r�)r!rrrr�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]rhrrrrr�src@seZdZdS)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingN)rr&r'rrrrr#�sr#rh)r]r�rr rh)r!rr#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�barrhcSs
d|_dS)Nrl)rh)r!rrrrz�sz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)rr&r'r�rarzrrrrr�s	rrhr�r/)r]r�rr rh)r!rr!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>.metarlN)rr&r'rYrrrr�meta�sr1c@seZdZdS)z/TestGetattrStatic.test_metaclass.<locals>.ThingN)rr&r'rrrrr�srrnrYrlc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subN)rr&r'rrrr�sub�sr2c@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�N)rr&r'rhrrrrr#�sr#c@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingN)rr&r'rrrr�OtherOtherThing�sr3rhr�)rDr]r�rr )r!r1rr2r#r3rrr�test_metaclass�sz TestGetattrStatic.test_metaclasscCs?|jtjddd�d�|jtjdd�d�dS)Nrrl�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 rDr�)r!Zhandlerrr�%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>.ThingrhcSs
d|_dS)Nrl)rh)r!rrrrz�sz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)rr&r'rarzrrrrr�s	rc@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingN)rr&r'rrrrr#�sr#rh)r]r�rr rh)r!rr#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�ownerrrrrV�sz=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__N)rr&r'rVrrrrr(�sr(cseZdZ��ZdS)z.TestGetattrStatic.test_descriptor.<locals>.FooN)rr&r'r�r)r(rrr�srrr�cSsdS)Nr)r�r3�vrrrrU�sz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r]r�r�rr rX)r!rrlr)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!r:r;rrrrVszLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__N)rr&r'rVrrrrr(sr(cseZdZ��ZdS)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaN)rr&r'r�r)r(rrr1sr1c@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingN)rr&r'rrrrrsrrnr�)r]rDr�rr r�)r!r1rr)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'rlrrrr�Basesr?c@s(eZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tS)NT)�executedr])r!rrrrPs	zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)rr&r'r@r�rPrrrr�	SomethingsrArlr�)r]r�rr r r@)r!r?rAr:rrr�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�rCrrrrr�sr�c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�N)rr&r'rlrrrrr?#sr?c@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingN)rr&r'rrrrrA&srArnrlr�)rDr]r�rr )r!r�r?rArrr�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�rrr0srrrr_r�)rErdr_r�rr r )r!rrlr)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)rErO�get)r!�key�default)rPr�rrrGAs	z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get)rr&r'rGr)r�)rPr�Custom@srJc@seZdZdZdS)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)rr&r'r_rrrrrEsrr_r�)rErdr]r�r�rr r )r!rJrrlr)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)r@)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)Nrc)r5)r!rrrrzUszITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)rr&r'r@rzrrrrrRsrrnr5rc)rDr�rr r r@)r!r�rr:rrr�test_metaclass_dict_as_propertyLs
	z1TestGetattrStatic.test_metaclass_dict_as_propertycCs,t�}|jtjtd|�|�dS)N�version)r]�assertIsNotrr r@)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)NTr5rc)r@rd)r!rrrr�cs	z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__N)rr&r'r�r�rrrr�MetaMetabsrQc@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rr&r'r@rrrrr�hsr�rnc@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingN)rr&r'rrrrrksrr5)rDr�r�rr r r@)r!rQr�rrrr�3test_metaclass_with_metaclass_with_dict_as_propertyaszETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)rr&r'r"r$r%r&r*r+r-r.r0r4r7r8r9r=r>rBrDrFrKrLrPrRrrrrrps,	

	

rc@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)Nrp)r2)�numberrrr�number_generatorusz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r!rUrrrr�tszTestGetGeneratorState.setUpcCstj|j�S)N)rZgetgeneratorstaterV)r!rrr�_generatorstatezsz%TestGetGeneratorState._generatorstatecCs|j|j�tj�dS)N)r�rWrZGEN_CREATED)r!rrr�test_created}sz"TestGetGeneratorState.test_createdcCs*t|j�|j|j�tj�dS)N)�nextrVr�rWrZ
GEN_SUSPENDED)r!rrr�test_suspended�s
z$TestGetGeneratorState.test_suspendedcCs1x|jD]}q
W|j|j�tj�dS)N)rVr�rWr�
GEN_CLOSED)r!r3rrr�test_closed_after_exhaustion�sz2TestGetGeneratorState.test_closed_after_exhaustionc
CsD|jt��|jjt�WdQRX|j|j�tj�dS)N)r�rWrV�throwr�rWrr[)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)Nrp)r2r�rWrZGEN_RUNNING)rT)r!rr�running_check_generator�szCTestGetGeneratorState.test_running.<locals>.running_check_generator)rVrY)r!r_r)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�rrf�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)Nrr1r�r�)rr1r�r)�lstr_r`r<rrrr�each�s

z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrr1r�r_rer<r`rr�)rr1r�)rr1r�)rr1r�)r�r�getgeneratorlocalsrY�
StopIteration)r!rfZnumbersrrr�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�rrgrYrh)r!rjr�rrr�test_getgeneratorlocals_empty�s	
z3TestGetGeneratorState.test_getgeneratorlocals_emptycCsb|jttjd�|jttjdd��|jttjt�|jttjd�dS)NrcSsdS)NTr)rhrrrrU�szETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>r1r�)r1r�)r�r�rrgr)r!rrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)rr&r'r�rWrXrZr\r^r`rdrirkrlrrrrrSrsrSc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs7tjdd����fdd�}|�|_dS)Ncss xtd�D]}|Vq
WdS)Nrp)r2)rTrrr�number_coroutine�sz5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s��IdHdS)Nrr)rnrr�	coroutine�sz.TestGetCoroutineState.setUp.<locals>.coroutine)rCro)r!ror)rnrr��szTestGetCoroutineState.setUpcCs|jj�dS)N)rorM)r!rrrrR�szTestGetCoroutineState.tearDowncCstj|j�S)N)rZgetcoroutinestatero)r!rrr�_coroutinestate�sz%TestGetCoroutineState._coroutinestatecCs|j|j�tj�dS)N)r�rprZCORO_CREATED)r!rrrrX�sz"TestGetCoroutineState.test_createdcCs-|jjd�|j|j�tj�dS)N)ro�sendr�rprZCORO_SUSPENDED)r!rrrrZ�sz$TestGetCoroutineState.test_suspendedcCsNx.y|jjd�Wqtk
r,PYqXqW|j|j�tj�dS)N)rorqrhr�rpr�CORO_CLOSED)r!rrrr\�s

z2TestGetCoroutineState.test_closed_after_exhaustionc
CsD|jt��|jjt�WdQRX|j|j�tj�dS)N)r�rWror]r�rprrr)r!rrrr^�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�rrfrar�)r!rbr�rcrrrrd�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)Nr5r)r_r`)rsrrr�	sz;TestGetCoroutineState.test_getcoroutinelocals.<locals>.funcr_rsr`r5)rCror�rZgetcoroutinelocalsrq)r!r�rOr)rsr�test_getcoroutinelocalss		
z-TestGetCoroutineState.test_getcoroutinelocalsN)rr&r'r�rRrprXrZr\r^rdrtrrrrrm�s		rmc@seZdZdS)�MySignatureN)rr&r'rrrrrusruc@seZdZdS)�MyParameterN)rr&r'rrrrrvsrvc@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�rI�empty�
annotationr��kindr5)r�Zparamrrr�	<genexpr>%sz0TestSignatureObject.signature.<locals>.<genexpr>.)rr�tupler��values�return_annotationrx)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()rc�dc_sdS)Nr)�po�pk�pod�pkd�korr}rrrr�4sz7TestSignatureObject.test_signature_object.<locals>.testr�rzr�r�r�rr�r}zwrong parameter orderr�zduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)rr�r�r�r�rr��replacer�rrsrra�
startswith)
r!�S�Pr�r�r�r�r�r�rr�r}Zkwargs2rrr�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)Nrrrcr|)rr�c[sdS)Nr)r_r`rrrrrrl^sz=TestSignatureObject.test_signature_object_pickle.<locals>.foor_�
pickle_ver�subclassFr��zrzr�r~T)rr�rrr2�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�rvr�r��collections�OrderedDictr�rur�r}r~rr�)	r!rlZfoo_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>.testr/r_)rrr�r�rlr�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)Nrl�{)r`r�cSsdS)Nr)r_r`rrrr��sz9TestSignatureObject.test_signature_on_wargs.<locals>.testr_.�positional_or_keywordr`�r_..r��r`.rlr��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_r`r�cSsdS)Nr)r_r`rrrr��sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testr_.�keyword_onlyr`)�floatr�rrr�r)r!r�rrr�test_signature_on_wkwonly�s
z-TestSignatureObject.test_signature_on_wkwonlycCshddddddtddd	��}|j|j|�dddddddtdffdf�dS)Nrr|r�rlr/�baz)r`rr5r}c_sdS)Nr)r_r`r5r|rr}rrrr��sz@TestSignatureObject.test_signature_on_complex_args.<locals>.testr_.r�r`r�var_positionalr5r�r}�var_keyword)r_..r�)r`rrlr�)r.r/r�)r5.r�r�)r|r�.r�)rrr�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)rr}rrr�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�rr�rrrrr)r�r�rrr^�s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��r�r�)r�.)r�rrrrr)r!r^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�}�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)zAUse this to test unbound methods (things that should have a self)rr!)
rrrr�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)zRUse this to test bound methods or normal callables (things that don't expect self)rr!)
rrrr�r�r�r6r\r}r�)rr)r!rr�
test_callable�s
	&zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jS)N)r�rI)r�)rrrr��sz9TestSignatureObject.test_signature_on_builtins.<locals>.pr�r�r`sbytesr�g��Q�	@r3�#�nrZTr�FZlocalr�r@r"rrqzno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rr&r'rDr~rrrr�ThisWorksNowsr�)r�r�r�r@�maxsizer]r�r�r�r��StringIOr��	maketransrd�fromkeysrDr~rr�__add__�minrrs�__delitem__r��
__delete__Z#docstring_with_signature_but_no_doc)r!r�r�r�r�r�r�r)r!rr�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)rr�rr)r�r�r)r�r�	decoratorszKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator)r�c_sdS)Nr)rr}rrr�wrapper_like#szNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_like�follow_wrappedF)r�r�r�rrrr)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�rrsrrr�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 objectrc)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_r`r��	kwonlyreqrr}rrrr�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�rrrrz@szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_s|j||�S)N)r�)r!rr}rrrr~HszVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N)rr&r'rzr~rrrr�funclike;sr�r.r�r}r�cst|d�rdS�|�S)N�_builtinmockT)rB)r#)�_orig_isdescrr�_isdesc_szLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor�r..r��r}..r��r�r�)r�.)
rr��
from_callabler�rr�r�rxZmockZpatchr 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_r`r�r�rr}rrrr�pszCTestSignatureObject.test_signature_functionlike_class.<locals>.funccsIeZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSsdS)Nr)r!ZmarkerrrrrztszPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)rr&r'rzr�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)rrrrrz�szCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r)r�cSsdS)Nr)r!rxryrrrr��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'rzrrr�r�r~rrrr�Test�sr�rx.r�ryrrr�zinvalid method signature�rx..r��ryr.r�)r�r��r..r��r�)r�.�r..r��r�)r�.)r�rr�rrr�rrs)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!rxryrrrr��szHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1N)rr&r'rrr�rrrrr��sr�c_sdS)Nr)rr}rrr�m1d�szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1drx.r�ryr�rx..r��ryr.r�)r�r�)rr�r�r�rrr)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>.TestryrcSsdS)Nr)r�rxryrrrrl�szCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)rr&r'r�rlrrrrr��sr�rx.r�ryrr��rx..r��ryr.r��r�r�)r�.�rx..r��ryr.r��r�r�)r�.)rlr�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�rzrrrrl�szDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)rr&r'r�rlrrrrr��sr�r�.r�rzr��r�..r��rz..r��r�r�)r�.�r�..r��rz..r��r�r�)r�.)rlr�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_r`rr�rrrr��sr�r`rr�r�r1c_sdS)Nr)r_r`rr}rrrr�	srr�r}r�r�r�Trc)rr�cSsdS)Nr)r_r`rrrrr�4	scSs|S)Nr)r_rrrrlD	sz:TestSignatureObject.test_signature_on_partial.<locals>.foor�cSs
|||fS)Nr)r_r`rrrrrlN	srcSs||||fS)Nr)r_r`rr�rrrrlX	s��r�cSs
|||fS)Nr)r_r`rrrrrle	s�
r�c[sdS)Nr)r_r`rr�r}rrrrlz	srzz(a, b, /, c, d, **kwargs)�positional_only�r_..r��r`..r��r..r��r�..r��r�r�r�r)r.�r`..r��r..r��r�..r��rrr)r.�r`..r��rr1.r��r�..r��rrr)r	.�r_..r��r`r.r��rr1.r��r�..r��r
rrr
)r.�r`r.r��rr1.r��r�..r��rrr)r.�r_r.r��r`..r��r..r��r�..r��rrrr)r.�r..r��r`..r��r}..r��rrr)r.�r_r.r��r`..r��r}..r��rrr)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+.�r_..r��r..r��r`r.r��r}..r��r,r-r.r/)r0.�r_..r��r..r��r`r.r��r}..r��r1r2r3r4)r5.)r`..r��r_r�.r��r6)r7.�r`r.r��r..r��r8r9)r:.)rrr�r_..r��r`r.r��rr�.r��r�r.r��r;r<r=r>)r?.)r�r�r�r)r�r1r�)r�r�r�)r�r�r�)rr�r�)r�rr��r`..r��r..r��r�..r��r}..r��r@rArBrC)rD.�r..r��r�..r��r}..r��rErFrG)rH.�r�..r��r}..r��rIrJ)rK.�rr�.r��r�..r��r}..r��rLrMrN)rO.�r`..r��rr�.r��r�..r��r}..r��rPrQrRrS)rT.)rr�rr�r�rrrsrrr��bindrr}r��copyr�r�r�r}r�)
r!r�r�r�r�ZpsigrlZ_foo�baZparamsrrr�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rYzhas incorrect argumentscs7eZdZdddd��Z�edd�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamr5)r�cSsdS)Nr)�itr_rrrrr��	szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testrrN)rr&r'r�r|r)r�rrrY�	srZ.r�r_rrr�r5�rZ..r��r_..r��rr.r��r[r\r])r^r5�r_..r��rr.r��r_r`)rar5)rr�rrsrrr|r�)r!rYr)r�r�test_signature_on_partialmethod�	sz3TestSignatureObject.test_signature_on_partialmethodcCs8dd�}d|_|jttj|��d�dS)NcSsdS)Nr)r_rrrrl�	szETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foor5z(a))�_partialmethodr�r�rr)r!rlrrr�$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�rr)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_r`rrrr/�	sz@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)rr&r'r/r)r�rrr�	srr!.r�r_r`r�Frr�r}r�csq�j��td�fdd���}tj��}t|jj��dd�}|jd|�|_|S)N)r�cs�d||�S)Nrcr)rr})r�rrr��	szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperrr�)	r�rrrrr|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_r`rrrr~�	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��r`..r��rgrhri)rj.�r_..r��r`..r��rkrl)rm.�r..r��r}..r��rnro)rp.�r_..r��r`..r��rqrr)rs.�r`..r��rt)ru.�r_..r��r`..r��rvrw)rx.)rr�rr/r~�__wrapped__)r!rrfr)r�rr�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_rrrrz
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr&r'rzrrrrrb
srbr_.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!r`rrrrz
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr&r'rzrrrrrb
srncs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMrlrcst�j||||�S)N)rOr�)�mclsr��bases�dctrl)rPrrr�
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr&r'r�rr)rPrr�
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!r`rrrrz
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr&r'rzrrrrrb
sr`r�r|r}rlrr�cs4eZdZdd�fdd�Zdd�Z�S)z8TestSignatureObject.test_signature_on_class.<locals>.CMMrlrcst�j||||�S)N)rOr�)r{r�r|r}rl)rPrrr�-
sz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�S)N)rD)r��nm�bs�dtrrrr~/
szATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)rr&r'r�r~rr)rPr�CMM,
sr�cs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMr/r1cst�j||||�S)N)rOr�)r{r�r|r}r/)rPrrr�2
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr&r'r�rr)rPrr�1
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!r`rrrrz5
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr&r'rzrrrrrb4
sr~rr�cs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMr/r1cst�j|||�S)N)rOrz)r�r�r|r}r/)rPrrrzJ
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)rr&r'rzrr)rPrr�I
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r!r`rrrrzM
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr&r'rzrrrrrbL
sr/r1�r_..r��r�)r�.�r_..r��r�)r�.�r`..r��r�)r�.�r�..r��r|..r��r}..r��rlr.r��r�r�r�r�)r�.�r�..r��r|..r��r}..r��rlr.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/r1.r��r�r�r�r�)r�.)r�rrD)r!rbr�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'rrrrrb[
srbz()c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr&r'rrrrr`]
sr`c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr&r'rrrrrba
sc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr&r'rrrrr`b
szcallable.*is not supported)r�r�rrrDrrs)r!rbr`rrr�$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!r5rrrrzw
szHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__N)rr&r'rzrrrr�P3v
sr�z(spam)c@seZdZdd�ZdS)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSsdS)Nr)r�rlr/rrrr~|
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�rnz
(foo, bar))r�r�rrr�r�rD)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rr_.r�c@seZdZdS)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamN)rr&r'rrrrrY�
srYzis 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_rrrrU�
szHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>zwrapper loop�r_..r��r�)r�.�r_..r��r�)r�.�r_..r��r�)r�.)r�rrr�rryrs)r!rrYr�r�rrr�"test_signature_on_callable_objects�
s&	z6TestSignatureObject.test_signature_on_callable_objectscCs&|j|jddd��d	�dS)
NrcSs|S)Nr)r_rrrrU�
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)r`r�cSsdS)Nr)r_r`rrrrl�
sz8TestSignatureObject.test_signature_equality.<locals>.foorccSsdS)Nr)r_r`rrrr/�
sz8TestSignatureObject.test_signature_equality.<locals>.barcSsdS)Nr)r_r`rrrr/�
s)r`cSsdS)Nr)r_r`rrrr/�
sr`cSsdS)Nr)r_r`rrrr/�
s)r�cSsdS)Nr)r_rrrrr/�
scSsdS)Nr)r_r`rrrr/�
scSsdS)Nr)r`r_rrrr5�
sz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdS)Nr)r_r`rrrrrl�
scSsdS)Nr)rr`r_rrrr/�
sr_rcSsdS)Nr)r_r`rrrrrl�
scSsdS)Nr)rr`r_rrrr/�
scSsdS)Nr)�posr_r`rrrrrl�
scSsdS)Nr)r�rr`r_rrrr/�
scSsdS)Nr)r�r_r`rrrrrl�
scSsdS)Nr)r�rr`r_rrrr/�
s)r}c_sdS)Nr)r�r_r`rrr}rrrrl�
sc_sdS)Nr)r�rr`r_rr}rrrr/�
s)
rrr�r rrrr8r��hashr6)r!rlr/r5rrr�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_rrrrl�
sz8TestSignatureObject.test_signature_hashable.<locals>.foor�r_r~r5r)r�cSsdS)Nr)r_rrrr/sz8TestSignatureObject.test_signature_hashable.<locals>.barcSsdS)Nr)r_rrrrl
szunhashable typecSsdS)Nr)r_rrrrls)rr�r�r�POSITIONAL_OR_KEYWORDr�r�r6r�rr�)r!r�r�rl�foo_sigZ
manual_sigr/rrr�test_signature_hashable�
s 		%z+TestSignatureObject.test_signature_hashablecCs�dddtdddd��}|jttj|��d�dddtdddd��}|jttj|��d	�d
d�}|jttj|��d�dS)Nrrrc)r_r�c[sdS)Nr)r_r`rr}rrrrlsz3TestSignatureObject.test_signature_str.<locals>.fooz'(a:int=1, *, b, c=None, **kwargs) -> 42c_sdS)Nr)r_r`rrr}rrrrlsz+(a:int=1, *args, b, c=None, **kwargs) -> 42cSsdS)Nrrrrrrlsz())rrr�r�rr)r!rlrrr�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_por`r}rrrr�%szDTestSignatureObject.test_signature_str_positional_only.<locals>.testrrzr�z(a_po, /, *, b, **kwargs)rlz(foo, /)r/z(foo, /, **bar)z(foo, /, *bar))rr�r�rr\r�r}r�r�r�r�r��VAR_KEYWORD�VAR_POSITIONAL)r!r�r�r�r�rerrr�"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)Nrc)r�cSsdS)Nrrrrrr�>sz=TestSignatureObject.test_signature_replace_anno.<locals>.testr~)rrr�r�r~rxr�)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>.Spamr1�	_Spam__p2r�r)�	_Spam__p1r�cSsdS)Nr)r!r�r�rrrrlLszJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)rr&r'rlrrrrrYKsrYc@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamN)rr&r'rrrr�HamNsr�r!.r�r�r1rr�r�r��r!..r��r�r1rr��r�r�r1r��r�r�r�)r�.)r�rrl)r!rYr�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'rrrrru[srur)r`cSsdS)Nr)r_r`rrrrl\szHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo)rr�r�rr�)r!rurlr�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'rrrrrucsru)rr�r�r�r�rr�)r!rur�rrr�(test_signature_from_callable_builtin_obj`sz<TestSignatureObject.test_signature_from_callable_builtin_objN),rr&r'r�rr�r�r�r�r�r�r�r�rrxr�rr�r�r�r�r�r�r�r�r�r�rXrbrdrzr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrw!sV/#	G	5
�CQ		 S
	rwc@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�ra)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)NrlrIrrzz
invalid valueZ123znot a valid parameter namer�zname must be a strzis not a valid parameter name�$zcannot have default valuesr_rcz
<Parameterz"a=42")rr�r�r�r�rIr�ryrxrzrrsr�r�r�r�r�rrar�)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)NrlrzrIrc)rr�r�r�r�r6r�r�)r!r�rlrrr�!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)NrlrIrcrz)rr�r�rr r8)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)NrlrIrcrzryrr�r/zname is a required attributezinvalid value for)rr�r�rNr�r�ryrxr�r6rrsr�rIr�rz)r!r�Zp2rrr� test_signature_parameter_replace�s4	
z4TestParameterObject.test_signature_parameter_replacecCs7|jtd��tjddtjj�WdQRXdS)Nzname must be a strrz)rr�rr�r�)r!rrr�(test_signature_parameter_positional_only�sz<TestParameterObject.test_signature_parameter_positional_onlycCs_tjddtjj�}|jt��d|_WdQRX|jt��d|_WdQRXdS)Nr5rzr/r�)rr�r�r�r�rlrz)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)rrrUrr})r�rr}r�rWrrr�call�szTestSignatureBind.callcCs�dd�}|j|j|�d�|jtd��|j|d�WdQRX|jtd��|j|ddd�WdQRX|jtd��|j|dd�WdQRXdS)	NcSsdS)Nrcrrrrrr��sz9TestSignatureBind.test_signature_bind_empty.<locals>.testrcztoo many positional argumentsrr5rz)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)rr}rrrr��sz7TestSignatureBind.test_signature_bind_var.<locals>.testrr1rlr/rr)r)rr1)r)rr1)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_r`rrrrr�sz=TestSignatureBind.test_signature_bind_just_args.<locals>.testrr1r�ztoo many positional argumentsrrz missing a required argument: 'b'z missing a required argument: 'a'rcSs
|||fS)Nr)r_r`rrrrr�scSs
|||fS)Nr)r_r`rrrrr�sr_rr�r`)rr1r�)rr1r�)rr1r)rr1r�)rr1r�)rrr�)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>.testrr1r�)rr1r�)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_r`rrrrrr�)szDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testrr1rrrpr`r_z multiple values for argument 'c'r�rrrp)rr1r�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)r}rrrr�6sz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrlr/r5r|)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_r`rr}rrrr�>szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrr1rlr/r5r|r`r_rrrrp)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)rlrrrr�Rsz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testztoo many positional argumentsrrlcSs|S)Nr)r_rlr/rrrr�Ysz"missing a required argument: 'bar'cSs
||fS)Nr)rlr/rrrr�_sr/r1z)got an unexpected keyword argument 'spam'r5rr|c[s
|||fS)Nr)rlr/�binrrrr�zsz"missing a required argument: 'foo'r�)rr1)rr1)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_r`r�rr}rrrr��sz=TestSignatureBind.test_signature_bind_arguments.<locals>.testrr�r`rrrrr�r}�<r_)r_r�r�)rr�)r`r)rr�)	rrrUr�r|�	arguments�itemsr}r)r!r�r�rWrrr�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�rcr/r�c[s||||||fS)Nr)r��b_po�c_porlr/r}rrrr��szCTestSignatureBind.test_signature_bind_positional_only.<locals>.testr�r�r�rzr�rr1rrrp�rlzbut was passed as a keywordrzparameter is positional only)r�r�r�)rr�rr�r�r|r�r�r�r�r}r�r�r�rr�)r!r�r�r�rer�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!r`rrrr��szATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testrr1r�r!r`)rr1r�)rr1r�)rrrUr�r)r!r�r�rWrrr�!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)rr}rrrr��sr})rrrr�rUr�r�r�)r!r�r�rWrrr�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_rrrrl�szITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foorzunhashable type)rrrUrr�r�)r!rlrWrrr�)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_rrrrl�szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorr1r_cSsdS)Nr)r`rrrr/�szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSsdS)Nr)r_r`rrrrl�sr`)rrrUrr r8r�)	r!rlrWZba2Zba3r/Zba4r�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)Nrrrcr|)rr�c[sdS)Nr)r_r`rrrrrrl�szETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor�rr�r�)
rrrUr2r�r�r�r�r�r�)r!rlr�rWr�Z
ba_pickledrrr�%test_signature_bound_arguments_pickle�s$z8TestBoundArguments.test_signature_bound_arguments_picklecCsedidddiddd��}tj|�}|jdd	d
i�}|jt|�d�dS)Nrrrcr|)rr�c[sdS)Nr)r_r`rrrrrrl
szCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor�rr�z <BoundArguments \(a=20,.*\}\}\)>)rrrUZassertRegexra)r!rlr�rWrrr�#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_r`rrrrrrrl

szMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor�r_r`rrrrr�cSsdS)Nr)r_r`rrrrl
scSsdS)Nrrrrrrl&
sr5cSsdS)Nr)r_rrrrl-
s)r_r�)r`r)r_r)r`r��r)rr�)r_r�)r_r5)	rrrUZapply_defaultsr�r\r�r�Zbind_partial)r!rlr�rWrrr�-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)r1z(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)Nr2�slicer�r�rY�iter�vars�roundr��maxr��__build_class__r��
__import__r�)rr�r�r�r��callabler�rDr�r�ZassertIsNotNonerrr��__text_signature__)
r!Zno_signatureZneeds_groupsZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesr�r�r#rrr�test_builtins_have_signaturesw
s0	
	


	
!
z6TestSignatureDefinitions.test_builtins_have_signaturesN)rr&r'rrxr�rr�rrrrr�s
s	r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestUnwrapcCsAdd�}tjdd�|�}|jtj|�|�dS)NcSs||S)Nr)r_r`rrrr��
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_r`rrrr��
sz,TestUnwrap.test_unwrap_several.<locals>.funcrcSsdS)Nrrrrrr��
sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)r2rr�rNryr�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_r`rrr�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)rB)r�rrrrU�
sz&TestUnwrap.test_stop.<locals>.<lambda>)rr�r	rrr�)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)ryrrsrr)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__ryr)r�rrrb�
srb)ryr�rr)r!rbr)r�r�test_unhashable�
s	zTestUnwrap.test_unhashableN)rr&r'rrr
rr
rrrrr�
s
rc@sdeZdZdd�Zdd�Zejedkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsytjd�}tddd�\}}}|j�j�}|j|dd�tj|�j��|j|d�dS)Nrxz-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)Nrrrrrrl�
sz)TestMain.test_custom_getattr.<locals>.foorc)r�r�r�rr)r!rlrrr�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!rrrr�rrr�test_qualname_source�
s	zTestMain.test_qualname_sourcecCsStjd�}tddd�\}}}|j�j�}|j|dg�dS)Nrxz-mrr@z#Can't get info for builtin modules.)rrr
rr�r�)r!rr'rrr�rrr�
test_builtins�
s
	zTestMain.test_builtinscCs�tjd�}tdddd�\}}}|j�}|j|j|�|j|j|�tjj	s~|j|j
|�|j|d�dS)Nrxz-mrz	--detailsr)rrr	rrfrr�r@rr�
__cached__r�)r!rrrr�outputrrr�test_detailss	zTestMain.test_details)rr&r'rrrxr�rrrrrrrrr�
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!rLr�Z
inspected_src�srcrrr�assertInspectEquals
zTestReload.assertInspectEqualcCs~td|j��e\}}tj|�}|j||�t|d��}|j|j�WdQRX|j||�WdQRXdS)NZ
reload_bugrH)r
�
src_beforerrr!r�rN�	src_after)r!r�rLrr rrr�test_getsource_reload&sz TestReload.test_getsource_reloadN)	rr&r'�textwrap�dedentr"r#r!r$rrrrrs		rcCsStttttttttt	t
ttt
ttttttttttt�dS)N)rrr�rr$rtr]r:rrrrrSrGrwr�r�r�r�r�r�rrrrmrrrr�	test_main0s		r'�__main__)Zr�r�rKrrrr�r�rJZos.pathrr�r��rerQr@rCr%r9rxZ
unittest.mockrHZconcurrent.futuresr�ImportErrorZtest.supportrrrrrZtest.support.script_helperr	r
r�rr=rrZtest.test_importr
r�r�rFrr�r{ryrr4r6ror7r8r:rtr�r�rrr$rGr]rUrYr\r]r�r�rrrrrSrmr�rur�rvrwr�r�r�r�r�rrrr'rrrrr�<module>s�
"
	�7�*:��	z��c@����K{�b?870