Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_inspect.cpython-34.pyc

�
f f#��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZyddlmZWnek
r
dZYnXddlmZmZmZmZddlmZddlmZmZddlm Z!ddlm"Z#dd	l$m%Z%e!j&Z'e'j(d
df�r�e'dd�Z'ne	e'�Z'd
d�Z)ddl*Z*e!j+�Z,Gdd�dej-�Z.dd�Z/Gdd�d�Z0Gdd�de.�Z1Gdd�de.�Z2Gdd�dej-�Z3Gdd�de3�Z4Gdd�de3�Z5Gdd �d e3�Z6Gd!d"�d"e3�Z7Gd#d$�d$e3�Z8Gd%d&�d&e9�Z:Gd'd(�d(e9�Z;d)d*�Z<Gd+d,�d,ej-�Z=e9�Z>Gd-d.�d.ej-�Z?Gd/d0�d0ej-�Z@Gd1d2�d2e@�ZAGd3d4�d4eA�ZBGd5d6�d6ej-�ZCGd7d8�d8ej-�ZDGd9d:�d:ej-�ZEGd;d<�d<ej-�ZFGd=d>�d>ej-�ZGGd?d@�d@ej-�ZHGdAdB�dBej-�ZIGdCdD�dDej-�ZJGdEdF�dFej-�ZKGdGdH�dHej-�ZLdIdJ�ZMeNdKkr�eM�ndS)L�N)�normcase)�ThreadPoolExecutor)�run_unittest�TESTFN�
DirsOnSysPath�cpython_only)�MISSING_C_DOCSTRINGS)�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/python34/lib64/python3.4/test/test_inspect.py�revise4src@sdeZdZeejejejejej	ej
ejejej
ejg
�Zdd�ZdS)�
IsTestBasecCs�t|�}|j||�d|j|f�xe|jt|g�D]M}|tjkrp|tjkrpqFn|j||�d|j|f�qFWdS)Nz%s(%s)z
not %s(%s))	�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�
isfunction�assertFalse)�selfZ	predicate�exp�obj�otherrrr�istestAs#zIsTestBase.istestN)r�
__module__�__qualname__rr�	isbuiltin�isclass�iscode�isframer�ismethod�ismodule�istraceback�isgeneratorrrr$rrrrr;s
rccs xtd�D]}|Vq
WdS)N�)�range)r �irrr�generator_function_exampleKsr2c@seZdZdd�ZdS)�EqualsToAllcCsdS)NTr)r r#rrr�__eq__PszEqualsToAll.__eq__N)rr%r&r4rrrrr3Osr3c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestPredicatescCsLtdd�tt�D��}d}d||f}|j|||�dS)NcSs%g|]}|jd�r|�qS)�is)�
startswith)�.0�xrrr�
<listcomp>Us	z/TestPredicates.test_sixteen.<locals>.<listcomp>�z#There are %d (not %d) is* functions)�len�dirr�assertEqual)r �count�expectedZerr_msgrrr�test_sixteenTszTestPredicates.test_sixteencCs�|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�t	t
d�r�|jtjd�n|jtjtjj��dS)Nzsys.exitz	[].appendzmod.spam.__code__rrr/ztb.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))r2�MemberDescriptorTypezdatetime.timedelta.days)r$rr'r)�sys�exc_inforBr*r-�hasattr�typesZisgetsetdescriptorr�type�tb_frame�f_localsrr+r,�isdatadescriptorr.rZismemberdescriptor�datetimeZ	timedeltaZdays)r rrr�test_excluding_predicates]s0
+z(TestPredicates.test_excluding_predicatescCs6|jtjtj��|jtjgj��dS)N)rrZ	isroutinerD�spamr?)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&rSrrrr�
CustomGetattr�srT)r$rr(r�list�objectr)r rTrrr�test_isclass�szTestPredicates.test_isclasscCsaGdd�dt�}|�}d|_ttj|��}|jd|�|jd|�dS)Nc@seZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C�a�bN)rXrY)rr%r&�	__slots__rrrr�C�sr[�*rXrY)rVrX�dictr�
getmembers�assertIn�assertNotIn)r r[r9Zmembersrrr�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&rdr)rcrr�AbstractClassExample�sre�	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdS)Nr)r rrrrd�sz8TestPredicates.test_isabstract.<locals>.ClassExample.fooN)rr%r&rdrrrr�ClassExample�srg�)�abcrbrcrrZ
isabstractr�int)r rbrergrXr)rcr�test_isabstract�s	zTestPredicates.test_isabstractN)	rr%r&rArOrQrWrarkrrrrr5Ss			r5c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs-tjj|||�tjddd�dS)N���	)�unittest�TestCase�__init__�git�abuse)r r�kwargsrrrrr�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�dS)Nrhrrr;�eggsz    st = inspect.stack()
rorPz    eggs(b + d, c + f)
r/�+�arguez            spam(a, b, c)
��'rtz        self.argue(a, b, c)
)rr<rD�str>r�modfile)r rrr�
test_stack�s    zTestInterpreterStack.test_stackcCs�|jttj�d�|jttjddd��tdddgdf�|jttjddd��tddd	gdf�|jttjd
dd��tddd
gdf�dS)Nrzrrrxryz            spam(a, b, c)
rorPz    eggs(b + d, c + f)
r/�rwz    q = y / 0
)r>r<rsZtrrr})r rrr�
test_trace�s   zTestInterpreterStack.test_tracecCs�tjtj�\}}}}|j|ddg�|j|d�|j|d�|j|idd6dd6dd6�|jtj||||�d�dS)Nr9�y��p�z(x=11, y=14))r�getargvaluesrD�frr>�formatargvalues)r r�varargs�varkw�localsrrr�
test_frame�s%zTestInterpreterStack.test_framecCs�tjtjj�\}}}}|j|ddddddg�|j|d�|j|d�|jtj||||�d	�dS)
NrXrYr�d�e�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))rr�rDr��f_backr>r�)r rr�r�r�rrr�test_previous_frame�s!"z(TestInterpreterStack.test_previous_frameN)	rr%r&rrrvr~r�r�r�rrrrrl�s		rlc@s:eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNc	OsJtjj|||�ttj|j���}|j�|_WdQXdS)N)	rprqrr�openr�
getsourcefile�fodderModule�read�source)r rru�fprrrrr�szGetSourceBase.__init__cCs1|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�rrr�r�rrrrr��sr�c@s�eZdZeZdd�Zdd�Zeje	j
jdkd�dd��Zd	d
�Z
dd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�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)r8�clsrrrr:�s	z<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>cSsg|]}|d�qS)rr)r8r�rrrr:s	T)rr^rDr(r>r�r�r�r�ZgetclasstreerV)r ZclassesZtreerrr�test_getclasses�s2					z(TestRetrievingSourceCode.test_getclassescCsAtjttj�}|j|dtjfdtjfg�dS)NrwrP)rr^rDrr>rwrP)r Z	functionsrrr�test_getfunctionssz*TestRetrievingSourceCode.test_getfunctionsr/z)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>rZgetdocrDr�rsrt)r rrr�test_getdocs
z$TestRetrievingSourceCode.test_getdoccCs|jtjd�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r>rZcleandoc)r rrr�
test_cleandoc sz&TestRetrievingSourceCode.test_cleandoccCs9|jtjt�d�|jtjtj�d�dS)Nz	# line 1
z
# line 20
)r>rZgetcommentsrDr�)r rrr�test_getcomments$sz)TestRetrievingSourceCode.test_getcommentscCs�|jtjt�t�|jtjtj�t�|jtjtjj�t�|jtjtjj�t�|jtjt�tjd�|jtjdt	�t�dS)N�builtins)
r>r�	getmodulerDr�rt�strrF�modulesr})r rrr�test_getmodule(s z'TestRetrievingSourceCode.test_getmodulecCs0|jtjdd�|jtjdd�dS)N�r{��.)r�rsrtrDr�)r rrr�test_getsource6sz'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�None�execr)
r>rrr�rDrPr}rsrt�compile�co_filename�	linecache�cache)r �fn�corrr�test_getsourcefile:s""#z+TestRetrievingSourceCode.test_getsourcefilecCs#|jtjtj�tj�dS)N)r>r�getfilerDr��__file__)r rrr�test_getfileFsz%TestRetrievingSourceCode.test_getfilec	CsVGdd�dt�}Gdd�dd|�}|jt��tj|�WdQXdS)Nc@s"eZdZedd��ZdS)zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMcSs
t�dS)N)�AttributeError)r�rrrr%KszQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)rr%r&�propertyrrrr�CMJsr�c@seZdZdS)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CN)rr%r&rrrrr[Nsr[rf)rJ�assertRaises�	TypeErrorrr�)r r�r[rrr�!test_getfile_class_without_moduleIsz: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)rIr�rFr�r��
__loader__r��__dict__r>rr�r9�__code__r�r�)r r��name�mrrr�test_getmodule_recursionSs		
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�monkeybszHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr�r9)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_filenameN)rr%r&rDr�r�r�rp�skipIfrF�flags�optimizer�r�r�r�r�r�r�r�r�r�rrrrr��s%
r�c@s.eZdZeZdd�Zdd�ZdS)�TestDecoratorscCs|jtjdd�dS)Nr��)r��mod2�wrapped)r rrr�test_wrapped_decoratorrsz%TestDecorators.test_wrapped_decoratorcCs|jtjdd�dS)Nro�
)r�r�Zgone)r rrr�test_replacing_decoratorusz'TestDecorators.test_replacing_decoratorN)rr%r&r�r�r�r�rrrrr�osr�c@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_lambdazsz!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�rX)r rrr�test_lambda_in_list�sz!TestOneliners.test_lambda_in_listcCs|jtjdd�dS)N�7)r�r�Z	anonymous)r rrr�test_anonymous�szTestOneliners.test_anonymousN)
rr%r&r�r�r�r�r�r�r�r�r�r�rrrrr�xsr�c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zej
eed�p�ejjd�d�dd��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_sig�sz!TestBuggyCases.test_multiline_sigcCs |jtj�jdd�dS)N�G�H)r�r�Zfunc69Zfunc71)r rrr�test_nested_class�sz TestBuggyCases.test_nested_classcCs|jtjdd�dS)N�M)r�r�Zfunc77)r rrr�#test_one_liner_followed_by_non_name�sz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|jtjjdd�dS)N�S)r�r�Zcls82Zfunc83)r rrr�test_one_liner_dedent_non_name�sz-TestBuggyCases.test_one_liner_dedent_non_namecCs|jtjdd�dS)N�X�Z)r�r�Zfunc88)r rrr�&test_with_comment_instead_of_docstring�sz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|jtjdd�dS)N�_�a)r�r�Zmethod_in_dynamic_class)r rrr�test_method_in_dynamic_class�sz+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�rrrr�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��IOErrorrrr�)r Zfnamer�rrr� test_findsource_without_filename�sz/TestBuggyCases.test_findsource_without_filenameN)rr%r&r�r�r�rrrrr
r
rpr�rHrr��endswithrrrrrrrr��sr�c@s4eZdZdd�Zdd�Zdd�ZdS)�	TestNoEOLcOs�td|_tj|j�ttjj|jdtj�d��}|jd�WdQXt	|j��ddl
}WdQX||_tj
|||�dS)NZ_dirzinspect_fodder3%spy�wzclass X:
    pass # No EOLr)r�tempdir�os�mkdirr��pathr��extsep�writerZinspect_fodder3r�r�rr)r rrur�Zmod3rrrrr�s
	zTestNoEOL.__init__cCstj|j�dS)N)�shutilZrmtreer)r rrr�tearDown�szTestNoEOL.tearDowncCs|j|jjdd�dS)Nrr/)r�r��X)r rrr�
