403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.230
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_inspect.cpython-36.pyc
3

�w2_Y5�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZyddlmZWnek
r�dZYnXddlmZmZmZmZddlmZmZddlm Z m!Z!ddl"m#Z$ddl"m%Z&dd	l"m'Z'dd
l(m)Z)e$j*Z+e+j,d_��r\e+dd`�Z+e
e+�Z+dd�Z-ddlZe$j.�Z/Gdd�dej0�Z1dd�Z2dd�Z3dd�Z4ej5dd��Z6Gdd�d�Z7Gdd�de1�Z8Gdd�de1�Z9Gd d!�d!ej0�Z:Gd"d#�d#e:�Z;Gd$d%�d%e:�Z<Gd&d'�d'e:�Z=Gd(d)�d)e:�Z>Gd*d+�d+e:�Z?Gd,d-�d-e:�Z@Gd.d/�d/eA�ZBGd0d1�d1eA�ZCd2d3�ZDGd4d5�d5ej0�ZEeA�ZFGd6d7�d7ej0�ZGGd8d9�d9ej0�ZHGd:d;�d;eH�ZIGd<d=�d=eI�ZJGd>d?�d?ej0�ZKGd@dA�dAej0�ZLGdBdC�dCej0�ZMGdDdE�dEejN�ZOGdFdG�dGejP�ZQGdHdI�dIej0�ZRGdJdK�dKej0�ZSGdLdM�dMej0�ZTGdNdO�dOej0�ZUGdPdQ�dQej0�ZVGdRdS�dSej0�ZWGdTdU�dU�ZXGdVdW�dWej0�ZYGdXdY�dYej0�ZZGdZd[�d[ej0�Z[d\d]�Z\e]d^k�r�e\�dS)a�N)�normcase)�ThreadPoolExecutor)�run_unittest�TESTFN�
DirsOnSysPath�cpython_only)�MISSING_C_DOCSTRINGSr)�assert_python_ok�assert_python_failure)�inspect_fodder)�inspect_fodder2)�support)�_ready_to_import�c�o�cGst|�f|S)N)r)�filename�args�r�6/opt/alt/python36/lib64/python3.6/test/test_inspect.py�revise8src@sTeZdZeejejejejej	ej
ejejej
ejejejejejg�Zdd�ZdS)�
IsTestBasecCs�t|�}|j||�d|j|f�x\|jt|g�D]H}|tjksV|tjksV|tjkrb|tj	krbq4|j
||�d|j|f�q4WdS)Nz%s(%s)z
not %s(%s))�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�isasyncgenfunction�iscoroutinefunction�
isfunction�assertFalse)�selfZ	predicate�exp�obj�otherrrr�istestGs



zIsTestBase.istestN)r�
__module__�__qualname__rr�	isbuiltin�isclass�iscode�isframer!�ismethod�ismodule�istraceback�isgeneratorr�iscoroutiner �
isasyncgenrrr'rrrrr?srccsxtd�D]
}|Vq
WdS)N�)�range)r#�irrr�generator_function_exampleSsr7cCs>x8td�2dHy3dH}Wn
tk
s.X|VqYWdS)Nr4)r5�StopAsyncIteration)r#r6rrr� async_generator_function_exampleWs&r9c�sdS)N�spamr)r#rrr�coroutine_function_example[sr;ccs
dVdS)Nr:r)r#rrr�gen_coroutine_function_example^sr<c@seZdZdd�ZdS)�EqualsToAllcCsdS)NTr)r#r&rrr�__eq__dszEqualsToAll.__eq__N)rr(r)r>rrrrr=csr=c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestPredicatescCs�|jtjd�|jtjd�|jtjd�zxyddWnftj�da|jtjd�|jtjd�t	t
d	�r�|jtjd
�n|jtjt
tj�j��YnXWddaX|jtjd�|jtjd�|jtjd
�|jtjd�|jtjd�|jtjd�|jtjd�|jtjd�|jtjd�tj��,tjd�|jtjd�|jtjd�WdQRXt	t
d��r~|jtjd�n|jtjtjj ��dS)Nzsys.exitz	[].appendzmod.spam.__code__rrr4ztb.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))r7z#async_generator_function_example(1)r9�ignorezcoroutine_function_example(1)r;�MemberDescriptorTypezdatetime.timedelta.days)!r'rr*r,�sys�exc_infor@r-r0�hasattr�typesZisgetsetdescriptorr"�type�tb_frame�f_localsr!r.r/�isdatadescriptorr1rr3r�warnings�catch_warnings�simplefilterr2r Zismemberdescriptor�datetimeZ	timedeltaZdays)r#rrr�test_excluding_predicatesis@
"

z(TestPredicates.test_excluding_predicatescCs�td�}td�}|jtjt��|jtj|��|jtjt��|jtj|��|jtjt��|jtj|��|jtjt��|jtj|��|j	�|j	�dS)Nr)
r<r;r"rr r2rrr1�close)r#�gen_coro�cororrr�test_iscoroutine�s zTestPredicates.test_iscoroutinecCs�dd�}|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)rWrrrr�Future�srXc@seZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN)rr(r)rrrr�	NotFuture�srYcSsdS)Nrrrrr�<lambda>�sz1TestPredicates.test_isawaitable.<locals>.<lambda>)r"rZisawaitabler;r<rrWrR)r#rVrTrSrXrYZnot_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|jtjtj��|jtjgj��dS)N)rrZ	isroutinerBr:�count)r#rrr�test_isroutine�szTestPredicates.test_isroutinecCsD|jtjd�|jtjt��Gdd�dt�}|jtj|���dS)Nz
mod.StupidGitc@seZdZdd�ZdS)z2TestPredicates.test_isclass.<locals>.CustomGetattrcSsdS)Nr)r#�attrrrr�__getattr__�sz>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)rr(r)r_rrrr�
CustomGetattr�sr`)r'rr+r�list�objectr")r#r`rrr�test_isclass�szTestPredicates.test_isclasscCsFGdd�dt�}|�}d|_ttj|��}|jd|�|jd|�dS)Nc@seZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C�a�bN)rdre)rr(r)�	__slots__rrrr�C�srg�*rdre)rbrd�dictr�
getmembers�assertIn�assertNotIn)r#rg�x�membersrrr�test_get_slot_members�sz$TestPredicates.test_get_slot_memberscs�ddlm}m�G�fdd�d|d�}Gdd�d|�}|�}|jtj|��|jtj|��|jtj|��|jtjt��|jtjd��dS)	Nr)�ABCMeta�abstractmethodcseZdZ�dd��ZdS)z<TestPredicates.test_isabstract.<locals>.AbstractClassExamplecSsdS)Nr)r#rrr�foo�sz@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN)rr(r)rrr)rqrr�AbstractClassExample�srs)�	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdS)Nr)r#rrrrr�sz8TestPredicates.test_isabstract.<locals>.ClassExample.fooN)rr(r)rrrrrr�ClassExample�sru�)�abcrprqrr�
isabstractr"�int)r#rprsrurdr)rqr�test_isabstract�szTestPredicates.test_isabstractcs�ddlm}m�g�G�fdd�d|d�}G�fdd�d|�}Gdd	�d	|�}|j�d
dg��j�Gdd
�d
|�}Gdd�d|�}Gdd�d|�}|j�d
d
dg�dS)Nr)rprqcseZdZ�fdd�ZdS)zLTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckercs�jtj|��dS)N)�appendrrx)�cls)�isabstract_checksrr�__init_subclass__�sz^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)rr(r)r~r)r}rr�AbstractChecker�sr)rtcseZdZ�dd��ZdS)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSsdS)Nr)r#rrrrr�szUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooN)rr(r)rrr)rqrrrs�srsc@seZdZdd�ZdS)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSsdS)Nr)r#rrrrr�szMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooN)rr(r)rrrrrrru�sruTFc@seZdZdS)zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildN)rr(r)rrrr�
AbstractChild�sr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildN)rr(r)rrrr�AbstractGrandchild�sr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildN)rr(r)rrrr�ConcreteGrandchild�sr�)rwrprq�assertEqual�clear)r#rprrsrur�r�r�r)rqr}r�$test_isabstract_during_init_subclass�sz3TestPredicates.test_isabstract_during_init_subclassN)rr(r)rQrUr[r]rcrorzr�rrrrr?gs)		r?c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs&tjj|f|�|�tjddd�dS)N���	)�unittest�TestCase�__init__�git�abuse)r#r�kwargsrrrr�szTestInterpreterStack.__init__cCs |jtjd�|jtjd�dS)Nz	git.ex[2]zmod.fr)r'rr0r-)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)Nrvrr��eggsz    st = inspect.stack()
r�r:z    eggs(b + d, c + f)
r4�+�arguez            spam(a, b, c)
��'r�z        self.argue(a, b, c)
zinspect.stack())r�lenrB�str�r�modfile�assertIs�frame�fr�linenor�__file__Zfunctionrk�code_context�index)r#�recordrrr�
test_stacks 
zTestInterpreterStack.test_stackcCs�|jttj�d�|jttjddd��tdddgdf�|jttjddd��tddd	gdf�|jttjd
dd��tddd
gdf�dS)Nr�rrr�r�z            spam(a, b, c)
r�r:z    eggs(b + d, c + f)
r4�r�z    q = y / 0
)r�r�r�Ztrrr�)r#rrr�
test_trace!szTestInterpreterStack.test_tracecCsltjtj�\}}}}|j|ddg�|j|d�|j|d�|j|dddd��|jtj||||�d�dS)Nrm�y��)rm�pr�z(x=11, y=14))r�getargvaluesrBr�r��formatargvalues)r#r�varargs�varkw�localsrrr�
test_frame*szTestInterpreterStack.test_framecCsbtjtjj�\}}}}|j|ddddddg�|j|d�|j|d�|jtj||||�d	�dS)
Nrdrer�d�e�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))rr�rBr��f_backr�r�)r#rr�r�r�rrr�test_previous_frame3sz(TestInterpreterStack.test_previous_frameN)	rr(r)r�r�r�r�r�r�rrrrr�s		r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNc	Cs*ttj|j���}|j�|_WdQRXdS)N)�openr�
getsourcefile�fodderModule�read�source)r#�fprrr�setUp?szGetSourceBase.setUpcCs.|jjd�}dj||d|��|r(dndS)N�
r�)r��split�join)r#�top�bottom�linesrrr�sourcerangeCszGetSourceBase.sourcerangecCs|jtj|�|j||��dS)N)r�r�	getsourcer�)r#r%r�r�rrr�assertSourceEqualGszGetSourceBase.assertSourceEqual)rr(r)r�r�r�r�rrrrr�;sr�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
Cstjttj�}|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)�.0r|rrr�
<listcomp>Wsz<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>cSsg|]}|d�qS)rr)r�r|rrrr�fsT)rrjrBr+r�r�r�r�r�Zgetclasstreerb)r#�classesZtreerrr�test_getclassesNs2




z(TestRetrievingSourceCode.test_getclassescCs6tjttj�}|j|dtjfdtjfdtjfg�dS)Nr��lobbestr:)rrjrBr!r�r�r�r:)r#Z	functionsrrr�test_getfunctionsssz*TestRetrievingSourceCode.test_getfunctionsr4z)Docstrings are omitted with -O2 and abovecCs>|jtjt�d�|jtjtj�d�|jtjtj�d�dS)NzA module docstring.zA longer,

indented

docstring.z$Another

docstring

containing

