Your IP : 216.73.216.213


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_inspect.cpython-38.pyc

U

i�f$_�@s6ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZzddlmZWnek
r�dZYnXddlmZmZmZmZddlmZmZddlmZm Z ddl!m"Z#ddl!m$Z%dd	l!m&Z&dd
l'm(Z(e#j)Z*e*�+d��rTe*dd�Z*e
e*�Z*d
d�Z,e#�-�Z.dd�Z/dd�Z0d�1�Z2Gdd�dej3�Z4dd�Z5dd�Z6dd�Z7ej8dd��Z9Gdd�d�Z:Gd d!�d!e4�Z;Gd"d#�d#e4�Z<Gd$d%�d%ej3�Z=Gd&d'�d'�Z>Gd(d)�d)e=�Z?Gd*d+�d+e=�Z@Gd,d-�d-e=�ZAGd.d/�d/e=�ZBGd0d1�d1e=�ZCGd2d3�d3e=�ZDGd4d5�d5e=�ZEGd6d7�d7eF�ZGGd8d9�d9eF�ZHd:d;�ZIGd<d=�d=ej3�ZJGd>d?�d?ej3�ZKeF�ZLGd@dA�dAej3�ZMGdBdC�dCej3�ZNGdDdE�dEeN�ZOGdFdG�dGeO�ZPGdHdI�dIej3�ZQGdJdK�dKej3�ZRGdLdM�dMej3�ZSGdNdO�dOejT�ZUGdPdQ�dQejV�ZWGdRdS�dSej3�ZXGdTdU�dUej3�ZYGdVdW�dWej3�ZZGdXdY�dYej3�Z[GdZd[�d[ej3�Z\Gd\d]�d]ej3�Z]Gd^d_�d_�Z^Gd`da�daej3�Z_Gdbdc�dcej3�Z`Gddde�deej3�Zadfdg�Zbecdhk�r2eb�dS)i�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�Nr)�filename�args�r�6/opt/alt/python38/lib64/python3.8/test/test_inspect.py�revise7srccs�ddddddddg}td	d
t|��D]d}g}d	}tt|��D]}|||>@r>|�||�q>dd�|�d
}i}t|||�|dVq&dS)z�
    Yields a whole bunch of functions with only keyword-only parameters,
    where those parameters are always in lexicographically sorted order.
    �a�barrZdeltaZephraimZmagicalZyoyo�z��zdef foo(*, z, z): pass�fooN)�range�len�append�join�exec)�
parameters�i�p�bit�jZfn_textZsymbolsrrr�5signatures_with_lexicographic_keyword_only_parameters=sr)cCsdSrr)�throw�outZtheZbabyZwith_Zthe_Z	bathwaterrrr�#unsorted_keyword_only_parameters_fnOsr,z'throw out the baby with_ the_ bathwaterc@sTeZdZeejejejejej	ej
ejejej
ejejejejejg�Zdd�ZdS)�
IsTestBasecCs�t|�}|�||�d|j|f�|jt|g�D]H}|tjksT|tjksT|tjkr`|tj	kr`q2|�
||�d|j|f�q2dS)Nz%s(%s)z
not %s(%s))�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�isasyncgenfunction�iscoroutinefunction�
isfunction�assertFalse)�selfZ	predicate�exp�obj�otherrrr�istest]s
���zIsTestBase.istestN)r0�
__module__�__qualname__r2r3�	isbuiltin�isclass�iscode�isframer7�ismethod�ismodule�istraceback�isgeneratorr4�iscoroutiner6�
isasyncgenr5r1r=rrrrr-Us�r-ccstd�D]
}|VqdS�Nr�r�r9r%rrr�generator_function_exampleisrMcCs"td�2z3dHW}|Vq6dSrJrKrLrrr� async_generator_function_examplemsrNc�sdS�N�spamr�r9rrr�coroutine_function_exampleqsrRccs
dVdSrOrrQrrr�gen_coroutine_function_exampletsrSc@seZdZdd�ZdS)�EqualsToAllcCsdS�NTr�r9r<rrr�__eq__zszEqualsToAll.__eq__N)r0r>r?rWrrrrrTysrTc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestPredicatesc	Cs�|�tjd�|�tjd�|�tjd�zxzddWnft��da|�tjd�|�tjd�t	t
d	�r�|�tjd
�n|�t�t
tj�j��YnXW5daX|�tjd�|�tjd�|�tjd
�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�t���,t�d�|�tjd�|�tjd�W5QRXt	t
d��r�|�tjd�n|�t�tjj ��dS)Nzsys.exitz	[].appendzmod.spam.__code__rrrztb.tb_frame�tb�GetSetDescriptorTypeztype(tb.tb_frame).f_localszmod.spamzmod.StupidGit.abusez	git.arguezmod.custom_method�modz'collections.defaultdict.default_factoryz(x for x in range(2))rMz#async_generator_function_example(1)rN�ignorezcoroutine_function_example(1)rR�MemberDescriptorTypezdatetime.timedelta.days)!r=r3r@rBrY�sys�exc_inforCrF�hasattr�typesZisgetsetdescriptorr8�type�tb_frame�f_localsr7rDrE�isdatadescriptorrGr4rIr5�warnings�catch_warnings�simplefilterrHr6Zismemberdescriptor�datetimeZ	timedeltaZdaysrQrrr�test_excluding_predicatessH
�"��

z(TestPredicates.test_excluding_predicatesc	CsXtd�}td�}td�}|�t�t��|�t�t�t�t����|�t�|��|�	t�
t��|�	t�
t�t�t����|�	t�|��|�	t�t��|�	t�t�t�t����|�	t�|��|�t�
t��|�t�
t�t�t����|�t�|��|�	t�t��|�	t�t�t�t����|�	t�
|��|��|��dS�Nr)rNrSrRr8r3r6�	functools�partialrHr/r4rGr5rI�close)r9Zasync_gen_coro�gen_coro�cororrr�test_iscoroutine�sx��������������������zTestPredicates.test_iscoroutinecCs�dd�}|�t�|���td�}td�}|�t�|��|�t�|��Gdd�d�}|�t�|���|�t�|��Gdd�d�}|�}dd	�|_|�t�|��|��|��dS)
Ncss
dVdSrrrrrr�gen��z,TestPredicates.test_isawaitable.<locals>.genrc@seZdZdd�ZdS)z/TestPredicates.test_isawaitable.<locals>.FuturecSsdSrrrrrr�	__await__�sz9TestPredicates.test_isawaitable.<locals>.Future.__await__N)r0r>r?rtrrrr�Future�sruc@seZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN�r0r>r?rrrr�	NotFuture�srwcSsdSrrrrrr�<lambda>�rsz1TestPredicates.test_isawaitable.<locals>.<lambda>)r8r3ZisawaitablerRrSr/rtrn)r9rrrprorurwZnot_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|�t�tj��|�t�gj��dSr)r/r3Z	isroutiner[rP�countrQrrr�test_isroutine�szTestPredicates.test_isroutinecCsD|�tjd�|�t�t��Gdd�dt�}|�t�|���dS)Nz
mod.StupidGitc@seZdZdd�ZdS)z2TestPredicates.test_isclass.<locals>.CustomGetattrcSsdSrr)r9�attrrrr�__getattr__�sz>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)r0r>r?r}rrrr�
CustomGetattr�sr~)r=r3rAr/�list�objectr8)r9r~rrr�test_isclass�szTestPredicates.test_isclasscCsFGdd�dt�}|�}d|_tt�|��}|�d|�|�d|�dS)Nc@seZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C�r�bN�r0r>r?�	__slots__rrrr�C�sr��*rr�)r�r�dictr3�
getmembers�assertIn�assertNotIn)r9r��x�membersrrr�test_get_slot_members�sz$TestPredicates.test_get_slot_memberscs�ddlm}m�G�fdd�d|d�}Gdd�d|�}|�}|�t�|��|�t�|��|�t�|��|�t�t��|�t�d��dS)	Nr��ABCMeta�abstractmethodcseZdZ�dd��ZdS)z<TestPredicates.test_isabstract.<locals>.AbstractClassExamplecSsdSrrrQrrrr
sz@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN�r0r>r?rr�r�rr�AbstractClassExamplesr���	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdSrrrQrrrrsz8TestPredicates.test_isabstract.<locals>.ClassExample.fooNr�rrrr�ClassExamplesr��)�abcr�r�r/r3�
isabstractr8�int)r9r�r�r�rrr�r�test_isabstractszTestPredicates.test_isabstractcs�ddlm}m�g�G�fdd�d|d�}G�fdd�d|�}Gdd	�d	|�}|��d
dg����Gdd
�d
|�}Gdd�d|�}Gdd�d|�}|��d
d
dg�dS)Nrr�cseZdZ�fdd�ZdS)zLTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckercs��t�|��dSr)r!r3r���cls��isabstract_checksrr�__init_subclass__sz^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)r0r>r?r�rr�rr�AbstractCheckersr�r�cseZdZ�dd��ZdS)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSsdSrrrQrrrr"szUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr�rr�rrr�!sr�c@seZdZdd�ZdS)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSsdSrrrQrrrr&szMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooNr�rrrrr�%sr�TFc@seZdZdS)zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildNrvrrrr�
AbstractChild+sr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildNrvrrrr�AbstractGrandchild-sr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildNrvrrrr�ConcreteGrandchild/sr�)r�r�r��assertEqual�clear)r9r�r�r�r�r�r�r�r)r�r�r�$test_isabstract_during_init_subclasssz3TestPredicates.test_isabstract_during_init_subclassN)r0r>r?rjrqryr{r�r�r�r�rrrrrX}s*/		rXc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs&tjj|f|�|�t�ddd�dS)N���	)�unittest�TestCase�__init__�git�abuse�r9r�kwargsrrrr�5szTestInterpreterStack.__init__cCs |�tjd�|�tjd�dS)Nz	git.ex[2]zmod.fr)r=r3rFrCrQrrr�test_abuse_done:sz$TestInterpreterStack.test_abuse_donecCs&|�ttj�dk�|�ttjddd��tdddgdf�|�ttjddd��tddd	gdf�|�ttjd
dd��tddd
gdf�|�ttjddd��tdddgdf�tjd}|�|jtj	�|�|j
d�|�|jtj�|�|j
d�|�d|jd�|�|jd�dS)Nr�rr��eggsz    st = inspect.stack()
r�rP�    eggs(b + d, c + f)
r�+�argue�            spam(a, b, c)
��'r�z        self.argue(a, b, c)
zinspect.stack())r/r r[�str�r�modfile�assertIs�frame�fr�linenor�__file__�functionr��code_context�index)r9�recordrrr�
test_stack>s(����
zTestInterpreterStack.test_stackcCs�|�ttj�d�|�ttjddd��tdddgdf�|�ttjddd��tddd	gdf�|�ttjd
dd��tddd
gdf�dS)Nr�rrr�r�r�r�rPr�r�r�z    q = y / 0
)r�r r�Ztrrr�rQrrr�
test_traceQs���zTestInterpreterStack.test_tracecCslt�tj�\}}}}|�|ddg�|�|d�|�|d�|�|dddd��|�t�||||�d�dS)Nr��y��)r�r&r�z(x=11, y=14))r3�getargvaluesr[r�r��formatargvalues�r9r�varargs�varkw�localsrrr�
test_frameZs�zTestInterpreterStack.test_framec	Csbt�tjj�\}}}}|�|ddddddg�|�|d�|�|d�|�t�||||�d	�dS)
Nrr�r�d�e�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))r3r�r[r��f_backr�r�r�rrr�test_previous_framecs�z(TestInterpreterStack.test_previous_frameN)	r0r>r?r�r�r�r�r�r�rrrrr�4s		r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNc	Cs*tt�|j���}|��|_W5QRXdSr)�openr3�
getsourcefile�fodderModule�read�source)r9�fprrr�setUposzGetSourceBase.setUpcCs.|j�d�}d�||d|��|r(dndS)N�
r�)r��splitr")r9�top�bottom�linesrrr�sourcerangesszGetSourceBase.sourcerangecCs|�t�|�|�||��dSr)r�r3�	getsourcer�)r9r;r�r�rrr�assertSourceEqualws
�zGetSourceBase.assertSourceEqual)r0r>r?r�r�r�r�rrrrr�ksr�c@seZdZdZddd�ZdS)�SlotUserzDocstrings for __slots__�measured in kilowatts�measured in kilometers)�power�distanceN)r0r>r?�__doc__r�rrrrr�{s�r�c@s�eZdZeZdd�Zdd�Ze�e	j
jdkd�dd��Ze�e	j
jdkd�d	d
��Z
e�ed�dd
��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,S)-�TestRetrievingSourceCodecCs.t�ttj�}|�|dtjfdtjfdtjfdtjfdtjfdtj	fg�t�
dd�|D��}|�|td	ftjtfftjtjtjffgtjtfftjtjfftjtjtjffggtj	tffgg�t�
d
d�|D�d�}|�|td	ftjtfftjtfftjtjfftjtjtjffggtj	tffgg�dS)N�FesteringGob�MalodorousPervert�ParrotDroppings�	StupidGitZTit�
WhichCommentscSsg|]}|d�qS�rr��.0r�rrr�
<listcomp>�sz<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>rcSsg|]}|d�qSr�rr�rrrr��sT)r3r�r[rAr�r�r�r�r�r�Zgetclasstreer�)r9�classesZtreerrr�test_getclasses�sR��
�
��
���

��
���z(TestRetrievingSourceCode.test_getclassescCs6t�ttj�}|�|dtjfdtjfdtjfg�dS)Nr��lobbestrP)r3r�r[r7r�r�r�rP)r9Z	functionsrrr�test_getfunctions�s
�z*TestRetrievingSourceCode.test_getfunctionsrz)Docstrings are omitted with -O2 and abovecCsf|�t�t�d�|�t�tj�d�|�t�tj�d�|�t�tj�d�|�t�tj	�d�dS)NzA module docstring.�A longer,

indented

docstring.�$Another

docstring

containing