test_class�szTestNoEOL.test_classN)rr%r&rrrr!rrrrr�src@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�)rrrrrS�sz!_BrokenDataDescriptor.__getattr__N)rr%r&�__doc__r#r%rSrrrrr"�sr"c@s.eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGstd��dS)Nzbroken method descriptor)r�)rrrrr#�sz_BrokenMethodDescriptor.__get__cGstd��dS)Nzbroken method descriptor)r�)rrrrrS�sz#_BrokenMethodDescriptor.__getattr__N)rr%r&r&r#rSrrrrr'�sr'cCsdd�tj|�D�S)NcSs g|]}|dd��qS)Nrzr)r8�trrrr:s	z!attrs_wo_objs.<locals>.<listcomp>)r�classify_class_attrs)r�rrr�
attrs_wo_objssr*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�A	sr,c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BN)rr%r&rrrr�B
sr-c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CN)rr%r&rrrrr[sr[c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DN)rr%r&rrrr�Dsr.)rVrZgetmror>)r r,r-r[r.r@Zgotrrr�test_newstyle_mrosz)TestClassesAndFunctions.test_newstyle_mroNcCs�tj|�\}}}	}
|j||�|j||�|j|	|�|j|
|�|dk	r�|jtj|||	|
�|�ndS)N)rZ
getargspecr>�
formatargspec)r �routine�args_e�	varargs_e�varkw_e�
defaults_e�	formattedrr�r��defaultsrrr�assertArgSpecEqualssz+TestClassesAndFunctions.assertArgSpecEqualsc
	Cs�tj|�\}
}}}
}}}|j|
|�|j||�|j||�|j|
|�|j||�|j||�|j||�|	dk	r�|jtj|
|||
|||�|	�ndS)N)r�getfullargspecr>r0)r r1r2r3r4r5�kwonlyargs_e�kwonlydefaults_e�ann_er6rr�r�r7Z
kwonlyargsZkwonlydefaultsZannrrr�assertFullArgSpecEqualss$z/TestClassesAndFunctions.assertFullArgSpecEqualscCs�|jtjddgdd�|jtjddddd	d
gdddd�|jt|jtjg�|jt|jtjg�|jt|jtj	g�dS)Nr9r�r6z(x, y)rXrYrr�r�r�r�r�rz�rhz!(a, b, c, d=3, e=4, f=5, *g, **h))rzr>rh)
r8rDrwrPr��
ValueErrorr��	keyworded�	annotated�keyword_only_arg)r rrr�test_getargspec/s	

z'TestClassesAndFunctions.test_getargspeccCs�|jtjgddddgdidd6dd�|jtjdgd	itd6dd
�|jtjgddgdd�dS)
Nr3�arg1r:�arg2r;rr6z(*arg1, arg2=1)r<z(arg1: list)�argz(*, arg))r=r�r@rArUrB)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)r9r�rrr�hamOszETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamr9r�r6z(x, y)cs#�j|dddgdd�dS)Nr r9r�r6z(self, x, y))r8)r�)r rr�check_methodXszNTestClassesAndFunctions.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 r9r�rrrrH\szGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSsdS)Nr)r r9r�rrr�__call__`szLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)rr%r&�	functools�wrapsrDrPrH�
partialmethod�phamrJrrrrr[[sr[c@s.eZdZejej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSsdS)Nr)r r9r�rrr�__new__jszOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)rr%r&rKrLrDrPrOrrrr�C_newisrPc@s.eZdZejej�dd��ZdS)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSsdS)Nr)r r9r�rrrrrpszQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)rr%r&rKrLrDrPrrrrrr�C_initosrQ)	rKrLrDrPr8r=�partialrHrN)r rHrIr[rPrQr)r r� test_argspec_api_ignores_wrappedMs 