tabs)r�r�getdocrBr�r�r�)r#rrr�test_getdocys
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�rBr�r�Z
contradiction)r#rrr�test_getdoc_inherited�sz.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringscCsvtj}|j|t�tj�|j|tj�tjj�|j|t�j�tjj�|j|tj�tjj�|j|tj�tjj�dS)N)rZ_finddocr�ry�__doc__�to_bytes�
from_bytes�real)r#Zfinddocrrr�test_finddoc�sz%TestRetrievingSourceCode.test_finddoccCs|jtjd�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r�rZcleandoc)r#rrr�
test_cleandoc�sz&TestRetrievingSourceCode.test_cleandoccCsV|jtjt�d�|jtjtj�d�tddd�}|jtj|��|jtjt��dS)Nz	# line 1
z
# line 20
zx=1z_non_existing_filename.py�exec)r�rZgetcommentsrBr��compile�assertIsNonera)r#�corrr�test_getcomments�s
z)TestRetrievingSourceCode.test_getcommentscCs�|jtjt�t�|jtjtj�t�|jtjtjj�t�|jtjtjj�t�|jtjt�tjd�|jtjdt	�t�dS)N�builtins)
r�r�	getmodulerBr�r��strrE�modulesr�)r#rrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs8tj|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_linecCs4|jtjdd�|jtjdd�|jtjdd�dS)N�r���3�K�L)r�r�r�rBr�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.pyzx=1r�r�None)
r�rrr�rBr:r�r�r�r��co_filename�	linecache�cache)r#�fnr�rrr�test_getsourcefile�sz+TestRetrievingSourceCode.test_getsourcefilecCs|jtjtj�tj�dS)N)r�r�getfilerBr�r�)r#rrr�test_getfile�sz%TestRetrievingSourceCode.test_getfilec	CsFGdd�dt�}Gdd�d|d�}|jt��tj|�WdQRXdS)Nc@seZdZedd��ZdS)zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMcSst�dS)N)�AttributeError)r|rrrr(�szQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)rr(r)�propertyrrrr�CM�sr�c@seZdZdS)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CN)rr(r)rrrrrg�srg)rt)rI�assertRaises�	TypeErrorrr�)r#r�rgrrr�!test_getfile_class_without_module�sz:TestRetrievingSourceCode.test_getfile_class_without_modulecCsnddlm}d}||�}tj|<d|_d|_td|j�|jt	j
|jj�d�tj|=t	j
tddd	��dS)
Nr)�
ModuleTypeZ__inspect_dummyz<string>Zdummyz
def x(): passza=10r��single)rHr�rEr�r��
__loader__r��__dict__r�rr�rm�__code__r�r�)r#r��name�mrrr�test_getmodule_recursion�sz1TestRetrievingSourceCode.test_getmodule_recursioncs\d\��tj�d	���fdd�	}|t_z(i}tt��d�|�tj|d�Wd�t_XdS)
z4doctest monkeypatches linecache to enable inspection�<test>�def x(): pass
Ncs"|�kr�jdd�S�||�SdS)NT)�keepends)�
splitlines)r�module_globals)r��getlinesr�rr�monkey�szHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr�rm)rr)N)r�r	r�r�rr�)r#r
�nsr)r�r	r�r�test_proceed_with_fake_filename�sz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecCs|jtjjdd�dS)N�r�)r�rBr�r)r#rrr�test_getsource_on_code_object�sz6TestRetrievingSourceCode.test_getsource_on_code_objectN)rr(r)rBr�r�r�r��skipIfrE�flags�optimizer�r�rr�r�r�r�r�r�r�r�r�rrrrrrrr�Ks&%		
r�c@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|jtjdd�dS)Nr)ZmaxDiffr�rBZcurrentframe)r#rrr�test_range_toplevel_frame�sz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|jtjdd�dS)Nr)r�rBr@)r#rrr�#test_range_traceback_toplevel_frame�szETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)rr(r)rBr�rrrrrrr�src@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscCs|jtjdd�dS)Nr��)r��mod2�wrapped)r#rrr�test_wrapped_decoratorsz%TestDecorators.test_wrapped_decoratorcCs|jtjdd�dS)Nr��
)r�rZgone)r#rrr�test_replacing_decoratorsz'TestDecorators.test_replacing_decoratorcCs|jtjdd�dS)N��)r�rr�)r#rrr�test_getsource_unwrapsz$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�rrrr!rrrrr�s
rc@sPeZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscCs|jtjdd�dS)N�)r�rZoll)r#rrr�test_oneline_lambdasz!TestOneliners.test_oneline_lambdacCs|jtjdd�dS)N��)r�rZtll)r#rrr�test_threeline_lambdasz#TestOneliners.test_threeline_lambdacCs|jtjdd�dS)N�!�")r�rZtlli)r#rrr�test_twoline_indented_lambdasz*TestOneliners.test_twoline_indented_lambdacCs|jtjdd�dS)N�%)r�rZonelinefunc)r#rrr�test_onelinefuncszTestOneliners.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�rrd)r#rrr�test_lambda_in_list-sz!TestOneliners.test_lambda_in_listcCs|jtjdd�dS)N�7)r�rZ	anonymous)r#rrr�test_anonymous2szTestOneliners.test_anonymousN)
rr(r)rr�r$r'r*r,r/r2r4r6rrrrr"
sr"c@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_sig=sz!TestBuggyCases.test_multiline_sigcCs|jtj�jdd�dS)N�G�H)r�rZfunc69Zfunc71)r#rrr�test_nested_class@sz TestBuggyCases.test_nested_classcCs|jtjdd�dS)N�M)r�rZfunc77)r#rrr�#test_one_liner_followed_by_non_nameCsz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|jtjjdd�dS)N�S)r�rZcls82Zfunc83)r#rrr�test_one_liner_dedent_non_nameFsz-TestBuggyCases.test_one_liner_dedent_non_namecCs|jtjdd�dS)N�X�Z)r�rZfunc88)r#rrr�&test_with_comment_instead_of_docstringIsz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|jtjdd�dS)N�_�a)r�rZmethod_in_dynamic_class)r#rrr�test_method_in_dynamic_classLsz+TestBuggyCases.test_method_in_dynamic_classr�z.pyz,unicodedata is not an external binary modulecCs$|jttjt�|jttjt�dS)N)r��OSErrorrr��unicodedata�
findsource)r#rrr�test_findsource_binaryQsz%TestBuggyCases.test_findsource_binarycCs�dg}t|ddd�}|jttj|�|jttj|�dd||jftj|j<z0|j	tj|�|df�|j	tj|�|d�Wdtj|j=XdS)Nzx=1rZ_dynamically_created_filer�r)
r�r�rKrrMr�r�r�r�r�)r#r�r�rrr�!test_findsource_code_in_linecacheXsz0TestBuggyCases.test_findsource_code_in_linecachecCs>x8dD]0}td|d�}|jttj|�|jttj|�qWdS)Nr��<string>zx=1r�)r�rP)r�r��IOErrorrrMr�)r#Zfnamer�rrr� test_findsource_without_filenameds
z/TestBuggyCases.test_findsource_without_filenamecCs|jtjjdd�dS)N�v�w)r�rZClassWithMethod�method)r#rrr�test_getsource_on_methodjsz'TestBuggyCases.test_getsource_on_methodcCs|jtjjdd�dS)N��)r�rZcls135Zfunc136)r#rrr�test_nested_funcmszTestBuggyCases.test_nested_funcN)rr(r)rr�r:r=r@rBrDrGrJr�rrGrLr��endswithrNrOrRrVrYrrrrr77s
r7cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�	TestNoEOLcsztd|_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�rs
zTestNoEOL.setUpcCstj|j�dS)N)�shutilZrmtreer])r#rrr�tearDown}szTestNoEOL.tearDowncCs|j|jjdd�dS)Nrr4)r�r��X)r#rrr�
test_class�szTestNoEOL.test_class)rr(r)r�rfrh�
__classcell__rr)rdrr[qsr[c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGstd��dS)Nzbroken data descriptor)r�)rrrr�__get__�sz_BrokenDataDescriptor.__get__cGst�dS)N)�RuntimeError)rrrr�__set__�sz_BrokenDataDescriptor.__set__cGstd��dS)Nzbroken data descriptor)r�)rrrrr_�sz!_BrokenDataDescriptor.__getattr__N)rr(r)r�rkrmr_rrrrrj�srjc@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGstd��dS)Nzbroken method descriptor)r�)rrrrrk�sz_BrokenMethodDescriptor.__get__cGstd��dS)Nzbroken method descriptor)r�)rrrrr_�sz#_BrokenMethodDescriptor.__getattr__N)rr(r)r�rkr_rrrrrn�srncCsdd�tj|�D�S)NcSsg|]}|dd��qS)Nr�r)r��trrrr��sz!attrs_wo_objs.<locals>.<listcomp>)r�classify_class_attrs)r|rrr�
attrs_wo_objs�srqc@s
eZdZdd�Zd3dd�Zdddgdidfdd�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)4�TestClassesAndFunctionscCsjGdd�dt�}Gdd�d|�}Gdd�d|�}Gdd�d||�}||||tf}tj|�}|j||�dS)	Nc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.AN)rr(r)rrrr�A�srsc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BN)rr(r)rrrr�B�srtc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CN)rr(r)rrrrrg�srgc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DN)rr(r)rrrr�D�sru)rbrZgetmror�)r#rsrtrgru�expectedZgotrrr�test_newstyle_mro�s
z)TestClassesAndFunctions.test_newstyle_mroNc
Cs||jt��tj|�\}}}	}
WdQRX|j||�|j||�|j|	|�|j|
|�|dk	rx|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�ry)r#rzr{r|r}r~�kwonlyargs_e�kwonlydefaults_e�ann_errr�r�r�Z
kwonlyargsZkwonlydefaultsZannrrr�assertFullArgSpecEquals�sz/TestClassesAndFunctions.assertFullArgSpecEqualscCsx|jtjddgdd�|jtjddddd	d
gdddd�|jt|jtjg�|jt|jtjg�|jt|jtj	g�dS)Nrmr�z(x, y))rrdrerr�r�r�r�r�r��rvz!(a, b, c, d=3, e=4, f=5, *g, **h))r�r�rv)
r�rBr�r:r��
ValueErrorr�	keyworded�	annotated�keyword_only_arg)r#rrr�test_getargspec�s




z'TestClassesAndFunctions.test_getargspeccCsR|jtjgddgddidd�|jtjdgdtidd�|jtjgdgd	d
�dS)N�arg1�arg2rz(*arg1, arg2=1))r|r�r�rz(arg1: list))r�r�argz(*, arg))r�r)r�rr�r�rar�)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)rmr�rrr�ham�szETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamrmr�z(x, y))rcs�j|dddgdd�dS)Nr#rmr�z(self, x, y))r)r�)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#rmr�rrrr��szGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSsdS)Nr)r#rmr�rrr�__call__�szLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)rr(r)�	functools�wrapsrBr:r��
partialmethod�phamr�rrrrrg�s
rgc@s eZdZejej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSsdS)Nr)r#rmr�rrr�__new__szOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)rr(r)r�r�rBr:r�rrrr�C_newsr�c@s eZdZejej�dd��ZdS)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSsdS)Nr)r#rmr�rrrr�
szQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)rr(r)r�r�rBr:r�rrrr�C_initsr�)	r�r�rBr:r�r��partialr�r�)r#r�r�rgr�r�r)r#r� test_argspec_api_ignores_wrapped�s 


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}tjdtjj�}tj|fd�|_|j|dgdd�dS)NcSsdS)Nrrrrr�testszHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testr:)�
parametersz(spam))r{r)r�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r�)r#r�Z
spam_paramrrr�"test_getfullargspec_signature_attrsz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsPddd�dd�}tj|�}|j|j|j�dd�}tj|�}|j|j|j�dS)Nr:r�)rd�returncSsdS)Nr)rdrrrr�szITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdS)Nrrrrrr�s)rr�r��__annotations__Zannotations)r#r��specrrr�#test_getfullargspec_signature_annoss

z;TestClassesAndFunctions.test_getfullargspec_signature_annosz6Signature information for builtins requires docstringscCs^|jtjjddgdd�|jtjtj��jddgdd�|jtjdgddgddd	�d
d�dS)Nr#r%z(self, obj))r{rr`�dir_fd�follow_symlinksT)r�r�z,(path, *, dir_fd=None, follow_symlinks=True))r{r�r�r)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_defaultsrr�r�r�)r#r��builtinr�rrr� test_getfullagrspec_builtin_func3s
z8TestClassesAndFunctions.test_getfullagrspec_builtin_funcc	Cs2ddl}|j}|jt��tj|�WdQRXdS)Nr)r��docstring_no_signaturer�r�rr�)r#r�r�rrr�-test_getfullagrspec_builtin_func_no_signature<szETestClassesAndFunctions.test_getfullagrspec_builtin_func_no_signaturecCs$Gdd�dt�}|j|jdg�dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getargspec_method.<locals>.AcSsdS)Nr)r#rrrrGsz;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN)rr(r)rrrrrrsFsrsr#)rbr�r)r#rsrrr�test_getargspec_methodEsz.TestClassesAndFunctions.test_getargspec_methodcCsGdd�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�sNsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSsdS)Nr)r|rrrrQsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSsdS)Nr)r#rrr�getpTsz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSsdS)Nr)r#rrrrWsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSsdS)Nr)r#rrr�m1Ysz<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)rr(r)r��staticmethodr�classmethodr�r�r�rr��datablobrj�ddrn�mdrrrrrsLsrsr�rUzmissing __new__r�zmissing __init__r�z
static methodzmissing static methodrzclass methodzmissing class methodr�r�zmissing propertyrzmissing plain method: %rr�zmissing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSsdS)Nr)r#rrrrqsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mN)rr(r)rrrrrrtosrtc@seZdZdd�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)rrrrrrrg~srgc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdS)Nr)r#rrrr��sz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)rr(r)r�rrrrru�sru)rbrqrk)r#rs�attrsrtrgrurrr�test_classify_newstyleKsV
z.TestClassesAndFunctions.test_classify_newstylecCs4x.tt�D]"}tt|�}t|t�r
tj|�q
WdS)N)�dir�__builtins__�getattr�
isinstancerIrrp)r#rr�rrr�test_classify_builtin_types�s