tabsr�r�)
r�r3�getdocr[r�r�r�r�r�r�rQrrr�test_getdoc�s����z$TestRetrievingSourceCode.test_getdoccCs\|�t�tj�d�|�t�tjj�d�|�t�t��j�d�|�t�tjj�d�dS)NrrzThe automatic gainsaying.)r�r3rr[r�r�Z
contradictionrQrrr�test_getdoc_inherited�s����z.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringscCsvtj}|�|t�tj�|�|tj�tjj�|�|t�j�tjj�|�|tj�tjj�|�|tj�tjj�dSr)r3Z_finddocr�r�r��to_bytes�
from_bytes�real)r9Zfinddocrrr�test_finddoc�sz%TestRetrievingSourceCode.test_finddoccCs|�t�d�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r�r3ZcleandocrQrrr�
test_cleandoc�s�z&TestRetrievingSourceCode.test_cleandoccCsV|�t�t�d�|�t�tj�d�tddd�}|�t�|��|�t�t��dS)N�	# line 1
z
# line 20
�x=1z_non_existing_filename.pyr#)r�r3Zgetcommentsr[r��compile�assertIsNoner)r9�corrr�test_getcomments�s
z)TestRetrievingSourceCode.test_getcommentscCs�|�t�t�t�|�t�tj�t�|�t�tjj�t�|�t�tjj�t�|�t�t�tjd�|�t�dt	�t�dS)N�builtins)
r�r3�	getmoduler[r�r��strr^�modulesr�rQrrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs8t�|jjd�}|�|jdd�|�|jdd�dS)N�2rrrz'A module docstring.'
)r3Zgetframeinfor�r�r�r�)r9Z
frame_inforrr� test_getframeinfo_get_first_line�sz9TestRetrievingSourceCode.test_getframeinfo_get_first_linecCs4|�tjdd�|�tjdd�|�tjdd�dS)N�r���3�K�L)r�r�r�r[r�r�rQrrr�test_getsource�sz'TestRetrievingSourceCode.test_getsourcecCs�|�tt�tj��t�|�tt�tj��t�d}t	d|d�}|�t�|�d�ddd|j
ftj|j
<z|�tt�|��|�W5tj|j
=XdS)Nz2_non_existing_filename_used_for_sourcefile_test.pyrr#r�None)
r�rr3r�r[rPr�r�r�r
�co_filename�	linecache�cache)r9�fnrrrr�test_getsourcefile�sz+TestRetrievingSourceCode.test_getsourcefilecCs|�t�tj�tj�dSr)r�r3�getfiler[r�r�rQrrr�test_getfilesz%TestRetrievingSourceCode.test_getfilec	Cs:|�t��}t�t�W5QRX|�t|j��d��dS)Nz<module)	�assertRaises�	TypeErrorr3r$r^r/r�	exception�
startswith�r9r�rrr�test_getfile_builtin_modulesz4TestRetrievingSourceCode.test_getfile_builtin_modulec	Cs:|�t��}t�t�W5QRX|�t|j��d��dS)Nz<class)	r&r'r3r$r�r/rr(r)r*rrr�test_getfile_builtin_classsz3TestRetrievingSourceCode.test_getfile_builtin_classc	Csj|�t��}t�t�W5QRX|�dt|j��|�t��}t�tj	�W5QRX|�dt|j��dS)Nz
expected, got)
r&r'r3r$�absr�rr(rr!)r9Ze_absZe_appendrrr�'test_getfile_builtin_function_or_methodsz@TestRetrievingSourceCode.test_getfile_builtin_function_or_methodc	CsFGdd�dt�}Gdd�d|d�}|�t��t�|�W5QRXdS)Nc@seZdZedd��ZdS)zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMcSst�dSr��AttributeErrorr�rrrr>szQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)r0r>r?�propertyrrrr�CMsr2c@seZdZdS)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNrvrrrrr�sr�r�)rbr&r'r3r$)r9r2r�rrr�!test_getfile_class_without_modulesz:TestRetrievingSourceCode.test_getfile_class_without_modulec	Cs8Gdd�d�}|�}|�t��t�|�W5QRXdS)Nc@seZdZdd�ZdS)zDTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorReprcSstd��dS)NZxyz)�	ExceptionrQrrr�__repr__%szMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r0r>r?r5rrrr�	ErrorRepr$sr6)r&r'r3r$)r9r6Zerrrr�test_getfile_broken_repr#sz1TestRetrievingSourceCode.test_getfile_broken_reprcCsnddlm}d}||�}tj|<d|_d|_td|j�|�t	�
|jj�d�tj|=t	�
tddd	��dS)
Nr)�
ModuleTypeZ__inspect_dummy�<string>Zdummyz
def x(): passza=10r��single)rar8r^rr��
__loader__r#�__dict__r�r3r�r��__code__rr
)r9r8�name�mrrr�test_getmodule_recursion+sz1TestRetrievingSourceCode.test_getmodule_recursioncs\d\��tj�d���fdd�	}|t_z(i}tt��d�|�t�|d�W5�t_XdS)z4doctest monkeypatches linecache to enable inspection)z<test>zdef x(): pass
Ncs"|�kr�jdd�S�||�SdS)NT)�keepends)�
splitlines)r�module_globals�r"�getlinesr�rr�monkey:szHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr:r�)N)r rEr#r
r3r�)r9rF�nsrrDr�test_proceed_with_fake_filename6sz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecCs|�tjjdd�dS)N�r�)r�r[r�r=rQrrr�test_getsource_on_code_objectGsz6TestRetrievingSourceCode.test_getsource_on_code_objectN)r0r>r?r[r�r�rr��skipIfr^�flags�optimizerrr	r	r
rrrrr#r%r+r,r.r3r7r@rHrJrrrrr��s8(�
�



	
r�c@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dSrk)ZmaxDiffr�r[ZcurrentframerQrrr�test_range_toplevel_frameMsz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dSrk)r�r[rYrQrrr�#test_range_traceback_toplevel_frameQszETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r0r>r?r[r�rOrPrrrrrNJsrNc@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscCs|�tjdd�dS)Nr��)r��mod2�wrappedrQrrr�test_wrapped_decoratorWsz%TestDecorators.test_wrapped_decoratorcCs|�tjdd�dS)Nr��
)r�rSZgonerQrrr�test_replacing_decoratorZsz'TestDecorators.test_replacing_decoratorcCs|�tjdd�dS)N��)r�rSrrQrrr�test_getsource_unwrap]sz$TestDecorators.test_getsource_unwrapcCs|�tjdd�dS)N�q�s)r�rSZfunc114rQrrr�test_decorator_with_lambda`sz)TestDecorators.test_decorator_with_lambdaN)	r0r>r?rSr�rUrWrZr]rrrrrQTs
rQc@sPeZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscCs|�tjdd�dS)N�)r�rSZollrQrrr�test_oneline_lambdaesz!TestOneliners.test_oneline_lambdacCs|�tjdd�dS)N��)r�rSZtllrQrrr�test_threeline_lambdaisz#TestOneliners.test_threeline_lambdacCs|�tjdd�dS)N�!�")r�rSZtllirQrrr�test_twoline_indented_lambdansz*TestOneliners.test_twoline_indented_lambdacCs|�tjdd�dS)N�%)r�rSZonelinefuncrQrrr�test_onelinefuncsszTestOneliners.test_onelinefunccCs|�tjdd�dS)N�(�))r�rSZmanyargsrQrrr�
test_manyargswszTestOneliners.test_manyargscCs|�tjdd�dS)N�,�-)r�rSZtwolinefuncrQrrr�test_twolinefunc}szTestOneliners.test_twolinefunccCs|�tjddd�dS)Nr�1)r�rSrrQrrr�test_lambda_in_list�sz!TestOneliners.test_lambda_in_listcCs|�tjdd�dS)N�7)r�rSZ	anonymousrQrrr�test_anonymous�szTestOneliners.test_anonymousN)
r0r>r?rSr�r`rcrfrhrkrnrprrrrrrr^csr^c@s(eZdZeZdd�Zdd�Zdd�ZdS)�TestBlockCommentscCs|�tjdd�dS)N�`�r)r�r[r�rQrrr�test_toplevel_class�sz%TestBlockComments.test_toplevel_classcCs|�tjjdd�dS)N�c�h)r�r[r�r�rQrrr�test_class_method�sz#TestBlockComments.test_class_methodcCs|�tjjdd�dS)N�m�p)r�r[r�ZasyncfrQrrr�test_class_async_method�sz)TestBlockComments.test_class_async_methodN)r0r>r?r[r�rvryr|rrrrrs�srsc@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
eed�p^ej�d�d�dd��Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�TestBuggyCasescCs|�tjdd�dS)N�:�;)r�rSZwith_commentrQrrr�test_with_comment�sz TestBuggyCases.test_with_commentcCs|�tjddd�dS)Nr�?�@)r�rSZ
multiline_sigrQrrr�test_multiline_sig�sz!TestBuggyCases.test_multiline_sigcCs|�t��jdd�dS)N�G�H)r�rSZfunc69Zfunc71rQrrr�test_nested_class�sz TestBuggyCases.test_nested_classcCs|�tjdd�dS)N�M)r�rSZfunc77rQrrr�#test_one_liner_followed_by_non_name�sz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|�tjjdd�dS)N�S)r�rSZcls82Zfunc83rQrrr�test_one_liner_dedent_non_name�sz-TestBuggyCases.test_one_liner_dedent_non_namecCs|�tjdd�dS)N�X�Z)r�rSZfunc88rQrrr�&test_with_comment_instead_of_docstring�sz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|�tjdd�dS)N�_�a)r�rSZmethod_in_dynamic_classrQrrr�test_method_in_dynamic_class�sz+TestBuggyCases.test_method_in_dynamic_classr�z.pyz,unicodedata is not an external binary modulecCs$|�ttjt�|�ttjt�dSr)r&�OSErrorr3r��unicodedata�
findsourcerQrrr�test_findsource_binary�sz%TestBuggyCases.test_findsource_binarycCs�dg}t|ddd�}|�ttj|�|�ttj|�dd||jftj|j<z0|�	t�|�|df�|�	t�|�|d�W5tj|j=XdS)NrrZ_dynamically_created_filer#r)
r
r&r�r3r�r�rr r!r�)r9r�rrrr�!test_findsource_code_in_linecache�sz0TestBuggyCases.test_findsource_code_in_linecachecCs:dD]0}td|d�}|�ttj|�|�ttj|�qdS)N)r�r9rr#)r
r&�IOErrorr3r�r�)r9Zfnamerrrr� test_findsource_without_filename�sz/TestBuggyCases.test_findsource_without_filenamec	Cs�tt�t��}d|d}t|tjd�}ii}}t|||�|d}|�|jj	dd|�|�
td��t�|�W5QRXdS)Nz

z
def f(): passr#r�rrzlineno is out of bounds)
r r3r�r[r
r�r.r�r=�co_firstlineno�assertRaisesRegexr�r�)r9Zmod_len�srcrr��l�funcrrr�)test_findsource_with_out_of_bounds_lineno�s
z8TestBuggyCases.test_findsource_with_out_of_bounds_linenocCs|�tjjdd�dS)N�v�w)r�rSZClassWithMethod�methodrQrrr�test_getsource_on_method�sz'TestBuggyCases.test_getsource_on_methodcCs|�tjjdd�dS)N��)r�rSZcls135Zfunc136rQrrr�test_nested_func�szTestBuggyCases.test_nested_funcN)r0r>r?rSr�r�r�r�r�r�r�r�r�rKr`r�r��endswithr�r�r�r�r�r�rrrrr}�s$
�
r}cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�	TestNoEOLc	sztd|_t�|j�ttj�|jdtj�d��}|�d�W5QRXt	|j��ddl
}W5QRX||_t��
�dS)NZ_dirzinspect_fodder3%spy�wzclass X:
    pass # No EOLr)r�tempdir�os�mkdirr��pathr"�extsep�writerZinspect_fodder3r��superr�)r9r�Zmod3��	__class__rrr��s
��zTestNoEOL.setUpcCst�|j�dSr)�shutilZrmtreer�rQrrr�tearDown�szTestNoEOL.tearDowncCs|�|jjdd�dS)Nrr)r�r��XrQrrr�
test_class�szTestNoEOL.test_class)r0r>r?r�r�r��
__classcell__rrr�rr��sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGstd��dS�Nzbroken data descriptorr/�rrrr�__get__�sz_BrokenDataDescriptor.__get__cGst�dSr)�RuntimeErrorr�rrr�__set__�sz_BrokenDataDescriptor.__set__cGstd��dSr�r/r�rrrr}�sz!_BrokenDataDescriptor.__getattr__N)r0r>r?r�r�r�r}rrrrr��sr�c@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGstd��dS�Nzbroken method descriptorr/r�rrrr�sz_BrokenMethodDescriptor.__get__cGstd��dSr�r/r�rrrr}sz#_BrokenMethodDescriptor.__getattr__N)r0r>r?r�r�r}rrrrr��sr�cCsdd�t�|�D�S)NcSsg|]}|dd��qS�Nr�r)r��trrrr�sz!attrs_wo_objs.<locals>.<listcomp>)r3�classify_class_attrsr�rrr�
attrs_wo_objssr�c@seZdZdd�Zd5dd�Zdddggdidfdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
e�e
d�dd��Zee�e
d�dd���Zee�e
d�dd���Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�ZdS)6�TestClassesAndFunctionscCsjGdd�dt�}Gdd�d|�}Gdd�d|�}Gdd�d||�}||||tf}t�|�}|�||�dS)	Nc@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.ANrvrrrr�Asr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNrvrrrr�Bsr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNrvrrrrr�sr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNrvrrrr�Dsr�)r�r3Zgetmror�)r9r�r�r�r��expectedZgotrrr�test_newstyle_mros
z)TestClassesAndFunctions.test_newstyle_mroNc	Cs�|�t��t�|�\}}}	}
W5QRX|�||�|�||�|�|	|�|�|
|�|dk	r�|�t��|�t�|||	|
�|�W5QRXdSr)�assertWarns�DeprecationWarningr3Z
getargspecr��
formatargspec)r9�routine�args_e�	varargs_e�varkw_e�
defaults_e�	formattedrr�r��defaultsrrr�assertArgSpecEqualss�z+TestClassesAndFunctions.assertArgSpecEqualscCs�t�|�\}}}
}}}}|�||�|�||�|�|
|�|�||�|�||�|�||�|�||	�|
dk	r�|�t��$|�t�|||
||||�|
�W5QRXdSr)r3�getfullargspecr�r�r�r�)r9r�r�r�r�r�Z
posonlyargs_e�kwonlyargs_e�kwonlydefaults_e�ann_er�rr�r�r��
kwonlyargsZkwonlydefaults�annrrr�assertFullArgSpecEquals(s$���z/TestClassesAndFunctions.assertFullArgSpecEqualsc	Csx|jtjddgdd�|�tjddddd	d
gddd
d�|�t|jtjg�|�t|jtjg�|�t|jtj	g�dS)Nr�r��(x, y)�r�rr�rr�r�r�r�r�)r��r�z!(a, b, c, d=3, e=4, f=5, *g, **h))
r�r[r�rPr&�
ValueErrorrS�	keyworded�	annotated�keyword_only_argrQrrr�test_getargspec<s(�
�
�
�z'TestClassesAndFunctions.test_getargspeccCs�|jtjgddgddidd�|jtjdgdtidd�|jtjgdgd	d
�|jtjddd
dgddgdd
�|jtjddd
dgddddgdd�|jtjddd
dgdddgddd�dd�dS)N�arg1�arg2rz(*arg1, arg2=1))r�r�r�r�z(arg1: list))r�r��argz(*, arg))r�r�rr�rr�r�r�z(a, b, c, d, *, e, f)rr�z#(a, b, c, d, *args, e, f, **kwargs))r�r�r�r��rrr�r�r�)r�r�z(a, b=1, c=2, d=3, *, e=4, f=5))r�r�r�r�)	r�rSr�r�rr�Zall_markersZ all_markers_with_args_and_kwargsZall_markers_with_defaultsrQrrr�test_getfullargspecMs<��
��
��z+TestClassesAndFunctions.test_getfullargspeccs�t�tj�dd��}�j|ddgdd��j|ddgdd��jt�|�ddgdd��fdd�}Gd	d
�d
�}||��||j�||�j�||j�||�j�Gdd�d�}||�Gd
d�d�}||�dS)NcSsdSrr)r�r�rrr�hammszETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamr�r�r�r�cs�j|dddgdd�dS)Nr9r�r�z(self, x, y)r�)r��r�rQrr�check_methodvs�zNTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.check_methodc@s>eZdZe�ej�dd��Ze�e�Z	e�ej�dd��Z
dS)zCTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.CcSsdSrr�r9r�r�rrrr�zszGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSsdSrrr�rrr�__call__~szLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)r0r>r?rl�wrapsr[rPr��
partialmethod�phamr�rrrrr�ys




r�c@s eZdZe�ej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSsdSrrr�rrr�__new__�szOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)r0r>r?rlr�r[rPr�rrrr�C_new�s
r�c@s eZdZe�ej�dd��ZdS)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSsdSrrr�rrrr��szQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)r0r>r?rlr�r[rPr�rrrr�C_init�s
r�)	rlr�r[rPr�r�rmr�r�)r9r�r�r�r�r�rrQr� test_argspec_api_ignores_wrappedks&