z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs\dd�}tjdtjj�}tjd|f�|_|j|ddgdd�dS)NcSsdS)Nrrrrr�testvszHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrP�
parametersr2r6z(spam))r�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r=)r rTZ
spam_paramrrr�"test_getfullargspec_signature_attrusz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsrddddd��}tj|�}|j|j|j�dd�}tj|�}|j|j|j�dS)NrPrH)rX�returncSsdS)Nr)rXrrrrT~szITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdS)NrrrrrrT�s)rr9r>�__annotations__Zannotations)r rT�specrrr�#test_getfullargspec_signature_annos}sz;TestClassesAndFunctions.test_getfullargspec_signature_annosz6Signature information for builtins requires docstringsc
Cs�|jtjjdddgdd�|jtjtj��jdddgdd�|jtjddgddd	gd
idd6dd	6dd�dS)
Nr2r r"r6z(self, obj)rr:�dir_fd�follow_symlinksr;Tz,(path, *, dir_fd=None, follow_symlinks=True))r=�_pickle�Pickler�dump�io�BytesIOr�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_defaultsrr9r>r7)r ri�builtinr]rrr� test_getfullagrspec_builtin_func�s	z8TestClassesAndFunctions.test_getfullagrspec_builtin_funcc	Cs<ddl}|j}|jt��tj|�WdQXdS)Nr)ri�docstring_no_signaturer�r�rr9)r rirkrrr�-test_getfullagrspec_builtin_func_no_signature�s	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 )rVr8r�)r r,rrr�test_getargspec_method�sz.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&rp�staticmethodr�classmethodrqr�r�r�rr�datablobr"�ddr'�mdrrrrr,�s	r,rO�methodzmissing __new__rrzmissing __init__rpz
static methodzmissing static methodrzclass methodzmissing class methodr�r�zmissing propertyr�zmissing plain method: %rrrzmissing plain methodrv�datazmissing datarxzmissing method descriptorrwzmissing data descriptorc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSsdS)Nr)r rrrr��sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mN)rr%r&r�rrrrr-�sr-c@s(eZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSsdS)Nr)r rrrr��sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSsdS)Nr)r rrrr�sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)rr%r&r�rrrrrr[�sr[c@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdS)Nr)r rrrrr�sz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)rr%r&rrrrrrr.�sr.)rVr*r_)r r,�attrsr-r[r.rrr�test_classify_newstyle�sVz.TestClassesAndFunctions.test_classify_newstylecCsIxBtt�D]4}tt|�}t|t�r
tj|�q
q
WdS)N)r=�__builtins__�getattr�
isinstancerJrr))r r�rkrrr�test_classify_builtin_types�sz3TestClassesAndFunctions.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)NrHrP)�superrS)r r�)�	__class__rrrSszUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__)rr%r&rSrr)r�r�Metasr�c@s%eZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcSsdS)Nrwr)r rrrrH
szKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)rr%r&rI�DynamicClassAttributerHrrrr�VAsr�rfrHrzrP)rJr�	Attributer�r_r))r r�r�Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttributes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#)�NoBoolrrr4szKTestClassesAndFunctions.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&r4r�r)r�rrr�sr�cseZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)rr%r&rwr)r�rr�HasNBsr�rwrz)rVrr�rwr_r))r r�Zshould_find_attrr)r�r�test_classify_overrides_boolsz4TestClassesAndFunctions.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)Nr�r%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�rfr�rzr�)rJrr�r_r))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)Nr�r%r�BOOMr)r�rrrr�0szLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs |dkrdSt�j|�S)Nr�r\)r�Z_Meta__getattr)r r�)r�rrrS2szPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__)rr%r&r�rSrr)r�rr�/sr�c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassN)rr%r&rrrrr�6sr�rfr�rzr\)rJrr�r_r))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)Nr�r%r�oner)r�rrrr�=sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs |dkrdSt�j|�S)Nr�r)r�rS)r r�)r�rrrS?sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__)rr%r&r�rSrr)r�r�Meta1<sr�cs.eZdZdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)Nr�r%r�twor)r�rrrr�Dsz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs |dkrdSt�j|�S)Nr�r/)r�rS)r r�)r�rrrSFsz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__)rr%r&r�rSrr)r�r�Meta2Csr�cs7eZdZ��fdd�Z�fdd�Z�S)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs<tttddddg�j|��j|����S)Nr�r%r�three)rU�sortedrr�)r�)r�r�rrr�Ks	z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cs |dkrdSt�j|�S)Nr�rz)r�rS)r r�)r�rrrSNsz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__)rr%r&r�rSr)r�r�)r�r�Meta3Jsr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1N)rr%r&rrrr�Class1Rsr�rfc@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2N)rr%r&rrrr�Class2Tsr�r�rzrr�r/r�rz)rJrr�r)r_)	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)Nr�r�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&rrrrr[bsr[rfcSsg|]}|d�qS)rr)r8rXrrrr:ds	zTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r�)rJrr)r`)r r�r[r{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"rwr'rxrrrrr,hs	r,cs/Gdd�dt����fdd�}|S)Nc@seZdZdS)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyN)rr%r&rrrr�Emptyosr�cs2dt|�kr(t�|j�r(dS�|�S)NrF)r=rHr)r9)r��predrrr�qs$zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped)rV)r�r�r)r�r�r�pred_wrapperlszITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperrxrwc@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BN)rr%r&rrrrr-sr-)rVr�ismethoddescriptorrMr>r^r�)r r,r�r�rMr-rrr�test_getmembers_descriptorsgs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�)r_r�rr^r`r+)r r-rYrrr�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)Nrw�	scrambled)r�rS)r�r�)r�rrrS�szOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__)rr%r&rSrr)r�rr��sr�c@s%eZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdS)NrPr)r rrrrw�szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)rr%r&rIr�rwrrrrr,�sr,rfrwr�rP)�eggsz	scrambled)r�zspam)rJr_rr^)r r�r,rrr� test_getmembers_VirtualAttribute�sz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCs_Gdd�dt�}Gdd�dd|�}dd�tj|�D�}|jd|�dS)	Nc@seZdZdd�ZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSs
dddgS)Nr�rr�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&rrrrr[�sr[rfcSsg|]}|d�qS)rr)r8rXrrrr:�s	zJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r�)rJrr^r`)r r�r[r{rrr�test_getmembers_with_buggy_dir�sz6TestClassesAndFunctions.test_getmembers_with_buggy_dir)rr%r&r/r8r=rCrGrSrZr^rpr�rrgrrlrnror|r�r�r�r�r�r�r�r�r�r�r�rrrrr+sB

(				P

#	 
r+c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestGetClosureVarscCs�dd�}t�}i|d6}itd6}itd6}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�)rVr�r�r�ClosureVarsr>�getclosurevars)r r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesr@rrr�test_name_resolution�s	


	z'TestGetClosureVars.test_name_resolutioncCs�dd�}t�}i|d6}itd6}itd6}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�)rVr�r�rr�r>r�)r r�r�r�r�r�r�r@rrr�test_generator_closure�s	


	z)TestGetClosureVars.test_generator_closurecCs�Gdd�d�}t�}i|d6}itd6}itd6}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�rrrrr[�sr[r�r�r�r�)rVr�r�rr�r>r�r�)r r[r�r�r�r�r�r@rrr�test_method_closure�s	


	z&TestGetClosureVars.test_method_closurecsdd��dd�}dd�}dd�}�fd	d
�����fdd�}|d
�}|d�}||d�}�j�|�id
d6��j�|�idd6��j�|�idd6|d6��j�dd�d��idd6��|�dS)NcSstj|�jS)N)rr�Z	nonlocals)r�rrr�_nonlocal_vars�sz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscs�fdd�}|S)Ncs�|S)Nr)r�)r9rr�add�szFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r9r�r)r9r�
make_adder�sz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�S)Nr)rE)rD�funcrr�<lambda>�szFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�rDr)rDr�r�curry�sz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs
||kS)Nr)rXrYrrr�	less_than�sz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs%�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�S)Nr)r9)r�rrr��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��s	z0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs$�j�|�i�jd6�dS)Nr�)r>r�)r�)r�r�r rr�check_y_combinator�szATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorrr/rhr9rDr�cs�fdd�S)Ncs�|S)Nr)r�)r9rrr��szITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>r)r9r)r9rr��sz7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>rz)r>)r r�r�r�r�ZincZadd_twoZgreater_than_fiver)r�r�r r�test_nonlocal_vars�s z%TestGetClosureVars.test_nonlocal_varscCscdd�}tjiiit��}|jtjdd��|�|jtj|�|�dS)NcSsdS)Nrrrrrrdsz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdS)NTrrrrrr�sz>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)rr�rr>r�)r rdZ_emptyrrr�test_getclosurevars_empty�sz,TestGetClosureVars.test_getclosurevars_emptycCsYGdd�d�}|jttjd�|jttjt�|jttji�dS)Nc@seZdZdS)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TN)rr%r&rrrr�Tsr�r)r�r�rr�rU)r r�rrr�test_getclosurevars_errorsz,TestGetClosureVars.test_getclosurevars_errorcCs'd}i}t||�|d|fS)Nzdef f(): print(path)r�)r�)r �coder�rrr�_private_globalss
z#TestGetClosureVars._private_globalscCsa|j�\}}|jdd�tjiiitd6dh�}|jtj|�|�dS)Nr}r�r)r��poprr�r�r>r�)r r�r�r@rrr�test_builtins_fallbacks"z)TestGetClosureVars.test_builtins_fallbackcCsb|j�\}}idd6|d<tjiiidd6dh�}|jtj|�|�dS)Nrrr}r�)r�rr�r>r�)r r�r�r@rrr�test_builtins_as_dicts"z(TestGetClosureVars.test_builtins_as_dictcCs^|j�\}}t|d<tjiiitjd6dh�}|jtj|�|�dS)Nr}rr�)r�rrr�rr>r�)r r�r�r@rrr�test_builtins_as_modules
%z*TestGetClosureVars.test_builtins_as_moduleN)
rr%r&r�r�r�r�r�r�r�r�r�r�rrrrr��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))r]rr>)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))r]r�	ExceptionZfail�assertIsrJr>r�)r r�Zcall_param_stringr�r�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))r�r�)r r�rrr�
test_plainEs&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]))r�r�)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))r�r�)r r�rrr�
test_varkwesz#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))r�r�)r r�rrr�test_varkw_onlyqsz(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)r�r�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))r�r�)r r�rrr�test_multiple_features�sz/TestGetcallargsFunctions.test_multiple_featuresc	CsJ|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|�WdQXdd�}|jtd��tj|�WdQXdS)Nr�za, bza, b=1rszx=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)rXrrr�f5�sz0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSsdS)Nr)rXrYrrrr�f6�sz0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c')r�r��assertRaisesRegexr�rZgetcallargs)	r Zf0�f1�f2r�Zf3Zf4r�r�rrr�test_errors�sJ	
z$TestGetcallargsFunctions.test_errors)
rr%r&r�r�r�r�r�r�r�r�r�r�rrrrr�$s	
r�cs.eZdZdd�Z�fdd�Z�S)�TestGetcallargsMethodscCs/Gdd�dt�}||_|�|_dS)Nc@seZdZdS)z)TestGetcallargsMethods.setUp.<locals>.FooN)rr%r&rrrr�Foo�sr�)rVr��inst)r r�rrr�setUp�s	zTestGetcallargsMethods.setUpcsDd|kst�tt|�j}|d|�|j_|jjS)Nr zself, )�AssertionErrorr�r�r�r�ryr�)r r�Zmk)r�rrr��sz#TestGetcallargsMethods.makeCallable)rr%r&r�r�rr)r�rr��sr�cs[eZdZ�fdd�Zd�fdd�Zd�fdd�Zddd	�Z�S)
�TestGetcallargsUnboundMethodscs tt|�j|�|jjS)N)r�r�r�r�ry)r r�)r�rrr��sz*TestGetcallargsUnboundMethods.makeCallableNcs%tt|�j|j|||��S)N)r�r�r��_getAssertEqualParams)r r�r�r�)r�rrr��sz1TestGetcallargsUnboundMethods.assertEqualCallArgscs%tt|�j|j|||��S)N)r�r�r�r�)r r�r�r�)r�rrr��sz2TestGetcallargsUnboundMethods.assertEqualExceptioncCs>d|kst�t|pid|j�}|d||fS)Nr�zinst,)r�r]r�)r r�r�r�rrrr��sz3TestGetcallargsUnboundMethods._getAssertEqualParams)rr%r&r�r�r�r�rr)r�rr��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).�TestGetattrStaticcCs�Gdd�dt�}|�}|jtj|d�|j�|jtj|dd�|j�|jt��tj|d�WdQX|jtj|dd�d�dS)Nc@seZdZe�ZdS)z+TestGetattrStatic.test_basic.<locals>.ThingN)rr%r&rVr9rrrr�Thingsr�r9r�rz)rVr>r�getattr_staticr9r�r�)r r��thingrrr�
test_basics	"zTestGetattrStatic.test_basiccCsXGdd�dt�}Gdd�d|�}|�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z/TestGetattrStatic.test_inherited.<locals>.ThingN)rr%r&rVr9rrrrr�sr�c@seZdZdS)z4TestGetattrStatic.test_inherited.<locals>.OtherThingN)rr%r&rrrr�
OtherThingsr�r9)rVr>rr�r9)r r�r�Z	somethingrrr�test_inheriteds	z TestGetattrStatic.test_inheritedcCsdGdd�dt�}|d�}|jtj|d�d�|`|jtj|d�d�dS)Nc@s"eZdZdZdd�ZdS)z3TestGetattrStatic.test_instance_attr.<locals>.Thingr/cSs
||_dS)N)r9)r r9rrrrrsz<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)rr%r&r9rrrrrrr�sr�rzr9r/)rVr>rr�r9)r r�r�rrr�test_instance_attrs
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 rrrr9#sz0TestGetattrStatic.test_property.<locals>.Thing.xN)rr%r&r�r9rrrrr�"sr�r9)rVr>rr�r9)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&r9r)�descrrr�.sr�r9)rVr>rr�)r r�r�r�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&rVr9rrrrr�4sr�r9)rVr>rr�r9)r r�rrr�test_classAttribute3sz%TestGetattrStatic.test_classAttributecCs=Gdd�dt�}|jtj|d�|jd�dS)Nc@s.eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jS)N)�_x)r rrrr9;sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)rr%r&rIr�r9rVr�rrrrr�:sr�r9)rVr>rr�r�)r r�rrr�test_classVirtualAttribute9sz,TestGetattrStatic.test_classVirtualAttributecCsOGdd�dt�}Gdd�d|�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingN)rr%r&rVr9rrrrr�Csr�c@seZdZdS)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingN)rr%r&rrrrr�Esr�r9)rVr>rr�r9)r r�r�rrr�test_inherited_classattributeBsz/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�barr9cSs
d|_dS)Nrd)r9)r rrrrrNsz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)rr%r&r�rZrrrrrrr�Ks	r�r9r�r)rVr>rr�r9)r r�r�rrr�
test_slotsJs	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>.metardN)rr%r&rRrrrr�metaXsrc@seZdZdS)z/TestGetattrStatic.test_metaclass.<locals>.ThingN)rr%r&rrrrr�Zsr�rfrRrdc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subN)rr%r&rrrr�sub^src@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingrzN)rr%r&r9rrrrr�`sr�c@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingN)rr%r&rrrr�OtherOtherThingdsrr9rz)rJrVr>rr�)r rr�rr�rrrr�test_metaclassWsz TestGetattrStatic.test_metaclasscCs?|jtjddd�d�|jtjdd�d�dS)Nrrd�lower)r>rr��assertNotEqual)r rrr�test_no_dict_no_slotsisz'TestGetattrStatic.test_no_dict_no_slotscCs>tt��,}|jtj|d�t|�j�WdQXdS)Nr�)r�r�r>rr�rJr�)r Zhandlerrr�%test_no_dict_no_slots_instance_membermsz7TestGetattrStatic.test_no_dict_no_slots_instance_membercCsRGdd�dt�}Gdd�d|�}|jtj|�d�|j�dS)Nc@s%eZdZdgZdd�ZdS)z5TestGetattrStatic.test_inherited_slots.<locals>.Thingr9cSs
d|_dS)Nrd)r9)r rrrrrvsz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)rr%r&rZrrrrrrr�ts	r�c@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingN)rr%r&rrrrr�ysr�r9)rVr>rr�r9)r r�r�rrr�test_inherited_slotsrsz&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)Nrzr)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)rpr1�vrrrr��sz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)rVr�r>rr�r%)r r�rdr)r�r�test_descriptors	
z!TestGetattrStatic.test_descriptorcsuGdd�dt��G�fdd�dt�}Gdd�dtd|�}|jtj|d�|jd�dS)	Nc@seZdZdd�ZdS)zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSsdS)Nrzr)r rrrrrr#�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�rrr�src@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingN)rr%r&rrrrr��sr�rfr�)rVrJr>rr�r�)r rr�r)r�r�test_metaclass_with_descriptor�sz0TestGetattrStatic.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>.BaserzN)rr%r&rdrrrr�Base�src@s(eZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tS)NT)�executedrV)r rrrr��s	zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)rr%r&rr�r�rrrr�	Something�srrdrz)rVr>rr�rr)r rrrrrr�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)rV)r rrr�__mro__�sz<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)rr%r&r�rrrrrr��sr�c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.BaserzN)rr%r&rdrrrrr�src@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingN)rr%r&rrrrr�srrfrdrz)rJrVr>rr�)r r�rrrrr�test_mro_as_property�s
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>.Foorzcs
d�_iS)NT)�called)r )rTrrr��s	z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)rr%r&rXr�r�r)rTrrr��sr�r>rXrz)rr]rXr>rr�r)r r�rdr)rTr�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)rr��get)r �key�default)r�rTrrr�s	z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get)rr%r&rr)rT)r�r�Custom�src@seZdZdZdS)z6TestGetattrStatic.test_custom_object_dict.<locals>.FoorzN)rr%r&rXrrrrr��sr�rXrz)rr]rVr�r>rr�r)r rr�rdr)rTr�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��szHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N)rr%r&r�r�rrrrr��sr�c@s"eZdZdZdd�ZdS)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSs
d|_dS)Nr\)rP)r rrrrr�szITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)rr%r&rrrrrrrr��sr�rfrPr\)rJr>rr�rr)r r�r�rrrr�test_metaclass_dict_as_property�s
	z1TestGetattrStatic.test_metaclass_dict_as_propertycCs,t�}|jtjtd|�|�dS)N�version)rV�assertIsNotrr�rF)r �sentinelrrr�test_module�s	zTestGetattrStatic.test_modulec
Cs�Gdd�dt�}Gdd�dtd|�}Gdd�dd|�}|jt��tj|d�WdQX|j|j�dS)	Nc@s"eZdZedd��ZdS)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTrPr\)rr])r rrrr��s	z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__N)rr%r&r�r�rrrr�MetaMeta�sr"c@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rr%r&rrrrrr��sr�rfc@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingN)rr%r&rrrrr��sr�rP)rJr�r�rr�rr)r r"r�r�rrr�3test_metaclass_with_metaclass_with_dict_as_property�szETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)rr%r&r�r�r�r�r�r�r�r�rrrr	r
rrrrrrrr!r#rrrrr�s,	

	

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)Nrh)r0)�numberrrr�number_generatorsz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r r&rrrr�szTestGetGeneratorState.setUpcCstj|j�S)N)rZgetgeneratorstater')r rrr�_generatorstate
sz%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_suspendeds
z$TestGetGeneratorState.test_suspendedcCs1x|jD]}q
W|j|j�tj�dS)N)r'r>r(r�
GEN_CLOSED)r r1rrr�test_closed_after_exhaustionsz2TestGetGeneratorState.test_closed_after_exhaustionc	CsC|jt��|jjt�WdQX|j|j�tj�dS)N)r�r$r'�throwr>r(rr,)r rrr�%test_closed_after_immediate_exceptionsz;TestGetGeneratorState.test_closed_after_immediate_exceptioncs<�fdd�}|��_t�j�t�j�dS)Nc3sRxKtd�D]=}�j�j�tj�|V�j�j�tj�q
WdS)Nrh)r0r>r(rZGEN_RUNNING)r%)r rr�running_check_generator#szCTestGetGeneratorState.test_running.<locals>.running_check_generator)r'r*)r r0r)r r�test_runnings
z"TestGetGeneratorState.test_runningcCs\dj�}xI|D]A}tt|�}|j|t|��|j|t|��qWdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED)r�r~rr_�reprr�)r �namesr��staterrr�test_easy_debugging.s

z)TestGetGeneratorState.test_easy_debuggingcCssddd�}|dddg�}|jtj|�idd6dddgd6�t|�|jtj|�idd6dddgd6dd6dd	6�t|�|jtj|�idd6dddgd6dd6d
d	6�t|�|jtj|�idd6dddgd6dd6dd	6d
d6�yt|�Wntk
rUYnX|jtj|�i�dS)Ncss5d}x(|D] }|dkr(d}n|Vq
WdS)Nrr/rz�)rr/rzr)�lstrXrYr
rrrr�each7s

	z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrr/rzrXr7r
rYr6r)rr/rz)rr/rz)rr/rz)r>r�getgeneratorlocalsr*�
StopIteration)r r8Znumbersrrr�test_getgeneratorlocals6s*
!
!
!
z-TestGetGeneratorState.test_getgeneratorlocalscCsndd�}|�}|jtj|�i�yt|�Wntk
rPYnX|jtj|�i�dS)Ncss	dVdS)Nrrrrrr�	yield_oneTszFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one)r>rr9r*r:)r r<r�rrr�test_getgeneratorlocals_emptySs	
z3TestGetGeneratorState.test_getgeneratorlocals_emptycCsb|jttjd�|jttjdd��|jttjt�|jttjd�dS)NrcSsdS)NTr)r9rrrr�`szETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>r/rz)r/rz)r�r�rr9r)r rrr�test_getgeneratorlocals_error^sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)rr%r&r�r(r)r+r-r/r1r5r;r=r>rrrrr$sr$c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
eej
ed�dd���Zeej
ed�dd���Zedd��Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zej
ed�d0d1��Zej
ed�d2d3��Z d4d5�Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDS)E�TestSignatureObjectcCsPtj|�}tdd�|jj�D��|j|jkrFdn|jfS)Ncssi|]_}|j|j|jkr'dn|j|j|jkrEdn|jt|j�j�fVqdS).N)r�r�empty�
annotationr��kindr)r8Zparamrrr�	<genexpr>isz0TestSignatureObject.signature.<locals>.<genexpr>.)rr��tuplerU�values�return_annotationr@)r��sigrrrr�fs
zTestSignatureObject.signaturec
4Csltj}tj}|jt|��d�dddd�}tj|�}|jdjd|j�}|jdjd|j�}|jd	}|jd
}|jd}	|jd}
|jd
}||||	|
|f�|j	t
d��||||	|
|f�WdQX|j	t
d��|||	||
|f�WdQX|j	t
d��||	|||
|f�WdQX|j	t
d��||||	||
f�WdQX|jdd�}|j	t
d��||||	||
f�WdQX|j	t
d��|||f�WdQX|j	t
d��||||f�WdQX|j	t
d��|||f�WdQXdS)Nz()r\�dc_sdS)Nr)�po�pk�pod�pkd�korrurrrrTxsz7TestSignatureObject.test_signature_object.<locals>.testrIrBrKrJrLrrMruzwrong parameter orderr�zduplicate parameter namezfollows default argument)rrXrVr>r�r�rU�replacerWr�r?)
r �S�PrTrGrIrKrJrLrrMruZkwargs2rrr�test_signature_objectrs<		