z3TestClassesAndFunctions.test_classify_builtin_typescCspGdd�dt�}Gdd�d|d�}tjdd||jd�}|j|tj|��tjdd|d�}|j|tj|��dS)	NcseZdZ�fdd�Z�ZS)zITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metacs|dkrdSt�j|�S)Nr�r:)rcr_)r#r)rdrrr_�szUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__)rr(r)r_rirr)rdr�Meta�sr�c@seZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcSsdS)Nr�r)r#rrrr��szKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)rr(r)rH�DynamicClassAttributer�rrrr�VA�sr�)rtr�r�r:)rIr�	Attributer�rkrp)r#r�r�Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttribute�sz;TestClassesAndFunctions.test_classify_DynamicClassAttributecsPG�fdd�dt��G�fdd�dt�}tjdd||j�}|j|tj|��dS)Ncs eZdZ�fdd�Zdd�ZdS)zDTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolcs��S)Nr)r#r&)�NoBoolrrr>�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSstd��dS)Nz,This object does not specify a boolean value)�NotImplementedError)r#rrr�__bool__�szMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)rr(r)r>r�r)r�rrr��sr�cseZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)rr(r)r�r)r�rr�HasNB�sr�r�r�)rbrr�r�rkrp)r#r�Zshould_find_attrr)r�r�test_classify_overrides_bool�sz4TestClassesAndFunctions.test_classify_overrides_boolcCsHGdd�dt�}Gdd�d|d�}tjdd|d�}|j|tj|��dS)	Nc@seZdZdZdd�ZdS)zMTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta�slapcSsddddgS)Nrdr(r�fishr)r#rrr�__dir__�szUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)rr(r)r�r�rrrrr��sr�c@seZdZdS)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassN)rr(r)rrrr�Class�sr�)rtr�r�r�)rIrr�rkrp)r#r�r��should_findrrr�'test_classify_metaclass_class_attribute�sz?TestClassesAndFunctions.test_classify_metaclass_class_attributecCsHGdd�dt�}Gdd�d|d�}tjdd|d�}|j|tj|��dS)	Ncs$eZdZdd�Z�fdd�Z�ZS)zDTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.MetacSsddddgS)Nrdr(r�BOOMr)r|rrrr��szLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs|dkrdSt�j|�S)Nr�rh)rcZ_Meta__getattr)r#r)rdrrr_�szPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__)rr(r)r�r_rirr)rdrr��sr�c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassN)rr(r)rrrrr��sr�)rtr�r�rh)rIrr�rkrp)r#r�r�r�rrr�test_classify_VirtualAttribute�sz6TestClassesAndFunctions.test_classify_VirtualAttributec	s�Gdd�dt��Gdd�dt��G��fdd�d���}Gdd�d�d	�}Gd
d�d||d	�}tjdd
�d�}tjdd
�d�}tjdd
|d�}tj|�}x|||fD]}|j||�q�WdS)Ncs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1cSsddddgS)Nrdr(r�oner)r|rrrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs|dkrdSt�j|�S)Nr�r)rcr_)r#r)rdrrr_�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__)rr(r)r�r_rirr)rdr�Meta1�sr�cs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)Nrdr(r�twor)r|rrrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs|dkrdSt�j|�S)Nr�r4)rcr_)r#r)rdrrr_�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__)rr(r)r�r_rirr)rdr�Meta2�sr�cs*eZdZ��fdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs,tttddddg�j|��j|����S)Nrdr(r�three)ra�sortedrr�)r|)r�r�rrr��sz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cs|dkrdSt�j|�S)Nr�r�)rcr_)r#r)rdrrr_�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__)rr(r)r�r_rir)r�r�)rdr�Meta3�sr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1N)rr(r)rrrr�Class1�sr�)rtc@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2N)rr(r)rrrr�Class2�sr�r�r�rr�r4r�r�)rIrr�rprk)	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_classescCsFGdd�dt�}Gdd�d|d�}dd�tj|�D�}|jd|�dS)	Nc@seZdZdd�ZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.McSs
dddgS)Nrdr�missingr)r|rrrr��szSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N)rr(r)r�rrrr�M�sr�c@seZdZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CN)rr(r)rrrrrg�srg)rtcSsg|]}|d�qS)rr)r�rdrrrr�szTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r�)rIrrprl)r#r�rgr�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@seZdZe�Ze�ZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)rr(r)rjr�rnr�rrrrrssrscs"Gdd�dt����fdd�}|S)Nc@seZdZdS)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyN)rr(r)rrrr�Emptysr�cs$dt|�krt�|j�rdS�|�S)NrF)r�rGr)rm)r��predrrrszZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped)rb)r�rr)r�r�r�pred_wrapper	szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr�r�c@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BN)rr(r)rrrrrtsrt)rbr�ismethoddescriptorrLr�rjr�)r#rsr�r�rLrtrrr�test_getmembers_descriptorss

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�rrrrrt%srtr�)rkr�rrjrlr.)r#rtrerrr�test_getmembers_method$sz.TestClassesAndFunctions.test_getmembers_methodcCsLGdd�dt�}Gdd�d|d�}|jd	tj|��|jd
tj|���dS)NcseZdZ�fdd�Z�ZS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mcs|dkrdSt�j|�S)Nr��	scrambled)rcr_)r|r)rdrrr_1szOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__)rr(r)r_rirr)rdrr�0sr�c@seZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdS)Nr:r)r#rrrr�6szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)rr(r)rHr�r�rrrrrs5srs)rtr�r�r:)r�r�)r�r:)rIrkrrj)r#r�rsrrr� test_getmembers_VirtualAttribute/sz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCsFGdd�dt�}Gdd�d|d�}dd�tj|�D�}|jd|�dS)	Nc@seZdZdd�ZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSs
dddgS)Nrdrr�r)r|rrrr�>szITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__N)rr(r)r�rrrrr�=sr�c@seZdZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CN)rr(r)rrrrrg@srg)rtcSsg|]}|d�qS)rr)r�rdrrrr�BszJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r�)rIrrjrl)r#r�rgr�rrr�test_getmembers_with_buggy_dir<sz6TestClassesAndFunctions.test_getmembers_with_buggy_dir)NNNN)rr(r)rwr�r�r�r�r�r�r�r�rrr�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�sB

(	P

#	 
rrc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestGetClosureVarscCsVdd�}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�Lsz=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.gr)r�r�r)r�rr�Ksz2TestGetClosureVars.test_name_resolution.<locals>.fr�r�r�r�)rbr�r�r�ClosureVarsr��getclosurevars)r#r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesrvrrr�test_name_resolutionIsz'TestGetClosureVars.test_name_resolutioncCsVdd�}t�}d|i}dti}dti}dh}tj||||�}|jtj||��|�dS)Ncs�fdd�}|S)Nc3st|�tt�dVdS)N)r�r�r�)r�)r�rrr�Zsz?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.gr)r�r�r)r�rr�Ysz4TestGetClosureVars.test_generator_closure.<locals>.fr�r�r�r�)rbr�r�rr�r�r�)r#r�r�r�r�r�r�rvrrr�test_generator_closureXsz)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�jsz>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r#r�r�r)r�rr�isz3TestGetClosureVars.test_method_closure.<locals>.C.fN)rr(r)r�rrrrrghsrgr�r�r�r�)rbr�r�rr�r�r�r�)r#rgr�r�r�r�r�rvrrr�test_method_closuregsz&TestGetClosureVars.test_method_closurecs�dd��dd�}dd�}dd�}�fd	d
�����fdd�}|d
�}|d�}||d�}�j�|�dd
i��j�|�ddi��j�|�d|d���j�dd�d��ddi��|�dS)NcSstj|�jS)N)rr�Z	nonlocals)r�rrr�_nonlocal_varsxsz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscs�fdd�}|S)Ncs�|S)Nr)r�)rmrr�add|szFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)rmrr)rmr�
make_adder{sz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�S)Nr)r�)r��funcrrrZ�szFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)rr�r)r�rr�curry�sz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kS)Nr)rdrerrr�	less_than�sz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�S)Nr)rm)r�rrrZ�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)rr�)�Y)rrr
�sz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs�j�|�d�ji�dS)Nr�)r�r	)r)r
rr#rr�check_y_combinator�szATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorrr4rvrm)r�rcs�fdd�S)Ncs�|S)Nr)r�)rmrrrZ�szITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>r)rmr)rmrrZ�sz7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r#rrrrZincZadd_twoZgreater_than_fiver)r
rr#r�test_nonlocal_varsvs 


z%TestGetClosureVars.test_nonlocal_varscCsFdd�}tjiiit��}|jtjdd��|�|jtj|�|�dS)NcSsdS)Nrrrrrrr�sz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdS)NTrrrrrrZ�sz>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)rr�rr�r�)r#rrZ_emptyrrr�test_getclosurevars_empty�sz,TestGetClosureVars.test_getclosurevars_emptycCsBGdd�d�}|jttjd�|jttjt�|jttji�dS)Nc@seZdZdS)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TN)rr(r)rrrr�T�srr)r�r�rr�ra)r#rrrr�test_getclosurevars_error�sz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r�)r�)r#�coderrrr�_private_globals�s
z#TestGetClosureVars._private_globalscCsD|j�\}}|jdd�tjiidtidh�}|jtj|�|�dS)Nr�r�r`)r�poprr�r�r�r�)r#r�rrvrrr�test_builtins_fallback�sz)TestGetClosureVars.test_builtins_fallbackcCsD|j�\}}ddi|d<tjiiddidh�}|jtj|�|�dS)Nr`rr�r�)rrr�r�r�)r#r�rrvrrr�test_builtins_as_dict�sz(TestGetClosureVars.test_builtins_as_dictcCsB|j�\}}t|d<tjiidtjidh�}|jtj|�|�dS)Nr�r`r�)rr^rr�r`r�r�)r#r�rrvrrr�test_builtins_as_module�sz*TestGetClosureVars.test_builtins_as_moduleN)
rr(r)r�rrrr
rrrrrrrrrr�Gs&r�c@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|j||�dS)N)rzfunc(%s)zinspect.getcallargs(func, %s))rirr�)r#r�call_params_string�locsZr1Zr2rrr�assertEqualCallArgs�s

z,TestGetcallargsFunctions.assertEqualCallArgsc Cs�t|pi|d�}ytd|d|�Wn&tk
rJ}z
|}WYdd}~XnX|jd�ytd|d|�Wn&tk
r�}z
|}WYdd}~XnX|jd�|jt|�t|��|jt|�t|��~~dS)N)rzfunc(%s)zException not raisedzinspect.getcallargs(func, %s))rir�	ExceptionZfailr�rIr�r�)r#rZcall_param_stringrr�Zex1Zex2rrr�assertEqualException�s



z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r)r#�	signaturerrrr�makeCallable�sz%TestGetcallargsFunctions.makeCallablecCs�|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_plaincCsV|jd�}|j|d�|j|d�|j|d�|j|d�|j|d�|j|d�dS)Nz
a, b=1, *crz2, 3z2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4]))rr)r#r�rrr�test_varargs�s
z%TestGetcallargsFunctions.test_varargscCsz|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_varkws
z#TestGetcallargsFunctions.test_varkwcCsV|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_onlys
z(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_onlys

z*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(s

z/TestGetcallargsFunctions.test_multiple_featuresc	'Cs6|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|�WdQRX|jtd��tjdtjjd d!�WdQRX|jtd"��tjd#d$d d!�WdQRX|jtd%��tjd&d'd(�WdQRXdS))Nr�za, bza, b=1r�zx=1z1,x=1za=2zb=3z2, 3, 4z1, 2, 3, a=1z2, 3, 4, c=5zc=2z2, c=3z	2, 3, c=4z2, c=4, b=3u**{u"πι": 4}z1, a=2z1, **{"a":2}z	1, 2, b=3z**cz1, 2z1, 2, a=1, b=2z	*, a, b=0cSsdS)Nr)rdrrr�f5osz0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSsdS)Nr)rdrerrrr�f6vsz0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesrrrh)�kind�defaultz%value 5 is not a valid Parameter.kind�barrvzname must be a str, not a int�{r�)r()	rr�assertRaisesRegexr�rZgetcallargsr�r��VAR_KEYWORD)	r#Zf0�f1�f2r��f3�f4r&r'rrr�test_errors@s^




