Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_inspect.cpython-38.opt-1.pyc
U

>��g$_�@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�0/opt/cppython/lib/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)�self�	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rNcCs"td�2z3dHW}|Vq6dSrKrLrMrrr� async_generator_function_examplemsrOc�sdS�N�spamr�r9rrr�coroutine_function_exampleqsrSccs
dVdSrPrrRrrr�gen_coroutine_function_exampletsrTc@seZdZdd�ZdS)�EqualsToAllcCsdS�NTr�r9r=rrr�__eq__zszEqualsToAll.__eq__N)r0r?r@rXrrrrrUysrUc@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))rNz#async_generator_function_example(1)rO�ignorezcoroutine_function_example(1)rS�MemberDescriptorTypezdatetime.timedelta.days)!r>r3rArCrZ�sys�exc_inforDrG�hasattr�typesZisgetsetdescriptorr8�type�tb_frame�f_localsr7rErF�isdatadescriptorrHr4rJr5�warnings�catch_warnings�simplefilterrIr6Zismemberdescriptor�datetimeZ	timedeltaZdaysrRrrr�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)rOrTrSr8r3r6�	functools�partialrIr/r4rHr5rJ�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@rurrrr�Future�srvc@seZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN�r0r?r@rrrr�	NotFuture�srxcSsdSrrrrrr�<lambda>�rtz1TestPredicates.test_isawaitable.<locals>.<lambda>)r8r3ZisawaitablerSrTr/ruro)r9rsrqrprvrxZnot_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|�t�tj��|�t�gj��dSr)r/r3Z	isroutiner\rQ�countrRrrr�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>r3rBr/�list�objectr8)r9rrrr�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>.AbstractClassExamplecSsdSrrrRrrrr
sz@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN�r0r?r@rr�r�rr�AbstractClassExamplesr���	metaclassc@seZdZdd�ZdS)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSsdSrrrRrrrrsz8TestPredicates.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>.AbstractClassExamplecSsdSrrrRrrrr"szUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr�rr�rrr�!sr�c@seZdZdd�ZdS)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSsdSrrrRrrrr&szMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooNr�rrrrr�%sr�TFc@seZdZdS)zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildNrwrrrr�
AbstractChild+sr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildNrwrrrr�AbstractGrandchild-sr�c@seZdZdS)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildNrwrrrr�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@rkrrrzr|r�r�r�r�rrrrrY}s*/		rYc@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>r3rGrDrRrrr�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�rQ�    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�rQr�r�r�z    q = y / 0
)r�r r��trrr�rRrrr�
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\rBr�r�r�r�r�r�Zgetclasstreer�)r9�classesZtreerrr�test_getclasses�sR��
�
��
���

��
���z(TestRetrievingSourceCode.test_getclassescCs6t�ttj�}|�|dtjfdtjfdtjfg�dS)Nr��lobbestrQ)r3r�r\r7r�r�rrQ)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�rRrrr�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
contradictionrRrrr�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�r3ZcleandocrRrrr�
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�rRrrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs8t�|jjd�}|�|jdd�|�|jdd�dS)N�2rr
rz'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�rrRrrr�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.pyrr#r�None)
r�rr3r�r\rQr�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�rRrrr�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*r�r!)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�CMsr4c@seZdZdS)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNrwrrrrr�sr�r�)rcr(r)r3r&)r9r4r�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)�	ExceptionrRrrr�__repr__%szMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r0r?r@r7rrrr�	ErrorRepr$sr8)r(r)r3r&)r9r8Zerrrr�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>�dummyz
def x(): passza=10r��single)rbr:r_rr��
__loader__r#�__dict__r�r3r�r��__code__rr)r9r:�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"rHr#rr3r�)r9rI�nsrrGr�test_proceed_with_fake_filename6sz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecCs|�tjjdd�dS)N�r�)r�r\r�r@rRrrr�test_getsource_on_code_objectGsz6TestRetrievingSourceCode.test_getsource_on_code_objectN)r0r?r@r\r�rrr��skipIfr_�flags�optimizerrr	rrrrrrr%r'r-r.r0r5r9rCrKrMrrrrr��s8(�
�



	
r�c@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dSrl)ZmaxDiffr�r\�currentframerRrrr�test_range_toplevel_frameMsz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dSrl)r�r\rZrRrrr�#test_range_traceback_toplevel_frameQszETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r0r?r@r\r�rSrTrrrrrQJsrQc@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscCs|�tjdd�dS)Nr��)r��mod2�wrappedrRrrr�test_wrapped_decoratorWsz%TestDecorators.test_wrapped_decoratorcCs|�tjdd�dS)Nr��
)r�rWZgonerRrrr�test_replacing_decoratorZsz'TestDecorators.test_replacing_decoratorcCs|�tjdd�dS)N��)r�rWr
rRrrr�test_getsource_unwrap]sz$TestDecorators.test_getsource_unwrapcCs|�tjdd�dS)N�q�s)r�rWZfunc114rRrrr�test_decorator_with_lambda`sz)TestDecorators.test_decorator_with_lambdaN)	r0r?r@rWr�rYr[r^rarrrrrUTs
rUc@sPeZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscCs|�tjdd�dS)N�)r�rWZollrRrrr�test_oneline_lambdaesz!TestOneliners.test_oneline_lambdacCs|�tjdd�dS)N��)r�rWZtllrRrrr�test_threeline_lambdaisz#TestOneliners.test_threeline_lambdacCs|�tjdd�dS)N�!�")r�rWZtllirRrrr�test_twoline_indented_lambdansz*TestOneliners.test_twoline_indented_lambdacCs|�tjdd�dS)N�%)r�rWZonelinefuncrRrrr�test_onelinefuncsszTestOneliners.test_onelinefunccCs|�tjdd�dS)N�(�))r�rWZmanyargsrRrrr�
test_manyargswszTestOneliners.test_manyargscCs|�tjdd�dS)N�,�-)r�rWZtwolinefuncrRrrr�test_twolinefunc}szTestOneliners.test_twolinefunccCs|�tjddd�dS)Nr�1)r�rWrrRrrr�test_lambda_in_list�sz!TestOneliners.test_lambda_in_listcCs|�tjdd�dS)N�7)r�rWZ	anonymousrRrrr�test_anonymous�szTestOneliners.test_anonymousN)
r0r?r@rWr�rdrgrjrlrorrrtrvrrrrrbcsrbc@s(eZdZeZdd�Zdd�Zdd�ZdS)�TestBlockCommentscCs|�tjdd�dS)N�`�r)r�r\r�rRrrr�test_toplevel_class�sz%TestBlockComments.test_toplevel_classcCs|�tjjdd�dS)N�c�h)r�r\r�r�rRrrr�test_class_method�sz#TestBlockComments.test_class_methodcCs|�tjjdd�dS)N�m�p)r�r\r�ZasyncfrRrrr�test_class_async_method�sz)TestBlockComments.test_class_async_methodN)r0r?r@r\r�rzr}r�rrrrrw�srwc@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�rWZwith_commentrRrrr�test_with_comment�sz TestBuggyCases.test_with_commentcCs|�tjddd�dS)Nr�?�@)r�rWZ
multiline_sigrRrrr�test_multiline_sig�sz!TestBuggyCases.test_multiline_sigcCs|�t��jdd�dS)N�G�H)r�rWZfunc69Zfunc71rRrrr�test_nested_class�sz TestBuggyCases.test_nested_classcCs|�tjdd�dS)N�M)r�rWZfunc77rRrrr�#test_one_liner_followed_by_non_name�sz2TestBuggyCases.test_one_liner_followed_by_non_namecCs|�tjjdd�dS)N�S)r�rWZcls82Zfunc83rRrrr�test_one_liner_dedent_non_name�sz-TestBuggyCases.test_one_liner_dedent_non_namecCs|�tjdd�dS)N�X�Z)r�rWZfunc88rRrrr�&test_with_comment_instead_of_docstring�sz5TestBuggyCases.test_with_comment_instead_of_docstringcCs|�tjdd�dS)N�_�a)r�rWZmethod_in_dynamic_classrRrrr�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�
findsourcerRrrr�test_findsource_binary�sz%TestBuggyCases.test_findsource_binarycCs�dg}t|ddd�}|�ttj|�|�ttj|�dd||jftj|j<z0|�	t�|�|df�|�	t�|�|d�W5tj|j=XdS)NrrZ_dynamically_created_filer#r)
rr(r�r3r�r�r!r"r#r�)r9r�rrrr�!test_findsource_code_in_linecache�sz0TestBuggyCases.test_findsource_code_in_linecachecCs:dD]0}td|d�}|�ttj|�|�ttj|�qdS)N)r�r;rr#)rr(�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\rr�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�rWZClassWithMethod�methodrRrrr�test_getsource_on_method�sz'TestBuggyCases.test_getsource_on_methodcCs|�tjjdd�dS)N��)r�rWZcls135Zfunc136rRrrr�test_nested_func�szTestBuggyCases.test_nested_funcN)r0r?r@rWr�r�r�r�r�r�r�r�r�rNrar�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)�shutil�rmtreer�rRrrr�tearDown�szTestNoEOL.tearDowncCs|�|jjdd�dS)Nrr)r�r��XrRrrr�
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 descriptorr1�rrrr�__get__�sz_BrokenDataDescriptor.__get__cGst�dSr)�RuntimeErrorr�rrr�__set__�sz_BrokenDataDescriptor.__set__cGstd��dSr�r1r�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 descriptorr1r�rrrr�sz_BrokenMethodDescriptor.__get__cGstd��dSr�r1r�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>.ANrwrrrr�Asr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNrwrrrr�Bsr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNrwrrrrr�sr�c@seZdZdS)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNrwrrrr�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�rQr(�
ValueErrorrW�	keyworded�	annotated�keyword_only_argrRrrr�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�rWr�r�r�r�Zall_markersZ all_markers_with_args_and_kwargsZall_markers_with_defaultsrRrrr�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�rRrr�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@rm�wrapsr\rQr��
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@rmr�r\rQr�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@rmr�r\rQr�rrrr�C_init�s
r�)	rmr�r\rQr�r�rnr�r�)r9r�r�r�r�r�rrRr� 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>.testrQ�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)NrQr��r�returncSsdSrr�rrrrr��rtzITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSsdSrrrrrrr��rt)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��statrRrrr�#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�builtinrrrr� test_getfullargspec_builtin_func�s
z8TestClassesAndFunctions.test_getfullargspec_builtin_funcc	Cs2ddl}|j}|�t��t�|�W5QRXdS)Nr)r�docstring_no_signaturer(r)r3r�)r9rrrrr�-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�r�r��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>.AcSsdSrrrRrrrrB�sz;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN�r0r?r@rBrrrrr��sr�r9)r�r�rB�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�rtz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSsdSrrr�rrrr�rtz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSsdSrrrRrrr�getp�rtz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSsdSrrrRrrrrB�rtz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSsdSrrrRrrr�m1�rtz<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)r0r?r@r�staticmethodr�classmethodr r3r&rBr!�datablobr��ddr��mdrrrrr��sr�r��
static method�missing __new__r�r�zmissing __init__rzmissing static methodr�class method�missing class methodr&r3zmissing propertyrBzmissing plain method: %rr!�missing plain methodr%�datazmissing datar'zmissing method descriptorr&zmissing data descriptorc@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSsdSrrrRrrrrB�rtz;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNrrrrrr��sr�c@seZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSsdSrrrRrrrrB
rtz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSsdSrrrRrrrrrtz;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r0r?r@rBrrrrrr�sr�c@seZdZdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSsdSrrrRrrrr!rtz<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r0r?r@r!rrrrr�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)r	r*r+rr�r,�__add__�__and__)�dir�__builtins__�getattr�
isinstancercr3r�r��boolr�r�)r9rArr.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�rQ�r�r~�r9rAr�rrr~>szUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__�r0r?r@r~r�rrr�r�Meta=sr;c@seZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcSsdS)Nr�rrRrrrr�CszKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r0r?r@rb�DynamicClassAttributer�rrrr�VABsr=r�r�r-rQ)rcr3�	Attributer?r�r�)r9r;r=Zshould_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��SrrrW��NoBoolrrrXMszKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSstd��dS)Nz,This object does not specify a boolean value)�NotImplementedErrorrRrrr�__bool__Ps�zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)r0r?r@rXrCrr@rrrALsrAcseZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)r0r?r@r&rr@rr�HasNBTsrDr&r-)r�r3r>r&r�r�)r9rDZshould_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�fishrrRrrr�__dir__]szUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r0r?r@rGrHrrrrr;[sr;c@seZdZdS)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNrwrrrr�Class_srIr�rGr-rF�rcr3r>r�r��r9r;rIZshould_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�rrrrHfszLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cs|dkrdSt��|�S)NrMr�)r�Z_Meta__getattrr9r�rrr~hszPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__�r0r?r@rHr~r�rrr�rr;esr;c@seZdZdS)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNrwrrrrrIlsrIr�rMr-r�rJrKrrr�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�rrrrHssz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cs|dkrdSt��|�S)NrPrr8r9r�rrr~usz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__rNrrr�r�Meta1rsrQcs$eZdZdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSsddddgS)Nr�r?r0�tworr�rrrrHzsz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cs|dkrdSt��|�S)NrRrr8r9r�rrr~|sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__rNrrr�r�Meta2ysrScs*eZdZ��fdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs,tttddddg��|���|����S)Nr�r?r0�three)r�rr2rHr��rQrSrrrH�s
��z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cs|dkrdSt��|�S)NrTr�r8r9r�rrr~�sz_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__rNrrUr�r�Meta3�srVc@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nrwrrrr�Class1�srWr�c@seZdZdS)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nrwrrrr�Class2�srXrPr-rrRrrTr�)rcr3r>r�r�)	r9rVrWrXZshould_find1Zshould_find2Zshould_find3ZccaZsfrrUr�,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�rrrrH�szSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N�r0r?r@rHrrrr�M�sr]c@seZdZdS)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNrwrrrrr��sr�r�cSsg|]}|d�qS�rr�r�rrrrr��szTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r[)rcr3r�r��r9r]r�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>.EmptyNrwrrrr�Empty�srbcs$dt|�krt�|j�rdS�|�S)Nr0F)r2rar0�r��rb�predrrrX�szZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped�r�)rerXrrdr�pred_wrapper�szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr'r&c@seZdZdS)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNrwrrrrr��sr�)r�r3�ismethoddescriptorrfr�r�r?)r9r�rgrhrfr�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>.BcSsdSrrrRrrrr��sz;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN�r0r?r@r�rrrrr��sr�r�)r�r�r3r�r�rE)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��	scrambledr8)r�rAr�rrr~�szOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__r:rrr�rr]�sr]c@seZdZejdd��ZdS)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSsdSrPrrRrrrr��szHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)r0r?r@rbr<r�rrrrr��sr�r�)r�rl)r�rQ)rcr�r3r�)r9r]r�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
dddgSrZrr�rrrrH�szITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__Nr\rrrrr]�sr]c@seZdZdS)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNrwrrrrr��sr�r�cSsg|]}|d�qSr^rr_rrrr��szJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r[)rcr3r�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�rNr	rrrrrrr/r7r?rErLrOrYrarirkrmrnrrrrr�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�valuercrrrr��rtzOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__)N�r0r?r@r�rrrr�NonDataDescriptor�srrc@seZdZdd�ZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0cSsdSrr)r9rArprrrr��rtzMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N�r0r?r@r�rrrr�DataDescriptor0�srtc@seZdZdd�ZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1cSsdSrrr9rrr�
__delete__�rtzPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)r0r?r@rurrrr�DataDescriptor1�srvc@seZdZdZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nrsrrrr�DataDescriptor2�srwz-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)r8r3rfr/)r9rrrtrvrwrrr�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�srzza slot is a data descriptor)r/r3rfr)r9rzrrr�	test_slot�s�zTestIsDataDescriptor.test_slotcCs&Gdd�d�}|�t�|j�d�dS)Nc@seZdZedd��ZdS)z6TestIsDataDescriptor.test_property.<locals>.PropertiedcSsdSrrrRrrr�
a_property�szATestIsDataDescriptor.test_property.<locals>.Propertied.a_propertyN)r0r?r@r3r|rrrr�
Propertied�sr}za property is a data descriptor)r/r3rfr|)r9r}rrr�
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>.TestcSsdSrrrRrrr�instance_methodrtzATestIsDataDescriptor.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@rr$r�r#r�rrrr�Tests