z)TestSignatureObject.test_signature_objectcCsadd�}tj|�}|jt��d|_WdQX|jt��d|jd<WdQXdS)NcSsdS)Nr)rXrrrrT�sz=TestSignatureObject.test_signature_immutability.<locals>.testrrX)rr�r�r�rdr�rU)r rTrGrrr�test_signature_immutability�sz/TestSignatureObject.test_signature_immutabilitycCs/dd�}|j|j|�fdf�dS)NcSsdS)NrrrrrrT�sz9TestSignatureObject.test_signature_on_noarg.<locals>.test.)r>r�)r rTrrr�test_signature_on_noarg�sz+TestSignatureObject.test_signature_on_noargcCs5ddddd��}|j|j|�d
�dS)Nrd�{)rYr[cSsdS)Nr)rXrYrrrrT�sz9TestSignatureObject.test_signature_on_wargs.<locals>.testrX.�positional_or_keywordrY�rX..rU�rY.zfoorU�rVrW)rXrT)r>r�)r rTrrr�test_signature_on_wargs�s
z+TestSignatureObject.test_signature_on_wargscCs\tttddd��}|j|j|�ddtdfddtdfftf�dS)N)rXrYr[cSsdS)Nr)rXrYrrrrT�sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testrX.�keyword_onlyrY)�floatr�rjr>r�)r rTrrr�test_signature_on_wkwonly�s
z-TestSignatureObject.test_signature_on_wkwonlycCshddddddtddd	��}|j|j|�dddddddtdffdf�dS)Nr�rHrTrdr�baz)rYrrPruc_sdS)Nr)rXrYrPrHrrurrrrT�sz@TestSignatureObject.test_signature_on_complex_args.<locals>.testrX.rUrYr�var_positionalrPrZru�var_keyword)rX..�positional_or_keyword)rYr�zfoor`)zargs.zbarr^)zspam.r]�keyword_only)rHrT.ra)rjr>r�)r rTrrr�test_signature_on_complex_args�s'z2TestSignatureObject.test_signature_on_complex_argsz6Signature information for builtins requires docstringsc
s2ddl}�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�}||��WdQX|t
j�|tj�dS)NrcsRtj|�}�jt|tj���jt|jj��dj	d�|S)zAUse this to test unbound methods (things that should have a self)rr )
rr�rrrXr>rUrUrEr�)rr�)r rr�test_unbound_method�s&zKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_methodcs^tj|�}�jt|tj��|jrZ�jt|jj��dj	d�n|S)zRUse this to test bound methods or normal callables (things that don't expect self)rr )
rr�rrrXrUrrUrEr�)rr�)r rr�
test_callable�s
	)zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jS)N)rUr)r�)r�rrr��sz9TestSignatureObject.test_signature_on_builtins.<locals>.prprhrYsbytesr�g��Q�	@r1�#�nr(Tr�FZlocalrzrFr!rrizno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rr%r&rJrJrrrr�ThisWorksNowsrg)rirjr>rF�maxsizerVrarbrcrd�StringIOr��	maketransr]�fromkeysrJrJrj�__add__�minr�r?�__delitem__r��
__delete__)r rircrdr�r�rgr)r r�r�test_signature_on_builtins�s@










z.TestSignatureObject.test_signature_on_builtinscCsSddl}|j}dd�}||�}|jtj|�tj|��dS)Nrcs.tj��td�fdd���}|S)N)r[cs
�||�S)Nr)rru)r�rr�wrappersz\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)rKrLrj)r�rqr)r�r�	decoratorszKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator)rirjr>rr�)r rir�rrZdecorated_funcrrr�$test_signature_on_decorated_builtinss	z8TestSignatureObject.test_signature_on_decorated_builtinsc	Cs9ddl}|jtd��tj|j�WdQXdS)Nrzno signature found for builtin)rir�r?rr�rm)r rirrr�'test_signature_on_builtins_no_signature#sz;TestSignatureObject.test_signature_on_builtins_no_signaturecCsS|jtd��tjd�WdQX|jtd��tjjd�WdQXdS)Nzis not a callable objectr\zis not a Python function)r�r�rr�rX�
from_function)r rrr�test_signature_on_non_function)sz2TestSignatureObject.test_signature_on_non_functionc	Cs-|jtd��tjjd�WdQXdS)Nzis not a Python builtinr\)r�r�rrXZfrom_builtin)r rrr�"test_signature_from_builtin_errors0sz6TestSignatureObject.test_signature_from_builtin_errorsc
sDdddd�}Gdd�d�}tjj|�}tjj||��}|j||�tj||��}|j||�||�}|`|j|j|�d�tj��fdd
�}tjj	d|��_||�}|j
tj|��d|_|jtj|��|jtj|�|�WdQXdS)N�kwonlyTc_sdS)Nr)rXrYrx�	kwonlyreqrrurrrr�5szITestSignatureObject.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�rrrrr=szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_s|j||�S)N)r�)r rrurrrrJEszVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N)rr%r&rrrJrrrr�funclike8sr|r.r^rur_cst|d�rdS�|�S)N�_builtinmockT)rH)r")�_orig_isdescrr�_isdesc\szLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor�zargs..zvar_positional�zkwargs..zvar_keyword�r�r�)r�.)
rrXrur>r�rzr�rpZmockZpatchrr}r)r r�r|Zsig_funcZsig_funclikeZflrZbuiltin_funcr)r~r�'test_signature_from_functionlike_object4s*		z;TestSignatureObject.test_signature_from_functionlike_objectc
swdddd��G�fdd�d�}|jtd��tjj|�WdQX|jttj|��d�dS)	NrxTc_sdS)Nr)rXrYrxryrrurrrr�mszCTestSignatureObject.test_signature_functionlike_class.<locals>.funccsIeZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSsdS)Nr)r ZmarkerrrrrrqszPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)rr%r&rrr�r\rzr{r)r�rrr|ps				r|zis not a Python functionz(marker))r�r�rrXrur>r�r�)r r|r)r�r�!test_signature_functionlike_classis