�


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}t�dtjj�}tj|fd�|_|j|dgdd�dS)NcSsdSrrrrrr�test�szHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrP�r$�(spam)r�)r3�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r�)r9r�Z
spam_paramrrr�"test_getfullargspec_signature_attr�sz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsPddd�dd�}t�|�}|�|j|j�dd�}t�|�}|�|j|j�dS)NrPr��r�returncSsdSrr�rrrrr��rszITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdSrrrrrrr��rs)r3r�r��__annotations__Zannotations)r9r��specrrr�#test_getfullargspec_signature_annos�s

z;TestClassesAndFunctions.test_getfullargspec_signature_annos�6Signature information for builtins requires docstringscCs^|jtjjddgdd�|jt�t���jddgdd�|jtjdgddgddd	�d
d�dS)Nr9r;z(self, obj)r�r��dir_fd�follow_symlinksT)rrz,(path, *, dir_fd=None, follow_symlinks=True))r�r�r�r�)r��_pickle�Pickler�dump�io�BytesIOr��statrQrrr�#test_getfullargspec_builtin_methods�s���z;TestClassesAndFunctions.test_getfullargspec_builtin_methodscCs.ddl}|j}t�|�}|�|jdd�dS)Nr�avocado)�	_testcapi�&docstring_with_signature_with_defaultsr3r�r�r�)r9r�builtinr�rrr� test_getfullargspec_builtin_func�s
z8TestClassesAndFunctions.test_getfullargspec_builtin_funcc	Cs2ddl}|j}|�t��t�|�W5QRXdS)Nr)r�docstring_no_signaturer&r'r3r�)r9rrrrr�-test_getfullargspec_builtin_func_no_signature�szETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signaturecCsbt�D]6}t�|�}t|j�}t|�}|�|�|�||�qt�t�}t|j�}|�|t	�dSr)
r)r3r�rr��sortedr/r�r,� unsorted_keyword_only_parameters�r9r"�	signaturer�Zsorted_lrrr�8test_getfullargspec_definition_order_preserved_on_kwonly�s





zPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlycCs$Gdd�dt�}|�|jdg�dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getargspec_method.<locals>.AcSsdSrrrQrrrr?�sz;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN�r0r>r?r?rrrrr��sr�r9)r�r�r?�r9r�rrr�test_getargspec_method�sz.TestClassesAndFunctions.test_getargspec_methodcCsGdd�dt�}t|�}|�ddtf|d�|�ddtf|d�|�d	d|f|d
�|�dd|f|d
�|�dd|f|d�|�dd|f|d|�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gdd�d|�}t|�}|�d	d|f|d
�|�dd|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gdd�d|�}t|�}|�d	d|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gd d!�d!||�}t|�}|�d	d|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�dS)"Nc@s\eZdZdd�Zee�Zdd�Zee�Zdd�Zee�Z	dd�Z
d	d
�ZdZe
�Ze�ZdS)
z9TestClassesAndFunctions.test_classify_newstyle.<locals>.AcSsdSrrrrrr�s�rsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSsdSrrr�rrrr�rsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSsdSrrrQrrr�getp�rsz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSsdSrrrQrrrr?�rsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSsdSrrrQrrr�m1�rsz<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)r0r>r?r�staticmethodr�classmethodrr1r&r?r�datablobr��ddr��mdrrrrr��sr�r��
static method�missing __new__r�r�zmissing __init__rzmissing static methodr�class method�missing class methodr&r1zmissing propertyr?zmissing plain method: %rr�missing plain methodr �datazmissing datar"zmissing method descriptorr!zmissing data descriptorc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSsdSrrrQrrrr?�rsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNrrrrrr��sr�c@seZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSsdSrrrQrrrr?
rsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSsdSrrrQrrrrrsz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r0r>r?r?rrrrrr�sr�c@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdSrrrQrrrrrsz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r0r>r?rrrrrr�sr�)r�r�r�)r9r��attrsr�r�r�rrr�test_classify_newstyle�s\��z.TestClassesAndFunctions.test_classify_newstylecCs�tt�D]"}tt|�}t|t�rt�|�qtt�}|�	ddtf|d�|�	ddt
f|d�|�	ddt
f|d	�|�	d
dt
f|d	�|�	ddtf|d	�dS)Nr�r#r$rr%r&rr�r'�__add__�__and__)�dir�__builtins__�getattr�
isinstancerbr3r�r��boolr�r�)r9r>rr)rrr�test_classify_builtin_types(s(

�����z3TestClassesAndFunctions.test_classify_builtin_typescCspGdd�dt�}Gdd�d|d�}t�dd||jd�}|�|t�|��t�dd|d�}|�|t�|��dS)	NcseZdZ�fdd�Z�ZS)zITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metacs|dkrdSt��|�S)Nr�rP�r�r}�r9r>r�rrr}>szUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__�r0r>r?r}r�rrr�r�Meta=sr6c@seZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcSsdS)Nr�rrQrrrr�CszKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r0r>r?ra�DynamicClassAttributer�rrrr�VABsr8r�r�r(rP)rbr3�	Attributer<r�r�)r9r6r8Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttribute<sz;TestClassesAndFunctions.test_classify_DynamicClassAttributecsPG�fdd�dt��G�fdd�dt�}t�dd||j�}|�|t�|��dS)Ncs eZdZ�fdd�Zdd�ZdS)zDTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolcs��SrrrV��NoBoolrrrWMszKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSstd��dS)Nz,This object does not specify a boolean value)�NotImplementedErrorrQrrr�__bool__Ps�zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)r0r>r?rWr>rr;rrr<Lsr<cseZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)r0r>r?r!rr;rr�HasNBTsr?r!r()r�r3r9r!r�r�)r9r?Zshould_find_attrrr;r�test_classify_overrides_boolKsz4TestClassesAndFunctions.test_classify_overrides_boolcCsHGdd�dt�}Gdd�d|d�}t�dd|d�}|�|t�|��dS)	Nc@seZdZdZdd�ZdS)zMTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta�slapcSsddddgS)Nr�r>r0�fishrrQrrr�__dir__]szUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r0r>r?rBrCrrrrr6[sr6c@seZdZdS)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNrvrrrr�Class_srDr�rBr(rA�rbr3r9r�r��r9r6rDZshould_findrrr�'test_classify_metaclass_class_attributeZsz?TestClassesAndFunctions.test_classify_metaclass_class_attributecCsHGdd�dt�}Gdd�d|d�}t�dd|d�}|�|t�|��dS)	Ncs$eZdZdd�Z�fdd�Z�ZS)zDTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.MetacSsddddgS)Nr�r>r0�BOOMrr�rrrrCfszLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs|dkrdSt��|�S)NrHr�)r�Z_Meta__getattrr4r�rrr}hszPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__�r0r>r?rCr}r�rrr�rr6esr6c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNrvrrrrrDlsrDr�rHr(r�rErFrrr�test_classify_VirtualAttributedsz6TestClassesAndFunctions.test_classify_VirtualAttributec	s�Gdd�dt��Gdd�dt��G��fdd�d���}Gdd�d�d	�}Gd
d�d||d	�}t�dd
�d�}t�dd
�d�}t�dd
|d�}t�|�}|||fD]}|�||�q�dS)Ncs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1cSsddddgS)Nr�r>r0�onerr�rrrrCssz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs|dkrdSt��|�S)NrKrr3r4r�rrr}usz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__rIrrr�r�Meta1rsrLcs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)Nr�r>r0�tworr�rrrrCzsz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs|dkrdSt��|�S)NrMrr3r4r�rrr}|sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__rIrrr�r�Meta2ysrNcs*eZdZ��fdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs,tttddddg��|���|����S)Nr�r>r0�three)rrr2rCr��rLrNrrrC�s
��z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cs|dkrdSt��|�S)NrOr�r3r4r�rrr}�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__rIrrPr�r�Meta3�srQc@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nrvrrrr�Class1�srRr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nrvrrrr�Class2�srSrKr(rrMrrOr�)rbr3r9r�r�)	r9rQrRrSZshould_find1Zshould_find2Zshould_find3ZccaZsfrrPr�,test_classify_VirtualAttribute_multi_classesqs
zDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classescCsFGdd�dt�}Gdd�d|d�}dd�t�|�D�}|�d|�dS)	Nc@seZdZdd�ZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.McSs
dddgS�Nr�r0�missingrr�rrrrC�szSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N�r0r>r?rCrrrr�M�srXc@seZdZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNrvrrrrr��sr�r�cSsg|]}|d�qS�rr�r�rrrrr��szTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>rV)rbr3r�r��r9rXr�r)rrr�(test_classify_class_attrs_with_buggy_dir�sz@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dircCs�Gdd�dt�}dd�}|tj�}|tj�}|�t�||�d|jdfg�|�t�||�d|jdfg�Gdd�d|�}|�t�||�d|jdfg�|�t�||�d|jdfg�dS)	Nc@seZdZe�Ze�ZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)r0r>r?r�r!r�r"rrrrr��sr�cs"Gdd�dt����fdd�}|S)Nc@seZdZdS)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNrvrrrr�Empty�sr]cs$dt|�krt�|j�rdS�|�S)Nr0F)r-r`r0�r��r]�predrrrT�szZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped�r�)r`rTrr_r�pred_wrapper�szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr"r!c@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNrvrrrrr��sr�)r�r3�ismethoddescriptorrer�r�r<)r9r�rbrcrer�rrr�test_getmembers_descriptors�s"

����z3TestClassesAndFunctions.test_getmembers_descriptorscCs�Gdd�d�}|�d|jft�|��|�d|jft�|tj��|�}|�d|jft�|��|�d|jft�|tj��dS)Nc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_getmembers_method.<locals>.BcSsdSrrrQrrrr��sz;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN�r0r>r?r�rrrrr��sr�r�)r�r�r3r�r�rD)r9r�r�rrr�test_getmembers_method�sz.TestClassesAndFunctions.test_getmembers_methodcCsLGdd�dt�}Gdd�d|d�}|�dt�|��|�dt�|���dS)NcseZdZ�fdd�Z�ZS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mcs|dkrdSt��|�S)Nr��	scrambledr3)r�r>r�rrr}�szOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__r5rrr�rrX�srXc@seZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdSrOrrQrrrr��szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)r0r>r?rar7r�rrrrr��sr�r�)r�rg)r�rP)rbr�r3r�)r9rXr�rrr� test_getmembers_VirtualAttribute�sz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCsFGdd�dt�}Gdd�d|d�}dd�t�|�D�}|�d|�dS)	Nc@seZdZdd�ZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSs
dddgSrUrr�rrrrC�szITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__NrWrrrrrX�srXc@seZdZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNrvrrrrr��sr�r�cSsg|]}|d�qSrYrrZrrrr��szJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>rV)rbr3r�r�r[rrr�test_getmembers_with_buggy_dir�sz6TestClassesAndFunctions.test_getmembers_with_buggy_dir)NNNN) r0r>r?r�r�r�r�r�r�r�rr�rKr	r
rrrrrr*r2r:r@rGrJrTr\rdrfrhrirrrrr�s`�

�
(	�
��Q

#	 
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestIsDataDescriptorcCs�Gdd�d�}Gdd�d�}Gdd�d�}Gdd�d�}|�t�|��d	�|�t�|��d
�|�t�|��d�|�t�|��d�dS)
Nc@seZdZddd�ZdS)zGTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptorNcSsdSrr)r9�valuerbrrrr��rszOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__)N�r0r>r?r�rrrr�NonDataDescriptor�srmc@seZdZdd�ZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0cSsdSrr)r9r>rkrrrr��rszMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N�r0r>r?r�rrrr�DataDescriptor0�sroc@seZdZdd�ZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1cSsdSrrr4rrr�
__delete__�rszPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)r0r>r?rprrrr�DataDescriptor1�srqc@seZdZdZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nrnrrrr�DataDescriptor2�srrz-class with only __get__ not a data descriptorz'class with __set__ is a data descriptorz*class with __delete__ is a data descriptorz.class with __set__ = None is a data descriptor)r8r3rer/)r9rmrorqrrrrr�test_custom_descriptors�s ����z,TestIsDataDescriptor.test_custom_descriptorscCs&Gdd�d�}|�t�|j�d�dS)Nc@seZdZdZdS)z/TestIsDataDescriptor.test_slot.<locals>.Slotted�rNr�rrrr�Slotted�sruza slot is a data descriptor)r/r3rer)r9rurrr�	test_slot�s�zTestIsDataDescriptor.test_slotcCs&Gdd�d�}|�t�|j�d�dS)Nc@seZdZedd��ZdS)z6TestIsDataDescriptor.test_property.<locals>.PropertiedcSsdSrrrQrrr�
a_property�szATestIsDataDescriptor.test_property.<locals>.Propertied.a_propertyN)r0r>r?r1rwrrrr�
Propertied�srxza property is a data descriptor)r/r3rerw)r9rxrrr�
test_property�s�z"TestIsDataDescriptor.test_propertycCs�Gdd�dt�}dd�}dd�}|�t�|�j�d�|�t�|�j�d�|�t�|�j�d	�|�t�|�d
�|�t�|�d�dS)Nc@s,eZdZdd�Zedd��Zedd��ZdS)z1TestIsDataDescriptor.test_functions.<locals>.TestcSsdSrrrQrrr�instance_methodrszATestIsDataDescriptor.test_functions.<locals>.Test.instance_methodcSsdSrrr�rrr�class_methodsz>TestIsDataDescriptor.test_functions.<locals>.Test.class_methodcSsdSrrrrrr�
static_methodsz?TestIsDataDescriptor.test_functions.<locals>.Test.static_methodN)r0r>r?rzrr{rr|rrrr�Tests

r}cSsdSrrrrrrr�sz5TestIsDataDescriptor.test_functions.<locals>.functioncSsdSrrrrrrrx	rsz5TestIsDataDescriptor.test_functions.<locals>.<lambda>z*a instance method is not a data descriptorz'a class method is not a data descriptorz(a static method is not a data descriptorz#a function is not a data descriptorz!a lambda is not a data descriptor)r�r8r3rerzr{r|)r9r}r�Za_lambdarrr�test_functionss$�����z#TestIsDataDescriptor.test_functionsN)r0r>r?rsrvryr~rrrrrj�srjc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestGetClosureVarscCsVdd�}t�}d|i}dti}dti}dh}t�||||�}|�t�||��|�dS)Ncs�fdd�}|S)Ncst|�tt�dSr��print�_global_ref�unbound_ref�Z	local_ref��nonlocal_refrrr�sz=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.gr�r�r�rr�rr�sz2TestGetClosureVars.test_name_resolution.<locals>.fr�r�r�r��r�r�r�r3�ClosureVarsr��getclosurevars�r9r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesr�rrr�test_name_resolutions�z'TestGetClosureVars.test_name_resolutioncCsVdd�}t�}d|i}dti}dti}dh}t�||||�}|�t�||��|�dS)Ncs�fdd�}|S)Nc3st|�tt�dVdSrr�r�r�rrr�*sz?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.grr�rr�rr�)sz4TestGetClosureVars.test_generator_closure.<locals>.fr�r�r�r�r�r�rrr�test_generator_closure(s�z)TestGetClosureVars.test_generator_closurecCs`Gdd�d�}t�}d|i}dti}dti}dh}t�||||�}|�t�|��|��|�dS)Nc@seZdZdd�ZdS)z1TestGetClosureVars.test_method_closure.<locals>.Ccs�fdd�}|S)Ncst|�tt�dSrr�r�r�rrr�:sz>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r9r�r�rr�rr�9sz3TestGetClosureVars.test_method_closure.<locals>.C.fNrerrrrr�8sr�r�r�r�r�)r�r�r�r3r�r�r�r�)r9r�r�r�r�r�r�r�rrr�test_method_closure7s�z&TestGetClosureVars.test_method_closurecs�dd��dd�}dd�}dd�}�fd	d
�����fdd�}|d
�}|d�}||d�}���|�dd
i����|�ddi����|�d|d�����dd�d��ddi��|�dS)NcSst�|�jSr)r3r�Z	nonlocalsr�rrr�_nonlocal_varsHsz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscs�fdd�}|S)Ncs�|Srr�r�r^rr�addLszFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r�r�rr^r�
make_adderKsz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�Srr�r��r�r�rrrxQrszFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�r�rr�r�curryPsz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kSrrr�rrr�	less_thanSsz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�Srrr^r�rrrxYrszMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>rr���ler�rr�Xsz;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)�g_ref)r�r�)�Yr�rr�Wsz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs���|�d�ji�dS)Nr�)r�r��r��r�r�r9rr�check_y_combinator]szATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorrrr�r�r�cs�fdd�S)Ncs�|Srrr�r^rrrxhrszITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>rr^rr^rrxhrsz7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r9r�r�r�r�ZincZadd_twoZgreater_than_fiverr�r�test_nonlocal_varsFs$