z$TestGetcallargsFunctions.test_errors)N)N)
rr(r)rrrrr r!r"r$r%r2rrrrr�s

	
rcs$eZdZdd�Z�fdd�Z�ZS)�TestGetcallargsMethodscCs"Gdd�dt�}||_|�|_dS)Nc@seZdZdS)z)TestGetcallargsMethods.setUp.<locals>.FooN)rr(r)rrrr�Foo�sr4)rbr|�inst)r#r4rrrr��szTestGetcallargsMethods.setUpcs0d|kst�tt|�j}|d|�|j_|jjS)Nr#zself, )�AssertionErrorrcr3rr|rUr5)r#rZmk)rdrrr�sz#TestGetcallargsMethods.makeCallable)rr(r)r�rrirr)rdrr3�sr3csBeZdZ�fdd�Zd
�fdd�	Zd�fdd�	Zddd	�Z�ZS)
�TestGetcallargsUnboundMethodscstt|�j|�|jjS)N)rcr7rr|rU)r#r)rdrrr�sz*TestGetcallargsUnboundMethods.makeCallableNcstt|�j|j|||��S)N)rcr7r�_getAssertEqualParams)r#rrr)rdrrr�s
z1TestGetcallargsUnboundMethods.assertEqualCallArgscstt|�j|j|||��S)N)rcr7rr8)r#rrr)rdrrr�s
z2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,d|kst�t|pi|jd�}|d||fS)Nr5)r5zinst,)r6rir5)r#rrrrrrr8�sz3TestGetcallargsUnboundMethods._getAssertEqualParams)N)N)N)rr(r)rrrr8rirr)rdrr7�sr7c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�TestGetattrStaticcCs�Gdd�dt�}|�}|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)rbrmrrrr�Thing�sr:rmr�r�)rbr�r�getattr_staticrmr�r�)r#r:�thingrrr�
test_basic�szTestGetattrStatic.test_basiccCs@Gdd�dt�}Gdd�d|�}|�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z/TestGetattrStatic.test_inherited.<locals>.ThingN)rr(r)rbrmrrrrr:�sr:c@seZdZdS)z4TestGetattrStatic.test_inherited.<locals>.OtherThingN)rr(r)rrrr�
OtherThing�sr>rm)rbr�rr;rm)r#r:r>Z	somethingrrr�test_inherited�sz TestGetattrStatic.test_inheritedcCsHGdd�dt�}|d�}|jtj|d�d�|`|jtj|d�d�dS)Nc@seZdZdZdd�ZdS)z3TestGetattrStatic.test_instance_attr.<locals>.Thingr4cSs
||_dS)N)rm)r#rmrrrr��sz<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)rr(r)rmr�rrrrr:�sr:r�rmr4)rbr�rr;rm)r#r:r<rrr�test_instance_attr�s
z$TestGetattrStatic.test_instance_attrcCs0Gdd�dt�}|�}|jtj|d�|j�dS)Nc@seZdZedd��ZdS)z.TestGetattrStatic.test_property.<locals>.ThingcSstd��dS)NzI'm pretending not to exist)r�)r#rrrrm�sz0TestGetattrStatic.test_property.<locals>.Thing.xN)rr(r)r�rmrrrrr:�sr:rm)rbr�rr;rm)r#r:r<rrr�
test_property�szTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|jtj|d���dS)Nc@seZdZdd�ZdS)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWstd��dS)NzI'm pretending not to exist)r�)�_rrrrk�szSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__N)rr(r)rkrrrr�
descriptor�srCcseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN)rr(r)rmr)�descrrr:�sr:rm)rbr�rr;)r#rCr:r<r)rDr�%test_descriptor_raises_AttributeError�s
z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs*Gdd�dt�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z4TestGetattrStatic.test_classAttribute.<locals>.ThingN)rr(r)rbrmrrrrr:�sr:rm)rbr�rr;rm)r#r:rrr�test_classAttribute�sz%TestGetattrStatic.test_classAttributecCs.Gdd�dt�}|jtj|d�|jd�dS)Nc@s eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jS)N)�_x)r#rrrrm�sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)rr(r)rHr�rmrbrGrrrrr:�sr:rm)rbr�rr;r�)r#r:rrr�test_classVirtualAttribute�sz,TestGetattrStatic.test_classVirtualAttributecCs:Gdd�dt�}Gdd�d|�}|jtj|d�|j�dS)Nc@seZdZe�ZdS)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingN)rr(r)rbrmrrrrr:�sr:c@seZdZdS)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingN)rr(r)rrrrr>�sr>rm)rbr�rr;rm)r#r:r>rrr�test_inherited_classattribute�sz/TestGetattrStatic.test_inherited_classattributecCs^Gdd�dt�}|�}|jtj|d�|j�|jtj|d�d�|`|jtj|d�|j�dS)Nc@seZdZdZdgZdd�ZdS)z+TestGetattrStatic.test_slots.<locals>.Thingr*rmcSs
d|_dS)Nrr)rm)r#rrrr��sz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)rr(r)r�rfr�rrrrr:�sr:rmr�r*)rbr�rr;rm)r#r:r<rrr�
test_slots�szTestGetattrStatic.test_slotscCs�Gdd�dt�}Gdd�dt|d�}|jtj|d�d�Gdd	�d	|�}Gd
d�dt|d�}|jtj|d�d�Gdd
�d
|�}|jtj|d�d�dS)Nc@seZdZdZdS)z.TestGetattrStatic.test_metaclass.<locals>.metarrN)rr(r)r^rrrr�metasrKc@seZdZdS)z/TestGetattrStatic.test_metaclass.<locals>.ThingN)rr(r)rrrrr:sr:)rtr^rrc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subN)rr(r)rrrr�sub	srLc@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�N)rr(r)rmrrrrr>sr>c@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingN)rr(r)rrrr�OtherOtherThingsrMrmr�)rIrbr�rr;)r#rKr:rLr>rMrrr�test_metaclasssz TestGetattrStatic.test_metaclasscCs.|jtjddd�d�|jtjdd�d�dS)Nrrr�lower)r�rr;�assertNotEqual)r#rrr�test_no_dict_no_slotssz'TestGetattrStatic.test_no_dict_no_slotscCs2tt�� }|jtj|d�t|�j�WdQRXdS)Nr)r�r�r�rr;rIr)r#Zhandlerrr�%test_no_dict_no_slots_instance_members
z7TestGetattrStatic.test_no_dict_no_slots_instance_membercCs<Gdd�dt�}Gdd�d|�}|jtj|�d�|j�dS)Nc@seZdZdgZdd�ZdS)z5TestGetattrStatic.test_inherited_slots.<locals>.ThingrmcSs
d|_dS)Nrr)rm)r#rrrr�!sz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)rr(r)rfr�rrrrr:sr:c@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingN)rr(r)rrrrr>$sr>rm)rbr�rr;rm)r#r:r>rrr�test_inherited_slotssz&TestGetattrStatic.test_inherited_slotscspGdd�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�ownerrrrrk,sz=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__N)rr(r)rkrrrrrC+srCcseZdZ��ZdS)z.TestGetattrStatic.test_descriptor.<locals>.FooN)rr(r)r�r)rCrrr4.sr4rr�cSsdS)Nr)r�r6�vrrrrZ9sz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)rbr�r�rr;rm)r#r4rrr)rCr�test_descriptor*s

z!TestGetattrStatic.test_descriptorcsVGdd�dt��G�fdd�dt�}Gdd�dt|d�}|jtj|d�|jd�dS)	Nc@seZdZdd�ZdS)zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSsdS)Nr�r)r#rTrUrrrrk?szLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__N)rr(r)rkrrrrrC>srCcseZdZ��ZdS)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaN)rr(r)r�r)rCrrrKAsrKc@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingN)rr(r)rrrrr:Csr:)rtr�)rbrIr�rr;r�)r#rKr:r)rCr�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>.Baser�N)rr(r)rrrrrr�BaseIsrYc@seZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tS)NT)�executedrb)r#rrrrdNszETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)rr(r)rZr�rdrrrr�	SomethingLsr[rrr�)rbr�rr;r"rZ)r#rYr[rTrrr�test_class_as_propertyHsz(TestGetattrStatic.test_class_as_propertycCsbGdd�dt�}Gdd�dt�}Gdd�d||d�}|jtj|�d�d	�|jtj|d�d	�dS)
Nc@seZdZedd��ZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.MetacSstfS)N)rb)r#rrr�__mro__Zsz<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)rr(r)r�r]rrrrr�Ysr�c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�N)rr(r)rrrrrrrY^srYc@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingN)rr(r)rrrrr[asr[)rtrrr�)rIrbr�rr;)r#r�rYr[rrr�test_mro_as_propertyXs
z&TestGetattrStatic.test_mro_as_propertycsN|�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�msz=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)rr(r)rdr�r�r)r�rrr4ksr4r�rdr�)r_rirdr�rr;r")r#r4rrr)r�r�test_dict_as_propertygsz'TestGetattrStatic.test_dict_as_propertycs`|�d�_G�fdd�dt�}Gdd�dt�}|�}|�|_|jtj|d�d�|j�j�dS)NFcs eZdZd��fdd�	Z�ZS)z9TestGetattrStatic.test_custom_object_dict.<locals>.CustomNcsd�_t�j||�dS)NT)r_rc�get)r#�keyr))rdr�rrra|sz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get)N)rr(r)rarir)r�)rdr�Custom{srcc@seZdZdZdS)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)rr(r)rdrrrrr4�sr4rdr�)r_rirbr�r�rr;r")r#rcr4rrr)r�r�test_custom_object_dictwsz)TestGetattrStatic.test_custom_object_dictcCsLGdd�dt�}Gdd�d|d�}|�}|jtj|d�d�|j|j�dS)Nc@seZdZedd��ZdS)z?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.MetacSs
d|_dS)NT)rZ)r#rrrr��szHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N)rr(r)r�r�rrrrr��sr�c@seZdZdZdd�ZdS)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSs
d|_dS)Nrh)r:)r#rrrr��szITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)rr(r)rZr�rrrrr:�sr:)rtr:rh)rIr�rr;r"rZ)r#r�r:rTrrr�test_metaclass_dict_as_property�s
z1TestGetattrStatic.test_metaclass_dict_as_propertycCs t�}|jtjtd|�|�dS)N�version)rb�assertIsNotrr;rE)r#�sentinelrrr�test_module�szTestGetattrStatic.test_modulec
CshGdd�dt�}Gdd�dt|d�}Gdd�d|d�}|jt��tj|d�WdQRX|j|j�dS)	Nc@seZdZedd��ZdS)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTrh)r:)rZri)r#rrrr��sz`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__N)rr(r)r�r�rrrr�MetaMeta�srjc@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rr(r)rZrrrrr��sr�)rtc@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingN)rr(r)rrrrr:�sr:r:)rIr�r�rr;r"rZ)r#rjr�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@rArErFrHrIrJrNrQrRrSrWrXr\r^r`rdrerirkrrrrr9�s,	

	

r9c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestGetGeneratorStatecCsdd�}|�|_dS)Ncssxtd�D]
}|Vq
WdS)Nrv)r5)�numberrrr�number_generator�sz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r#rnrrrr��szTestGetGeneratorState.setUpcCstj|j�S)N)rZgetgeneratorstatero)r#rrr�_generatorstate�sz%TestGetGeneratorState._generatorstatecCs|j|j�tj�dS)N)r�rprZGEN_CREATED)r#rrr�test_created�sz"TestGetGeneratorState.test_createdcCs t|j�|j|j�tj�dS)N)�nextror�rprZ
GEN_SUSPENDED)r#rrr�test_suspended�s
z$TestGetGeneratorState.test_suspendedcCs&x|jD]}qW|j|j�tj�dS)N)ror�rpr�
GEN_CLOSED)r#r6rrr�test_closed_after_exhaustion�sz2TestGetGeneratorState.test_closed_after_exhaustionc
Cs8|jt��|jjt�WdQRX|j|j�tj�dS)N)r�rlro�throwr�rprrt)r#rrr�%test_closed_after_immediate_exception�sz;TestGetGeneratorState.test_closed_after_immediate_exceptioncs,�fdd�}|��_t�j�t�j�dS)Nc3s@x:td�D].}�j�j�tj�|V�j�j�tj�q
WdS)Nrv)r5r�rprZGEN_RUNNING)rm)r#rr�running_check_generator�szCTestGetGeneratorState.test_running.<locals>.running_check_generator)rorr)r#rxr)r#r�test_running�s
z"TestGetGeneratorState.test_runningcCsDdj�}x6|D].}tt|�}|j|t|��|j|t|��qWdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED)r�r�rrk�reprr�)r#�namesr�staterrr�test_easy_debugging�s


z)TestGetGeneratorState.test_easy_debuggingcCs�d
dd�}|dddg�}|jtj|�ddddgd��t|�|jtj|�ddddgddd��t|�|jtj|�ddddgddd��t|�|jtj|�ddddgdd
dd	��yt|�Wntk
r�YnX|jtj|�i�dS)Ncss(d}x|D]}|dkrd}|Vq
WdS)Nrr4r�r
)rr4r�r)�lstrdrerVrrrr�each�s

z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrr4r�)rdr~)rdr~rVrer
)rdr~rVrer)N)rr4r�)rr4r�)rr4r�)r�r�getgeneratorlocalsrr�
StopIteration)r#rZnumbersrrr�test_getgeneratorlocals�s*