r�cSsdSrrrrrrr�sz5TestIsDataDescriptor.test_functions.<locals>.functioncSsdSrrrrrrry	rtz5TestIsDataDescriptor.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�r8r3rfrr�r�)r9r�r�Za_lambdarrr�test_functionss$�����z#TestIsDataDescriptor.test_functionsN)r0r?r@rxr{r~r�rrrrro�sroc@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.fNrjrrrrr�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�rcrr�addLszFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r�r�rrcr�
make_adderKsz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�Srr�r��r�r�rrryQrtzFTestGetClosureVars.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���|�Srrrcr�rrryYrtzMTestGetClosureVars.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�rcrrryhrtzITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>rrcrrcrryhrtz7TestGetClosureVars.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)NcSsdSrrrrrrrmrtz9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSsdSrVrrrrrryortz>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>.TNrwrrrr�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�coderJrrr�_private_globalsxs
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nr3r�r�)r��popr3r�r�r�r��r9r�rJr�rrr�test_builtins_fallback~sz)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nr�rr3r�)r�r3r�r�r�r�rrr�test_builtins_as_dict�sz(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nr3r�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�rrrrr�s&r�c@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|�||�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.r6Zfailr�rcr�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�r"rz1,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=0cSsdSrrrrrr�f5?rtz0TestGetcallargsFunctions.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>.FooNrwrrrr�Foo\sr�)r�r��inst)r9r�rrrr�[szTestGetcallargsMethods.setUpcs$tt|�j}|d|�|j_|jjS)Nzself, )r�r�r�r�r�r�)r9r�mkr�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 t|pi|jd�}|d||fS)N)r�zinst,)r�r�r�rrrr�usz3TestGetcallargsUnboundMethods._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(r2�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>.OtherThingNrwrrrr�
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
||_dSrrc�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 existr1rRrrrr��sz0TestGetattrStatic.test_property.<locals>.Thing.xN)r0r?r@r3r�rrrrr��sr�r�r�r�rrrr~�szTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@seZdZdd�ZdS)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWstd��dSr�r1)�_rrrr��szSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nrqrrrr�
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)�_xrRrrrr��sz=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r0r?r@rbr<r�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>.OtherThingNrwrrrrr��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�NrrcrRrrrr��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>.ThingNrwrrrrr��sr�r�r}rc@seZdZdS)z-TestGetattrStatic.test_metaclass.<locals>.subNrwrrrr�sub�sr�c@seZdZdZdS)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�Nr�rrrrr��sr�c@seZdZdS)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNrwrrrr�OtherOtherThing�sr�r�r��rcr�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��assertNotEqualrRrrr�test_no_dict_no_slots�sz'TestGetattrStatic.test_no_dict_no_slotsc	Cs2tt�� }|�t�|d�t|�j�W5QRXdS)NrA)r�r�r�r3r�rcrA)r9�handlerrr�%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�rcrRrrrr��sz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)r0r?r@r�r�rrrrr��sr�c@seZdZdS)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNrwrrrrr��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__Nrqrrrrr��sr�cseZdZ��ZdS)z.TestGetattrStatic.test_descriptor.<locals>.FooN�r0r?r@r�r�r�rrr��sr�rr�cSsdSrr)rr%�vrrrry	rtz3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r�r?r�r3r�r��r9r�rrr	r�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�rrrrrr�szLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__Nrqrrrrr�sr�cseZdZ��ZdS)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNrrr	rrr�sr�c@seZdZdS)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNrwrrrrr�sr�r�r�)r�rcr�r3r�r?)r9r�r�rr	r�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|_tSrV)�executedr�rRrrrr�szETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r0r?r@rr3r�rrrr�	Somethingsrrr�)r�r�r3r�r8r)r9rrrrrr�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>.MetacSstfSrrfrRrrr�__mro__*sz<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)r0r?r@r3rrrrrr;)sr;c@seZdZdZdS)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�Nr�rrrrr.src@seZdZdS)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNrwrrrrr1srr�rr�r�)r9r;rrrrr�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�_iSrV)�calledrR�r�rrr?=sz=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r0r?r@rr3r?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��||�dSrV)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|_dSrV)rrRrrrr?YszHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N�r0r?r@r3r?rrrrr;Xsr;c@seZdZdZdd�ZdS)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSs
d|_dS�Nr��rQrRrrrr�`szITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)r0r?r@rr�rrrrr�]sr�r�rQr�)rcr�r3r�r8r)r9r;r�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)rr�rRrrrr?nsz`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__Nrrrrr�MetaMetamsr#c@seZdZdZdS)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)r0r?r@rrrrrr;ssr;r�c@seZdZdS)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNrwrrrrr�vsr�rQ)rcr(r2r3r�r8r)r9r#r;r�rrr�3test_metaclass_with_metaclass_with_dict_as_propertylszETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)r0r?r@r�r�r�r~r�r�r�r�r�r�rrrrr
rrrrrr"r$rrrrr�{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�rL�Znumberrrr�number_generator�sz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r9r(rrrr�szTestGetGeneratorState.setUpcCst�|j�Sr)r3Zgetgeneratorstater)rRrrr�_generatorstate�sz%TestGetGeneratorState._generatorstatecCs|�|��tj�dSr)r�r*r3ZGEN_CREATEDrRrrr�test_created�sz"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dSr)�nextr)r�r*r3Z
GEN_SUSPENDEDrRrrr�test_suspended�s
z$TestGetGeneratorState.test_suspendedcCs"|jD]}q|�|��tj�dSr)r)r�r*r3�
GEN_CLOSEDrMrrr�test_closed_after_exhaustion�s
z2TestGetGeneratorState.test_closed_after_exhaustionc	Cs8|�t��|j�t�W5QRX|�|��tj�dSr)r(r�r)r*r�r*r3r.rRrrr�%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'rRrr�running_check_generator�szCTestGetGeneratorState.test_running.<locals>.running_check_generator)r)r,)r9r1rrRr�test_running�s
z"TestGetGeneratorState.test_runningcCs@d��}|D].}tt|�}|�|t|��|�|t|��qdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED�r�r4r3r��reprr�r9�namesrA�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�rLr)�lstrr�r
rrrr�each�s
z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrrr�)rr9r�)rr9r
r�rL)rr9r
r�r)N�r�r3�getgeneratorlocalsr,�
StopIteration)r9r:Znumbersrrr�test_getgeneratorlocals�s:
�������z-TestGetGeneratorState.test_getgeneratorlocalscCsXdd�}|�}|�t�|�i�zt|�Wntk
r@YnX|�t�|�i�dS)Ncss
dVdSrlrrrrr�	yield_one�szFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_oner;)r9r?rPrrr�test_getgeneratorlocals_empty�sz3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|�ttjd�|�ttjdd��|�ttjt�|�ttjd�dS)NrcSsdSrVrrcrrrry�rtzETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)rr�)r(r)r3r<r2rRrrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)r0r?r@r�r*r+r-r/r0r2r8r>r@rArrrrr%}sr%c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs&tjdd����fdd�}|�|_dS)Ncsstd�D]
}|VqdSr&rLr'rrr�number_coroutine�sz5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s��IdHdSrrr�rCrr�	coroutine�sz.TestGetCoroutineState.setUp.<locals>.coroutine)rbrE)r9rErrDrr��s
zTestGetCoroutineState.setUpcCs|j��dSr)rErorRrrrr��szTestGetCoroutineState.tearDowncCst�|j�Sr)r3ZgetcoroutinestaterErRrrr�_coroutinestate�sz%TestGetCoroutineState._coroutinestatecCs|�|��tj�dSr)r�rFr3ZCORO_CREATEDrRrrrr+�sz"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dSr)rE�sendr�rFr3ZCORO_SUSPENDEDrRrrrr-�sz$TestGetCoroutineState.test_suspendedcCsBz|j�d�Wqtk
r(Yq,YqXq|�|��tj�dSr)rErGr=r�rFr3�CORO_CLOSEDrRrrrr/�s
z2TestGetCoroutineState.test_closed_after_exhaustionc	Cs8|�t��|j�t�W5QRX|�|��tj�dSr)r(r�rEr*r�rFr3rHrRrrrr0sz;TestGetCoroutineState.test_closed_after_immediate_exceptioncCs@d��}|D].}tt|�}|�|t|��|�|t|��qdS)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSEDr3r5rrrr8s