��z%TestGetClosureVars.test_nonlocal_varscCsFdd�}t�iiit��}|�t�dd��|�|�t�|�|�dS)NcSsdSrrrrrrrmrsz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdSrUrrrrrrxorsz>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)r3r�r2r�r�)r9rZ_emptyrrr�test_getclosurevars_emptylsz,TestGetClosureVars.test_getclosurevars_emptycCsBGdd�d�}|�ttjd�|�ttjt�|�ttji�dS)Nc@seZdZdS)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TNrvrrrr�Tssr�r)r&r'r3r�r)r9r�rrr�test_getclosurevars_errorrsz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r�)r#)r9�coderGrrr�_private_globalsxs
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nr.r�r�)r��popr3r�r�r�r��r9r�rGr�rrr�test_builtins_fallback~sz)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nr�rr.r�)r�r3r�r�r�r�rrr�test_builtins_as_dict�sz(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nr.r�r�)r�r�r3r�r�r�r�r�rrr�test_builtins_as_module�sz*TestGetClosureVars.test_builtins_as_moduleN)
r0r>r?r�r�r�r�r�r�r�r�r�r�rrrrrs&rc@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|�||�dS)Nr��func(%s)�inspect.getcallargs(func, %s))r�r.r�)r9r��call_params_string�locsZr1Zr2rrr�assertEqualCallArgs�s
�z,TestGetcallargsFunctions.assertEqualCallArgsc
Cs�t|pi|d�}ztd|d|�Wn&tk
rJ}z|}W5d}~XYnX|�d�ztd|d|�Wn&tk
r�}z|}W5d}~XYnX|�d�|�t|�t|��|�t|�t|��~~dS)Nr�r�zException not raisedr�)r�r.r4Zfailr�rbr�r)r9r�Zcall_param_stringr�r�Zex1Zex2rrr�assertEqualException�s 

�
z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r.)r9rr�rrr�makeCallable�sz%TestGetcallargsFunctions.makeCallablecCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)N�a, b=1�2�2, 3�a=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��r9r�rrr�
test_plain�s&
z#TestGetcallargsFunctions.test_plaincCsV|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nz
a, b=1, *cr�r��2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])r�r�rrr�test_varargs�s
z%TestGetcallargsFunctions.test_varargscCsz|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�dS)Nza, b=1, **cr�z2, 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�rrr�
test_varkw�s
z#TestGetcallargsFunctions.test_varkwcCsV|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)N�**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�rrr�test_varkw_only�s
z(TestGetcallargsFunctions.test_varkw_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�d
�}|�|d�|�|d�|�|d�dS)
Nza=3, *, c, d=2zc=3zc=3, a=3za=2, c=4z4, c=4r��3za=3zd=4z	*, c, d=2zc=3, d=4zd=4, c=3)r�r�r�r�rrr�test_keyword_only�s

z*TestGetcallargsFunctions.test_keyword_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�d	�}|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d
�dS)Nza, b=2, *f, **gz2, 3, 7z	2, 3, x=8z2, 3, x=8, *[(4,[5,6]), 7]z2, x=8, *[3, (4,[5,6]), 7], y=9zx=8, *[2, 3, (4,[5,6])], y=9z@x=8, *collections.UserList([2, 3, (4,[5,6])]), **{"y":9, "z":10}zP2, x=8, *collections.UserList([3, (4,[5,6])]), **collections.UserDict(y=9, z=10)za, b=2, *f, x, y=99, **gz%2, x=8, *[3, (4,[5,6]), 7], y=9, z=10z"x=8, *[2, 3, (4,[5,6])], y=9, z=10zEx=8, *collections.UserList([2, 3, (4,[5,6])]), q=0, **{"y":9, "z":10}zU2, x=8, *collections.UserList([3, (4,[5,6])]), q=0, **collections.UserDict(y=9, z=10)r�r�rrr�test_multiple_features�s

z/TestGetcallargsFunctions.test_multiple_featuresc		Cs2|�d�}|�d�}|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�||fD]�}|�|d	�|�|d
�|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�q�|�d�}|�|d�|�|d�|�d�}|�|d�|�|d�dd�}|�td��t�|�W5QRXdd�}|�td��t�|�W5QRX|�td��tjdtjjd d!�W5QRX|�td"��tjd#d$d d!�W5QRX|�td%��tjd&d'd(�W5QRXdS))Nr�za, br�rrz1,x=1r�zb=3r�z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=3r�z1, 2z1, 2, a=1, b=2z	*, a, b=0cSsdSrrr�rrr�f5?rsz0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSsdSrr�rr�rrrr�f6Fsz0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesrr���kind�defaultz%value 5 is not a valid Parameter.kindrr�zname must be a str, not a int�{r��r�)	r�r�r�r'r3Zgetcallargsr�r��VAR_KEYWORD)	r9Zf0�f1�f2r��f3�f4r�r�rrr�test_errorssh




�����z$TestGetcallargsFunctions.test_errors)N)N)
r0r>r?r�r�r�r�r�r�r�r�r�r�rrrrr��s

	
r�cs$eZdZdd�Z�fdd�Z�ZS)�TestGetcallargsMethodscCs"Gdd�dt�}||_|�|_dS)Nc@seZdZdS)z)TestGetcallargsMethods.setUp.<locals>.FooNrvrrrr�Foo\sr�)r�r��inst)r9r�rrrr�[szTestGetcallargsMethods.setUpcs0d|kst�tt|�j}|d|�|j_|jjS)Nr9zself, )�AssertionErrorr�r�r�r�r�r�)r9rZmkr�rrr�asz#TestGetcallargsMethods.makeCallable)r0r>r?r�r�r�rrr�rr�Ysr�csBeZdZ�fdd�Zd
�fdd�	Zd�fdd�	Zddd	�Z�ZS)
�TestGetcallargsUnboundMethodscstt|��|�|jjSr)r�r�r�r�r��r9rr�rrr�isz*TestGetcallargsUnboundMethods.makeCallableNcstt|�j|�|||��Sr)r�r�r��_getAssertEqualParams�r9r�r�r�r�rrr�ms
�z1TestGetcallargsUnboundMethods.assertEqualCallArgscstt|�j|�|||��Sr)r�r�r�r�r�r�rrr�qs
�z2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,d|kst�t|pi|jd�}|d||fS)Nr�)r�zinst,)r�r�r�r�rrrr�usz3TestGetcallargsUnboundMethods._getAssertEqualParams)N)N)N)r0r>r?r�r�r�r�r�rrr�rr�gsr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�TestGetattrStaticc	Cs�Gdd�dt�}|�}|�t�|d�|j�|�t�|dd�|j�|�t��t�|d�W5QRX|�t�|dd�d�dS)Nc@seZdZe�ZdS)z+TestGetattrStatic.test_basic.<locals>.ThingN�r0r>r?r�r�rrrr�Thing~sr�r�r�r�)r�r�r3�getattr_staticr�r&r0�r9r��thingrrr�
test_basic}szTestGetattrStatic.test_basiccCs@Gdd�dt�}Gdd�d|�}|�}|�t�|d�|j�dS)Nc@seZdZe�ZdS)z/TestGetattrStatic.test_inherited.<locals>.ThingNr�rrrrr��sr�c@seZdZdS)z4TestGetattrStatic.test_inherited.<locals>.OtherThingNrvrrrr�
OtherThing�sr�r��r�r�r3r�r�)r9r�r�Z	somethingrrr�test_inherited�sz TestGetattrStatic.test_inheritedcCsHGdd�dt�}|d�}|�t�|d�d�|`|�t�|d�d�dS)Nc@seZdZdZdd�ZdS)z3TestGetattrStatic.test_instance_attr.<locals>.ThingrcSs
||_dSrr^�r9r�rrrr��sz<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)r0r>r?r�r�rrrrr��sr�r�r�rr�r�rrr�test_instance_attr�s
z$TestGetattrStatic.test_instance_attrcCs0Gdd�dt�}|�}|�t�|d�|j�dS)Nc@seZdZedd��ZdS)z.TestGetattrStatic.test_property.<locals>.ThingcSstd��dS�NzI'm pretending not to existr/rQrrrr��sz0TestGetattrStatic.test_property.<locals>.Thing.xN)r0r>r?r1r�rrrrr��sr�r�r�r�rrrry�szTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@seZdZdd�ZdS)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWstd��dSr�r/)�_rrrr��szSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nrlrrrr�
descriptor�sr�cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN�r0r>r?r�r�Zdescrrr��sr�r�)r�r�r3r�)r9r�r�r�rr�r�%test_descriptor_raises_AttributeError�s
z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs*Gdd�dt�}|�t�|d�|j�dS)Nc@seZdZe�ZdS)z4TestGetattrStatic.test_classAttribute.<locals>.ThingNr�rrrrr��sr�r�r��r9r�rrr�test_classAttribute�sz%TestGetattrStatic.test_classAttributecCs.Gdd�dt�}|�t�|d�|jd�dS)Nc@s eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jSr)�_xrQrrrr��sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r0r>r?rar7r�r�r�rrrrr��s
r�r�)r�r�r3r�r<r�rrr�test_classVirtualAttribute�sz,TestGetattrStatic.test_classVirtualAttributecCs:Gdd�dt�}Gdd�d|�}|�t�|d�|j�dS)Nc@seZdZe�ZdS)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNr�rrrrr��sr�c@seZdZdS)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNrvrrrrr��sr�r�r��r9r�r�rrr�test_inherited_classattribute�sz/TestGetattrStatic.test_inherited_classattributecCs^Gdd�dt�}|�}|�t�|d�|j�|�t�|d�d�|`|�t�|d�|j�dS)Nc@seZdZdZdgZdd�ZdS)z+TestGetattrStatic.test_slots.<locals>.Thingrr�cSs
d|_dS�Nrr^rQrrrr��sz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)r0r>r?r�r�r�rrrrr��sr�r�r�rr�r�rrr�
test_slots�szTestGetattrStatic.test_slotscCs�Gdd�dt�}Gdd�dt|d�}|�t�|d�d�Gdd	�d	|�}Gd
d�dt|d�}|�t�|d�d�Gdd
�d
|�}|�t�|d�d�dS)Nc@seZdZdZdS)z.TestGetattrStatic.test_metaclass.<locals>.metarN)r0r>r?r|rrrr�meta�sr�c@seZdZdS)z/TestGetattrStatic.test_metaclass.<locals>.ThingNrvrrrrr��sr�r�r|rc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subNrvrrrr�sub�sr�c@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�Nr�rrrrr��sr�c@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNrvrrrr�OtherOtherThing�sr�r�r��rbr�r�r3r�)r9r�r�r�r�r�rrr�test_metaclass�sz TestGetattrStatic.test_metaclasscCs.|�t�ddd�d�|�t�dd�d�dS)Nrr�lower)r�r3r��assertNotEqualrQrrr�test_no_dict_no_slots�sz'TestGetattrStatic.test_no_dict_no_slotsc	Cs2tt�� }|�t�|d�t|�j�W5QRXdS)Nr>)r�r�r�r3r�rbr>)r9Zhandlerrr�%test_no_dict_no_slots_instance_member�s
z7TestGetattrStatic.test_no_dict_no_slots_instance_membercCs<Gdd�dt�}Gdd�d|�}|�t�|�d�|j�dS)Nc@seZdZdgZdd�ZdS)z5TestGetattrStatic.test_inherited_slots.<locals>.Thingr�cSs
d|_dSr�r^rQrrrr��sz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)r0r>r?r�r�rrrrr��sr�c@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNrvrrrrr��sr�r�r�r�rrr�test_inherited_slots�sz&TestGetattrStatic.test_inherited_slotscspGdd�dt��G�fdd�dt�}|�}d|jd<|�t�|d�d�dd��_|�t�|d�|jd�dS)	Nc@seZdZdd�ZdS)z5TestGetattrStatic.test_descriptor.<locals>.descriptorcSsdSr�r�r9�instance�ownerrrrr��sz=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__Nrlrrrrr��sr�cseZdZ��ZdS)z.TestGetattrStatic.test_descriptor.<locals>.FooN�r0r>r?r�r�r�rrr��sr�rr�cSsdSrr)rr%�vrrrrx	rsz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r�r<r�r3r�r��r9r�rrrr�test_descriptor�s