z5TestSignatureObject.test_signature_functionlike_classc	Cs�Gdd�d�}|j|j|�j�d
tf�|j|j|�j�d�|j|j|�d�|jtd
��|j|��WdQXdS)Nc@sLeZdZdd�Zdeddd��Zdd�Zd	d
�ZdS)z:TestSignatureObject.test_signature_on_method.<locals>.TestcWsdS)Nr)rrrrrr�szCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r)r[cSsdS)Nr)r rDrErrrrr�sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWsdS)Nr)rrrr�m2�sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSsdS)Nr)rXrrrrJ�szCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__N)rr%r&rrrjrrr�rJrrrr�Test�sr�rD.rUrErrr^zinvalid method signature�zarg1..�positional_or_keyword�zarg2r.r�)r�r���args..�var_positional�r�)r�.�r�..r��r�)r�.)r>r�rrrjr�r�r?)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 rDrErrrrr�szHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1N)rr%r&rjrrrrrrr��sr�c_sdS)Nr)rrurrr�m1d�szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1drD.rUrEr�zarg1..�positional_or_keyword�zarg2r.r�)r�r�)rKrLrrr>r�rj)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>.TestrErcSsdS)Nr)r�rDrErrrrd�szCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)rr%r&rurdrrrrr��sr�rD.rUrErrZ��arg1..�positional_or_keyword��arg2r.�keyword_only�r�r�)r�.�r�..r��r�r.r��r�r�)r�.)rdr>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�rFrrrrd�szDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)rr%r&rtrdrrrrr��sr�r�.rUrFrZ��cls..�positional_or_keyword��arg..�keyword_only�r�r�)r�.�r�..r��r�..r��r�r�)r�.)rdr>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��WdQX|jtd��tj||dd��WdQXd	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)rRcSsdS)NrrrrrrT�sz;TestSignatureObject.test_signature_on_partial.<locals>.test.zhas incorrect argumentsrrXcSsdS)Nr)rXrYrr�rrrrT�srUrYrrZr�r/c_sdS)Nr)rXrYrrurrrrTsrr^rur_rzrTTr\)rr[cSsdS)Nr)rXrYrrrrrT4scSs|S)Nr)rXrrrrdDsz:TestSignatureObject.test_signature_on_partial.<locals>.foor��cSs
|||fS)Nr)rXrYrrrrrdNsr�cSs||||fS)Nr)rXrYrr�rrrrdXs��r�cSs
|||fS)Nr)rXrYrrrrrdes�
r6c[sdS)Nr)rXrYrr�rurrrrdzsrBz(a, b, /, c, d, **kwargs)�positional_only�rX..�positional_or_keyword�rY..r��r..�keyword_only�r�..r��r�r�r�r�)r�.�rY..r��r..r��r�..r��r�r�r�)r�.�rY..r��rr/.r��r�..r��r�r�r�)r�.�rX..r��rYr.r��rr/.r��r�..r��r�r�r�r�)r�.�rYr.r��rr/.r��r�..r��r�r�r�)r�.�rXr.r��rY..r��r..r��r�..r��r�r�r�r�)r�.��args..�var_positional�rY..r���kwargs..�var_keyword�r�r�r�)r�.�rXr.r��rY..r��r�..r��r�r�r�)r�.�r�..r��rY..r��r�..r��r�r�r�)r�.�r�..r��rY..r��r�..r��r�r�r�)r�.�r�..r��rYr.r��r�..r��r�r�r�)r�.�rX..r��r�..r��rYr.r��r�..r��r�r�r�r�)r�.�rX..r��r�..r��rYr.r��r�..r��r�r�r�r�)r�.)rY..r��rXr�.r��r�)r�.�rYr�.r��r..r��r�r�)r�.)rr�r��rX..r��rYr�.r��rr�.r��r�r�.r��r�r�r�r�)r�.)r�r�r�r�)r�r/r�)r�r6r�)r�r6r�)rr6r�)r6r�r��rY..r��r..r��r�..r��r�..r��r�r�r�r�)r�.�r..r��r�..r��r�..r��r�rr)r.�r�..r��r�..r��rr)r.�rrz.r��r�..r��r�..r��rrr)r	.�rY..r��rrz.r��r�..r��r�..r��r
rrr
)r.)rKrRrrVr>r�r�r?rjrY�bindrrurU�copyrNrWrXrEr�)
r rRrVrTrGZpsigrdZ_foo�baZparamsrrr�test_signature_on_partial�s@	%!$'!'-$!
$
!!*!!$!z-TestSignatureObject.test_signature_on_partialcs�ddlm�G�fdd�d�}|jtd��tj|j�WdQXG�fdd�d�}|j|j|j�d�|j|j|�j�d�dS)Nr)rMcs(eZdZdd�Z�e�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSsdS)NrrrrrrT�szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN)rr%r&rTrHr)rMrr�Spam�srzhas incorrect argumentscs7eZdZdddd��Z�edd�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamrP)r[cSsdS)Nr)�itrXrrrrrT�szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testrrN)rr%r&rTrHr)rMrrr�sr.rUrXrrrZrP�zit..�positional_or_keyword�rX..r�rr.�keyword_only�rrr)r�spam�rX..r�rr.r�rr)rr)rKrMr�r?rr�rHr>)r rr)rMr�test_signature_on_partialmethod�sz3TestSignatureObject.test_signature_on_partialmethodcCs8dd�}d|_|jttj|��d�dS)NcSsdS)Nr)rXrrrrd�szETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorPz(a))�_partialmethodr>r�rr�)r rdrrr�$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��fdd��G�fdd�d�}|j|j|j�d�|j|j|�j�d�d
d�}|j|_|j|j|�d"�dS)#Nrcs.�j��td�fdd���}|S)N)r[cs
�||�S)Nr)rru)r�rrrq�szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)rLrj)r�rq)rK)r�rrr�szBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcs"eZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r rXrYrrrr�sz@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)rr%r&rr)rrrrr��sr�r .rUrXrYcsq�j��td�fdd���}tj��}t|jj��dd�}|jd|�|_|S)N)r[cs�d||�S)Nr\r)rru)r�rrrq�szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperrrU)	rLrjrr�rDrUrErNrY)r�rqrG�
new_params)rK)r�rrr�scs"eZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r rXrYrrrrJ�szETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N)rr%r&rJr)rrrrr��scSsdS)Nrrrrr�wrapped_foo_call�szITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call�zself..�positional_or_keyword�rX..r%�rY..r%�r$r&r')r(.�rX..r%�rY..r%�r)r*)r+.�rX..r%�rY..r%�r,r-)r..�rY..r%�r/)r0.�rX..r%�rY..r%�r1r2)r3.)rKr>r�rrJ�__wrapped__)r r�r#r)rrrKr�test_signature_on_decorated�s6	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 rXrrrrr	sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr%r&rrrrrrr[	sr[rX.rUc@seZdZdd�ZdS)z7TestSignatureObject.test_signature_on_class.<locals>.CMcSsdS)Nr)r�rXrrrrJ		sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__N)rr%r&rJrrrrr�	sr�c@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r rYrrrrr	sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr%r&rrrrrrr[	srfcs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMrdrcst�j||||�S)N)r�rO)�mclsr��bases�dctrd)r�rrrO	sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr%r&rOrr)r�rr�	sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r rYrrrrr	sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr%r&rrrrrrr[	srYr�r7r8rdrrZcs4eZdZdd�fdd�Zdd�Z�S)z8TestSignatureObject.test_signature_on_class.<locals>.CMMrdrcst�j||||�S)N)r�rO)r6r�r7r8rd)r�rrrO&	sz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�S)N)rJ)r��nm�bs�dtrrrrJ(	szATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)rr%r&rOrJrr)r�r�CMM%	sr<cs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMrr/cst�j||||�S)N)r�rO)r6r�r7r8r)r�rrrO+	sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr%r&rOrr)r�rr�*	sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r rYrrrrr.	sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr%r&rrrrrrr[-	sr9r:r;cs(eZdZdd�fdd�Z�S)z7TestSignatureObject.test_signature_on_class.<locals>.CMrr/cst�j|||�S)N)r�rr)r�r�r7r8r)r�rrrrC	sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)rr%r&rrrr)r�rr�B	sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r rYrrrrrF	sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr%r&rrrrrrr[E	srr/�rX..�positional_or_keyword�r=)r?.�rX..r>�r@)rA.�rY..r>�rB)rC.��name..r>��bases..r>��dct..r>��foor.�keyword_only�rDrFrHrJ)rM.�rE..r>�rG..r>�rI..r>�rKr.rL�rNrOrPrQ)rR.�znm..r>�zbs..r>�zdt..r>�rSrTrU)rV.�rY..r>�rW)rX.�rE..r>�rG..r>�rI..r>�zbarr/.rL�rYrZr[r\)r].)r>r�rJ)r r[r�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�WdQX|jtd��|jtj|�d�WdQXdS)	Nc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr%r&rrrrr[T	sr[z()c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr%r&rrrrr.V	sr.c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr%r&rrrrr[Z	sc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr%r&rrrrr.[	szcallable.*is not supported)r>r�rr�rJr�r?)r r[r.rrr�$test_signature_on_class_without_initP	sz8TestSignatureObject.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&rrrrrPg	srPc@seZdZdS)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitN)rr%r&rrrr�
EmptyTraith	sr`c@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2N)rr%r&rrrr�P2i	srac@seZdZdd�ZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSsdS)Nr)r rPrrrrrp	szHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__N)rr%r&rrrrrr�P3o	srbz(spam)c@seZdZdd�ZdS)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSsdS)Nr)r�rdrrrrrJu	szKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__N)rr%r&rJrrrr�MetaPt	srcc@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4N)rr%r&rrrr�P4w	srdrfz
(foo, bar))r>r�rr�rarbrJ)r rPr`rarbrcrdrrr�test_signature_on_builtin_classa	sz3TestSignatureObject.test_signature_on_builtin_classcCsGdd�d�}|j|j|��d�Gdd�d�}|jtd��tj|��WdQXGd	d
�d
||�}|j|j|��d�Gdd�d�}d
d�|_|j|j|�d�||_|jtd��|j|�WdQXdS)Nc@seZdZdd�ZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.FoocSsdS)Nr)r rXrrrrJ}	szLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__N)rr%r&rJrrrrr�|	sr�rX.rUc@seZdZdS)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamN)rr%r&rrrrr�	srzis not a callable objectc@seZdZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarN)rr%r&rrrr�Bar�	srfc@seZdZdS)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedN)rr%r&rrrr�Wrapped�	srgcSsdS)Nr)rXrrrr��	szHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>zwrapper loop�rX..�positional_or_keyword�rh)rj.�rX..ri�rk)rl.�rX..ri�rm)rn.)r>r�r�r�rr4r?)r r�rrfrgrrr�"test_signature_on_callable_objects{	s&	z6TestSignatureObject.test_signature_on_callable_objectscCs&|j|jddd��d	�dS)
Nr�cSs|S)Nr)rXrrrr��	sz?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>rX.rU�rXr�.zpositional_or_keyword�rp)rq.)r>r�)r rrr�test_signature_on_lambdas�	sz-TestSignatureObject.test_signature_on_lambdascCsfttddd��}|jtj|�dk�|jtj|�dk�|jtj|�t�k�|jtj|�t�k�ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�tdd	d��}|jtj|�tj|�k�|jtj|�tj|�k�d
dttddd��}|jtj|�tj|�k�|jtj|�tj|�k�tdd
d��}|jtj|�tj|�k�|jtj|�tj|�k�ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�ttddd��}|jtj|�tj|�k�|jtj|�tj|�k�dd�}dd�}|jtj|�tj|�k�|jtj|�tj|�k�dddd�}dddd�}|jtj|�tj|�k�|jtj|�tj|�k�dddd�}dddd�}|jtj|�tj|�k�|jtj|�tj|�k�dd�}dddd�}|jtj|�tj|�k�|jtj|�tj|�k�ddtddd��}ddtddd��}|jtj|�tj|�k�|jtj|�tj|�k�dS)N)rYr[cSsdS)Nr)rXrYrrrrd�	sz8TestSignatureObject.test_signature_equality.<locals>.foor\cSsdS)Nr)rXrYrrrr�	sz8TestSignatureObject.test_signature_equality.<locals>.barcSsdS)Nr)rXrYrrrr�	s)rYcSsdS)Nr)rXrYrrrr�	srYcSsdS)Nr)rXrYrrrr�	s)r[cSsdS)Nr)rXrrrrr�	scSsdS)Nr)rXrYrrrr�	scSsdS)Nr)rYrXrrrrP�	sz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdS)Nr)rXrYrrrrrd�	scSsdS)Nr)rrYrXrrrr�	srXrcSsdS)Nr)rXrYrrrrrd�	scSsdS)Nr)rrYrXrrrr�	scSsdS)Nr)�posrXrYrrrrrd�	scSsdS)Nr)rsrrYrXrrrr�	scSsdS)Nr)rsrXrYrrrrrd�	scSsdS)Nr)rsrrYrXrrrr�	s)ruc_sdS)Nr)rsrXrYrrrurrrrd�	sc_sdS)Nr)rsrrYrXrrurrrr�	s)rjr[rrr�rr3)r rdrrPrrr�test_signature_equality�	s\%%%%%%%%%%%%%%%%%%%%%%%z+TestSignatureObject.test_signature_equalityc	CsBdd�}tj|�}|jtd��t|�WdQXdS)NcSsdS)Nr)rXrrrrd�	sz:TestSignatureObject.test_signature_unhashable.<locals>.foozunhashable type)rr�r�r��hash)r rdrGrrr�test_signature_unhashable�	sz-TestSignatureObject.test_signature_unhashablecCs�dddtdddd��}|jttj|��d�dddtdddd��}|jttj|��d	�d
d�}|jttj|��d�dS)Nrrr\)rXr[c[sdS)Nr)rXrYrrurrrrd�	sz3TestSignatureObject.test_signature_str.<locals>.fooz'(a:int=1, *, b, c=None, **kwargs) -> 42c_sdS)Nr)rXrYrrrurrrrd�	sz+(a:int=1, *args, b, c=None, **kwargs) -> 42cSsdS)Nrrrrrrd�	sz())rjr>r�rr�)r rdrrr�test_signature_str�	s!!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_porYrurrrrT�	szDTestSignatureObject.test_signature_str_positional_only.<locals>.testrrBrUz(a_po, /, *, b, **kwargs)rdz(foo, /)rz(foo, /, **bar)z(foo, /, *bar))rrVrXr�rUrUrErNrWrYr>r��VAR_KEYWORD�VAR_POSITIONAL)r rPrOrTrGr"rrr�"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)Nr\)r[cSsdS)NrrrrrrT
sz=TestSignatureObject.test_signature_replace_anno.<locals>.testrF)rr�rNr�rFr@r>)r rTrGrrr�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>.Spamr/�	_Spam__p2rzr)z	_Spam__p1z	_Spam__p2cSsdS)Nr)r �	_Spam__p1r}rrrrd
szJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)rr%r&rdrrrrr
src@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamN)rr%r&rrrr�Ham
srr .rUr~r/rr}rzrZ�zself..�positional_or_keyword�z	_Spam__p1r/rr��z	_Spam__p2rzr/zkeyword_only�r�r�r�)r�.)r>r�rd)r rrrrr�$test_signature_on_mangled_parameters
sz8TestSignatureObject.test_signature_on_mangled_parametersN))rr%r&rtr�rQrRrSrYr\rbrrpr�rrprsrtrvrwr�r�r�r�r�r�rrr!r5r^r_rerorrrtrvrwr{r|r�rrrrr?esN,	E	5
�<Q		 ;
r?c@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)NrW)rrVrrW�POSITIONAL_OR_KEYWORDrz�KEYWORD_ONLYryr>r�r2)r rPrrr�test_signature_parameter_kinds+
s
	.z2TestParameterObject.test_signature_parameter_kindsc.Cstjddddtjj�}|j|jd�|j|jd�|j|j|j�|j|j	tjj�|j