z)TestGetCoroutineState.test_easy_debuggingcshtjdd������d�fdd�	}|�}|�t�|�d�d��|�d�|�t�|�d�dd��dS)	Ncss
dVdSrrrrrr�gencorosz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�sd}�IdHdSrPrr��rIrrr�sz;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rrIrQ)rrIr�)N)rbrEr�r3ZgetcoroutinelocalsrG)r9r�rqrrJr�test_getcoroutinelocalss
�

�z-TestGetCoroutineState.test_getcoroutinelocalsN)r0r?r@r�r�rFr+r-r/r0r8rKrrrrrB�s		rBc@seZdZdS)�MySignatureNrwrrrrrL srLc@seZdZdS)�MyParameterNrwrrrrrM%srMc@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)rAr��empty�
annotationrr�r�)r��paramrrr�	<genexpr>0s��z0TestSignatureObject.signature.<locals>.<genexpr>.)r3r�tupler$�values�return_annotationrO)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>.testrZr�r\r[r]rr^r�zwrong parameter order�rAzduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r�rY)r3r�r�r�rrr$�replacer�r�r�r/r4r+)
r9�S�Pr�rWrZr\r[r]rr^r�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��rrc[sdSrr�rr�rrVrrrrirtz=TestSignatureObject.test_signature_object_pickle.<locals>.foorF)�
pickle_ver�subclassr)rAr�)r$rUT)rmrnr3rr�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�rMr�r��collections�OrderedDictr$rLr`rTrUr/r5)	r9rZfoo_partialrW�verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_picklehs.

��z0TestSignatureObject.test_signature_object_picklec	CsRdd�}t�|�}|�t��d|_W5QRX|�t��d|jd<W5QRXdS)NcSsdSrrrrrrr��sz=TestSignatureObject.test_signature_immutability.<locals>.testrr)r3rr(r2rr)r$�r9r�rWrrr�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�rcSsdSrrr�rrrr��sz9TestSignatureObject.test_signature_on_wargs.<locals>.test))�r..�positional_or_keyword)r�.rrzr�rurvrrr�test_signature_on_wargs�s�z+TestSignatureObject.test_signature_on_wargscCs@tttd�dd�}|�|�|�ddtdfddtdfftf�dS)N)rr�rcSsdSrrr�rrrr��sz;TestSignatureObject.test_signature_on_wkwonly.<locals>.testr.�keyword_onlyr�)�floatrr�r�rrvrrr�test_signature_on_wkwonly�s

���z-TestSignatureObject.test_signature_on_wkwonlycCsJddd�dddtd�dd	�}|�|�|�d
ddd
dddtdffdf�dS)NrZr�)r�rr�baz)r�rrQr�c_sdSrr)rr�rQr�rr�rrrr��sz@TestSignatureObject.test_signature_on_complex_args.<locals>.testry)r�rZrrz)r.r�var_positional)rQ.rr|)r�r�.r|r�.�var_keyword)rZ)r�r�rrvrrr�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@r$r�r#r�rmr�r�r�r�r�r�r�r�rrr��s

r��)�r..r�.�)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/r5r�r�r�r$rTrA�rrrRrr�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/r5r�r$rr�rTrAr�rRrr�
test_callable�s

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jSr)r$r�r_)rrrr&�rtz9TestSignatureObject.test_signature_on_builtins.<locals>.prrr�sbytesr�g��Q�	@r%�#�nr�Tr�F�localr�r_r;sabczno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r0r?r@rcr�rrrr�ThisWorksNow	sr�)rrr�r_�maxsizer�r$r�r	r
rr�StringIO�bytes�	maketransr��fromkeysrcr�r�r0�minr�r��__delitem__r3ruZ#docstring_with_signature_but_no_doc)r9rr�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�rcs
�||�Srrr�r�rr�wrapper$	sz\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)rmr�r��r�r�rr�r�	decorator#	szKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorr�c_sdSrrr�rrr�wrapper_like.	rtzNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF�Zfollow_wrapped)rrr�r3rr�)r9rr�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)rr�r�r3rrr)r9rrrr�'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)r3rrRrrr�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�ra)r<�Z_orig_isdescrr�_isdescj	s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
r3r��
from_callabler�rr�rhr�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@rr�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.m2cSsdSrrrrrrr��	szCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__N)r)r0r?r@r�r�r!r�r�rrrrr��	sr���r�..rz)r�r.rzr�zinvalid method signature)r�rr!r�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�r!rrrrr��	sr�c_sdSrrr�rrr�m1d�	szDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dr�)rmr�r!r�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@r$rrrrrr��	sr�))r�)r�r.r|.�rr�r�r9r��methrrr�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@r#rrrrrr��	sr�)))r�..rz)r�..r|.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)rncSsdSrrrrrrr��	sz;TestSignatureObject.test_signature_on_partial.<locals>.testrt�has incorrect argumentsrrcSsdSrr�rr�rr�rrrr��	s))ry�r�..rz�r..r|�r�..r|.))r�r�r�.rrd))r��rr.r|r�.)r�r))ry�r�r.r|r�r�.))r�r�r�.))�rr.r|�r�..r|r�r�.c_sdSrr)rr�rr�rrrr�
s))r�r�r�.))r�r�r�.r�Tr)r�r�))r��r�r.r|r�.�r�))ryr�r�r�.)r�r�r�recSsdSrrr�rrrr�?
sr�r.rzcSs|SrrrrrrrO
sz:TestSignatureObject.test_signature_on_partial.<locals>.foorZ�)))rr�.r|.cSs
|||fSrrr�rrrrY
srf)))r�rf.r|r�.)rrfrZcSs||||fSrrr�rrrrc
s)r�r)r�r�))ry)r�rZ.r|)rr�.r|)r�rf.r|.��r�r�)r�r�r�rfcSs
|||fSrrr�rrrrp
s�
)r�rr�rL)r�rLr�)rrLr�)rLrZr�c[sdSrr)rr�rr�r�rrrr�
srr�r�z(a, b, /, c, d, **kwargs)))�r�..Zpositional_only�r..rz�r�..rzr�.))r�r�r�.))r�r�.))�rr�.r|r�r�.))r�r�r�r�.)rrr�)rmrnr3r�r�rr�r�r�r��bindrr�r$�copyr`r�r�rTr)
r9rnr�r�rWZpsigrZ_foo�ba�paramsrrr�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�rQr�cSsdSrr)�itrrrrrr��
sr�rrdNr�rr�rrr��
s)))r�..rzry�rr.r|rQ))ryr�rQcs$eZdZdd�dd�Z�ed�ZdS)r��annorRcSsdSrrr�rrrr��
sr�rN)r0r?r@r�r�rr�rrr��
s)))r9.r�rz.)	rmr�r�r�r3rr�r�r�)r9r�rr�r�test_signature_on_partialmethod�
s���z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSsdSrrrrrrr�
rtzETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorQz(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��rmr�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..rzryr�.))ryr�.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�r3rrSr$rTr`r�)r�r�rW�
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)rmr�rrr��__wrapped__)r9r�r�r)r�rmr�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��)ry.c@seZdZdd�ZdS)�7TestSignatureObject.test_signature_on_class.<locals>.CMcSsdSrr)r�rrrrr�%sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__Nr�rrrrr4$sr4c@seZdZdd�ZdS)r�cSsdSrr�r9r�rrrr�(sr�Nr�rrrrr�'sr�cs"eZdZdd��fdd�
Z�ZS)r�rrycst��||||�Sr�r�r���mclsrA�bases�dctrr�rrr�0s�?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__�r0r?r@r�r�rrr�rr4/sc@seZdZdd�ZdS)r�cSsdSrrr�rrrr�3sr�Nr�rrrrr�2sr�))�rA..rz�r�..rz�r�..rz)rr.r|.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMrrycst��||||�Srr�r�r�rrr�Bsz@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�Sr)rc)r��nm�bs�dtrrrr�DszATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r0r?r@r�r�r�rrr�r�CMMAsrcs"eZdZdd��fdd�
Z�ZS)r�r�rcst��||||�Srr�)r�rAr�r�rr�rrr�Gsr�r�rrr�rr4Fsc@seZdZdd�ZdS)r�cSsdSrrr�rrrr�Jsr�Nr�rrrrr�Is)))r..rz)r..rz)r..rz.cs"eZdZdd��fdd�
Z�ZS)r�rrcst��|||�Sr)r�r�)r�rAr�r�rr�rrr�_sz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r0r?r@r�r�rrr�rr4^sc@seZdZdd�ZdS)r�cSsdSrrr�rrrr�bsr�Nr�rrrrr�as))r�r�r�)rr.r|.)r�rrc)r9r�r4rrrr�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>.CNrwrrrrr�psr�rXc@seZdZdS�zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNrwrrrrr�rsr�c@seZdZdSrrwrrrrr�vsc@seZdZdSrrwrrrrr�wszcallable.*is not supported)r�rr3rrcr�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>.PNrwrrrrrb�srbc@seZdZdS)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNrwrrrr�
EmptyTrait�sr	c@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nrwrrrr�P2�sr
c@seZdZdd�ZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSsdSrr)r9rQrrrr��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�src@seZdZdS)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nrwrrrr�P4�sr
r�z
(foo, bar))r�rr3rr	r
rc)r9r�rbr	r
rrr
rrr�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>.SpamNrwrrrrr��sr�r�c@seZdZdS)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNrwrrrr�Bar�src@seZdZdS)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNrwrrrr�Wrapped�srcSsdSrrrrrrry�rtzHTestSignatureObject.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)NrZcSs|Srrrrrrry�rtz?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rrZ.rz.)rZrurRrrr�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)NrxcSsdSrrr�rrrr�rtz8TestSignatureObject.test_signature_equality.<locals>.foor�cSsdSrrr�rrrr�rtz8TestSignatureObject.test_signature_equality.<locals>.barcSsdSrrr�rrrr�rtr�cSsdSrrr�rrrr�rtcSsdSrrr�rrrr�rtr�cSsdSrr�rrrrrr�rtcSsdSrrr�rrrr�rtcSsdSrr�r�rrrrrQ�rtz9TestSignatureObject.test_signature_equality.<locals>.spamcSsdSrrr�rrrr�rtcSsdSrr�rr�rrrrr�rtrrcSsdSrrr�rrrr�rtcSsdSrrrrrrr�rtcSsdSrr��posrr�rrrrr�rtcSsdSrr�rrr�rrrrr�rtcSsdSrrrrrrrrtcSsdSrrrrrrrrt�r�c_sdSrr)rrr�rrr�rrrrrtc_sdSrr)rrr�rrr�rrrrrt)
r�r}r8r3rr/rUr��hashr)r9rrrQrrr�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)NcSsdSrrrrrrrrtz8TestSignatureObject.test_signature_hashable.<locals>.foorr�rQ�rUrr�cSsdSrrrrrrrrtz8TestSignatureObject.test_signature_hashable.<locals>.barcSsdSrrrrrrrrt�unhashable typecSsdSrrrrrrr"rt)r3r�r�r�POSITIONAL_OR_KEYWORDr�rrr`r�r))r9rarbr�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)Nrrdr�rc[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srX)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�rr�r$rTr`r�r�r�rr��VAR_POSITIONAL)r9rbrar�rWr�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)r3rr`r�rUrOr�rrrrr�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__p1r(cSsdSrr)r9r)r(rrrr`szJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)rr�rrrrr�_sr�c@seZdZdS)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNrwrrrr�Hambsr*))r�)r)rrrz)r(r�rr|.)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>.MySignatureNrwrrrrrLosrLrr�cSsdSrrr�rrrrprtzHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo�r3r�r��assertIsInstance�r9rLrr rrr�'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>.MySignatureNrwrrrrrLvsrLc@seZdZdS)zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooNrwrrrrrw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>.MySignatureNrwrrrrrL~srL)r3r�r�r	r
r-)r9rLrWrrr�(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)r3rr�r$rr/r�r,rrrrr�3test_signature_definition_order_preserved_on_kwonly�s





zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlyN).r0r?r@r#rrcrqrsrwr{r~r�r�rr�rNr	r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr!r#r&r'r+r/r0r1r2rrrrrN,st
/#�F�

5
Y%CQ�
�
 S
�
rNc@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�rr4)r9rbrrr�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)NrrZ�r�r�z)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer"r��name must be a strzis not a valid parameter name�$z.azcannot have default valuesrr�z
<Parameterz"a=42")r3r�r�r�rAr�r�rPrOr�r�r�r�r)r%rr`r/r4r+�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�rrr`r%)r9rbrrrr�!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�r6)r3r�r4r/r8rU)r9rbr&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�r6r)rPrr_zname is a required attribute)rAr�z<value <class 'inspect._empty'> is not a valid Parameter.kindr�)r3r�r4r r`r�rPrOrArr�r�r�r�rr�)r9r&Zp2rrr� test_signature_parameter_replace�s<���z4TestParameterObject.test_signature_parameter_replacec	Cs.|�td��tjdtjjd�W5QRXdS)Nr7r�)r�r)r3r�r�rRrrr�(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�rA)r9rQrrr�!test_signature_parameter_implicit
s��z5TestParameterObject.test_signature_parameter_implicitc	CsNtjdtjjd�}|�t��d|_W5QRX|�t��d|_W5QRXdS)NrQr�rr�)r3r�r4r(r2rr�r9rrr�%test_signature_parameter_immutability
s
z9TestParameterObject.test_signature_parameter_immutabilityN)r0r?r@r5r:r;r<r=r>rr?r@rrrrr3�s*	(
r3c@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�rWr�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 argumentsrrZr�)got an unexpected keyword argument 'spam'�r�rBr�r)rvrrr�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�rrrryrrZr�r�r�rBrvrrr�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�rCr�z missing a required argument: 'b'z missing a required argument: 'a'rZcSs
|||fSrrr�rrrr�P
s)rrrZcSs
|||fSrrr�rrrr�U
sr�r)rZrr�r)rZrr�r�)rrZr�)rZ)rrr�rErvrrr�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�rHrvrrr�!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'rd)r�rErvrrr�$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��rrQrHrvrrr�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||||fSrrr"rrrr�x
szCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testrrrr�rM)r�rrrQ)rr�rrQ)r�rrQr�)r�rrrQryrr�)rrr�)r�rHrvrrr�#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|Srrryrrrr��
sz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testrCrrycSs|Srr)rrrrrrr��
sz"missing a required argument: 'bar'cSs||fSrr�rrrrrr��
srrrG)rrrDrZ)rrrQr�)rrQc[s
|||fSrr)rr�binrrrr��
srPrQ)rQrrz"missing a required argument: 'foo')rQr)rrQrQ)rQrQ)r�r)rBr�rvrrr�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)NrY�rc_sdSrr)rr�rrr�rrrr��
sz=TestSignatureBind.test_signature_bind_arguments.<locals>.testrZr�rfrmr�<)r�rrr��rrZ)r)r�)r�rfr�)rrr�)rZr�)	r3rr�r�rS�	arguments�itemsr�r�r9r�rWr�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�rrc[s||||||fSrr)r$�b_po�c_porrr�rrrr��
szCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)r$rZr[r�r�rrr�r��rPzbut was passed as a keywordrZ)rrr[zparameter is positional only)r[)r$rZ)r�r�)r3r�rrnrorSr$rWr`r�rTr�r�rBr�r))r9rbr�rWr�rAZnew_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�rrXrrr�!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'rrr_c_s||fSrrr�rrrr�sr�rrr�)r3rr�r)r�r�rBrVrXrrr�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�rLrrrr�make_setszDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setrr�rr�r�r�)r@�	co_constsrb�FunctionType�iterrr�rB)r9rbZ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�keywordrr)rrh)r3rr�r�r�r�rVrW)r9rrW�resultrrr�"test_signature_bind_posonly_kwargss

z4TestSignatureBind.test_signature_bind_posonly_kwargsN)r0r?r@r#rBrFrIrJrKrLrNrOrRrYr]r^r`rrgrkrrrrrA
s"