z-TestGetGeneratorState.test_getgeneratorlocalscCsXdd�}|�}|jtj|�i�yt|�Wntk
r@YnX|jtj|�i�dS)Ncss
dVdS)Nrrrrrr�	yield_one�szFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one)r�rr�rrr�)r#r�r�rrr�test_getgeneratorlocals_empty�sz3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|jttjd�|jttjdd��|jttjt�|jttjd�dS)NrcSsdS)NTr)rmrrrrZszETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>r4r�)r4r�)r�r�rr�r)r#rrr�test_getgeneratorlocals_error	sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)rr(r)r�rprqrsrurwryr}r�r�r�rrrrrl�srlc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs&tjdd����fdd�}|�|_dS)Ncssxtd�D]
}|Vq
WdS)Nrv)r5)rmrrr�number_coroutinesz5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s��IdHdS)Nrr)r�rr�	coroutinesz.TestGetCoroutineState.setUp.<locals>.coroutine)rHr�)r#r�r)r�rr�szTestGetCoroutineState.setUpcCs|jj�dS)N)r�rR)r#rrrrfszTestGetCoroutineState.tearDowncCstj|j�S)N)rZgetcoroutinestater�)r#rrr�_coroutinestatesz%TestGetCoroutineState._coroutinestatecCs|j|j�tj�dS)N)r�r�rZCORO_CREATED)r#rrrrq!sz"TestGetCoroutineState.test_createdcCs"|jjd�|j|j�tj�dS)N)r��sendr�r�rZCORO_SUSPENDED)r#rrrrs$sz$TestGetCoroutineState.test_suspendedcCsDx,y|jjd�Wqtk
r(PYqXqW|j|j�tj�dS)N)r�r�r�r�r�r�CORO_CLOSED)r#rrrru(sz2TestGetCoroutineState.test_closed_after_exhaustionc
Cs8|jt��|jjt�WdQRX|j|j�tj�dS)N)r�rlr�rvr�r�rr�)r#rrrrw1sz;TestGetCoroutineState.test_closed_after_immediate_exceptioncCsDdj�}x6|D].}tt|�}|j|t|��|j|t|��qWdS)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSED)r�r�rrkrzr�)r#r{rr|rrrr}6s