td��tjddddd�WdQX|j
td��tjddtjj�WdQX|j
t
d	��tjddtjj�WdQX|j
td
��tjddtjj�WdQX|j
td��$tjd
dddtjj�WdQX|j
td��$tjd
dddtjj�WdQXtjd
dddtjj�}|j
td��|jdtjj�WdQX|jt|�jd��dS)Nrdrr�rBz
invalid valueZ123znot a valid parameter namerszname must be a strzis not a valid parameter name�$zcannot have default valuesrXr\z
<Parameter)rrVrWr>r�rr�rAr@rBr�r?ryr�rzr�rNrr2r7)r r�rrr�test_signature_parameter_object3
s4	
z3TestParameterObject.test_signature_parameter_objectcCs�tj}|ddddtjj�}|j||k�|j||k�|j|dk�|j|dk�|j|t�k�|j|t�k�|j||ddddtjj�k�|j||ddddtjj�k�dS)Nrdrr\rB)rrVr�rrr3)r rPr�rrr�!test_signature_parameter_equalityW
s	z5TestParameterObject.test_signature_parameter_equalityc	CsHtjddddtjj�}|jtd��t|�WdQXdS)Nrdrr\rBzunhashable type)rrVr�r�r�ru)r r�rrr�#test_signature_parameter_unhashableg
sz7TestParameterObject.test_signature_parameter_unhashablecCs�tjddddtjj�}|j||j��|j||j��|jdd�}|j|jd�|jd|j�}|j||�|jdd�}|j|jd�|j	||�|j
td	��|jd|j�}WdQX|jdddd�}|j|j
d�|j	||�|jddd|j�}|j|j
|j�|jddd|j�}|j|j|j�|j	||�|j
td
��|jd|j�}WdQX|jd|j�}|j||�dS)Nrdrr\rBrArr�rzname is a required attributezinvalid value for)rrVr�rrNr>rAr@r�rr�r?r�rr�rB)r r�Zp2rrr� test_signature_parameter_replacen
s4	
z4TestParameterObject.test_signature_parameter_replacecCs6|jtd��tjddtjj�WdQXdS)Nzname must be a strrB)r�r�rrVrW)r rrr�(test_signature_parameter_positional_only�
sz<TestParameterObject.test_signature_parameter_positional_onlycCs]tjddtjj�}|jt��d|_WdQX|jt��d|_WdQXdS)NrPrBrrT)rrVr�r�r�rdrB)r r�rrr�%test_signature_parameter_immutability�
s
z9TestParameterObject.test_signature_parameter_immutabilityN)
rr%r&r�r�r�r�r�r�r�rrrrr�*
s$&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�rrru)r�rrurGrrrr�call�
szTestSignatureBind.callcCs�dd�}|j|j|�d�|jtd��|j|d�WdQX|jtd��|j|ddd�WdQX|jtd��|j|dd�WdQXdS)	NcSsdS)Nr\rrrrrrT�
sz9TestSignatureBind.test_signature_bind_empty.<locals>.testr\ztoo many positional argumentsrrPr�ztoo many keyword arguments)r>r�r�r�)r rTrrr�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�fidd6f�|j|j|ddd�didd6f�|j|j|dd�fidd6f�|j|j|dddd�didd6f�dS)
Nc_s
||fS)Nr)rrurrrrT�
sz7TestSignatureBind.test_signature_bind_var.<locals>.testrr/rdrrr�)r)rr/)r)rr/)r>r�)r rTrrr�test_signature_bind_var�
s"%,/,z)TestSignatureBind.test_signature_bind_varcCs{dd�}|j|j|ddd�d�|jtd��|j|dddd�WdQX|jtd��|j|d�WdQX|jtd	��|j|�WdQXd
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)rXrYrrrrrT�
sz=TestSignatureBind.test_signature_bind_just_args.<locals>.testrr/rzztoo many positional argumentsr>z'b' parameter lacking defaultz'a' parameter lacking defaultr�cSs
|||fS)Nr)rXrYrrrrrT�
scSs
|||fS)Nr)rXrYrrrrrT�
srXrr�rY)rr/rz)rr/rz)rr/r�)r�r/r�)r�r/rz)rr�rz)r>r�r�r�)r rTrrr�test_signature_bind_just_args�
s""%z/TestSignatureBind.test_signature_bind_just_argscCsKdd�}|j|j|�f�|j|j|ddd�d�dS)NcWs|S)Nr)rrrrrT�
szATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr/rz)rr/rz)r>r�)r rTrrr�!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�WdQXdS)NrzcWs||||fS)Nr)rXrYrrrrrrT�
szDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testrr/r>rhrYrXz multiple values for argument 'c'r�r>rh)rr/rzr�)r>r�r�r�)r rTrrr�$test_signature_bind_args_and_varargs�
s(+1.	
z6TestSignatureBind.test_signature_bind_args_and_varargscCs\dd�}|j|j|�i�|j|j|dddd�idd6dd6�dS)Nc[s|S)Nr)rurrrrT�
sz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrdrrPrH)r>r�)r rTrrr�test_signature_bind_just_kwargs�
sz1TestSignatureBind.test_signature_bind_just_kwargscCs!ddd�}|j|j|dd�dddif�|j|j|dddddd	�dddidd6d	d6f�|j|j|d
ddddddd	�dddidd6d	d6f�|j|j|ddd
ddddd	�dddidd6d	d6f�|j|j|dd
ddddd	�dddidd6d	d6f�|j|j|dd
ddd
dddd	�ddd
idd6d	d6f�|j|j|ddd
dd�ddd
idd6f�|j|j|dddd
d
d�d
ddif�dS)Nrzc[s||||fS)Nr)rXrYrrurrrrT�
szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrr/rdrrPrHrYrXrr>rh)r>r�)r rTrrr�#test_signature_bind_args_and_kwargs�
s +$!*!*!'!-!!$z5TestSignatureBind.test_signature_bind_args_and_kwargsc:Cs)dd�}|jtd��|j|d�WdQX|j|j|dd�d�dddd�}|jtd��|j|d�WdQXdd�}|j|j|dd	d
�d�|j|j|d	d
dd�d�|jtd��$|j|d	d
dddd
�WdQX|jtd��|j|dd
�WdQX|jtd��|j|dd
d	d
�WdQX|jtd��!|j|dd	d
dd�WdQX|jtd��|j|d�WdQXdd�}|j|j|dd	d
�dd
if�|j|j|ddd	d
�dd
if�|j|j|dd	d
dd�dd
idd6f�|j|j|ddddd	d
�dd
idd6f�|jtd��|j|ddd	d
�WdQX|j|j|dd	d
dddd
�dd
idd6d
d6f�dS)NcSs|S)Nr)rdrrrrT
sz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testztoo many positional argumentsrrdcSs|S)Nr)rXrdrrrrrTsz%'bar' parameter lacking default valuecSs
||fS)Nr)rdrrrrrTsrr/ztoo many keyword argumentsrPr�rHc[s
|||fS)Nr)rdr�binrrrrT3sz%'foo' parameter lacking default valuer�)rr/)rr/)r�r�r�r>)r rTrrr�test_signature_bind_kwonlysN	
	