7


rAc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoundArgumentsc	Cs<dd�}t�|��d�}|�td��t|�W5QRXdS)NcSsdSrrrrrrr#rtzITestBoundArguments.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)NcSsdSrrrrrrr*rtzGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foorrrcSsdSrrr�rrrr<rtzGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSsdSrrr�rrrrArtr�r)r3rr�r/r8rUrV)	r9rr�Zba2Zba3rZba4rWZba1rrr�'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)Nrdrr�r�rec[sdSrrrfrrrrIrtzETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor�rfrS)rg)
r3rr�rrirjrkrlrmr�)r9rrWr�rpZ
ba_pickledrrr�%test_signature_bound_arguments_pickleHs
z8TestBoundArguments.test_signature_bound_arguments_picklecCsHid�dddid�dd�}t�|�}|jdd	id
�}|�t|�d�dS)Nrdrr�r�rec[sdSrrrfrrrrSrtzCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor�rfrSz <BoundArguments \(a=20,.*\}\}\)>)r3rr�ZassertRegexr4�r9rrWr�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)Nrrdc_sdSrr)rr�rrrVrrrrYrtzMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor�)rr�)r�r)rrrrVrZrf)r�rU)r�r�)r)rfr�cSsdSrrr�rrrrlrtcSsdSrrrrrrrurtrQcSsdSrrrrrrr|rt)rrQ)r)rQ)	r3rr�Zapply_defaultsr�r�rVrWZbind_partialrprrr�-test_signature_bound_arguments_apply_defaultsXs@