z!TestGetattrStatic.test_descriptorcsVGdd�dt��G�fdd�dt�}Gdd�dt|d�}|�t�|d�|jd�dS)	Nc@seZdZdd�ZdS)zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSsdSr�rr�rrrr�szLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__Nrlrrrrr�sr�cseZdZ��ZdS)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNrrrrrr�sr�c@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNrvrrrrr�sr�r�r�)r�rbr�r3r�r<)r9r�r�rrr�test_metaclass_with_descriptor
sz0TestGetattrStatic.test_metaclass_with_descriptorcCs^Gdd�dt�}Gdd�d|�}|�}|�t�|d�d�|�|j�|�t�|d�d�dS)Nc@seZdZdZdS)z6TestGetattrStatic.test_class_as_property.<locals>.Baser�Nr�rrrr�Basesrc@seZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tSrU)�executedr�rQrrrr�szETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r0r>r?r	r1r�rrrr�	Somethingsr
rr�)r�r�r3r�r8r	)r9rr
rrrr�test_class_as_propertysz(TestGetattrStatic.test_class_as_propertycCsbGdd�dt�}Gdd�dt�}Gdd�d||d�}|�t�|�d�d	�|�t�|d�d	�dS)
Nc@seZdZedd��ZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.MetacSstfSrrarQrrr�__mro__*sz<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)r0r>r?r1rrrrrr6)sr6c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�Nr�rrrrr.src@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNrvrrrrr
1sr
r�rr�r�)r9r6rr
rrr�test_mro_as_property(s
z&TestGetattrStatic.test_mro_as_propertycsN|�d�_G�fdd�dt�}|�}d|_|�t�|d�d�|��j�dS)NFcs eZdZdZe�fdd��ZdS)z4TestGetattrStatic.test_dict_as_property.<locals>.Foor�cs
d�_iSrU)�calledrQ�r�rrr<=sz=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r0r>r?rr1r<rrrrr�;sr�r�rr�)rr�rr�r3r�r8rrrr�test_dict_as_property7sz'TestGetattrStatic.test_dict_as_propertycs`|�d�_G�fdd�dt�}Gdd�dt�}|�}|�|_|�t�|d�d�|��j�dS)NFcs eZdZd��fdd�	Z�ZS)z9TestGetattrStatic.test_custom_object_dict.<locals>.CustomNcsd�_t��||�dSrU)rr��get)r9�keyr�)r�r�rrrLsz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get)N)r0r>r?rr�rrr�r�CustomKsrc@seZdZdZdS)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)r0r>r?rrrrrr�Psr�rr�)rr�r�r<r�r3r�r8)r9rr�rrrr�test_custom_object_dictGsz)TestGetattrStatic.test_custom_object_dictcCsLGdd�dt�}Gdd�d|d�}|�}|�t�|d�d�|�|j�dS)Nc@seZdZedd��ZdS)z?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.MetacSs
d|_dSrU)r	rQrrrr<YszHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N�r0r>r?r1r<rrrrr6Xsr6c@seZdZdZdd�ZdS)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSs
d|_dS�Nr��rPrQrrrr�`szITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)r0r>r?r	r�rrrrr�]sr�r�rPr�)rbr�r3r�r8r	)r9r6r�rrrr�test_metaclass_dict_as_propertyWs
z1TestGetattrStatic.test_metaclass_dict_as_propertycCs t�}|�t�td|�|�dS)N�version)r��assertIsNotr3r�r^)r9�sentinelrrr�test_modulegs�zTestGetattrStatic.test_modulec	CshGdd�dt�}Gdd�dt|d�}Gdd�d|d�}|�t��t�|d�W5QRX|�|j�dS)	Nc@seZdZedd��ZdS)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTr�r)r	r�rQrrrr<nsz`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__Nrrrrr�MetaMetamsrc@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)r0r>r?r	rrrrr6ssr6r�c@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNrvrrrrr�vsr�rP)rbr&r0r3r�r8r	)r9rr6r�rrr�3test_metaclass_with_metaclass_with_dict_as_propertylszETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)r0r>r?r�r�r�ryr�r�r�r�r�r�r�r�r�rrrr
rrrrrrrrrr�{s,	

	

r�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestGetGeneratorStatecCsdd�}|�|_dS)Ncsstd�D]
}|VqdS�Nr�rK�Znumberrrr�number_generator�sz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r9r"rrrr�szTestGetGeneratorState.setUpcCst�|j�Sr)r3Zgetgeneratorstater#rQrrr�_generatorstate�sz%TestGetGeneratorState._generatorstatecCs|�|��tj�dSr)r�r$r3ZGEN_CREATEDrQrrr�test_created�sz"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dSr)�nextr#r�r$r3Z
GEN_SUSPENDEDrQrrr�test_suspended�s
z$TestGetGeneratorState.test_suspendedcCs"|jD]}q|�|��tj�dSr)r#r�r$r3�
GEN_CLOSEDrLrrr�test_closed_after_exhaustion�s
z2TestGetGeneratorState.test_closed_after_exhaustionc	Cs8|�t��|j�t�W5QRX|�|��tj�dSr)r&r�r#r*r�r$r3r(rQrrr�%test_closed_after_immediate_exception�sz;TestGetGeneratorState.test_closed_after_immediate_exceptioncs,�fdd�}|��_t�j�t�j�dS)Nc3s<td�D].}�����tj�|V�����tj�qdSr )rr�r$r3ZGEN_RUNNINGr!rQrr�running_check_generator�szCTestGetGeneratorState.test_running.<locals>.running_check_generator)r#r&)r9r+rrQr�test_running�s
z"TestGetGeneratorState.test_runningcCs@d��}|D].}tt|�}|�|t|��|�|t|��qdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED�r�r/r3r��reprr�r9�namesr>�staterrr�test_easy_debugging�s

z)TestGetGeneratorState.test_easy_debuggingc	Cs�ddd�}|dddg�}|�t�|�ddddgd��t|�|�t�|�ddddgddd��t|�|�t�|�ddddgddd��t|�|�t�|�ddddgddd	d
��zt|�Wntk
r�YnX|�t�|�i�dS)Ncss$d}|D]}|dkrd}|VqdS)Nr�r�rIr)�lstrr�rrrrr�each�s
z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrrr�)rr3r�)rr3rr�rI)rr3rr�r)N�r�r3�getgeneratorlocalsr&�
StopIteration)r9r4Znumbersrrr�test_getgeneratorlocals�s:
�������z-TestGetGeneratorState.test_getgeneratorlocalscCsXdd�}|�}|�t�|�i�zt|�Wntk
r@YnX|�t�|�i�dS)Ncss
dVdSrkrrrrr�	yield_one�szFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_oner5)r9r9rKrrr�test_getgeneratorlocals_empty�sz3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|�ttjd�|�ttjdd��|�ttjt�|�ttjd�dS)NrcSsdSrUrr^rrrrx�rszETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)rr�)r&r'r3r6r2rQrrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)r0r>r?r�r$r%r'r)r*r,r2r8r:r;rrrrr}src@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs&tjdd����fdd�}|�|_dS)Ncsstd�D]
}|VqdSr rKr!rrr�number_coroutine�sz5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s��IdHdSrrr�r=rr�	coroutine�sz.TestGetCoroutineState.setUp.<locals>.coroutine)rar?)r9r?rr>rr��s
zTestGetCoroutineState.setUpcCs|j��dSr)r?rnrQrrrr��szTestGetCoroutineState.tearDowncCst�|j�Sr)r3Zgetcoroutinestater?rQrrr�_coroutinestate�sz%TestGetCoroutineState._coroutinestatecCs|�|��tj�dSr)r�r@r3ZCORO_CREATEDrQrrrr%�sz"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dSr)r?�sendr�r@r3ZCORO_SUSPENDEDrQrrrr'�sz$TestGetCoroutineState.test_suspendedcCsBz|j�d�Wqtk
r(Yq,YqXq|�|��tj�dSr)r?rAr7r�r@r3�CORO_CLOSEDrQrrrr)�s
z2TestGetCoroutineState.test_closed_after_exhaustionc	Cs8|�t��|j�t�W5QRX|�|��tj�dSr)r&r�r?r*r�r@r3rBrQrrrr*sz;TestGetCoroutineState.test_closed_after_immediate_exceptioncCs@d��}|D].}tt|�}|�|t|��|�|t|��qdS)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSEDr-r/rrrr2s

z)TestGetCoroutineState.test_easy_debuggingcshtjdd������d�fdd�	}|�}|�t�|�d�d��|�d�|�t�|�d�dd��dS)	Ncss
dVdSrrrrrr�gencorosz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�sd}�IdHdSrOrr��rCrrr�sz;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rrCrP)rrCr�)N)rar?r�r3ZgetcoroutinelocalsrA)r9r�rprrDr�test_getcoroutinelocalss
�

�z-TestGetCoroutineState.test_getcoroutinelocalsN)r0r>r?r�r�r@r%r'r)r*r2rErrrrr<�s		r<c@seZdZdS)�MySignatureNrvrrrrrF srFc@seZdZdS)�MyParameterNrvrrrrrG%srGc@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Ze
e�ed�dd���Ze
e�ed�dd���Ze
dd��Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Ze�ed�d2d3��Z e�ed�d4d5��Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+e�ed�dJdK��Z,dLdM�Z-dNS)O�TestSignatureObjectcKs<tj|f|�}tdd�|j��D��|j|jkr4dn|jfS)NcssJ|]B}|j|j|jkrdn|j|j|jkr.dn|jt|j���fVqdS).N)r>r��empty�
annotationrr�r�)r��paramrrr�	<genexpr>0s��z0TestSignatureObject.signature.<locals>.<genexpr>.)r3r�tupler$�values�return_annotationrI)r��kw�sigrrrr-s��zTestSignatureObject.signaturec
	Cstj}tj}|�t|��d�ddd�}t�|�}|jdj|jd�}|jdj|jd�}|jd	}|jd
}|jd}	|jd}
|jd
}||||	|
|f�|�	t
d��||||	|
|f�W5QRX|�	t
d��|||	||
|f�W5QRX|�	t
d��||	|||
|f�W5QRX|�	t
d��||||	||
f�W5QRX|jdd�}|�	t
d��||||	||
f�W5QRX|�	t
d��|||f�W5QRX|�	t
d��||||f�W5QRX|�	t
d��|||f�W5QRX|�t|��
d��|�dt|�k�dS)N�()r��dc_sdSrr)�po�pk�pod�pkd�korr�rrrr�?sz7TestSignatureObject.test_signature_object.<locals>.testrTr�rVrUrWrrXr�zwrong parameter order�r>zduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r�rS)r3r�r�r�rrr$�replacer�r�r�r/r.r))
r9�S�Pr�rQrTrVrUrWrrXr�Zkwargs2rrr�test_signature_object9s@






z)TestSignatureObject.test_signature_objectc	
CsZid�dddid�dd�}tj|dd�}t�|�}ttjd�D]<}|j|d	d
��$t�t�	||��}|�
||�W5QRXq@t�|�}tdtjj
d�}tj|j|d�}t�j|��|jd
�}|�t|t��|�t|jdt��ttjd�D]b}|j|dd
��Jt�t�	||��}|�
||�|�t|t��|�t|jdt��W5QRXq�dS)N�rrr�r��rr�c[sdSrr�rr�rrPrrrrirsz=TestSignatureObject.test_signature_object_pickle.<locals>.foor�F)�
pickle_ver�subclassr)r>r�)r$rOT)rlrmr3rr�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�rGr�r��collections�OrderedDictr$rFrZrNrOr/r0)	r9rZfoo_partialrQ�verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_picklehs.

��z0TestSignatureObject.test_signature_object_picklec	CsRdd�}t�|�}|�t��d|_W5QRX|�t��d|jd<W5QRXdS)NcSsdSrrr�rrrr��sz=TestSignatureObject.test_signature_immutability.<locals>.testrr)r3rr&r0rr'r$�r9r�rQrrr�test_signature_immutability�s
z/TestSignatureObject.test_signature_immutabilitycCsdd�}|�|�|�d�dS)NcSsdSrrrrrrr��sz9TestSignatureObject.test_signature_on_noarg.<locals>.test�r.�r�r�r9r�rrr�test_signature_on_noarg�sz+TestSignatureObject.test_signature_on_noargcCs&ddd�dd�}|�|�|�d�dS)Nrr��r�r�cSsdSrrr�rrrr��sz9TestSignatureObject.test_signature_on_wargs.<locals>.test))�r..�positional_or_keyword)r�.rrtr�rorprrr�test_signature_on_wargs�s�z+TestSignatureObject.test_signature_on_wargscCs@tttd�dd�}|�|�|�ddtdfddtdfftf�dS)N)rr�r�cSsdSrrr�rrrr��sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testr.�keyword_onlyr�)�floatrr�r�rrprrr�test_signature_on_wkwonly�s

���z-TestSignatureObject.test_signature_on_wkwonlycCsJddd�dddtd�dd	�}|�|�|�d
ddd
dddtdffdf�dS)NrVr�)r�rr�baz)r�rrPr�c_sdSrr)rr�rPr�rr�rrrr��sz@TestSignatureObject.test_signature_on_complex_args.<locals>.testrs)r�rVrrt)r.r�var_positional)rP.ryrv)r�r�.rvr�.�var_keyword)rV)r�r�rrprrr�test_signature_on_complex_args�s
���z2TestSignatureObject.test_signature_on_complex_argscs�dd��dd��G��fdd�d�}|�|���d�|�|���d�|�|�|j�d�|�|�|j�d�|�|�|j�d�|�|�|j�d�dS)	NcWsdSrrr�rrr�test_args_only�szGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_sdSrr�rr�rrr�test_args_kwargs_only�szNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_onlycsTeZdZedd��Zedd��Ze�ed�Z	e��d�Z
e�ed�Ze��d�ZdS)z:TestSignatureObject.test_signature_without_self.<locals>.AcWsdSrrr�rrr�test_classmethod�szKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWsdSrrr�rrr�test_staticmethod�szLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodrN)
r0r>r?rr�rr�rlr�r�r�r�r�r�rr}rrr��s

r��)�r..rz.�)r��r�..r{.)r�rr�r�r�r�rrr�r�test_signature_without_self�s*������z/TestSignatureObject.test_signature_without_selfrc	s�ddl}�fdd�}�fdd�}||j���fdd�}��|d�d	���|d
�d���|d�d
���|d�d���|d�d���|d�d���|d�d���|d�d���|d�tj���d�j�|t�|tj	j
�t�	t���}||j
�|t
j�|dj�|tj�|ij�|tj�|tj�|dj�|tj���td��Gdd�d�}||��W5QRX|tj�|tj�||j�dS)Nrcs<t�|�}��t|tj����t|j���dj	d�|S)zAUse this to test unbound methods (things that should have a self)rr9)
r3rr/r0r�r�rr$rNr>�rrrQrr�test_unbound_method�s
zKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_methodcsBt�|�}��t|tj��|jr>��t|j���dj	d�|S)zRUse this to test bound methods or normal callables (things that don't expect self)rr9)
r3rr/r0r�r$r�rrNr>r�rQrr�
test_callable�s

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jSr)r$r�rY)rrrr&�rsz9TestSignatureObject.test_signature_on_builtins.<locals>.prrr�sbytesr�g��Q�	@r%�#�nr�Tr�FZlocalr�r^r:sabczno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r0r>r?rbr�rrrr�ThisWorksNow	sr�)rr
r�r^�maxsizer�r$r�rrrr�StringIO�bytes�	maketransr��fromkeysrbr�r�r+�minr�r��__delitem__r1rpZ#docstring_with_signature_but_no_doc)r9rr�r�r&r�r�rr�r�test_signature_on_builtins�sB