"%	
%	
	
	
"	
+.!$	
'z,TestSignatureBind.test_signature_bind_kwonlycCs�dddd�}tj|�}|jddddd	d
ddd
d�}|jt|jj��dddd
id
d	6dd6dd
6ff�|j|jidd6d
d	6dd6dd
6�|j|jd�dS)N�zrHc_sdS)Nr)rXrYr�rrurrrrTBsz=TestSignatureBind.test_signature_bind_arguments.<locals>.testr�r�rYr�rr�r�2ru�<rX)rXr��r�)rr�)rYr�)r�r�)	rr�rr>rD�	arguments�itemsrur)r rTrGrrrr�test_signature_bind_argumentsAs*	%#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�WdQX|jtd��|j
|dd
d	d�WdQX|jtd��|j
|dddd
�WdQXdS)Nrzr\rr�c[s||||||fS)Nr)rx�b_po�c_pordrrurrrrTRszCTestSignatureBind.test_signature_bind_positional_only.<locals>.testrxr�r�rBrUrr/r>rh�rdzbut was passed as a keywordr�zparameter is positional only)za_pozb_pozc_po)rrVr��collections�OrderedDictrDrUr�rNrWrErYr>r�r�r�)r rPrTrGr"r�Znew_sigrrr�#test_signature_bind_positional_onlyOs(	
!	$$+z5TestSignatureBind.test_signature_bind_positional_onlycCsudd�}tj|�}|jddd�}|j|jd�|jddddd�}|j|jd	�dS)
NcSsdS)Nr)rXr rYrrrrTpszATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testrr/rzr rY)rr/rz)rr/rz)rr�rr>r)r rTrGrrrr�!test_signature_bind_with_self_argnsz3TestSignatureBind.test_signature_bind_with_self_argcCs�dd�}tj|�}|jtd��|jdddd�WdQXdd�}|j|j|dd�fidd6f�tj|�}|jdd�}|j|jiidd6d	6�dS)
NcWs
||fS)Nr)rXrrrrrTysz?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testztoo many keyword argumentsrXrrrc_s
||fS)Nr)rrurrrrT�sru)rr�r�r�rr>r�r�)r rTrGrrrr�test_signature_bind_vararg_namexs,z1TestSignatureBind.test_signature_bind_vararg_nameN)rr%r&rtr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��
s