��

�


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultsN)r0r?r@rmrnrorqrrrrrrrl!s

rlc@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�)rwrRrrr�&test_signature_strip_non_python_syntax�sT�������zBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r0r?r@rurwrxrrrrrs�s
rsc@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�slicer2r4r,re�vars�round�
breakpointr��maxr��__build_class__r��
__import__)r)r2r{rrrW�callabler5rcr�rk�assertIsNotNoner3rr�__text_signature__)
r9Zno_signatureZneeds_groupsZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrJrAr<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))r�r3rr�r�r)r9r�rWrrr�'test_python_function_override_signature�s


z@TestSignatureDefinitions.test_python_function_override_signatureN)	r0r?r@rr�rNr	r�r�rrrrry�s�1ryc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dSr)r��_next)r9r�rrrr�szNTimesUnwrappable.__init__cCs2|jdkrtd��|jdkr,t|jd�|_|jS)NrzUnwrapped too many timesr)r�r6r�r�rRrrrr�s


zNTimesUnwrappable.__wrapped__N)r0r?r@r�r3r�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�)rm�	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>.funcrZcSsdSrrrrrrr� sz/TestUnwrap.test_unwrap_several.<locals>.wrapper)rrmr�r r�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�rrrry1rtz&TestUnwrap.test_stop.<locals>.<lambda>)�stop)rmr�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�5rtz$TestUnwrap.test_cycle.<locals>.func1rcSsdSrrrrrrr�:rtz$TestUnwrap.test_cycle.<locals>.func2)r�r�r�r3r�)r9r�r�rrr�
test_cycle4szTestUnwrap.test_cyclecs6dd��d�_G�fdd�d�}|�t�|���dS)NcSsdSrrrrrrr�Crtz(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�rrrrr�sr�c@sDeZdZdd�Zdd�Ze�edkd�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nr��-mr3rrt)�	importlib�
import_moduler
�decoderEr�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:ThreadPoolExecutorrrt)r
r�rEr�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�rEr�)r9r�r�r+r�r�rrr�
test_builtinsks
�
zTestMain.test_builtinscCsft�d�}t��}t|d��\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nr�r�r3�	--detailsrt)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�rNrr�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��W5QRXdSrV)r3r�r�r�r�rE)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)r9rAr�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)rrUr�rbrwr�r�r�rYr�r�r�r�r%r�rNrAr3rlrsryror�r�r�r�rBrQrrrr�	test_main�s:�r��__main__)drrnrjrmr�r3rr"r�Zos.pathrr	rir�r_rbr�r�r�Z
unittest.mockrg�concurrent.futuresr�ImportErrorZtest.supportrrrrr	Ztest.support.script_helperr
rr�rr\r
rWrZtest.test_importrr�r�r�rr�r�r)r,r�rr�r-rNrOrSrErTrUrYr�r�r�r�rQrUrbrwr�r�r�r�r�r�r�ror�r�r�r�r�r�r%rBr�rLr�rMrNr3rArlrsryr�r�r�r�r�r0rrrr�<module>s�


87K
*ER8zIc@jb?D
<0


F1le Man4ger