z.TestSignatureObject.test_signature_on_builtinscCsdddl}|j}dd�}||�}|�t�|�t�|��td�dd�}|�tj|dd�t�|��dS)	Nrcs t���td��fdd��}|S)N�r�cs
�||�Srrr~r�rr�wrapper$	sz\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)rlr�r��r�r�rr�r�	decorator#	szKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorr�c_sdSrrr~rrr�wrapper_like.	rszNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF�Zfollow_wrapped)rr
r�r3rr�)r9rr�r�Zdecorated_funcr�rrr�$test_signature_on_decorated_builtins	s�
��z8TestSignatureObject.test_signature_on_decorated_builtinsc	CsRddl}|�td��t�|j�W5QRX|�td��t�t�W5QRXdS)Nrzno signature found for builtin)rr�r�r3rrr)r9rrrr�'test_signature_on_builtins_no_signature3	s��z;TestSignatureObject.test_signature_on_builtins_no_signaturec	Cs&|�td��t�d�W5QRXdS)N�is not a callable objectr�)r�r'r3rrQrrr�test_signature_on_non_function>	sz2TestSignatureObject.test_signature_on_non_functionc	s�dd�dd�}Gdd�d�}tj�|�}tj�||��}|�||�t�||��}|�||�||�}|`|�|�|�d�tj��fdd	�}tj�	d
|��F||�}|�
t�|��d|_|�t�|��|�t�|�|�W5QRXdS)NT��kwonlyc_sdSrr�rr�r�Z	kwonlyreqrr�rrrr�C	szITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@seZdZdd�Zdd�ZdS)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecSs2|j|_|j|_|j|_|j|_|j|_||_dSr)r0r=r��__defaults__�__kwdefaults__r�)r9r�rrrr�K	szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_s|j||�Srr�r�rrrr�S	szVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N)r0r>r?r�r�rrrr�funclikeF	sr�r�cst|d�rdS�|�S)N�_builtinmockT�r`)r;�Z_orig_isdescrr�_isdescj	s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
r3r��
from_callabler�rr�rcr�ZmockZpatchr8r�r/)r9r�r�Zsig_funcZsig_funclikeZflr�Zbuiltin_funcrr�r�'test_signature_from_functionlike_objectB	s(�z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|�tt�|��d�dS)NTr�c_sdSrrr�rrrr�{	szCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSsdSrr)r9Zmarkerrrrr�	szPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)r0r>r?r�r=r�r�r�rr�rrr�~	sr�z(marker))r�rr3r)r9r�rr�r�!test_signature_functionlike_classw	s
z5TestSignatureObject.test_signature_functionlike_classc	CsxGdd�d�}|�|�|�j�dtf�|�|�|�j�d�|�|�|�d�|�td��|�|��W5QRXdS)Nc@s4eZdZdd�Zded�dd�Zdd�Zd	d
�ZdS)
z:TestSignatureObject.test_signature_on_method.<locals>.TestcWsdSrrr�rrrr��	szCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__rr�cSsdSrr�r9r�r�rrrr�	sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWsdSrrr�rrr�m2�	sz=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSsdSrrr�rrrr��	szCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__N)r)r0r>r?r�r�rr�r�rrrrr}�	sr}��r�..rt)r�r.rtr�zinvalid method signature)r�rrr�r�r�r�)r9r}rrr�test_signature_on_method�	s
����z,TestSignatureObject.test_signature_on_methodcCs>Gdd�d�}t�|�j�dd��}|�|�|�dtf�dS)Nc@seZdZded�dd�ZdS)zETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testrr�cSsdSrrr�rrrr�	szHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1N)r)r0r>r?r�rrrrrr}�	sr}c_sdSrrr~rrr�m1d�	szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dr�)rlr�rr�rr�)r9r}r�rrr�#test_signature_wrapped_bound_method�	s
��z7TestSignatureObject.test_signature_wrapped_bound_methodcCsDGdd�d�}|�j}|�|�|�d�|j}|�|�|�d�dS)Nc@seZdZedd�dd��ZdS)z?TestSignatureObject.test_signature_on_classmethod.<locals>.Testrr�cSsdSrr)r�r�r�rrrr�	szCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)r0r>r?rrrrrrr}�	sr}))r�)r�r.rv.�rr�r�r9r}Zmethrrr�test_signature_on_classmethod�	s��z1TestSignatureObject.test_signature_on_classmethodcCsDGdd�d�}|�j}|�|�|�d�|j}|�|�|�d�dS)Nc@seZdZedd��ZdS)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSsdSrr)r�r�rrrr�	szDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)r0r>r?rrrrrrr}�	sr})))r�..rt)r�..rv.r�r�rrr�test_signature_on_staticmethod�	s��z2TestSignatureObject.test_signature_on_staticmethodc
CsHddlm}tj}dd�}|�|�||��d�|�td��t�||d��W5QRX|�td��t�||dd��W5QRXd	d�}|�|�||��d
�|�|�||d��d�|�|�||ddd
��d�|�|�||ddd��d�|�|�||dddd��d�|�|�||dd��d�dd�}|�|�||d��d�|�|�||dd��d�|�|�||ddd��d�|�|�||ddddd��d�|�|�||dddddd��d�|�|�||dd��d�|�|�||ddd��d�tdd�d d�}t�|�}|_	|�|�|||d���d!d"d#td$ffdf�|�|�|||d�d��d"d#td$ffdf�t�|||d�d��}d%d&�}|||d'd�d(d�}|�|�|�d)�|�|�d(�d*d&�}|||dd(d�d+d�}|�|�|�d,�|�|d'd
�d-�d.d&�}|||d(d(d/�d'd+d0�}|�|�|�d1�t�|�j
d2d3d4�}|�||j|j�d5�dGd6d&�}||d7d
�}t�|�j
d3d�}|�||j|j�d8�t�|��
d3d9�}|�||j|j�d:�t�|�j
d3d9d�}|�||j|j�d:�t�|�j
d9d�}|�||j|j�d;�||d'd(d�}t�|��
d9�}|�||j|j�d<�d=d&�}t�|�}|j
��}	|	d>j|jd?�|	d><|	d@j|jd?�|	d@<t�|	���|_	t�|�}|�t|�dA�|�|�||d��dB�|�|�||dd��dC�|�|�||ddd��dD�|�|�||dddd
��dE�|�|�||ddd
��dF�dS)HNr)rmcSsdSrrrrrrr��	sz;TestSignatureObject.test_signature_on_partial.<locals>.testrn�has incorrect argumentsrr�cSsdSrr�rr�rr�rrrr��	s))rs�r�..rt�r..rv�r�..rv.))r�r�r�.rr^))r��rr.rvr�.)r�r))rs�r�r.rvr�r�.))r�r�r�.))�rr.rv�r�..rvr�r�.c_sdSrr)rr�rr�rrrr�
s))r�r�r�.))r�r�r�.r�Tr)r�r�))r��r�r.rvr�.�r�))rsr�r�r�.)r�r�r�r_cSsdSrrr�rrrr�?
sr�r.rtcSs|Srrr�rrrrO
sz:TestSignatureObject.test_signature_on_partial.<locals>.foorV�)))rr�.rv.cSs
|||fSrrr�rrrrY
srb)))r�rb.rvr�.)rrbrVcSs||||fSrrr�rrrrc
s)r�r)r�r�))rs)r�rV.rv)rr�.rv)r�rb.rv.��r�r�)r�r�r�rbcSs
|||fSrrr�rrrrp
s�
)r�rr�rI)r�rIr�)rrIr�)rIrVr�c[sdSrr)rr�rr�r�rrrr�
srr�r�z(a, b, /, c, d, **kwargs)))�r�..Zpositional_only�r..rt�r�..rtr�.))r�r�r�.))r�r�.))�rr�.rvr�r�.))r�r�r�r�.)rrr�)rlrmr3r�r�rr�r�r�r��bindrr�r$�copyrZr�r�rNr)
r9rmr�r�rQZpsigrZ_foo�baZparamsrrr�test_signature_on_partial�	s��������������
��������



�����z-TestSignatureObject.test_signature_on_partialc	s�ddlm�G�fdd�d�}|�td��t�|j�W5QRXG�fdd�d�}|�|�|j�d�|�|�|�j�d�G�fd	d�d�}|�|�|j�d
�dS)Nr�r�cseZdZdd�Z�e�ZdS)�ATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSsdSrrrrrrr��
s�FTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN�r0r>r?r�r�rr�rr�Spam�
sr�r�cs&eZdZdd�dd�Z�edd�ZdS)r�rPr�cSsdSrr)�itrrrrrr��
sr�rr^Nr�rr�rrr��
s)))r�..rtrs�rr.rvrP))rsr�rPcs$eZdZdd�dd�Z�ed�ZdS)r��annorQcSsdSrrr�rrrr��
sr�rN)r0r>r?r�r�rr�rrr��
s)))r9.r�rt.)	rlr�r�r�r3rr�r�r�)r9r�rr�r�test_signature_on_partialmethod�
s���z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSsdSrrr�rrrr�
rszETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorPz(a))�_partialmethodr�rr3r�r9rrrr�$test_signature_on_fake_partialmethod�
sz8TestSignatureObject.test_signature_on_fake_partialmethodcs�ddl��fdd��G�fdd�d�}|�|�|j�d�|�|�|�j�d�|�|j|jdd	�d
��fdd��G�fdd�d�}|�|�|j�d�|�|�|�j�d
�dd�}|j|_|�|�|�d�dS)Nrcs ����td��fdd��}|S)Nr�cs
�||�Srrr~r�rrr��
s�STestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)r�r�r��rlr�rr��
szBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcseZdZ�dd��ZdS)�<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSsdSrr�r9rr�rrrr�
sz@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)r0r>r?rr�r�rrr��
sr�))�r9..rtrsr�.))rsr�.Fr�r�csN����td��fdd��}t���}t|j���dd�}|j|d�|_|S)Nr�cs�d|�|�S)Nr�)r�rr~r�rrr��
sr�rr�)	r�r�r3rrMr$rNrZr�)r�r�rQ�
new_paramsr�r�rr��
s
cseZdZ�dd��ZdS)r�cSsdSrrr�rrrr�szETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N�r0r>r?r�rr�rrr�s�)r�.cSsdSrrrrrr�wrapped_foo_callszITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)rlr�rrr��__wrapped__)r9r�r�r)r�rlr�test_signature_on_decorated�
s2���	���z/TestSignatureObject.test_signature_on_decoratedcCs>Gdd�d�}|�|�|�d�Gdd�dt�}Gdd�d|d�}|�|�|�d�Gdd�dt�}Gd	d�d|d�}|�|�|�d
�|�|�|�d�Gdd
�d
t�}Gdd�dt|d�}Gdd�d|d�}|�|�|�d�|�|�|�d�|�|�|�d
�Gdd�dt�}Gdd�d|d�}|�|�|�d�dS)Nc@seZdZdd�ZdS)�6TestSignatureObject.test_signature_on_class.<locals>.CcSsdSrr�r9rrrrr�s�?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N�r0r>r?r�rrrrr�sr��)rs.c@seZdZdd�ZdS)�7TestSignatureObject.test_signature_on_class.<locals>.CMcSsdSrr)r�rrrrr�%sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__Nr�rrrrr2$sr2c@seZdZdd�ZdS)r�cSsdSrr�r9r�rrrr�(sr�Nr�rrrrr�'sr�cs"eZdZdd��fdd�
Z�ZS)r�rrtcst��||||�Sr�r�r���mclsr>�bases�dctrr�rrr�0s�?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__�r0r>r?r�r�rrr�rr2/sc@seZdZdd�ZdS)r�cSsdSrrr�rrrr�3sr�Nr�rrrrr�2sr�))�r>..rt�r�..rt�r�..rt)rr.rv.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMrrtcst��||||�Srr�r�r�rrr�Bsz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�Sr)rb)r��nm�bs�dtrrrr�DszATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r0r>r?r�r�r�rrr�r�CMMAsr�cs"eZdZdd��fdd�
Z�ZS)r�r�rcst��||||�Srr�)r�r>r�r�rr�rrr�Gsr�r�rrr�rr2Fsc@seZdZdd�ZdS)r�cSsdSrrr�rrrr�Jsr�Nr�rrrrr�Is)))r�..rt)r�..rt)r�..rt.cs"eZdZdd��fdd�
Z�ZS)r�rr�cst��|||�Sr)r�r�)r�r>r�r�rr�rrr�_sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r0r>r?r�r�rrr�rr2^sc@seZdZdd�ZdS)r�cSsdSrrr�rrrr�bsr�Nr�rrrrr�as))r�r�r�)rr.rv.)r�rrb)r9r�r2r�rrr�test_signature_on_classsD��������z+TestSignatureObject.test_signature_on_classc	Cs�Gdd�d�}|�tt�|��d�Gdd�d|�}|�tt�|��d�Gdd�dt�}Gdd�d|�}|�td��|�t�|�d�W5QRX|�td��|�t�|�d�W5QRXdS)	Nc@seZdZdS�zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CNrvrrrrr�psr�rRc@seZdZdS�zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNrvrrrrr�rsr�c@seZdZdSr�rvrrrrr�vsc@seZdZdSr�rvrrrrr�wszcallable.*is not supported)r�rr3rrbr�r�)r9r�r�rrr�$test_signature_on_class_without_initlsz8TestSignatureObject.test_signature_on_class_without_initcCs�d}|�tt�tj��|�Gdd�dtj�}Gdd�d�}Gdd�d||�}|�tt�|��|�|�tt�|��|�Gdd	�d	|�}|�tt�|��d
�Gdd�dt�}Gd
d�d||d�}|�tt�|��d�dS)Nz=(file, protocol=None, fix_imports=True, buffer_callback=None)c@seZdZdS)z>TestSignatureObject.test_signature_on_builtin_class.<locals>.PNrvrrrrr\�sr\c@seZdZdS)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNrvrrrr�
EmptyTrait�src@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nrvrrrr�P2�src@seZdZdd�ZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSsdSrr)r9rPrrrr��szHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__Nr�rrrr�P3�srr�c@seZdZdd�ZdS)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSsdSrr)r�rrrrrr��szKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__Nr�rrrr�MetaP�src@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nrvrrrr�P4�srr�z
(foo, bar))r�rr3rrrrb)r9r�r\rrrrrrrr�test_signature_on_builtin_class}sz3TestSignatureObject.test_signature_on_builtin_classc	Cs�Gdd�d�}|�|�|��d�Gdd�d�}|�td��t�|��W5QRXGdd�d||�}|�|�|��d�Gd	d
�d
�}dd�|_|�|�|�d�||_|�td
��|�|�W5QRXdS)Nc@seZdZdd�ZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.FoocSsdSrrr�rrrr��szLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__Nr�rrrrr��sr�r�c@seZdZdS)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNrvrrrrr��sr�r�c@seZdZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNrvrrrr�Bar�src@seZdZdS)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNrvrrrr�Wrapped�srcSsdSrrr�rrrrx�rszHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>�wrapper loop)r�rr�r'r3r�r�)r9r�r�rrrrr�"test_signature_on_callable_objects�s&��
�z6TestSignatureObject.test_signature_on_callable_objectscCs|�|�ddd��d�dS)NrVcSs|Srrr�rrrrx�rsz?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rrV.rt.)rVrorQrrr�test_signature_on_lambdas�s�z-TestSignatureObject.test_signature_on_lambdascCsPttd�dd�}|�t�|�dk�|�t�|�dk�|�t�|�t�k�|�t�|�t�k�ttd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���ttd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���td�d	d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd�ttd�d
d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���td�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���ttd�d
d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���ttd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd�}dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dd�dd�}dd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dd�dd�}dd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dd�}dd�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd�td�dd�}dd�td�dd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dS)NrrcSsdSrrr�rrrr�rsz8TestSignatureObject.test_signature_equality.<locals>.foor�cSsdSrrr�rrrr�rsz8TestSignatureObject.test_signature_equality.<locals>.barcSsdSrrr�rrrr�rsr�cSsdSrrr�rrrr�rscSsdSrrr�rrrr�rsr�cSsdSrr�rrrrrr�rscSsdSrrr�rrrr�rscSsdSrr�r�rrrrrP�rsz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdSrrr�rrrr�rscSsdSrr�rr�rrrrr�rsrr�cSsdSrrr�rrrr�rscSsdSrrr
rrrr�rscSsdSrr��posrr�rrrrr�rscSsdSrr�rrr�rrrrr�rscSsdSrrrrrrrrscSsdSrrrrrrrrs�r�c_sdSrr)rrr�rrr�rrrrrsc_sdSrr)rrr�rrr�rrrrrs)
r�rwr8r3rr/rTr��hashr�)r9rrrPrrr�test_signature_equality�s�������������z+TestSignatureObject.test_signature_equalityc	Cs�tj}tj}dd�}t�|�}||d|j�gd�}|�t|�t|��|�t|�t|jdd���dd�d	d
�}|�t|�tt�|���ifdd�}|�	t
d��tt�|��W5QRXid�d
d�}|�	t
d��tt�|��W5QRXdS)NcSsdSrrr�rrrrrsz8TestSignatureObject.test_signature_hashable.<locals>.foorr�rP�rOrr�cSsdSrrr�rrrrrsz8TestSignatureObject.test_signature_hashable.<locals>.barcSsdSrrr�rrrrrs�unhashable typecSsdSrrr�rrrr"rs)r3r�r�r�POSITIONAL_OR_KEYWORDr�rr�rZr�r')r9r[r\r�foo_sigZ
manual_sigrrrr�test_signature_hashables"