z)TestGetCoroutineState.test_easy_debuggingcshtjdd������d�fdd�	}|�}|jtj|�d�d��|jd�|jtj|�d�dd��dS)	Ncss
dVdS)Nrrrrr�gencoro?sz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�sd}�IdHdS)Nr:r)rdre)r�rrrDsz;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rdr�r:)rdr�re)N)rHr�r�rZgetcoroutinelocalsr�)r#rrTr)r�r�test_getcoroutinelocals>s
z-TestGetCoroutineState.test_getcoroutinelocalsN)rr(r)r�rfr�rqrsrurwr}r�rrrrr�s		r�c@seZdZdS)�MySignatureN)rr(r)rrrrr�Psr�c@seZdZdS)�MyParameterN)rr(r)rrrrr�Usr�c@sxeZdZedd��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�TestSignatureObjectcKs<tj|f|�}tdd�|jj�D��|j|jkr4dn|jfS)NcssJ|]B}|j|j|jkrdn|j|j|jkr.dn|jt|j�j�fVqdS).N)rr)�empty�
annotationr�r(rO)r��paramrrr�	<genexpr>`sz0TestSignatureObject.signature.<locals>.<genexpr>.)rr�tupler��values�return_annotationr�)r�kw�sigrrrr]s
zTestSignatureObject.signaturec
<Cstj}tj}|jt|��d�ddd�}tj|�}|jdj|jd�}|jdj|jd�}|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()rh�dc_sdS)Nr)�po�pk�pod�pkd�korr�rrrr�osz7TestSignatureObject.test_signature_object.<locals>.testr�)r(r�r�r�rr�r�zwrong parameter order)rzduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)rhr�)rr�r�r�r�rr��replacer�r,r�rrz�
startswith)
r#�S�Pr�r�r�r�r�r�rr�r�Zkwargs2rrr�test_signature_objectis@






z)TestSignatureObject.test_signature_objectc	Csbid�dddid�dd�}tj|dd�}tj|�}xNttjd�D]<}|j|d	d
��$tjtj	||��}|j
||�WdQRXqBWtj|�}tdtjj
d�}tj|j|d�}t�j|j�|jd
�}|jt|t��|jt|jdt��xtttjd�D]b}|j|dd
��Jtjtj	||��}|j
||�|jt|t��|jt|jdt��WdQRXq�WdS)N)rrrhr�)rr�c[sdS)Nr)rdrerr�rrrrr�sz=TestSignatureObject.test_signature_object_pickle.<locals>.foo)rdF)�
pickle_ver�subclass�z)rr()r�r�T)r�r�rrr5�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�r�r�r��collections�OrderedDictr�r�r�r�r�rr�)	r#rrZfoo_partialr��verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_pickle�s*


z0TestSignatureObject.test_signature_object_picklecCsRdd�}tj|�}|jt��d|_WdQRX|jt��d|jd<WdQRXdS)NcSsdS)Nr)rdrrrr��sz=TestSignatureObject.test_signature_immutability.<locals>.testr*rd)rrr�r�rrr�r�)r#r�r�rrr�test_signature_immutability�s
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�sz+TestSignatureObject.test_signature_on_noargcCs&ddd�dd�}|j|j|�d
�dS)Nrrr+)rer�cSsdS)Nr)rdrerrrr��sz9TestSignatureObject.test_signature_on_wargs.<locals>.testrd.�positional_or_keywordre�rd..r��re.rrr��r�r�)r�r+)r�r)r#r�rrr�test_signature_on_wargs�s
z+TestSignatureObject.test_signature_on_wargscCs@tttd�dd�}|j|j|�ddtdfddtdfftf�dS)N)rdrer�cSsdS)Nr)rdrerrrr��sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testrd.�keyword_onlyre)�floatr�ryr�r)r#r�rrr�test_signature_on_wkwonly�s

z-TestSignatureObject.test_signature_on_wkwonlycCsJddd�dddtd�dd	�}|j|j|�dddddddtdffdf�dS)Nrr+)r�rrr*�baz)rerr:r�c_sdS)Nr)rdrer:r�rr�rrrr��sz@TestSignatureObject.test_signature_on_complex_args.<locals>.testrd.r�rer�var_positionalr:r�r�r��var_keyword)r)rd..r�)rerrrr�)r.r*r�)r:.r�r�)r�r+.r�)ryr�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_onlycsTeZdZedd��Zedd��Zejed�Z	ej�d�Z
ejed�Zej�d�ZdS)z:TestSignatureObject.test_signature_without_self.<locals>.AcWsdS)Nr)rrrr�test_classmethod�szKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWsdS)Nr)rrrr�test_staticmethod�szLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodrN)
rr(r)r�r�r�r�r�r�r.r/r0r1r)r�r�rrrs�srsr.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�rr.r/r0r1)r#rsr)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)Nrcs<tj|�}�jt|tj���jt|jj��dj	d�|S)zAUse this to test unbound methods (things that should have a self)rr#)
rrrr�r�r�rar�r�r)rr)r#rr�test_unbound_method	s
zKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_methodcsBtj|�}�jt|tj��|jr>�jt|jj��dj	d�|S)zRUse this to test bound methods or normal callables (things that don't expect self)rr#)
rrrr�r�r�rPrar�r)rr)r#rr�
test_callables

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jS)N)r�r))r)rrrr�sz9TestSignatureObject.test_signature_on_builtins.<locals>.pr�r�resbytesr�g��Q�	@r6�#�nroTr�FZlocalr�rEr$rrwzno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rr(r)rIr�rrrr�ThisWorksNowAsr�)r�r�r�rE�maxsizerbr�r�r�r��StringIOr��	maketransri�fromkeysrIr�ry�__add__�minr,r��__delitem__r��
__delete__Z#docstring_with_signature_but_no_doc)r#r�r�r�r�r�r�r)r#rr�test_signature_on_builtinssB











z.TestSignatureObject.test_signature_on_builtinscCsdddl}|j}dd�}||�}|jtj|�tj|��td�dd�}|jtj|dd�tj|��dS)	Nrcs tj��td��fdd��}|S)N)r�cs
�||�S)Nr)rr�)rrr�wrapperTsz\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)r�r�ry)rr�r)rr�	decoratorSszKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator)r�c_sdS)Nr)rr�rrr�wrapper_like^szNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF)�follow_wrapped)r�r�r�rrry)r#r�rr�Zdecorated_funcr�rrr�$test_signature_on_decorated_builtinsLs
z8TestSignatureObject.test_signature_on_decorated_builtinscCsRddl}|jtd��tj|j�WdQRX|jtd��tjt�WdQRXdS)Nrzno signature found for builtin)r�r,r�rrr�r�)r#r�rrr�'test_signature_on_builtins_no_signaturecsz;TestSignatureObject.test_signature_on_builtins_no_signaturec	Cs&|jtd��tjd�WdQRXdS)Nzis not a callable objectrh)r,r�rr)r#rrr�test_signature_on_non_functionnsz2TestSignatureObject.test_signature_on_non_functionc
s�dd�dd�}Gdd�d�}tjj|�}tjj||��}|j||�tj||��}|j||�||�}|`|j|j|�d�tj��fdd
�}tjj	d|��F||�}|j
tj|��d|_|jtj|��|jtj|�|�WdQRXdS)NT)�kwonlyc_sdS)Nr)rdrer��	kwonlyreqrr�rrrrsszITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@seZdZdd�Zdd�ZdS)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecSs2|j|_|j|_|j|_|j|_|j|_||_dS)N)rrr��__defaults__�__kwdefaults__r)r#rrrrr�{szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_s|j||�S)N)r)r#rr�rrrr��szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N)rr(r)r�r�rrrr�funclikevsr�r.r�r�r�cst|d�rdS�|�S)N�_builtinmockT)rG)r%)�_orig_isdescrr�_isdesc�s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor�r..r��r�..r��r�r�)r�.)
rr��
from_callabler�rr�r�r�ZmockZpatchr"r�r)r#rr�Zsig_funcZsig_funclikeZflr�Zbuiltin_funcr)r�r�'test_signature_from_functionlike_objectrs*z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|jttj|��d�dS)NT)r�c_sdS)Nr)rdrer�r�rr�rrrr�szCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSsdS)Nr)r#Zmarkerrrrr��szPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)rr(r)r�rr�r�r�r)rrrr��sr�z(marker))r�r�rr)r#r�r)rr�!test_signature_functionlike_class�s
z5TestSignatureObject.test_signature_functionlike_classc	CsxGdd�d�}|j|j|�j�d
tf�|j|j|�j�d�|j|j|�d�|jtd
��|j|��WdQRXdS)Nc@s4eZdZdd�Zded�dd�Zdd�Zd	d
�ZdS)
z:TestSignatureObject.test_signature_on_method.<locals>.TestcWsdS)Nr)rrrrr��szCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r)r�cSsdS)Nr)r#r�r�rrrr��sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWsdS)Nr)rrrr�m2�sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSsdS)Nr)rdrrrr��szCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__N)r)rr(r)r�ryr�r�r�rrrr�Test�sr�r�.r�r�rrr�zinvalid method signature�r�..r��r�r.r�)r�r��r..r��r�)r�.�r..r��r�)r�.)r�rr�ryr�r,r�)r#r�rrr�test_signature_on_method�s
z,TestSignatureObject.test_signature_on_methodcCs>Gdd�d�}tj|�j�dd��}|j|j|�dtf�dS)
Nc@seZdZded�dd�ZdS)zETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr)r�cSsdS)Nr)r#r�r�rrrr��szHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1N)r)rr(r)ryr�rrrrr��sr�c_sdS)Nr)rr�rrr�m1d�szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dr�.r�r�r�r�..r��r�r.r�)r�r)r�r�r�r�rry)r#r�r�rrr�#test_signature_wrapped_bound_method�sz7TestSignatureObject.test_signature_wrapped_bound_methodcCsDGdd�d�}|�j}|j|j|�d�|j}|j|j|�d�dS)Nc@seZdZedd�dd��ZdS)z?TestSignatureObject.test_signature_on_classmethod.<locals>.Testr)r�cSsdS)Nr)r|r�r�rrrrr�szCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)rr(r)r�rrrrrrr��sr�r�.r�r�rr��r�..r��r�r.r��rr)r.�r�..r��r�r.r��rr)r.)rrr�r)r#r��methrrr�test_signature_on_classmethod�sz1TestSignatureObject.test_signature_on_classmethodcCsDGdd�d�}|�j}|j|j|�d�|j}|j|j|�d�dS)Nc@seZdZedd��ZdS)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSsdS)Nr)r|r�rrrrr�szDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)rr(r)r�rrrrrrr��sr�r|.r�r�r��r|..r��r�..r��r
r)r.�r|..r��r�..r��r
r)r.)rrr�r)r#r�rrrr�test_signature_on_staticmethod�sz2TestSignatureObject.test_signature_on_staticmethodc
CsLddlm}tj}dd�}|j|j||��fdf�|jtd��tj||d��WdQRX|jtd��tj||dd��WdQRXd	d�}|j|j||��d9�|j|j||d��d>�|j|j||ddd��dC�|j|j||ddd��dI�|j|j||dddd��dN�|j|j||dd��dT�dd�}|j|j||d��dY�|j|j||dd��d^�|j|j||ddd��dc�|j|j||ddddd��dh�|j|j||dddddd��dm�|j|j||dd��ds�|j|j||ddd��dy�tdd�d d�}tj|�}|_	|j|j|||d���dzd
dtdffdf�|j|j|||d�d��d
dtdffdf�tj|||d�d��}d!d"�}|||d#d�d$d�}|j|j|�d}�|j|�d$�d%d"�}|||dd$d�d&d�}|j|j|�d��|j|d#d�d��d'd"�}|||d$d$d(�d#d&d)�}|j|j|�d��tj|�j
d*d+d,�}|j||j|j�d��d�d-d"�}||d.d�}tj|�j
d+d�}|j||j|j�d��tj|�j
d+d/�}|j||j|j�d��tj|�j
d+d/d�}|j||j|j�d��tj|�j
d/d�}|j||j|j�d��||d#d$d�}tj|�j
d/�}|j||j|j�d��d0d"�}tj|�}|j
j�}	|	d
j|jd1�|	d
<|	dj|jd1�|	d<tj|	j��|_	tj|�}|jt|�d2�|j|j||d��d��|j|j||dd��d��|j|j||ddd��d��|j|j||dddd��d��|j|j||ddd��d��dS)�Nr)r�cSsdS)Nrrrrrr�	sz;TestSignatureObject.test_signature_on_partial.<locals>.test.zhas incorrect argumentsr)rdcSsdS)Nr)rdrerr�rrrr�	srdr�rerr�r�r4)r)rerc_sdS)Nr)rdrerr�rrrr�@	srr�r�r�r�T)r�)r�re)re)rer�rh)rr�cSsdS)Nr)rdrerrrrr�o	scSs|S)Nr)rdrrrrr	sz:TestSignatureObject.test_signature_on_partial.<locals>.foor�cSs
|||fS)Nr)rdrerrrrrr�	sr&cSs||||fS)Nr)rdrerr�rrrrr�	s)r�r)rer���r�)rdrecSs
|||fS)Nr)rdrerrrrrr�	s�
r
c[sdS)Nr)rdrerr�r�rrrrr�	s)r(z(a, b, /, c, d, **kwargs)�positional_only�rd..r��re..r��r..r��r�..r��rrrr)r.�re..r��r..r��r�..r��rrr)r.�re..r��rr4.r��r�..r��rrr )r!.�rd..r��rer.r��rr4.r��r�..r��r"r#r$r%)r&.�rer.r��rr4.r��r�..r��r'r(r))r*.�rdr.r��re..r��r..r��r�..r��r+r,r-r.)r/.�r..r��re..r��r�..r��r0r1r2)r3.�rdr.r��re..r��r�..r��r4r5r6)r7.�r..r��re..r��r�..r��r8r9r:)r;.�r..r��re..r��r�..r��r<r=r>)r?.�r..r��rer.r��r�..r��r@rArB)rC.�rd..r��r..r��rer.r��r�..r��rDrErFrG)rH.�rd..r��r..r��rer.r��r�..r��rIrJrKrL)rM.)re..r��rdr.r��rN)rO.�rer&.r��r..r��rPrQ)rR.)rr&r�rd..r��rer.r��rr.r��r�r&.r��rSrTrUrV)rW.)rr�rr&)rr4r�)r�r4r)r�r
r)r�r
r)rr
r)r
rr�re..r�r..r��r�..r��r�..r��rXrYrZr[)r\.�r..r��r�..r��r�..r��r]r^r_)r`.�r�..r��r�..r��rarb)rc.�rr�.r��r�..r��r�..r��rdrerf)rg.�re..r�rr�.r��r�..r��r�..r��rhrirjrk)rl.)r�r�rr�r�rr,r�ryr��bindrr�r��copyr�r�r�r�r�)
r#r�r�r�r�ZpsigrrZ_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�G�fdd�d�}|j|j|j�d�dS)Nr)r�cseZdZdd�Z�e�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSsdS)Nrrrrrr��	szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN)rr(r)r�r�r)r�rr�Spam�	srqzhas incorrect argumentscs&eZdZdd�dd�Z�edd�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamr:)r�cSsdS)Nr)�itrdrrrrr��	szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testr)rN)rr(r)r�r�r)r�rrrq�	srr.r�rdrrr�r:cs$eZdZdd�dd�Z�ed�ZdS)zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spam�anno)r#cSsdS)Nr)r#rmrrrr��	szFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testrN)rr(r)r�r�r)r�rrrq�	sr#rs�rr..r��rd..r��rr.r��rtrurv)rwr:�rd..r��rr.r��rxry)rzr:�r#.rsr��r{)r|.)	r�r�r,r�rrr�r�r�)r#rqr)r�r�test_signature_on_partialmethod�	s$z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|jttj|��d�dS)NcSsdS)Nr)rdrrrrr
szETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foor:z(a))�_partialmethodr�r�rr)r#rrrrr�$test_signature_on_fake_partialmethod
sz8TestSignatureObject.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�)rrrr�
szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)r�ry)rr�)r�)rrr�
szBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcseZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r#rdrerrrr*
sz@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)rr(r)r*r)r�rrr4
sr4r#.r�rdreF)r�rr�r�r�csN�j��td��fdd��}tj��}t|jj��dd�}|j|d�|_|S)N)r�cs�d|�|�S)Nrh)rhr)rr�)rrrr�*
szSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperr)r�)	r�ryrrr�r�r�r�r�)rr�r��
new_params)r�)rrr�)
s
cseZdZ�dd��ZdS)z<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdS)Nr)r#rdrerrrr�3
szETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N)rr(r)r�r)r�rrr42
scSsdS)Nrrrrr�wrapped_foo_callA
szITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call�r#..r��rd..r��re..r��r�r�r�)r�.�rd..r��re..r��r�r�)r�.�r..r��r�..r��r�r�)r�.�rd..r��re..r��r�r�)r�.�re..r��r�)r�.�rd..r��re..r��r�r�)r�.)r�r�rr*r��__wrapped__)r#r4r�r)r�r�r�test_signature_on_decorated
s>	z/TestSignatureObject.test_signature_on_decoratedc	Cs>Gdd�d�}|j|j|�d �Gdd�dt�}Gdd�d|d	�}|j|j|�d#�Gd
d�dt�}Gdd�d|d	�}|j|j|�d&�|j|j|�d,�Gdd�dt�}Gdd�dt|d	�}Gdd�d|d	�}|j|j|�d2�|j|j|�d7�|j|j|�d:�Gdd�dt�}Gdd�d|d	�}|j|j|�d@�dS)ANc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r#rdrrrr�M
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr(r)r�rrrrrgL
srgrd.r�c@seZdZdd�ZdS)z7TestSignatureObject.test_signature_on_class.<locals>.CMcSsdS)Nr)r|rdrrrr�U
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__N)rr(r)r�rrrrr�T
sr�c@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r#rerrrr�X
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr(r)r�rrrrrgW
s)rtcs"eZdZdd��fdd�
Z�ZS)z7TestSignatureObject.test_signature_on_class.<locals>.CMr)rrcst�j||||�S)N)rcr�)�mclsr�bases�dctrr)rdrrr�`
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr(r)r�rirr)rdrr�_
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r#rerrrr�c
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr(r)r�rrrrrgb
srerr�r�rrrr�cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMr)rrcst�j||||�S)N)rcr�)r�rr�r�rr)rdrrr�r
sz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�S)N)rI)r|�nm�bs�dtrrrr�t
szATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)rr(r)r�r�rirr)rdr�CMMq
sr�cs"eZdZdd��fdd�
Z�ZS)z7TestSignatureObject.test_signature_on_class.<locals>.CMr4)r*cst�j||||�S)N)rcr�)r�rr�r�r*)rdrrr�w
sz?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__)rr(r)r�rirr)rdrr�v
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r#rerrrr�z
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr(r)r�rrrrrgy
sr�r�r�cs"eZdZdd��fdd�
Z�ZS)z7TestSignatureObject.test_signature_on_class.<locals>.CMr4)r*cst�j|||�S)N)rcr�)r|rr�r�r*)rdrrr��
sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)rr(r)r�rirr)rdrr��
sc@seZdZdd�ZdS)z6TestSignatureObject.test_signature_on_class.<locals>.CcSsdS)Nr)r#rerrrr��
sz?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N)rr(r)r�rrrrrg�
sr*r4�rd..r��r�)r�.�rd..r��r�)r�.�re..r��r�)r�.�r..r��r�..r��r�..r��rrr.r��r�r�r�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�.�re..r��r�)r�.�r..r��r�..r��r�..r��r*r4.r��r�r�r�r�)r�.)r�rrI)r#rgr�r�rrr�test_signature_on_classK
sZz+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@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr(r)rrrrrg�
srgz()c@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr(r)rrrrru�
sruc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN)rr(r)rrrrrg�
sc@seZdZdS)zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DN)rr(r)rrrrru�
szcallable.*is not supported)r�r�rrrIr,r�)r#rgrurrr�$test_signature_on_class_without_init�
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@seZdZdS)z>TestSignatureObject.test_signature_on_builtin_class.<locals>.PN)rr(r)rrrrr��
sr�c@seZdZdS)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitN)rr(r)rrrr�
EmptyTrait�
sr�c@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2N)rr(r)rrrr�P2�
sr�c@seZdZdd�ZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSsdS)Nr)r#r:rrrr��
szHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__N)rr(r)r�rrrr�P3�
sr�z(spam)c@seZdZdd�ZdS)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSsdS)Nr)r|rrr*rrrr��
szKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__N)rr(r)r�rrrr�MetaP�
sr�c@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4N)rr(r)rrrr�P4�
sr�)rtz
(foo, bar))r�r�rrr�r�rI)r#r�r�r�r�r�r�rrr�test_signature_on_builtin_class�
sz3TestSignatureObject.test_signature_on_builtin_classcCs�Gdd�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#rdrrrr��
szLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__N)rr(r)r�rrrrr4�
sr4rd.r�c@seZdZdS)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamN)rr(r)rrrrrq�
srqzis not a callable objectc@seZdZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarN)rr(r)rrrr�Bar�
sr�c@seZdZdS)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedN)rr(r)rrrr�Wrapped�
sr�cSsdS)Nr)rdrrrrZ�
szHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>zwrapper loop�rd..r��r�)r�.�rd..r��r�)r�.�rd..r��r�)r�.)r�rr,r�rr�r�)r#r4rqr�r�rrr�"test_signature_on_callable_objects�
s&
z6TestSignatureObject.test_signature_on_callable_objectscCs|j|jddd��d
�dS)NrcSs|S)Nr)rdrrrrZ�
sz?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>rd.r�)r�rdr.r��r�)r�.)r�r)r#rrr�test_signature_on_lambdas�
sz-TestSignatureObject.test_signature_on_lambdascCsPttd�dd�}|jtj|�dk�|jtj|�dk�|jtj|�t�k�|jtj|�t�k�ttd�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���ttd�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���td�d	d�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���dd�ttd�d
d�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���td�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���ttd�d
d�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���ttd�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���dd�}dd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dd�dd�}dd�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dd�dd�}dd�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dd�}dd�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|j	ttj|��ttj|���dd�td�dd�}dd�td�dd�}|jtj|�tj|�k�|jtj|�tj|�k�|jttj|��ttj|���dS)N)rer�cSsdS)Nr)rdrerrrrr�
sz8TestSignatureObject.test_signature_equality.<locals>.foorhcSsdS)Nr)rdrerrrr*�
sz8TestSignatureObject.test_signature_equality.<locals>.barcSsdS)Nr)rdrerrrr*�
s)recSsdS)Nr)rdrerrrr*�
scSsdS)Nr)rdrerrrr*s)r�cSsdS)Nr)rdrrrrr*scSsdS)Nr)rdrerrrr*scSsdS)Nr)rerdrrrr:sz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdS)Nr)rdrerrrrrrscSsdS)Nr)rrerdrrrr*sr)rdcSsdS)Nr)rdrerrrrrr#scSsdS)Nr)rrerdrrrr*$scSsdS)Nr)�posrdrerrrrrr*scSsdS)Nr)r�rrerdrrrr*+scSsdS)Nr)r�rdrerrrrrr1scSsdS)Nr)r�rrerdrrrr*2s)r�c_sdS)Nr)r�rdrerrr�rrrrr8sc_sdS)Nr)r�rrerdrr�rrrr*9s)
ryr�r"rrrr=r��hashrP)r#rrr*r:rrr�test_signature_equality�
s�z+TestSignatureObject.test_signature_equalitycCs�tj}tj}dd�}tj|�}||d|j�gd�}|jt|�t|��|jt|�t|jdd���dd�d	d
�}|jt|�ttj|���ifdd�}|j	t
d��ttj|��WdQRXid�d
d�}|j	t
d��ttj|��WdQRXdS)NcSsdS)Nr)rdrrrrrCsz8TestSignatureObject.test_signature_hashable.<locals>.foord)r�r:)r�r)r�cSsdS)Nr)rdrrrr*Lsz8TestSignatureObject.test_signature_hashable.<locals>.barcSsdS)Nr)rdrrrrrOszunhashable typecSsdS)Nr)rdrrrrrSs)rr�r�r�POSITIONAL_OR_KEYWORDr�r�rPr�r,r�)r#r�r�rr�foo_sigZ
manual_sigr*rrr�test_signature_hashable?s 