5
r�c@s(eZdZdd�Zdd�ZdS)�TestBoundArgumentsc	CsKdd�}tj|�jd�}|jtd��t|�WdQXdS)NcSsdS)Nr)rXrrrrd�szITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foorzunhashable type)rr�rr�r�ru)r rdrrrr�)test_signature_bound_arguments_unhashable�sz<TestBoundArguments.test_signature_bound_arguments_unhashablecCssdd�}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�dS)NcSsdS)Nr)rXrrrrd�szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorr/rXcSsdS)Nr)rYrrrr�szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.bar)rr�rrrr3r�)r rdrZba2Zba3rZba4rrr�'test_signature_bound_arguments_equality�s&
z:TestBoundArguments.test_signature_bound_arguments_equalityN)rr%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_param�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)r/z(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_syntax�sJzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)rr%r&r�r�r�rrrrr��s
r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestUnwrapcCsAdd�}tjdd�|�}|jtj|�|�dS)NcSs||S)Nr)rXrYrrrr��sz(TestUnwrap.test_unwrap_one.<locals>.funcrhr�)rK�	lru_cacher�r�unwrap)r r�rqrrr�test_unwrap_one�szTestUnwrap.test_unwrap_onecCstdd�}|}x/td�D]!}tj|�dd��}qW|j|j|�|jtj|�|�dS)NcSs||S)Nr)rXrYrrrr��sz,TestUnwrap.test_unwrap_several.<locals>.funcr�cSsdS)Nrrrrrrq�sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)r0rKrLrr4r�rr�)r r�rq�__rrr�test_unwrap_several�szTestUnwrap.test_unwrap_severalcCszdd�}tj|�dd��}tj|�dd��}d|_tj|dd	d
��}|j||�dS)NcSs||S)Nr)rXrYrrr�func1�sz#TestUnwrap.test_stop.<locals>.func1cSsdS)Nrrrrr�func2sz#TestUnwrap.test_stop.<locals>.func2cSsdS)Nrrrrrrqsz%TestUnwrap.test_stop.<locals>.wrapperr�stopcSs
t|d�S)N�	stop_here)rH)r�rrrr�sz&TestUnwrap.test_stop.<locals>.<lambda>)rKrLr�rr�r�)r r�r�rqZ	unwrappedrrr�	test_stop�s	zTestUnwrap.test_stopcCs�dd�}||_|jtd��tj|�WdQXdd�}||_||_|jtd��tj|�WdQX|jtd��tj|�WdQXdS)NcSsdS)Nrrrrrr�sz$TestUnwrap.test_cycle.<locals>.func1zwrapper loopcSsdS)Nrrrrrr�sz$TestUnwrap.test_cycle.<locals>.func2)r4r�r?rr�)r r�r�rrr�
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__r4r)r�rrr[sr[)r4ZassertIsNonerr�)r r[r)r�r�test_unhashables	zTestUnwrap.test_unhashableN)rr%r&r�r�r�r�r�rrrrr��s
r�c@sdeZdZdd�Zdd�Zejedkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsytjd�}tddd�\}}}|j�j�}|j|dd�tj|�j��|j|d�dS)Nrpz-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|�WdQXdS)NcSsdS)Nrrrrrrd,sz)TestMain.test_custom_getattr.<locals>.foor\)rYr�r�rr�)r rdrrr�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:ThreadPoolExecutorrr�r�)r	r�r�r>rr�r)r r�r�r�r�rrr�test_qualname_source2s	zTestMain.test_qualname_sourcecCsStjd�}tddd�\}}}|j�j�}|j|dg�dS)Nrpz-mrrFz#Can't get info for builtin modules.)r�r�r
r�r�r>)r r�r�r�r�r�rrr�
test_builtins=s
	zTestMain.test_builtinscCs�tjd�}tdddd�\}}}|j�}|j|j|�|j|j|�tjj	s�|j|j
|�n|j|d�dS)Nrpz-mrz	--detailsr�)r�r�r	r�r_rr�rFr�r��
__cached__r>)r r�r�r�r��outputrrr�test_detailsDs	zTestMain.test_details)rr%r&r�r�rpr�rr�r�r�rrrrr�!s	
r�c@sFeZdZejd�Zejd�Zdd�Zdd�ZdS)�
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    cCsPtj|�}t|��/}|j|j�jd�|jd��WdQXdS)NT)rr�r�r>r�r�)r rr�Z
inspected_src�srcrrr�assertInspectEqual]s
zTestReload.assertInspectEqualcCs|td|j��d\}}tj|�}|j||�t|d��}|j|j�WdQX|j||�WdQXdS)NZ
reload_bugr)r
�
src_beforer�r�r�r�r�	src_after)r r�rr�r�rrr�test_getsource_reloadesz TestReload.test_getsource_reloadN)	rr%r&�textwrap�dedentr�r�r�r�rrrrr�Qs		r�cCsMtttttttttt	t
ttt
ttttttttt�dS)N)rr�r�r�r�rlr+r5r�r�r�r�r$rr?r�r�r�r�r�r�r�r�rrrr�	test_mainos			r��__main__)Or�rNrKr�rrdr�rZos.pathrra�rerrFrIr�rrpZ
unittest.mockZconcurrent.futuresr�ImportErrorZtest.supportrrrrrZtest.script_helperr	r
rTrrDrr�Ztest.test_importr
r�r}rrr�r�rsrqrr2r3r5rlr�r�r�r�r�rrVr"r'r*r+r�r�r�r�r�r�r$r?r�r�r�r�r�r�r�r�rrrrr�<module>s�
"
	V/�	*3��	z��c����x�!@70