�z+TestSignatureObject.test_signature_hashablecCs~ddd�tdd�dd�}|�tt�|��d�d
dd�tdd�dd�}|�tt�|��d	�d
d�}|�tt�|��d�dS)Nrr^r�r�c[sdSrr�rr�rr�rrrr'sz3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c_sdSrr)rr�rrr�rrrr,sz.(a: int = 1, *args, b, c=None, **kwargs) -> 42cSsdSrrrrrrr1srR)r)r)r�r�rr3rr�rrr�test_signature_str&s��z&TestSignatureObject.test_signature_strcCs�tj}tj}dd�}t�|�}t|j���}|dj|jd�|d<|j|d�|_	|�
tt�|��d�|�
t||d|j�gd��d�|�
t||d|j�|d	|j�gd��d
�|�
t||d|j�|d	|j
�gd��d�dS)Nc[s||fSrr)�a_por�r�rrrr�9szDTestSignatureObject.test_signature_str_positional_only.<locals>.testrr�r�z(a_po, /, *, b, **kwargs)rz(foo, /)rz(foo, /, **bar)z(foo, /, *bar))r3r�r�rrr$rNrZr�r�r�rr��VAR_POSITIONAL)r9r\r[r�rQr�rrr�"test_signature_str_positional_only5s2
��

��

��z6TestSignatureObject.test_signature_str_positional_onlycCs�dd�dd�}t�|�}|jdd�}|�|jd�|j|jd�}|�|j|j�|jdd�}|�|jd�|�|t�|��dS)Nr�r�cSsdSrrrrrrr�Rsz=TestSignatureObject.test_signature_replace_anno.<locals>.testr)r3rrZr�rOrIr�rlrrr�test_signature_replace_annoQs
z/TestSignatureObject.test_signature_replace_annocCsRGdd�d�}Gdd�d|�}|�|�|j�d�|�|�|j�|�|j��dS)Nc@s$eZdZd	dd�ddd�dd�ZdS)
zFTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamrr�)�	_Spam__p2r)�	_Spam__p1rcSsdSrr)r9r rrrrr`szJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)rr�rrrrr�_sr�c@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNrvrrrr�Hambsr!))r�)r rrrt)rr�rrv.)r�rr)r9r�r!rrr�$test_signature_on_mangled_parameters^s�
�z8TestSignatureObject.test_signature_on_mangled_parameterscCs:Gdd�dtj�}dd�dd�}|�|�}|�||�dS)Nc@seZdZdS)zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureNrvrrrrrFosrFrr�cSsdSrrr�rrrrprszHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo�r3r�r��assertIsInstance�r9rFrrrrr�'test_signature_from_callable_python_objns
z;TestSignatureObject.test_signature_from_callable_python_objcCs:Gdd�dtj�}Gdd�d�}|�|�}|�||�dS)Nc@seZdZdS)zKTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureNrvrrrrrFvsrFc@seZdZdS)zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooNrvrrrrrwsrr#r%rrr�"test_signature_from_callable_classts
z6TestSignatureObject.test_signature_from_callable_classcCs.Gdd�dtj�}|�tj�}|�||�dS)Nc@seZdZdS)zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureNrvrrrrrF~srF)r3r�r�rrr$)r9rFrQrrr�(test_signature_from_callable_builtin_obj{sz<TestSignatureObject.test_signature_from_callable_builtin_objcCsbt�D]6}t�|�}t|j�}t|�}|�|�|�||�qt�t�}t|j�}|�|t	�dSr)
r)r3rrr$rr/r�r,rrrrr�3test_signature_definition_order_preserved_on_kwonly�s





zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlyN).r0r>r?rrr]rkrmrqrurxr|r�rr�rKr	r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr	r
rrrrrr"r&r'r(r)rrrrrH,st
/#�F�

5
Y%CQ�
�
 S
�
rHc@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�TestParameterObjectcCsltj}|�|j|jko:|jko:|jko:|jkn�|�t	|j�d�|�dt
|j�k�dS)Nr�)r3r�r/r�rr�KEYWORD_ONLYr�r�rr.)r9r\rrr�test_signature_parameter_kinds�s���z2TestParameterObject.test_signature_parameter_kindsc	Cs�tjddtjjd�}|�|jd�|�|jd�|�|j|j�|�|j	tjj�|�
td��tjdddd�W5QRX|�
td��tjdtjjd�W5QRX|�
t
d	��tjdtjjd�W5QRX|�
td
��tjdtjjd�W5QRX|�
td
��tjdtjjd�W5QRX|�
td
��tjddtjjd�W5QRX|�
td
��tjddtjjd�W5QRXtjddtjjd�}|�
td
��|jtjjd�W5QRX|�t|��d��|�dt|�k�dS)NrrV�r�r�z)value '123' is not a valid Parameter.kindZ123znot a valid parameter namerr��name must be a strzis not a valid parameter name�$z.azcannot have default valuesrr�z
<Parameterz"a=42")r3r�r�r�r>r�r�rJrIr�r�r�r�r'rrrZr/r.r)�r9r&rrr�test_signature_parameter_object�sH������z3TestParameterObject.test_signature_parameter_objectc	Csttj}|d|jd�}|�t|�t|d|jd���|�t|�t|d|jdd���|�t|�t|j|jd���dS)Nrr�r�r�)r3r�r�r�rr�rZr)r9r\rrrr�!test_signature_parameter_hashable�s�

�z5TestParameterObject.test_signature_parameter_hashablecCs�tj}|ddtjjd�}|�||k�|�||k�|�|dk�|�|dk�|�|t�k�|�|t�k�|�||ddtjjd�k�|�||ddtjjd�k�dS)Nrr�r-)r3r�r+r/r8rT)r9r\r&rrr�!test_signature_parameter_equality�s�
�z5TestParameterObject.test_signature_parameter_equalityc	Csltjddtjjd�}|�||���|�||���|jdd�}|�|jd�|j|jd�}|�||�|jdd�}|�|jd�|�	||�|�
td��|j|jd�}W5QRX|jddd	�}|�|j
d�|�	||�|jd|jd	�}|�|j
|j�|jd|jd�}|�|j|j�|�	||�|�
td
��|j|jd�}W5QRX|j|jd�}|�||�dS)Nrr�r-r)rJrrYzname is a required attribute)r>r�z<value <class 'inspect._empty'> is not a valid Parameter.kindr�)r3r�r+rrZr�rJrIr>r�r�r�r�r�rr�)r9r&Zp2rrr� test_signature_parameter_replace�s<���z4TestParameterObject.test_signature_parameter_replacec	Cs.|�td��tjdtjjd�W5QRXdS)Nr.r�)r�r'r3r�r�rQrrr�(test_signature_parameter_positional_only
sz<TestParameterObject.test_signature_parameter_positional_onlyc	Cs`|�td��tjdtjjd�W5QRXtjdtjjd�}|�|jtjj�|�|jd�dS)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0r�Z	implicit0)	r�r�r3r�r�rr�r�r>)r9rKrrr�!test_signature_parameter_implicit
s��z5TestParameterObject.test_signature_parameter_implicitc	CsNtjdtjjd�}|�t��d|_W5QRX|�t��d|_W5QRXdS)NrPr�rr�)r3r�r+r&r0rr�r0rrr�%test_signature_parameter_immutability
s
z9TestParameterObject.test_signature_parameter_immutabilityN)r0r>r?r,r1r2r3r4r5rr6r7rrrrr*�s*	(
r*c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zedd��Zdd�ZdS) �TestSignatureBindcOs$t�|�}|j||�}||j|j�Sr)r3rr�rr�)r�rr�rQr�rrr�call
s
zTestSignatureBind.callc	Cs�dd�}|�|�|�d�|�td��|�|d�W5QRX|�td��|j|ddd�W5QRX|�td��|j|dd�W5QRXdS)	NcSsdSrrrrrrr�%
sz9TestSignatureBind.test_signature_bind_empty.<locals>.testr��too many positional argumentsrrVr�)got an unexpected keyword argument 'spam'�r�r9r�r'rprrr�test_signature_bind_empty$
s�z+TestSignatureBind.test_signature_bind_emptycCs�dd�}|�|�|�dif�|�|�|d�dif�|�|�|dd�dif�|�|j|dd	�dd
dif�|�|j|ddd	�dd
dif�|�|j|dd�dd
dif�|�|j|dddd	�dd
dif�dS)Nc_s||fSrrr~rrrr�3
sz7TestSignatureBind.test_signature_bind_var.<locals>.testrrr�r�rrrrtrrVr�r�r�r9rprrr�test_signature_bind_var2
s 
�z)TestSignatureBind.test_signature_bind_varc	Csdd�}|�|�|ddd�d�|�td��|�|dddd�W5QRX|�td	��|�|d�W5QRX|�td
��|�|�W5QRXddd�}|�|�|ddd�d�|�|�|dd�d
�ddd�}|�|j|ddd�d�|�|j|dd�d�|�|j|dd�d�dS)NcSs
|||fSrrr�rrrr�@
sz=TestSignatureBind.test_signature_bind_just_args.<locals>.testrrr�r�r:r�z missing a required argument: 'b'z missing a required argument: 'a'rVcSs
|||fSrrr�rrrr�P
s)rrrVcSs
|||fSrrr�rrrr�U
sr�r)rVrr�r�)rVrr�r�)rrVr�)rV)rrr�r<rprrr�test_signature_bind_just_args?
s&��

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|�|�|�d�|�|�|ddd�d�dS)NcWs|Srrr�rrrr�\
szATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrrrr�r�r?rprrr�!test_signature_bind_varargs_order[
sz3TestSignatureBind.test_signature_bind_varargs_orderc
Cs�ddd�}|�|�|ddddd�d�|�|�|dd�d	�|�|j|ddd
�d�|�|j|ddd�d	�|�td
��|j|ddddd�W5QRXdS)Nr�cWs||||fSrr)rr�rrrrrr�c
szDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testrrr�r�)rrr�)r�r�)rrr�rr)rrr�rr�z multiple values for argument 'c'r^)r�r<rprrr�$test_signature_bind_args_and_varargsb
s
�z6TestSignatureBind.test_signature_bind_args_and_varargscCs<dd�}|�|�|�i�|�|j|ddd�ddd��dS)Nc[s|Srrrrrrr�p
sz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrr��rrPr?rprrr�test_signature_bind_just_kwargso
s
�z1TestSignatureBind.test_signature_bind_just_kwargsc
CsJddd�}|�|�|dd�dddif�|�|j|ddddd�dddddd�f�|�|j|ddddd	�dddddd�f�|�|j|ddddd
�dddddd�f�|�|j|ddddd�dddddd�f�|�|j|dddddd
�dddddd�f�|�|j|ddddd�dddddif�|�|j|dddd�dddif�dS)Nr�c[s||||fSrrrrrrr�x
szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrrrr�rD)r�rrrP)rr�rrP)r�rrPr�)r�rrrPrtrr�)rrr�)r�r?rprrr�#test_signature_bind_args_and_kwargsw
s.
������
�z5TestSignatureBind.test_signature_bind_args_and_kwargsc	CsTdd�}|�td��|�|d�W5QRX|�|j|dd�d�dd�dd�}|�td��|�|d�W5QRXdd�}|�|j|dd	d
�d�|�|j|d	dd�d�|�td
��|j|d	ddd�W5QRX|�td��|�|dd	�W5QRX|�td��|j|dd	d	d
�W5QRX|�td
��|j|dd	dd�W5QRX|�td��|�|d�W5QRXdd�}|�|j|dd	d
�dd	if�|�|j|dd	d�dd	if�|�|j|dd	dd�dd	ddif�|�|j|ddd	d�dd	ddif�|�td��|j|dd	d�W5QRX|�|j|dd	ddd�dd	ddd�f�dS)NcSs|Srrrtrrrr��
sz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testr:rrtcSs|Srr)rrrrrrr��
sz"missing a required argument: 'bar'cSs||fSrr�rrrrrr��
srr�r>)rrr;rV)rrrPr�)rrPc[s
|||fSrr)rr�binrrrr��
srGrP)rPrrz"missing a required argument: 'foo')rPr)rrHrP)rHrP)r�r'r9r�rprrr�test_signature_bind_kwonly�
sh�����������z,TestSignatureBind.test_signature_bind_kwonlycCs�dd�dd�}t�|�}|jddddd	d
d�}|�t|j���dd
dddd	d
d�ff�|�|jddd	d
d��|�|jd�dS)NrS�rc_sdSrr)rr�rrr�rrrr��
sz=TestSignatureBind.test_signature_bind_arguments.<locals>.testrVr�rbrir�<)r�rrr��rrV)r)r�)r�rbr�)rrr�)rVr�)	r3rr�r�rM�	arguments�itemsr�r�r9r�rQr�rrr�test_signature_bind_arguments�
s
���z/TestSignatureBind.test_signature_bind_argumentsc
Csbtj}ddd�dd�}t�|�}t�t|j����}dD]}||j|j	d�||<q8|j|�
�d	�}||_|�|j
|d
ddd
dd�d
ddd
dif�|�|�
|d
d�d
ddddif�|�|j
|d
ddd
d�d
dddd
if�|�td��|j
|d
ddd
dd�W5QRX|�td��|j
|d
ddd�W5QRX|�td��|j
|d
dd�W5QRXdS)Nr�r�rr�c[s||||||fSrr)r�b_po�c_porrr�rrrr��
szCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)rrQrRr�r�rrr�r��rGzbut was passed as a keywordrV)rrrRzparameter is positional only)rR)rrQ)r�r�)r3r�rrhrirMr$rNrZr�rNr�r�r9r�r')r9r\r�rQr�r>Znew_sigrrr�#test_signature_bind_positional_only�
s.
��� z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}t�|�}|�ddd�}|�|jd�|jdddd�}|�|jd�dS)NcSsdSrr)rr9r�rrrr��
szATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testrrr�r�r�)r3rr�r�rrOrrr�!test_signature_bind_with_self_arg�
s
z3TestSignatureBind.test_signature_bind_with_self_argc	Cs�dd�}t�|�}|�td��|jddd�W5QRXdd�}|�|j|dd�d	d
dif�t�|�}|jdd�}|�|jdd
dii�dS)NcWs||fSrr�rrrrrr��
sz?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rrrVc_s||fSrrr~rrrr�sr�rrr�)r3rr�r'r�r�r9rMrOrrr�test_signature_bind_vararg_name�
s
�
z1TestSignatureBind.test_signature_bind_vararg_namecCsNdd�}|jjd}t�|i�}ttd��}|�|�||�dddddh�dS)	NcSsdd�td�D�S)NcSsh|]}||�qSrr)r�rrrr�	<setcomp>szWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<setcomp>r�rKrrrr�make_setszDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setrr�rr�r�r�)r=�	co_constsra�FunctionType�iterrr�r9)r9rYZsetcomp_codeZsetcomp_func�iteratorrrr� test_signature_bind_implicit_args
z2TestSignatureBind.test_signature_bind_implicit_argcCsHdd�}t�|�}|jddd�}|�|jddi�|�d|j���dS)Nc[s||�|�fSr)r)rr�rrrrszATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo�pos-only�keywordr�r)rr_)r3rr�r�r�r�rMrN)r9rrQ�resultrrr�"test_signature_bind_posonly_kwargss