z+TestSignatureObject.test_signature_hashablecCs~ddd�tdd�dd�}|jttj|��d�d
dd�tdd�dd�}|jttj|��d	�d
d�}|jttj|��d�dS)Nr)rrh)rdr�c[sdS)Nr)rdrerr�rrrrrXsz3TestSignatureObject.test_signature_str.<locals>.fooz'(a:int=1, *, b, c=None, **kwargs) -> 42c_sdS)Nr)rdrerrr�rrrrr]sz+(a:int=1, *args, b, c=None, **kwargs) -> 42cSsdS)Nrrrrrrrbsz())r)r)ryr�r�rr)r#rrrrr�test_signature_strWsz&TestSignatureObject.test_signature_strcCs�tj}tj}dd�}tj|�}t|jj��}|dj|jd�|d<|j|d�|_	|j
ttj|��d�|j
t||d|j�gd��d�|j
t||d|j�|d	|j�gd��d
�|j
t||d|j�|d	|j
�gd��d�dS)Nc[s||fS)Nr)�a_porer�rrrr�jszDTestSignatureObject.test_signature_str_positional_only.<locals>.testr)r()r�z(a_po, /, *, b, **kwargs)rrz(foo, /)r*z(foo, /, **bar)z(foo, /, *bar))rr�r�rrar�r�r�r�r�r�r�r-�VAR_POSITIONAL)r#r�r�r�r�r�rrr�"test_signature_str_positional_onlyfs&


z6TestSignatureObject.test_signature_str_positional_onlycCs�dd�dd�}tj|�}|jdd�}|j|jd�|j|jd�}|j|j|j�|jdd�}|j|jd�|j|tj|��dS)Nrh)r�cSsdS)Nrrrrrr��sz=TestSignatureObject.test_signature_replace_anno.<locals>.test)r�)rrr�r�r�r�r�)r#r�r�rrr�test_signature_replace_anno�s
z/TestSignatureObject.test_signature_replace_annocCsRGdd�d�}Gdd�d|�}|j|j|j�d�|j|j|j�|j|j��dS)Nc@s$eZdZd	dd�ddd�dd�ZdS)
zFTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamr4r�)�	_Spam__p2r)�	_Spam__p1r�cSsdS)Nr)r#r�r�rrrrr�szJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)r4)rr(r)rrrrrrrq�srqc@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamN)rr(r)rrrr�Ham�sr�r#.r�r�r4rr�r�r��r#..r��r�r4rr��r�r�r4r��r�r�r�)r�.)r�rrr)r#rqr�rrr�$test_signature_on_mangled_parameters�sz8TestSignatureObject.test_signature_on_mangled_parameterscCs>Gdd�dtj�}dd�dd�}|j|�}|jt||��dS)Nc@seZdZdS)zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureN)rr(r)rrrrr��sr�r)recSsdS)Nr)rdrerrrrr�szHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo)rr�r�rr�)r#r�rrr�rrr�'test_signature_from_callable_python_obj�s
z;TestSignatureObject.test_signature_from_callable_python_objcCs2Gdd�dtj�}|jtj�}|jt||��dS)Nc@seZdZdS)zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureN)rr(r)rrrrr��sr�)rr�r�r�r�rr�)r#r�r�rrr�(test_signature_from_callable_builtin_obj�sz<TestSignatureObject.test_signature_from_callable_builtin_objN),rr(r)r�rr�r�r�r�r�r�r�r�rr�rrr�r�r�r�r�r�r�rr	rrpr}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�\sX/#G5
Y%CQ S
r�c@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�TestParameterObjectcCsltj}|j|j|jko:|jko:|jko:|jkn�|jt	|j�d�|jdt
|j�k�dS)Nr�)rr�rr�r�r��KEYWORD_ONLYr-r�r�rz)r#r�rrr�test_signature_parameter_kinds�s
(z2TestParameterObject.test_signature_parameter_kindsc<Cs�tjddtjjd�}|j|jd�|j|jd�|j|j|j�|j|j	tjj�|j
td��tjdddd�WdQRX|j
td��tjdtjjd�WdQRX|j
t
d	��tjdtjjd�WdQRX|j
td
��tjdtjjd�WdQRX|j
td
��tjdtjjd�WdQRX|j
td
��tjddtjjd�WdQRX|j
td
��tjddtjjd�WdQRXtjddtjjd�}|j
td
��|jtjjd�WdQRX|jt|�jd��|jdt|�k�dS)Nrrr)r)r(z)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer�)r(zname must be a strzis not a valid parameter name�$z.azcannot have default valuesrdrhz
<Parameterz"a=42")rr�r�r�rr)r�r�r�r(r,r�r-r�r�r�r�rrzr�)r#r�rrr�test_signature_parameter_object�s<z3TestParameterObject.test_signature_parameter_objectcCsttj}|d|jd�}|jt|�t|d|jd���|jt|�t|d|jdd���|jt|�t|j|jd���dS)Nrr)r(rh)r(r))rr�r�r�r�rPr�r�)r#r�rrrrr�!test_signature_parameter_hashable�s
z5TestParameterObject.test_signature_parameter_hashablecCs�tj}|ddtjjd�}|j||k�|j||k�|j|dk�|j|dk�|j|t�k�|j|t�k�|j||ddtjjd�k�|j||ddtjjd�k�dS)Nrrrh)r)r()rr�r�rr"r=)r#r�r�rrr�!test_signature_parameter_equality�sz5TestParameterObject.test_signature_parameter_equalitycCsltjddtjjd�}|j||j��|j||j��|jdd�}|j|jd�|j|jd�}|j||�|jdd�}|j|jd�|j	||�|j
td��|j|jd�}WdQRX|jddd	�}|j|j
d�|j	||�|jd|jd	�}|j|j
|j�|jd|jd�}|j|j|j�|j	||�|j
td
��|j|jd�}WdQRX|j|jd�}|j||�dS)Nrrrh)r)r(r)r�r*)rzname is a required attribute)rr)z<value <class 'inspect._empty'> is not a valid Parameter.kind)r()rr�r�rgr�r�r�r�rrPr,r�r�r)r�r()r#r�Zp2rrr� test_signature_parameter_replace�s6z4TestParameterObject.test_signature_parameter_replacecCs.|jtd��tjdtjjd�WdQRXdS)Nzname must be a str)r()r,r�rr�r�)r#rrr�(test_signature_parameter_positional_only!sz<TestParameterObject.test_signature_parameter_positional_onlycCs`|jtd��tjdtjjd�WdQRXtjdtjjd�}|j|jtjj�|j|jd�dS)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0)r(Z	implicit0)	r,r�rr�r�r�r�r(r)r#r�rrr�!test_signature_parameter_implicit%sz5TestParameterObject.test_signature_parameter_implicitcCsNtjdtjjd�}|jt��d|_WdQRX|jt��d|_WdQRXdS)Nr:)r(r*r+)rr�r�r�r�rrr()r#r�rrr�%test_signature_parameter_immutability2s
z9TestParameterObject.test_signature_parameter_immutabilityN)rr(r)r�r�r�r�r�r�rr�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�Zedd��ZdS)�TestSignatureBindcOs$tj|�}|j||�}||j|j�S)N)rrrmrr�)rrr�r�rorrr�call=s
zTestSignatureBind.callcCs�dd�}|j|j|�d�|jtd��|j|d�WdQRX|jtd��|j|ddd�WdQRX|jtd��|j|dd�WdQRXdS)	NcSsdS)Nrhrrrrrr�Dsz9TestSignatureBind.test_signature_bind_empty.<locals>.testrhztoo many positional argumentsrr)r:z)got an unexpected keyword argument 'spam')r�r�r,r�)r#r�rrr�test_signature_bind_emptyCs
z+TestSignatureBind.test_signature_bind_emptycCs�dd�}|j|j|�fif�|j|j|d�dif�|j|j|dd�dif�|j|j|dd�fddif�|j|j|ddd�d
ddif�|j|j|dd	�fd
dif�|j|j|dddd�dddif�dS)Nc_s||fS)Nr)rr�rrrr�Rsz7TestSignatureBind.test_signature_bind_var.<locals>.testrr4r*)rrrrr)rr)r)rr4)r)rr4)r�r�)r#r�rrr�test_signature_bind_varQs z)TestSignatureBind.test_signature_bind_varcCsdd�}|j|j|ddd�d�|jtd��|j|dddd�WdQRX|jtd��|j|d�WdQRX|jtd	��|j|�WdQRXddd�}|j|j|ddd�d�|j|j|dd�d�ddd�}|j|j|d
d
d�d�|j|j|d
d�d�|j|j|d
d�d�dS)NcSs
|||fS)Nr)rdrerrrrr�_sz=TestSignatureBind.test_signature_bind_just_args.<locals>.testrr4r�ztoo many positional argumentsr�z missing a required argument: 'b'z missing a required argument: 'a'rcSs
|||fS)Nr)rdrerrrrr�oscSs
|||fS)Nr)rdrerrrrr�tsr)rdr)rd)re)rr4r�)r)rr4r�)rr4r)rr4r�)rr4r)rr4r�)rrr�)r�r�r,r�)r#r�rrr�test_signature_bind_just_args^s"

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|j|j|�f�|j|j|ddd�d�dS)NcWs|S)Nr)rrrrr�{szATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr4r�)rr4r�)r�r�)r#r�rrr�!test_signature_bind_varargs_orderzsz3TestSignatureBind.test_signature_bind_varargs_ordercCs�ddd�}|j|j|ddddd�d�|j|j|dd�dddff�|j|j|ddd�dddff�|j|j|ddd	�dddff�|jtd
��|j|ddddd�WdQRXdS)Nr�cWs||||fS)Nr)rdrerrrrrr��szDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testrr4r�rv)rerd)rez multiple values for argument 'c')r)r��r�rv)rr4r�r�)r�r�r,r�)r#r�rrr�$test_signature_bind_args_and_varargs�s
  z6TestSignatureBind.test_signature_bind_args_and_varargscCs<dd�}|j|j|�i�|j|j|ddd�ddd��dS)Nc[s|S)Nr)r�rrrr��sz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testr*r�)rrr:)r�r�)r#r�rrr�test_signature_bind_just_kwargs�sz1TestSignatureBind.test_signature_bind_just_kwargsc	CsJddd�}|j|j|dd�dddif�|j|j|ddddd�dddddd�f�|j|j|ddddd	�dddddd�f�|j|j|ddddd
�dddddd�f�|j|j|ddddd�dddddd�f�|j|j|dddddd
�dddddd�f�|j|j|ddddd�dddddif�|j|j|dddd�dddif�dS)Nr�c[s||||fS)Nr)rdrerr�rrrr��szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrr4r*r�)rrr:)rerdrrr:)rdrerrr:)rerrr:r�)rerrrr:)rrrrrv)rrdre)r�)r�r�)r#r�rrr�#test_signature_bind_args_and_kwargs�s 
z5TestSignatureBind.test_signature_bind_args_and_kwargsc@CsTdd�}|jtd��|j|d�WdQRX|j|j|dd�d�dd�dd�}|jtd��|j|d�WdQRXdd�}|j|j|dd	d
�d�|j|j|d	dd�d�|jtd��|j|d	dd
d�WdQRX|jtd��|j|dd	�WdQRX|jtd��|j|dd	d	d
�WdQRX|jtd��|j|dd	dd�WdQRX|jtd��|j|d�WdQRXdd�}|j|j|dd	d
�dd	if�|j|j|dd	d�dd	if�|j|j|dd	dd�dd	ddif�|j|j|ddd	d�dd	ddif�|jtd��|j|dd	d�WdQRX|j|j|dd	dd
d�dd	dd
d�f�dS)NcSs|S)Nr)rrrrrr��sz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testztoo many positional argumentsr)rrcSs|S)Nr)rdrrr*rrrr��sz"missing a required argument: 'bar'cSs||fS)Nr)rrr*rrrr��sr4)r*)r*rrz)got an unexpected keyword argument 'spam'r)r*rrr:r�)r*r:c[s
|||fS)Nr)rrr*�binrrrr��s)rrr*r:)r:rrr*z"missing a required argument: 'foo')r:r*)r*r�r:)r�r:)rr4)rr4)r,r�r�r�)r#r�rrr�test_signature_bind_kwonly�sN