z4TestSignatureBind.test_signature_bind_posonly_kwargsN)r0r>r?rr9r=r@rArBrCrErFrIrPrTrUrWrr^rbrrrrr8
s"


7


r8c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoundArgumentsc	Cs<dd�}t�|��d�}|�td��t|�W5QRXdS)NcSsdSrrr�rrrr#rszITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foorr)r3rr�r�r'r)r9rr�rrr�)test_signature_bound_arguments_unhashable"sz<TestBoundArguments.test_signature_bound_arguments_unhashablec	CsTdd�}t�|��d�}|�||k�|�||k�|�|t�k�|�|t�k�t�|��d�}|�||k�|�||k�t�|��d�}|�||k�|�||k�d|jd<|�||k�|�||k�dd�}t�|��d�}|�||k�|�||k�dd�}t�|�}|jddd	�}|jddd
�}|�||k�|�||k�dS)NcSsdSrrr�rrrr*rszGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorrrcSsdSrrr�rrrr<rszGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSsdSrrr�rrrrArsr�r)r3rr�r/r8rTrM)	r9rr�Zba2Zba3rZba4rQZba1rrr�'test_signature_bound_arguments_equality)s2

z:TestBoundArguments.test_signature_bound_arguments_equalityc
Cs�id�dddid�dd�}t�|�}|jdd	id
�}ttjd�D]:}|j|d��$t�t�||��}|�	||�W5QRXqBdS)Nr^rr�r�r_c[sdSrrr`rrrrIrszETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor�rbrJ)ra)
r3rr�rrcrdrerfrgr�)r9rrQr�rjZ
ba_pickledrrr�%test_signature_bound_arguments_pickleHs
z8TestBoundArguments.test_signature_bound_arguments_picklecCsHid�dddid�dd�}t�|�}|jdd	id
�}|�t|�d�dS)Nr^rr�r�r_c[sdSrrr`rrrrSrszCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor�rbrJz <BoundArguments \(a=20,.*\}\}\)>)r3rr�ZassertRegexr.�r9rrQr�rrr�#test_signature_bound_arguments_reprRs
z6TestBoundArguments.test_signature_bound_arguments_reprc
CsTdid�dd�dd�}t�|�}|�d�}|��|�t|j���dddd	ifd
ifg�|jddddd
�}|��|�t|j���dddd	ifd
ddifg�dd�}t�|�}|�d�}|��|�t|j���dg�dd�}t�|�}|��}|��|�t|j���g�ddd�}t�|�}|��}|��|�t|j���dg�dS)Nrr^c_sdSrr)rr�rrrPrrrrYrszMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor�)rr�)r�r)rrrrPrVrb)r�rL)r�r�)r)rbr�cSsdSrrr�rrrrlrscSsdSrrrrrrrursrPcSsdSrrr�rrrr|rs)rrP)r)rP)	r3rr�Zapply_defaultsr�rrMrNZbind_partialrgrrr�-test_signature_bound_arguments_apply_defaultsXs@

��

�


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultsN)r0r>r?rdrerfrhrirrrrrc!s

rcc@s$eZdZdd�Zdd�Zdd�ZdS)�TestSignaturePrivateHelperscCs:tj}|�|d�d�|�|d�d�|�|d�d�dS)Nz($self)r9z($self, obj)z($cls, /, obj)r�)r3Z_signature_get_bound_paramr�)r9�getterrrr�test_signature_get_bound_param�sz:TestSignaturePrivateHelpers.test_signature_get_bound_paramcCs8t�|�\}}}|�||�|�||�|�||�dSr)r3Z"_signature_strip_non_python_syntaxr�)r9�inputZclean_signatureZself_parameterZlast_positional_onlyZcomputed_clean_signatureZcomputed_self_parameterZcomputed_last_positional_onlyrrr�_strip_non_python_syntax�s�z4TestSignaturePrivateHelpers._strip_non_python_syntaxcCst|�dddd�|�dddd�|�dddd�|�dddd�|�d	ddd�|�d
d
dd�|�dddd�dS)NzZ($module, /, path, mode, *, dir_fd=None, effective_ids=False,
       follow_symlinks=True)zO(module, path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)rz($module, word, salt, /)z(module, word, salt)rz(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r�)rnrQrrr�&test_signature_strip_non_python_syntax�sT�������zBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r0r>r?rlrnrorrrrrj�s
rjc@s,eZdZee�ed�dd���Zdd�ZdS)�TestSignatureDefinitionsrc

Cst�}dddddddh}||O}dh}||O}d	d
ddd
h}||O}ddh}||O}t�}tt�}t|���D]`\}}	t|	�s�qnt|	t�r�||kr�|�|�||kr�qn|j	|d��|�
t�|	��W5QRXqn|D](}|j	|d��|�
|	j�W5QRXq�dS)Nr�slicer-r/r&r\�vars�round�
breakpointr��maxr��__build_class__r��
__import__)r)r2rrrrrN�callabler0rbr�re�assertIsNotNoner3rr�__text_signature__)
r9Zno_signatureZneeds_groupsZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrGr>r;rrr�test_builtins_have_signatures�s:��
z6TestSignatureDefinitions.test_builtins_have_signaturescCsVdd�}d|_t�|�}|�|�|�t|�d�d|_t�|�}|�t|�d�dS)Nc_sdSrrr~rrrr��szNTestSignatureDefinitions.test_python_function_override_signature.<locals>.funcz(($self, a, b=1, *args, c, d=2, **kwargs)z*(self, /, a, b=1, *args, c, d=2, **kwargs)z+($self, a, b=1, /, *args, c, d=2, **kwargs)z*(self, a, b=1, /, *args, c, d=2, **kwargs))rzr3rryr�r)r9r�rQrrr�'test_python_function_override_signature�s


z@TestSignatureDefinitions.test_python_function_override_signatureN)	r0r>r?rr�rKr	r{r|rrrrrp�s�1rpc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dSr)r��_next)r9r�rrrr�szNTimesUnwrappable.__init__cCs2|jdkrtd��|jdkr,t|jd�|_|jS)NrzUnwrapped too many timesr)r�r4r~r}rQrrrr�s


zNTimesUnwrappable.__wrapped__N)r0r>r?r�r1r�rrrrr}sr}c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
TestUnwrapcCs.dd�}tjdd�|�}|�t�|�|�dS)NcSs||Srrr�rrrr�sz(TestUnwrap.test_unwrap_one.<locals>.funcr�)r�)rl�	lru_cacher�r3�unwrap)r9r�r�rrr�test_unwrap_oneszTestUnwrap.test_unwrap_onecCsPdd�}|}td�D]}t�|�dd��}q|�|j|�|�t�|�|�dS)NcSs||Srrr�rrrr�sz,TestUnwrap.test_unwrap_several.<locals>.funcrVcSsdSrrrrrrr� sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)rrlr�rr�r�r3r�)r9r�r��__rrr�test_unwrap_severalszTestUnwrap.test_unwrap_severalcCsTdd�}t�|�dd��}t�|�dd��}d|_tj|dd	�d
�}|�||�dS)NcSs||Srrr�rrr�func1'sz#TestUnwrap.test_stop.<locals>.func1cSsdSrrrrrr�func2)sz#TestUnwrap.test_stop.<locals>.func2cSsdSrrrrrrr�,sz%TestUnwrap.test_stop.<locals>.wrapperrcSs
t|d�S)N�	stop_herer�r�rrrrx1rsz&TestUnwrap.test_stop.<locals>.<lambda>)�stop)rlr�r�r3r�r�)r9r�r�r�Z	unwrappedrrr�	test_stop&s

�zTestUnwrap.test_stopc	Cs�dd�}||_|�td��t�|�W5QRXdd�}||_||_|�td��t�|�W5QRX|�td��t�|�W5QRXdS)NcSsdSrrrrrrr�5rsz$TestUnwrap.test_cycle.<locals>.func1rcSsdSrrrrrrr�:rsz$TestUnwrap.test_cycle.<locals>.func2)r�r�r�r3r�)r9r�r�rrr�
test_cycle4szTestUnwrap.test_cyclecs6dd��d�_G�fdd�d�}|�t�|���dS)NcSsdSrrrrrrr�Crsz(TestUnwrap.test_unhashable.<locals>.funccseZdZdZ�ZdS)z%TestUnwrap.test_unhashable.<locals>.CN)r0r>r?�__hash__r�rr�rrr�Esr�)r�rr3r�)r9r�rr�r�test_unhashableBszTestUnwrap.test_unhashablec	Cs6tt��d�}|�td��t�|�W5QRXdS)Nrr)r}r^�getrecursionlimitr�r�r3r�)r9r;rrr�test_recursion_limitJszTestUnwrap.test_recursion_limitN)	r0r>r?r�r�r�r�r�r�rrrrrsrc@sDeZdZdd�Zdd�Ze�edkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nr��-mr3rrs)�	importlib�
import_moduler
�decoderBr�r3r�)r9�module�rcr+�errr�rrr�test_only_sourcePs
�
zTestMain.test_only_sourcec	Cs2dd�}d|_|�t��t�|�W5QRXdS)NcSsdSrrrrrrrZsz)TestMain.test_custom_getattr.<locals>.foor�)r�r&r'r3rr�rrr�test_custom_getattrYszTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|����}|�|dd�t�t����|�|d�dS)Nr�r3z%concurrent.futures:ThreadPoolExecutorrrs)r
r�rBr�r3r�r)r9r�r+r�r�rrr�test_qualname_source`s�
�zTestMain.test_qualname_sourcecCs:t�d�}tddd�\}}}|����}|�|dg�dS)Nr�r�r3r^z#Can't get info for builtin modules.)r�r�rr�rBr�)r9r�r�r+r�r�rrr�
test_builtinsks
�
zTestMain.test_builtinscCsft�d�}t��}t|d��\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nr�r�r3�	--detailsrs)r�r3r�r�)r�r�rZ!optim_args_from_interpreter_flagsr
r�r�r0r��
__cached__r�)r9r�rr�r+r��outputrrr�test_detailsrs
�zTestMain.test_details)r0r>r?r�r�r�rKrr�r�r�rrrrr�Os	
�
	r�c@s0eZdZe�d�Ze�d�Zdd�Zdd�ZdS)�
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    c	Cs>t�|�}t|��"}|�|���d�|�d��W5QRXdSrU)r3r�r�r�r�rB)r9r�r�Z
inspected_srcr�rrr�assertInspectEqual�s

�zTestReload.assertInspectEqualc
Csdtd|j��N\}}t�|�}|�||�t|d��}|�|j�W5QRX|�||�W5QRXdS)NZ
reload_bugr�)r�
src_beforer�r�r�r�r��	src_after)r9r>r�r�r�rrr�test_getsource_reload�s
z TestReload.test_getsource_reloadN)	r0r>r?�textwrap�dedentr�r�r�r�rrrrr�s

r�cCs@tttttttttt	t
ttt
tttttttttttttt�dSr)rrQr�r^rsr}r�r�rXr�r�r�r�rr�rHr8r*rcrjrprjrrr�r�r<rNrrrr�	test_main�s:�r��__main__)drrhrirlr�r3rr r�Zos.pathrrrcr�r^rar�r�r�Z
unittest.mockrfZconcurrent.futuresr�ImportErrorZtest.supportrrrrr	Ztest.support.script_helperr
rr�rr[r
rSrZtest.test_importrr�r�r�rr�r�r)r,r�rr�r-rMrNrRr?rSrTrXr�r�r�r�rNrQr^rsr}r�r�r�r�r�r�rjr�rr�r�r�r�rr<r�rFr�rGrHr*r8rcrjrpr}rr�r�r�r0rrrr�<module>s�


87K
*ER8zIc@jb?D
<0