z,TestSignatureBind.test_signature_bind_kwonlyc
Cs�dd�dd�}tj|�}|jddddd	d
d�}|jt|jj��dddddd	d
d�ff�|j|jddd	d
d��|j|jd�dS)Nr�)r�c_sdS)Nr)rdrer�rr�rrrr��sz=TestSignatureBind.test_signature_bind_arguments.<locals>.testrrr&r-r��<)rerrr�rdrrer�)rrr�)rdr�r)rr�)rer&)rr)	rrrmr�r��	arguments�itemsr�r)r#r�r�rorrr�test_signature_bind_arguments�s
z/TestSignatureBind.test_signature_bind_argumentscCsftj}ddd�dd�}tj|�}tjt|jj���}x"dD]}||j|j	d
�||<q:W|j|j
�d�}||_|j|j
|dd
dddd�dd
dddif�|j|j
|dd
�dd
dddif�|j|j
|dd
ddd�dd
dddif�|jtd��|j
|dd
dddd�WdQRX|jtd��|j
|dd
dd�WdQRX|jtd��|j
|dd
d�WdQRXdS)Nr�rhr�)r*c[s||||||fS)Nr)r��b_po�c_porrr*r�rrrr��szCTestSignatureBind.test_signature_bind_positional_only.<locals>.testr�r�r�)r()r�rr4r�rv�)rrr*zbut was passed as a keywordr)rrr*r�zparameter is positional only)r�)r�r�)r�rh)r�r�r�)rr�rr�r�r�r�r�r�r�r�r�r�r�r,r�)r#r�r�r�r�rZnew_sigrrr�#test_signature_bind_positional_only�s(

 z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}tj|�}|jddd�}|j|jd�|jdddd�}|j|jd�dS)	NcSsdS)Nr)rdr#rerrrr�
szATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testrr4r�)r#re)rr4r�)rr4r�)rrrmr�r)r#r�r�rorrr�!test_signature_bind_with_self_arg
s
z3TestSignatureBind.test_signature_bind_with_self_argcCs�dd�}tj|�}|jtd��|jddd�WdQRXdd�}|j|j|dd�fd	dif�tj|�}|jdd�}|j|jd
d	dii�dS)NcWs||fS)Nr)rdrrrrr�
sz?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rr)rdrc_s||fS)Nr)rr�rrrr�"
s)rrr�)rrr,r�rmr�r�r�)r#r�r�rorrr�test_signature_bind_vararg_name
s


z1TestSignatureBind.test_signature_bind_vararg_namecCsNdd�}|jjd}tj|i�}ttd��}|j|j||�dddddh�dS)	NcSsdd�td�D�S)NcSsh|]}||�qSrr)r�r�rrr�	<setcomp>.
szWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<setcomp>rv)r5rrrr�make_set-
szDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setrrvrr�r�r�)r�	co_constsrH�FunctionType�iterr5r�r�)r#rZsetcomp_codeZsetcomp_func�iteratorrrr� test_signature_bind_implicit_arg*
s
z2TestSignatureBind.test_signature_bind_implicit_argN)rr(r)r�r�r�r�r�r�r�r�r�r�r�rrrrr	rrrrr�<s

7
r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoundArgumentsc	Cs<dd�}tj|�jd�}|jtd��t|�WdQRXdS)NcSsdS)Nr)rdrrrrr8
szITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foorzunhashable type)rrrmr,r�r�)r#rrrorrr�)test_signature_bound_arguments_unhashable7
sz<TestBoundArguments.test_signature_bound_arguments_unhashablec	CsTdd�}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	�}|jddd
�}|j||k�|j||k�dS)NcSsdS)Nr)rdrrrrr?
szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorr4rdcSsdS)Nr)rerrrr*Q
szGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSsdS)Nr)rdrerrrrrV
s)rdre)rerd)rrrmrr"r=r�)	r#rrroZba2Zba3r*Zba4r�Zba1rrr�'test_signature_bound_arguments_equality>
s2

z:TestBoundArguments.test_signature_bound_arguments_equalitycCs�id�dddid�dd�}tj|�}|jdd	id
�}xLttjd�D]:}|j|d��$tjtj||��}|j	||�WdQRXqDWdS)N)rrrhr�)rr�c[sdS)Nr)rdrerr�rrrrr^
szETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foorr&)r�)r�)
rrrmr5r�r�r�r�r�r�)r#rrr�ror�Z
ba_pickledrrr�%test_signature_bound_arguments_pickle]
s
z8TestBoundArguments.test_signature_bound_arguments_picklecCsHid�dddid�dd�}tj|�}|jdd	id
�}|jt|�d�dS)N)rrrhr�)rr�c[sdS)Nr)rdrerr�rrrrrh
szCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foorr&)r�z <BoundArguments \(a=20,.*\}\}\)>)rrrmZassertRegexrz)r#rrr�rorrr�#test_signature_bound_arguments_reprg
s
z6TestBoundArguments.test_signature_bound_arguments_reprc	CsXdid�dd�dd�}tj|�}|jd�}|j�|jt|jj��dddffd	ifd
ifg�|jddddd
�}|j�|jt|jj��dddd	ifd
ddifg�dd�}tj|�}|jd�}|j�|jt|jj��dg�dd�}tj|�}|j�}|j�|jt|jj��g�ddd�}tj|�}|j�}|j�|jt|jj��dg�dS)Nr)rc_sdS)Nr)rdrerrr�rrrrrn
szMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foorrdrerrr�rr&)r�r�cSsdS)Nr)rdrerrrrr�
scSsdS)Nrrrrrrr�
sr:cSsdS)Nr)rdrrrrr�
s)r)rdr)rer)rdr)rer�r&)rr)rdr)r:)rdr:)	rrrmZapply_defaultsr�rar�r�Zbind_partial)r#rrr�rorrr�-test_signature_bound_arguments_apply_defaultsm
s:






z@TestBoundArguments.test_signature_bound_arguments_apply_defaultsN)rr(r)rrr
rrrrrrr
6
s

r
c@s$eZdZdd�Zdd�Zdd�ZdS)�TestSignaturePrivateHelperscCs:tj}|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�
sz:TestSignaturePrivateHelpers.test_signature_get_bound_paramcCs8tj|�\}}}|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�
sz4TestSignaturePrivateHelpers._strip_non_python_syntaxcCst|jd
ddd�|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)r4z(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r�zZ($module, /, path, mode, *, dir_fd=None, effective_ids=False,
       follow_symlinks=True)zO(module, path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True))r)r#rrr�&test_signature_strip_non_python_syntax�
sJzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)rr(r)rrrrrrrr�
s
rc@s$eZdZeejed�dd���ZdS)�TestSignatureDefinitionsz6Signature information for builtins requires docstringsc
Cst�}dddddddh}||O}dh}||O}d	d
ddh}||O}d
dh}||O}t�}tt�}xpt|j��D]`\}}	t|	�s�qnt|	t�r�||kr�|j|�||kr�qn|j	|d��|j
tj|	��WdQRXqnWx0|D](}|j	|d��|j
|	j�WdQRXq�WdS)Nr5�slicer�r�rrr�vars�roundr��maxr��__build_class__r��
__import__)r�)rrr�r�r��callabler�rIrr�ZassertIsNotNonerrr��__text_signature__)
r#Zno_signatureZneeds_groupsZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrrr%rrr�test_builtins_have_signatures�
s0


z6TestSignatureDefinitions.test_builtins_have_signaturesN)rr(r)rr�rrr rrrrr�
src@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dS)N)r��_next)r#r�rrrr�szNTimesUnwrappable.__init__cCs2|jdkrtd��|jdkr,t|jd�|_|jS)NrzUnwrapped too many timesr)r�rr"r!)r#rrrr�s


zNTimesUnwrappable.__wrapped__N)rr(r)r�r�r�rrrrr!sr!c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
TestUnwrapcCs.dd�}tjdd�|�}|jtj|�|�dS)NcSs||S)Nr)rdrerrrrsz(TestUnwrap.test_unwrap_one.<locals>.funcr)r�)r��	lru_cacher�r�unwrap)r#rr�rrr�test_unwrap_oneszTestUnwrap.test_unwrap_onecCsTdd�}|}x"td�D]}tj|�dd��}qW|j|j|�|jtj|�|�dS)NcSs||S)Nr)rdrerrrr%sz,TestUnwrap.test_unwrap_several.<locals>.funcrcSsdS)Nrrrrrr�)sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)r5r�r�rgr�r�rr%)r#rr��__rrr�test_unwrap_several$szTestUnwrap.test_unwrap_severalcCsTdd�}tj|�dd��}tj|�dd��}d|_tj|dd	�d
�}|j||�dS)NcSs||S)Nr)rdrerrr�func10sz#TestUnwrap.test_stop.<locals>.func1cSsdS)Nrrrrr�func22sz#TestUnwrap.test_stop.<locals>.func2cSsdS)Nrrrrrr�5sz%TestUnwrap.test_stop.<locals>.wrapperrcSs
t|d�S)N�	stop_here)rG)r�rrrrZ:sz&TestUnwrap.test_stop.<locals>.<lambda>)�stop)r�r�r+rr%r�)r#r)r*r�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*Csz$TestUnwrap.test_cycle.<locals>.func2)r�r,r�rr%)r#r)r*rrr�
test_cycle=szTestUnwrap.test_cyclecs6dd��d�_G�fdd�d�}|jtj|���dS)NcSsdS)NrrrrrrLsz(TestUnwrap.test_unhashable.<locals>.funccseZdZdZ�ZdS)z%TestUnwrap.test_unhashable.<locals>.CN)rr(r)�__hash__r�r)rrrrgNsrg)r�r�rr%)r#rgr)rr�test_unhashableKszTestUnwrap.test_unhashablec	Cs6ttj�d�}|jtd��tj|�WdQRXdS)Nrzwrapper loop)r!rE�getrecursionlimitr,r�rr%)r#r%rrr�test_recursion_limitSszTestUnwrap.test_recursion_limitN)	rr(r)r&r(r-r.r0r2rrrrr#sr#c@sDeZdZdd�Zdd�Zejedkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVtjd�}tddd�\}}}|j�j�}|j|dd�tj|�j��|j|d�dS)Nr�z-mrr����)�	importlib�
import_moduler	�decoderr�rr�)r#�module�rc�out�errr�rrr�test_only_sourceYs
zTestMain.test_only_sourcec	Cs2dd�}d|_|jt��tj|�WdQRXdS)NcSsdS)Nrrrrrrrcsz)TestMain.test_custom_getattr.<locals>.foorh)r�r�r�rr)r#rrrrr�test_custom_getattrbszTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|j�j�}|j|dd�tjt�j��|j|d�dS)Nz-mrz%concurrent.futures:ThreadPoolExecutorrr4r5)r	r8rr�rr�r)r#r:r;r<r�rrr�test_qualname_sourceiszTestMain.test_qualname_sourcecCs:tjd�}tddd�\}}}|j�j�}|j|dg�dS)Nr�z-mrrEz#Can't get info for builtin modules.)r6r7r
r8rr�)r#r9rBr;r<r�rrr�
test_builtinsts

zTestMain.test_builtinscCsftjd�}tj�}t|d��\}}}|j�}|j|j|�|j|j|�|j|j	|�|j
|d�dS)Nr��-mr�	--detailsr4)rArr�rB)r6r7r
Z!optim_args_from_interpreter_flagsr	r8rkrr��
__cached__r�)r#r9rr:r;r<�outputrrr�test_details{s
zTestMain.test_details)rr(r)r=r>r�rrr?r@rErrrrr3Xs	

r3c@s0eZdZejd�Zejd�Zdd�Zdd�ZdS)�
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    cCs>tj|�}t|��"}|j|j�jd�|jd��WdQRXdS)NT)rr�r�r�r�r)r#r`r�Z
inspected_src�srcrrr�assertInspectEqual�s


zTestReload.assertInspectEqualcCsdtd|j��N\}}tj|�}|j||�t|d��}|j|j�WdQRX|j||�WdQRXdS)NZ
reload_bugr\)r�
src_beforer6r7rHr�rb�	src_after)r#rr`r9rGrrr�test_getsource_reload�s
z TestReload.test_getsource_reloadN)	rr(r)�textwrap�dedentrIrJrHrKrrrrrF�srFcCs<tttttttttt	t
ttt
tttttttttttt�dS)N)rrr�r"r7r�rrr?rr3r7r9rlr[r�r�r�r
rrr�r#r3rFr�rrrrr�	test_main�srN�__main__)rrr5)^r�r�rPr�r6rr�r�r^Zos.pathrr�r��rererErHrLrLr�Z
unittest.mockrMZconcurrent.futuresr�ImportErrorZtest.supportrrrrrZtest.support.script_helperr	r
r�rrBrrr
Ztest.test_importrr�r�rZrr�r�r�rr7r9r;r�r<r=r?r�r�r�rrr"r7r[rbrjrnrqrrr�r�rr3r7r9rlr�r�r�r�r�r�r�r�r
rrr!r#r3rFrNrrrrr�<module>s�

7*
*:'zIc@Y{b?8
<0


Youez - 2016 - github.com/yon3zu
LinuXploit