Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.217.160.206
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_inspect.cpython-310.pyc
o

`bq��@sdddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZzddlmZWneyedZYnwddlmZddlmZmZddlmZddlmZddl m!Z!m"Z"dd	l#m$Z%dd
l#m&Z'ddl#m(Z(ddl#m)Z)dd
l#m*Z*ddl#m+Z+ddl,m-Z-e%j.Z/e/�0d�r�e/dd�Z/e
e/�Z/dd�Z1e%�2�Z3dd�Z4dd�Z5d�6�Z7Gdd�dej8�Z9dd�Z:dd�Z;dd �Z<ej=d!d"��Z>Gd#d$�d$e9�Z?Gd%d&�d&e9�Z@Gd'd(�d(ej8�ZAGd)d*�d*�ZBGd+d,�d,eA�ZCGd-d.�d.ej8�ZDGd/d0�d0eA�ZEGd1d2�d2eA�ZFGd3d4�d4eA�ZGGd5d6�d6eA�ZHGd7d8�d8eA�ZIGd9d:�d:eA�ZJGd;d<�d<eK�ZLGd=d>�d>eK�ZMd?d@�ZNGdAdB�dBej8�ZOGdCdD�dDej8�ZPeK�ZQGdEdF�dFej8�ZRGdGdH�dHej8�ZSGdIdJ�dJeS�ZTGdKdL�dLeT�ZUGdMdN�dNej8�ZVGdOdP�dPej8�ZWGdQdR�dRej8�ZXGdSdT�dTejY�ZZGdUdV�dVej[�Z\GdWdX�dXej8�Z]GdYdZ�dZej8�Z^Gd[d\�d\ej8�Z_Gd]d^�d^ej8�Z`Gd_d`�d`ej8�ZaGdadb�dbej8�ZbGdcdd�dd�ZcGdedf�dfej8�ZdGdgdh�dhej8�ZeGdidj�djej8�Zfegdkk�r0e�h�dSdS)l�N��normcase)�ThreadPoolExecutor)�cpython_only)�MISSING_C_DOCSTRINGS�	ALWAYS_EQ)�
DirsOnSysPath)�TESTFN)�assert_python_ok�assert_python_failure)�inspect_fodder)�inspect_fodder2)�support)�inspect_stock_annotations)�inspect_stringized_annotations)� inspect_stringized_annotations_2)�_ready_to_import)�c�o���cGst|�f|S�Nr)�filename�args�r�:/usr/local/python-3.10/lib/python3.10/test/test_inspect.py�revise<�rccs��gd�}tddt|��D]2}g}d}tt|��D]}|||>@r)|�||�qdd�|�d}i}t|||�|dVqdS)	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_text�symbolsrrr�5signatures_with_lexicographic_keyword_only_parametersBs���r.cC�dSrr)�throw�outZtheZbabyZwith_Zthe_Z	bathwaterrrr�#unsorted_keyword_only_parameters_fnT�r2z'throw out the baby with_ the_ bathwaterc@sTeZdZeejejejejej	ej
ejejej
ejejejejejg�Zdd�ZdS)�
IsTestBasecCs�t|�}|�||�d|j|f�|jt|g�D]$}|tjks*|tjks*|tjkr0|tj	kr0q|�
||�d|j|f�qdS)Nz%s(%s)z
not %s(%s))�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�isasyncgenfunction�iscoroutinefunction�
isfunction�assertFalse)�self�	predicate�exp�obj�otherrrr�istestbs
����zIsTestBase.istestN)r7�
__module__�__qualname__r9r:�	isbuiltin�isclass�iscode�isframer>�ismethod�ismodule�istraceback�isgeneratorr;�iscoroutiner=�
isasyncgenr<r8rErrrrr4Zs�r4ccs�td�D]}|VqdS�Nr!�r#�r@r)rrr�generator_function_examplen���rUcCs$�td�2z	3dHW}|Vq6dSrRrSrTrrr� async_generator_function_examplers��rWc�s�dS�N�spamr�r@rrr�coroutine_function_examplevs�r[ccs�dVdSrXrrZrrr�gen_coroutine_function_exampleys�r\c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestPredicatesc	Cs�|�tjd�|�tjd�|�tjd�z<zddWn1t��da|�tjd�|�tjd�t	t
d	�rA|�tjd
�n|�t�t
tj�j��YWdandaw|�tjd�|�tjd�|�tjd
�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�|�tjd�t���t�d�|�tjd�|�tjd�Wd�n1s�wYt	t
d�r�|�tjd�dS|�t�tjj ��dS)Nzsys.exitz	[].appendzmod.spam.__code__r rr!ztb.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))rUz#async_generator_function_example(1)rW�ignorezcoroutine_function_example(1)r[�MemberDescriptorTypezdatetime.timedelta.days)!rEr:rHrJ�sys�exc_infor^rKrN�hasattr�typesZisgetsetdescriptorr?�type�tb_frame�f_localsr>rLrM�isdatadescriptorrOr;rQr<�warnings�catch_warnings�simplefilterrPr=Zismemberdescriptor�datetimeZ	timedeltaZdaysrZrrr�test_excluding_predicates�sL
����

�
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 )rWr\r[r?r:r=�	functools�partialrPr6r;rOr<rQ�close)r@Zasync_gen_coro�gen_coro�cororrr�test_iscoroutine�sv��������������������zTestPredicates.test_iscoroutinecCs�dd�}|�t�|���td�}td�}|�t�|��|�t�|��Gdd�d�}|�t�|���|�t�|��Gdd�d�}|�}dd	�|_|�t�|��|��|��dS)
Ncs��dVdSrrrrrr�gen�s�
z,TestPredicates.test_isawaitable.<locals>.genr c@�eZdZdd�ZdS)z/TestPredicates.test_isawaitable.<locals>.FuturecSr/rrrrrr�	__await__��z9TestPredicates.test_isawaitable.<locals>.Future.__await__N)r7rFrGrzrrrr�Future��r|c@�eZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN�r7rFrGrrrr�	NotFuture��r�cSr/rrrrrr�<lambda>��z1TestPredicates.test_isawaitable.<locals>.<lambda>)r?r:Zisawaitabler[r\r6rzrs)r@rxrurtr|r�Znot_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|�t�tj��|�t�gj��dSr)r6r:Z	isroutiner`rY�countrZrrr�test_isroutine�szTestPredicates.test_isroutinecCsD|�tjd�|�t�t��Gdd�dt�}|�t�|���dS)Nz
mod.StupidGitc@ry)z2TestPredicates.test_isclass.<locals>.CustomGetattrcSr/rr)r@�attrrrr�__getattr__�r{z>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)r7rFrGr�rrrr�
CustomGetattr�r}r�)rEr:rIr6�list�objectr?)r@r�rrr�test_isclass�szTestPredicates.test_isclasscCsFGdd�dt�}|�}d|_tt�|��}|�d|�|�d|�dS)Nc@�eZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C�r�bN�r7rFrG�	__slots__rrrr�C��r��*rr�)r�r�dictr:�
getmembers�assertIn�assertNotIn)r@r��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�abstractmethodc�eZdZ�dd��ZdS)z<TestPredicates.test_isabstract.<locals>.AbstractClassExamplecSr/rrrZrrrr"r3z@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN�r7rFrGr"r�r�rr�AbstractClassExample	sr���	metaclassc@ry)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSr/rrrZrrrr"r{z8TestPredicates.test_isabstract.<locals>.ClassExample.fooNr�rrrr�ClassExampler}r��)�abcr�r�r6r:�
isabstractr?�int)r@r�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|�}|��gd��dS)Nrr�cseZdZ�fdd�ZdS)zLTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckercs��t�|��dSr)r%r:r���cls��isabstract_checksrr�__init_subclass__ �z^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)r7rFrGr�rr�rr�AbstractCheckersr�r�cr�)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSr/rrrZrrrr"#r3zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr�rr�rrr�"�r�c@ry)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSr/rrrZrrrr"'r{zMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooNr�rrrrr�&r}r�TFc@r~)zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildNrrrrr�
AbstractChild,�r�c@r~)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildNrrrrr�AbstractGrandchild.r�r�c@r~)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildNrrrrr�ConcreteGrandchild0r�r�)TTF)r�r�r��assertEqual�clear)r@r�r�r�r�r�r�r�r)r�r�r�$test_isabstract_during_init_subclasssz3TestPredicates.test_isabstract_during_init_subclassN)r7rFrGrorvr�r�r�r�r�r�rrrrr]~s*/		r]c@�<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs,tjj|g|�Ri|��t�ddd�dS)N���	)�unittest�TestCase�__init__�git�abuse�r@r�kwargsrrrr�6szTestInterpreterStack.__init__cCs |�tjd�|�tjd�dS)Nz	git.ex[2]zmod.fr)rEr:rNrKrZrrr�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�rY�    eggs(b + d, c + f)
r!�+�argue�            spam(a, b, c)
��'r�z        self.argue(a, b, c)
zinspect.stack())r6r$r`�str�r�modfile�assertIs�frame�fr�linenor�__file__�functionr��code_context�index)r@�recordrrr�
test_stack?s(����
zTestInterpreterStack.test_stackcCs�|�ttj�d�|�ttjddd��tdddgdf�|�ttjddd��tddd	gdf�|�ttjd
dd��tddd
gdf�dS)Nr�rr r�r�r�r�rYr�r!�r�z    q = y / 0
)r�r$r��trrr�rZrrr�
test_traceRs���zTestInterpreterStack.test_tracecCslt�tj�\}}}}|�|ddg�|�|d�|�|d�|�|dddd��|�t�||||�d�dS)Nr��y��)r�r*r�z(x=11, y=14))r:�getargvaluesr`r�r��formatargvalues�r@r�varargs�varkw�localsrrr�
test_frame[s�zTestInterpreterStack.test_framecCsZt�tjj�\}}}}|�|gd��|�|d�|�|d�|�t�||||�d�dS)N�rr�r�d�e�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))r:r�r`r��f_backr�r�r�rrr�test_previous_frameds�z(TestInterpreterStack.test_previous_frameN)	r7rFrGr�r�r�r�r�r�rrrrr�5s		r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNcCsDtt�|j�dd��}|��|_Wd�dS1swYdS)N�utf-8��encoding)�openr:�
getsourcefile�fodderModule�read�source)r@�fprrr�setUpps"�zGetSourceBase.setUpcCs0|j�d�}d�||d|��|rdSdS)N�
r �)r��splitr&)r@�top�bottom�linesrrr�sourcerangets$zGetSourceBase.sourcerangecCs|�t�|�|�||��dSr)r�r:�	getsourcer)r@rCr�r�rrr�assertSourceEqualxs
�zGetSourceBase.assertSourceEqual)r7rFrGr�r�rrrrrrr�ls
r�c@seZdZdZddd�ZdS)�SlotUserzDocstrings for __slots__�measured in kilowatts�measured in kilometers)�power�distanceN)r7rFrG�__doc__r�rrrrr|s

�rc@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,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�
WhichCommentscS�g|]}|d�qS�r r��.0r�rrr�
<listcomp>��z<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>rcSrrrrrrrr�rT)r:r�r`rIr�rrr
rrZgetclasstreer�)r@ZclassesZtreerrr�test_getclasses�sR��
�
��
���

��
���z(TestRetrievingSourceCode.test_getclassescCs6t�ttj�}|�|dtjfdtjfdtjfg�dS)Nr��lobbestrY)r:r�r`r>r�r�rrY)r@Z	functionsrrr�test_getfunctions�s

�z*TestRetrievingSourceCode.test_getfunctionsr!z)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

tabsrr)
r�r:�getdocr`rr�r�rrrrZrrr�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�r:rr`rr�Z
contradictionrZrrr�test_getdoc_inherited�s����z.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringscCsvtj}|�|t�tj�|�|tj�tjj�|�|t�j�tjj�|�|tj�tjj�|�|tj�tjj�dSr)r:Z_finddocr�r�r	�to_bytes�
from_bytes�real)r@Zfinddocrrr�test_finddoc�sz%TestRetrievingSourceCode.test_finddoccCs|�t�d�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r�r:ZcleandocrZrrr�
test_cleandoc�s�z&TestRetrievingSourceCode.test_cleandoccCsj|�t�t�d�|�t�tj�d�|�t�tj�d�tddd�}|�t�|��|�t�t	��dS)N�	# line 1
z
# line 20
z# line 159
�x=1z_non_existing_filename.pyr')
r�r:Zgetcommentsr`r�mod2�cls160�compile�assertIsNoner�)r@�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�r:�	getmoduler`rr��strrc�modulesr�rZrrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs^dd�}tj�d|��t��}|�t�|��t�|�Wd�dS1s(wYdS)NcS�td��)Nzbad file)�FileNotFoundError)rCZ	_filenamerrr�_getabsfile��zKTestRetrievingSourceCode.test_getmodule_file_not_found.<locals>._getabsfilezinspect.getabsfile)r��mock�patchr:�currentframer(r,Zgetouterframes)r@r2r�rrr�test_getmodule_file_not_found�s"�z6TestRetrievingSourceCode.test_getmodule_file_not_foundcCs8t�|jjd�}|�|jdd�|�|jdd�dS)N�2rr#r z'A module docstring.'
)r:Zgetframeinfor�r�r�r�)r@Z
frame_inforrr� test_getframeinfo_get_first_line�sz9TestRetrievingSourceCode.test_getframeinfo_get_first_linecCs4|�tjdd�|�tjdd�|�tjdd�dS)N�r���3�K�L)rr�r�r`rrrZrrr�test_getsource�sz'TestRetrievingSourceCode.test_getsourcecCs�|�tt�tj��t�|�tt�tj��t�d}t	d|d�}|�t�|�d�ddd|j
ftj|j
<z|�tt�|��|�Wtj|j
=dStj|j
=w)Nz2_non_existing_filename_used_for_sourcefile_test.pyr$r'r �None)
r�rr:r�r`rYr�r�r�r'�co_filename�	linecache�cache)r@�fnr)rrr�test_getsourcefilesz+TestRetrievingSourceCode.test_getsourcefilecCs|�t�tj�tj�dSr)r�r:�getfiler`rr�rZrrr�test_getfile�z%TestRetrievingSourceCode.test_getfilecC�N|�t��
}t�t�Wd�n1swY|�t|j��d��dS)Nz<module)	�assertRaises�	TypeErrorr:rFrcr6r-�	exception�
startswith�r@r�rrr�test_getfile_builtin_module��z4TestRetrievingSourceCode.test_getfile_builtin_modulecCrI)Nz<class)	rJrKr:rFr�r6r-rLrMrNrrr�test_getfile_builtin_classrPz3TestRetrievingSourceCode.test_getfile_builtin_classcCs�|�t��
}t�t�Wd�n1swY|�dt|j��|�t��}t�tj	�Wd�n1s9wY|�dt|j��dS)Nz
expected, got)
rJrKr:rF�absr�r-rLr�r%)r@Ze_absZe_appendrrr�'test_getfile_builtin_function_or_methods��z@TestRetrievingSourceCode.test_getfile_builtin_function_or_methodcCs\Gdd�dt�}Gdd�d|d�}|�t��t�|�Wd�dS1s'wYdS)Nc@seZdZedd��ZdS)zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMcS�t�r��AttributeErrorr�rrrrF&r3zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)r7rFrG�propertyrrrr�CM%r�rXc@r~)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNrrrrrr�)r�r�r�)rgrJrKr:rF)r@rXr�rrr�!test_getfile_class_without_module$s
"�z:TestRetrievingSourceCode.test_getfile_class_without_modulecCsNGdd�d�}|�}|�t��t�|�Wd�dS1s wYdS)Nc@ry)zDTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorReprcSr0)NZxyz)�	ExceptionrZrrr�__repr__0r3zMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r7rFrGr[rrrr�	ErrorRepr/r}r\)rJrKr:rF)r@r\Zerrrr�test_getfile_broken_repr.s
"�z1TestRetrievingSourceCode.test_getfile_broken_reprcCsnddlm}d}||�}tj|<d|_d|_td|j�|�t	�
|jj�d�tj|=t	�
tddd	��dS)
Nr)�
ModuleTypeZ__inspect_dummy�<string>Zdummyz
def x(): passza=10r��single)rfr^rcr.r��
__loader__r'�__dict__r�r:r�r��__code__r,r')r@r^�name�mrrr�test_getmodule_recursion6sz1TestRetrievingSourceCode.test_getmodule_recursioncs`d\��tj�d���fdd�	}|t_zi}tt��d�|�t�|d�W�t_dS�t_w)z4doctest monkeypatches linecache to enable inspection)z<test>zdef x(): pass
Ncs|�kr
�jdd�S�||�S)NT)�keepends)�
splitlines)r�module_globals�rD�getlinesr�rr�monkeyEs
zHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr`r�r)rBrkr'r'r:r)r@rl�nsrrjr�test_proceed_with_fake_filenameAsz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecC�|�tjjdd�dS)N�r�)rr`r�rcrZrrr�test_getsource_on_code_objectR�z6TestRetrievingSourceCode.test_getsource_on_code_objectN) r7rFrGr`r�rrr��skipIfrc�flags�optimizerrrr!r"r*r/r7r9r?rErGrOrQrSrYr]rfrnrqrrrrr
�s<(�
�




	
r
c@ry)�TestGetsourceInteractivecCs(d}td|dd�\}}}|�d|�dS)Nz�import sys, inspect;                 assert not hasattr(sys.modules['__main__'], '__file__');                 A = type('A', (), {});                 inspect.getsource(A)z-cT)Z
__isolateds"OSError: source code not available)rr�)r@�code�_�stderrrrr�test_getclasses_interactiveVsz4TestGetsourceInteractive.test_getclasses_interactiveN)r7rFrGrzrrrrrvUr}rvc@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dSrp)ZmaxDiffrr`r6rZrrr�test_range_toplevel_framecsz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dSrp)rr`r^rZrrr�#test_range_traceback_toplevel_framegr�zETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r7rFrGr`r�r|r}rrrrr{`sr{c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscC�|�tjdd�dS)Nr��)rr%�wrappedrZrrr�test_wrapped_decoratormr�z%TestDecorators.test_wrapped_decoratorcCr)Nr��
)rr%ZgonerZrrr�test_replacing_decoratorpr�z'TestDecorators.test_replacing_decoratorcCr)N��)rr%r rZrrr�test_getsource_unwrapsr�z$TestDecorators.test_getsource_unwrapcCr)N�q�s)rr%Zfunc114rZrrr�test_decorator_with_lambdavr�z)TestDecorators.test_decorator_with_lambdaN)	r7rFrGr%r�r�r�r�r�rrrrr~jsr~c@sPeZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscC�|�tjdd�dS)N�)rr%ZollrZrrr�test_oneline_lambda{�z!TestOneliners.test_oneline_lambdacCr)N��)rr%ZtllrZrrr�test_threeline_lambda�z#TestOneliners.test_threeline_lambdacCr)N�!�")rr%ZtllirZrrr�test_twoline_indented_lambda�r�z*TestOneliners.test_twoline_indented_lambdacCr�)N�%)rr%ZonelinefuncrZrrr�test_onelinefunc�r�zTestOneliners.test_onelinefunccCr)N�(�))rr%ZmanyargsrZrrr�
test_manyargs��zTestOneliners.test_manyargscCr)N�,�-)rr%ZtwolinefuncrZrrr�test_twolinefunc�r�zTestOneliners.test_twolinefunccCs|�tjddd�dS)Nr �1)rr%rrZrrr�test_lambda_in_list�sz!TestOneliners.test_lambda_in_listcCr�)N�7)rr%Z	anonymousrZrrr�test_anonymous�r�zTestOneliners.test_anonymousN)
r7rFrGr%r�r�r�r�r�r�r�r�r�rrrrr�ysr�c@s(eZdZeZdd�Zdd�Zdd�ZdS)�TestBlockCommentscCr)N�`�r)rr`rrZrrr�test_toplevel_class�r�z%TestBlockComments.test_toplevel_classcCro)N�c�h)rr`rr�rZrrr�test_class_method�rrz#TestBlockComments.test_class_methodcCro)N�m�p)rr`rZasyncfrZrrr�test_class_async_method�rrz)TestBlockComments.test_class_async_methodN)r7rFrGr`r�r�r�r�rrrrr��s
r�c@s�eZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
eed�p/ej�d�d�dd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z d0S)1�TestBuggyCasescCr)N�:�;)rr%Zwith_commentrZrrr�test_with_comment�r�z TestBuggyCases.test_with_commentcCs|�tjddd�dS)Nr�?�@)rr%Z
multiline_sigrZrrr�test_multiline_sig��z!TestBuggyCases.test_multiline_sigcCs|�t��jdd�dS)N�G�H)rr%Zfunc69Zfunc71rZrrr�test_nested_class�r�z TestBuggyCases.test_nested_classcCr�)N�M)rr%Zfunc77rZrrr�#test_one_liner_followed_by_non_name�r�z2TestBuggyCases.test_one_liner_followed_by_non_namecCs|�tjjdd�dS)N�S)rr%Zcls82Zfunc83rZrrr�test_one_liner_dedent_non_name�rrz-TestBuggyCases.test_one_liner_dedent_non_namecCr)N�X�Z)rr%Zfunc88rZrrr�&test_with_comment_instead_of_docstring�r�z5TestBuggyCases.test_with_comment_instead_of_docstringcCr)N�_�a)rr%Zmethod_in_dynamic_classrZrrr�test_method_in_dynamic_class�r�z+TestBuggyCases.test_method_in_dynamic_classr�z.pyz,unicodedata is not an external binary modulecCs$|�ttjt�|�ttjt�dSr)rJ�OSErrorr:r�unicodedata�
findsourcerZrrr�test_findsource_binary�sz%TestBuggyCases.test_findsource_binarycCs�dg}t|ddd�}|�ttj|�|�ttj|�dd||jftj|j<z|�	t�|�|df�|�	t�|�|d�Wtj|j=dStj|j=w)Nr$rZ_dynamically_created_filer'r )
r'rJr�r:r�rrArBrCr�)r@rr)rrr�!test_findsource_code_in_linecache�sz0TestBuggyCases.test_findsource_code_in_linecachecCs:dD]}td|d�}|�ttj|�|�ttj|�qdS)N)r�r_r$r')r'rJ�IOErrorr:r�r)r@Zfnamer)rrr� test_findsource_without_filename�s
�z/TestBuggyCases.test_findsource_without_filenamecCs�tt�t��}d|d}t|tjd�}ii}}t|||�|d}|�|jj	dd|�|�
td��t�|�Wd�dS1sFwYdS)Nz

z
def f(): passr'r�r r!zlineno is out of bounds)
r$r:rr`r'r�r5r�rc�co_firstlineno�assertRaisesRegexr�r�)r@Zmod_len�srcr)r��l�funcrrr�)test_findsource_with_out_of_bounds_lineno�s
"�z8TestBuggyCases.test_findsource_with_out_of_bounds_linenocCro)N�v�w)rr%ZClassWithMethod�methodrZrrr�test_getsource_on_method�rrz'TestBuggyCases.test_getsource_on_methodcCro)N��)rr%Zcls135Zfunc136rZrrr�test_nested_func�rrzTestBuggyCases.test_nested_funccCr)N��)rr%Zcls149rZrrr�4test_class_definition_in_multiline_string_definition�r�zCTestBuggyCases.test_class_definition_in_multiline_string_definitioncCr)N��)rr%r&rZrrr�*test_class_definition_in_multiline_comment�r�z9TestBuggyCases.test_class_definition_in_multiline_commentcCro)N��)rr%Zcls173Zcls175rZrrr�,test_nested_class_definition_indented_string�rrz;TestBuggyCases.test_nested_class_definition_indented_stringcC�&|�tjdd�|�tjjdd�dS)N���)rr%Zcls183Zcls185rZrrr�test_nested_class_definition��z+TestBuggyCases.test_nested_class_definitioncCr�)N������)rr%Zcls196Zcls200rZrrr�test_class_decoratorr�z#TestBuggyCases.test_class_decoratorcCr�)N������)rr%Zcls238Zcls239rZrrr�test_class_inside_conditionalr�z,TestBuggyCases.test_class_inside_conditionalcCs`|�tjdd�|�tjjdd�|�tjjjdd�|�tjjdd�|�tjjjdd�dS)N��������������)rr%Zcls203Zcls204Zcls205Zcls207rZrrr�test_multiple_children_classess
z-TestBuggyCases.test_multiple_children_classescCs<|�t��dd�|�tjdd�|�t����dd�dS)N������������)rr%Zfunc212Zcls213Zfunc219rZrrr�,test_nested_class_definition_inside_functionsz;TestBuggyCases.test_nested_class_definition_inside_functioncCs^ddl}|�|jd�|�|�t���dd�|�tjdd�|�|�t�����dd�dS)Nr������������)	�asyncioZ
addCleanupZset_event_loop_policyr�runr%Zfunc225Zcls226Zfunc232)r@rrrr�2test_nested_class_definition_inside_async_functions
 zATestBuggyCases.test_nested_class_definition_inside_async_functionN)!r7rFrGr%r�r�r�r�r�r�r�r�r�rsrer�r��endswithr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr��s8
�
r�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�	TestNoEOLcs�td|_t�|j�ttj�|jdtj�ddd��
}|�d�Wd�n1s+wYt	|j��ddl
}Wd�n1sDwY||_t��
�dS)NZ_dirzinspect_fodder3%spy�wr�r�zclass X:
    pass # No EOLr)r	�tempdir�os�mkdirr��pathr&�extsep�writerZinspect_fodder3r��superr�)r@r�Zmod3��	__class__rrr�s
��
�zTestNoEOL.setUpcCst�|j�dSr)�shutil�rmtreer	rZrrr�tearDown'�zTestNoEOL.tearDowncCs|�|jjdd�dS)Nr r!)rr��XrZrrr�
test_class*rrzTestNoEOL.test_class)r7rFrGr�rr�
__classcell__rrrrrsrc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGr0�Nzbroken data descriptorrU�rrrr�__get__2r3z_BrokenDataDescriptor.__get__cGrTr)�RuntimeErrorrrrr�__set__5r{z_BrokenDataDescriptor.__set__cGr0rrUrrrrr�8r3z!_BrokenDataDescriptor.__getattr__N)r7rFrGr	rrr�rrrrr.s
rc@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGr0�Nzbroken method descriptorrUrrrrr@r3z_BrokenMethodDescriptor.__get__cGr0r rUrrrrr�Cr3z#_BrokenMethodDescriptor.__getattr__N)r7rFrGr	rr�rrrrr<srcCsdd�t�|�D�S)NcSsg|]}|dd��qS�Nr�r)r�trrrrIsz!attrs_wo_objs.<locals>.<listcomp>)r:�classify_class_attrsr�rrr�
attrs_wo_objsHr�r$c@s(eZdZdd�Z		d9dd�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�Zd5d6�Z d7d8�Z!dS):�TestClassesAndFunctionscCsjGdd�dt�}Gdd�d|�}Gdd�d|�}Gdd�d||�}||||tf}t�|�}|�||�dS)	Nc@r~)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.ANrrrrr�AOr�r&c@r~)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNrrrrr�BPr�r'c@r~)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNrrrrrr�Qr�r�c@r~)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNrrrrr�DRr�r()r�r:Zgetmror�)r@r&r'r�r(�expectedZgotrrr�test_newstyle_mroMs
z)TestClassesAndFunctions.test_newstyle_mroNc	Cs�|�t��t�|�\}}}	}
Wd�n1swY|�||�|�||�|�|	|�|�|
|�|dur^|�t��|�t�|||	|
�|�Wd�dS1sWwYdSdSr)�assertWarns�DeprecationWarningr:Z
getargspecr��
formatargspec)r@�routine�args_e�	varargs_e�varkw_e�
defaults_e�	formattedrr�r��defaultsrrr�assertArgSpecEqualsXs��"��z+TestClassesAndFunctions.assertArgSpecEqualscCs�t�|�\}}}
}}}}|�||�|�||�|�|
|�|�||�|�||�|�||�|�||	�|
dura|�t��|�t�|||
||||�|
�Wd�dS1sZwYdSdSr)r:�getfullargspecr�r+r,r-)r@r.r/r0r1r2Z
posonlyargs_e�kwonlyargs_e�kwonlydefaults_e�ann_er3rr�r�r4�
kwonlyargsZkwonlydefaults�annrrr�assertFullArgSpecEqualses$���"��z/TestClassesAndFunctions.assertFullArgSpecEqualscCsp|jtjddgdd�|�tjgd�dddd	�|�t|jtjg�|�t|jtjg�|�t|jtj	g�dS)
Nr�r��(x, y)�r3r�r�r�)r��r�z!(a, b, c, d=3, e=4, f=5, *g, **h))
r5r`r�rYrJ�
ValueErrorr%�	keyworded�	annotated�keyword_only_argrZrrr�test_getargspecys�
�
�
�z'TestClassesAndFunctions.test_getargspeccCs�|jtjgddgddidd�|jtjdgdtidd�|jtjgdgd	d
�|jtjgd�dd
gdd
�|jtjgd�dddd
gdd�|jtjgd�ddd
gddd�dd�dS)N�arg1�arg2r z(*arg1, arg2=1))r0r7r8r3z(arg1: list))r9r3�argz(*, arg))r7r3�rr�rr�r�r�z(a, b, c, d, *, e, f)rr�z#(a, b, c, d, *args, e, f, **kwargs))r0r1r7r3�r r!r�r?r�)r�r�z(a, b=1, c=2, d=3, *, e=4, f=5))r2r7r8r3)	r<r%rArBr�rCZall_markersZ all_markers_with_args_and_kwargsZall_markers_with_defaultsrZrrr�test_getfullargspec�s<��
���
�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)NcSr/rr�r�r�rrr�ham�r3zETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamr�r�r=r>cs�j|gd�dd�dS)N�r@r�r�z(self, x, y)r>)r5�r�rZrr�check_method�s
�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>.CcSr/rrrMrrrrL�r3zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSr/rrrMrrr�__call__�r3zLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)r7rFrGrq�wrapsr`rYrL�
partialmethod�phamrPrrrrr��s



r�c@� eZdZe�ej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSr/rrrMrrr�__new__�r3zOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)r7rFrGrqrQr`rYrUrrrr�C_new��
rVc@rT)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSr/rrrMrrrr��r3zQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)r7rFrGrqrQr`rYr�rrrr�C_init�rWrX)	rqrQr`rYr5r<rrrLrS)r@rLrOr�rVrXrrZr� test_argspec_api_ignores_wrapped�s$

�


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}t�dtjj�}tj|fd�|_|j|dgdd�dS)NcSr/rrrrrr�test�r{zHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrY�r(�(spam)r>)r:�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r<)r@rZZ
spam_paramrrr�"test_getfullargspec_signature_attr�sz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsJddd�}t�|�}|�|j|j�dd�}t�|�}|�|j|j�dS)	NrrY�returnrLcSr/rr�rrrrrZ�r�zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSr/rrrrrrrZ�r�)rrYrbrL)r:r6r��__annotations__Zannotations)r@rZ�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)Nr@rCz(self, obj)r>r�dir_fd�follow_symlinksT)rhriz,(path, *, dir_fd=None, follow_symlinks=True))r/r7r8r3)r<�_pickle�Pickler�dump�io�BytesIOr
�statrZrrr�#test_getfullargspec_builtin_methods�s��
�z;TestClassesAndFunctions.test_getfullargspec_builtin_methodscCs.ddl}|j}t�|�}|�|jdd�dS)Nr�avocado)�	_testcapi�&docstring_with_signature_with_defaultsr:r6r�r4)r@rr�builtinrerrr� test_getfullargspec_builtin_func�s
z8TestClassesAndFunctions.test_getfullargspec_builtin_funccCsHddl}|j}|�t��t�|�Wd�dS1swYdS)Nr)rr�docstring_no_signaturerJrKr:r6)r@rrrtrrr�-test_getfullargspec_builtin_func_no_signature�s
"�zETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signaturecC�bt�D]}t�|�}t|j�}t|�}|�|�|�||�qt�t�}t|j�}|�|t	�dSr)
r.r:r6r�r:�sortedr6r�r2� unsorted_keyword_only_parameters�r@rD�	signaturer�Zsorted_lrrr�8test_getfullargspec_definition_order_preserved_on_kwonly�





zPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlycCs$Gdd�dt�}|�|jdg�dS)Nc@ry)z9TestClassesAndFunctions.test_getargspec_method.<locals>.AcSr/rrrZrrrrer{z;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN�r7rFrGrerrrrr&r}r&r@)r�r5re�r@r&rrr�test_getargspec_methodsz.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>.AcSr/rrrrrr�sr�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSr/rrr�rrrrr�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSr/rrrZrrr�getpr�z>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSr/rrrZrrrre r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSr/rrrZrrr�m1"r�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)r7rFrGr��staticmethodr�classmethodr�rWr*rer��datablobr�ddr�mdrrrrr&s
r&rU�
static method�missing __new__r�r�zmissing __init__r�zmissing static methodr�class method�missing class methodr*rWzmissing propertyrezmissing plain method: %rr��missing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@ry)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSr/rrrZrrrre;r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNrrrrrr'9�r'c@�eZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSr/rrrZrrrreJr�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSr/rrrZrrrrKr�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r7rFrGrerrrrrr�Hsr�c@ry)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSr/rrrZrrrr�Yr�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r7rFrGr�rrrrr(Wr�r()r�r$r�)r@r&�attrsr'r�r(rrr�test_classify_newstyles\��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)NrUr�r�rr�r�rr�r��__add__�__and__)�dir�__builtins__�getattr�
isinstancergr:r#r$�boolr�r�)r@rdrtr�rrr�test_classify_builtin_typeses*


������z3TestClassesAndFunctions.test_classify_builtin_typescCspGdd�dt�}Gdd�d|d�}t�dd||jd�}|�|t�|��t�dd|d�}|�|t�|��dS)	Nc�eZdZ�fdd�Z�ZS)zITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metac�|dkrdSt��|�S)NrLrY�rr��r@rdrrrr�{�zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__�r7rFrGr�rrrrr�Metaz�r�c@�eZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcS�dS)Nr�rrZrrrrL�r3zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r7rFrGrf�DynamicClassAttributerLrrrr�VA�r�r�rLr�rY)rgr:�	Attributerbr�r#)r@r�r�Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttributeys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��Srr)r@rD��NoBoolrr�__eq__�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSr0)Nz,This object does not specify a boolean value)�NotImplementedErrorrZrrr�__bool__�s�zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)r7rFrGr�r�rr�rrr��sr�c�eZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)r7rFrGr�rr�rr�HasNB��
r�r�r�)r�r:r�r�r�r#)r@r�Zshould_find_attrrr�r�test_classify_overrides_bool�sz4TestClassesAndFunctions.test_classify_overrides_boolcC�HGdd�dt�}Gdd�d|d�}t�dd|d�}|�|t�|��dS)	Nc@�eZdZdZdd�ZdS)zMTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta�slapcS�gd�S)N)rrFr7�fishrrZrrr�__dir__�r3zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r7rFrGr�r�rrrrr���r�c@r~)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNrrrrr�Class�r�r�r�r�r�r��rgr:r�r�r#�r@r�r�Zshould_findrrr�'test_classify_metaclass_class_attribute�sz?TestClassesAndFunctions.test_classify_metaclass_class_attributecCr�)	Nc�$eZdZdd�Z�fdd�Z�ZS)zDTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.MetacSr�)N)rrFr7�BOOMrr�rrrr��r3zLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cr�)Nr�r�)rZ_Meta__getattrr�rrrr��r�zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__�r7rFrGr�r�rrrrrr���r�c@r~)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNrrrrrr��r�r�r�r�r�r�r�r�rrr�test_classify_VirtualAttribute�sz6TestClassesAndFunctions.test_classify_VirtualAttributec	s�Gdd�dt��Gdd�dt��G��fdd�d���}Gdd�d�d	�}Gd
d�d||d	�}t�dd
�d�}t�dd
�d�}t�dd
|d�}t�|�}|||fD]}|�||�qQdS)Ncr�)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1cSr�)N)rrFr7�onerr�rrrr��r3z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cr�)Nr�r r�r�rrrr��r�z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__r�rrrr�Meta1�r�r�cr�)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSr�)N)rrFr7�tworr�rrrr��r3z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cr�)Nr�r!r�r�rrrr��r�z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__r�rrrr�Meta2�r�r�cs*eZdZ��fdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs(tttgd���|���|����S)N)rrFr7�three)r�ryr9r�r��r�r�rrr��s
�
�z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cr�)Nr�r�r�r�rrrr��r�z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__r�rr�rr�Meta3�sr�c@r~)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nrrrrr�Class1�r�r�r�c@r~)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nrrrrr�Class2�r�r�r�r�r r�r!r�r�)rgr:r�r#r�)	r@r�r�r�Zshould_find1Zshould_find2Zshould_find3ZccaZsfrr�r�,test_classify_VirtualAttribute_multi_classes�s
�zDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classescC�FGdd�dt�}Gdd�d|d�}dd�t�|�D�}|�d|�dS)	Nc@ry)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.McSr��N)rr7�missingrr�rrrr��r3zSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N�r7rFrGr�rrrr�M�r}r�c@r~)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNrrrrrr��r�r�r�cSr�rr�rrrrrr�rzTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>r�)rgr:r#r��r@r�r�r�rrr�(test_classify_class_attrs_with_buggy_dir��z@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)r7rFrGrr�rr�rrrrr&�s
r&cs"Gdd�dt����fdd�}|S)Nc@r~)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNrrrrr�Empty�r�r�cs$dt|�vrt�|j�rdS�|�S)Nr7F)r�rer7�r��r��predrrr��szZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped�r�)r�r�rr�r�pred_wrapper�szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr�r�c@r~)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNrrrrrr'�r�r')r�r:�ismethoddescriptorrjr�r�rb)r@r&r�r�rjr'rrr�test_getmembers_descriptors�s"

����z3TestClassesAndFunctions.test_getmembers_descriptorscCs�Gdd�d�}|�d|jft�|��|�d|jft�|tj��|�}|�d|jft�|��|�d|jft�|tj��dS)Nc@ry)z9TestClassesAndFunctions.test_getmembers_method.<locals>.BcSr/rrrZrrrr��r{z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN�r7rFrGr�rrrrr'�r}r'r�)r�r�r:r�r�rL)r@r'r�rrr�test_getmembers_method�s z.TestClassesAndFunctions.test_getmembers_methodcCsLGdd�dt�}Gdd�d|d�}|�dt�|��|�dt�|���dS)Ncr�)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mcr�)Nr��	scrambledr�)r�rdrrrr�r�zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__r�rrrrr�r�r�c@r�)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSr�rXrrZrrrr�r3zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)r7rFrGrfr�r�rrrrr&r�r&r�)r�r�)r�rY)rgr�r:r�)r@r�r&rrr� test_getmembers_VirtualAttributesz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCr�)	Nc@ry)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSr�r�rr�rrrr�r3zITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__Nr�rrrrr�r}r�c@r~)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNrrrrrr�r�r�r�cSrr�rr�rrrrrzJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r�)rgr:r�r�r�rrr�test_getmembers_with_buggy_dirr�z6TestClassesAndFunctions.test_getmembers_with_buggy_dircCs�dtdtfdd�}|�t�|�ttd��ddd�|_|�t�|�ddd��|�tj|dt�d	�|td��|�tj|dt�d
�|td��t}|�t�|�ttd��|�t�|j�ttd��|�t�|j	�tt|jd��|�t�|j
�td|j|jd��|�t�|j�d
ddd��|�t�t�i�|�t�|j�i�|�t�|j
�i�|�tj|dd�ttd��|�tj|jdd�ttd��|�tj|j	dd�tt|jd��|�tj|j
dd�tt|j|jd��|�tj|jdd�tt|jd��|�tjtdd�i�|�tj|jdd�i�|�tj|j
dd�i�|�tj|dd�ttd��|�tj|jdd�ttd��|�tj|j	dd�tt|jd��|�tj|j
dd�td|j|jd��|�tj|jdd�d
ddd��|�tjtdd�i�|�tj|jdd�i�|�tj|j
dd�i�dd�}||j	�}|�|dd�|�dd��|�|j|j	j�|�t�|�tt|jd��|�tj|dd�tt|jd��|�tj|dd�tt|jd��dS)Nrr�cSr/rrr�rrrr"r�zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foor�r"r-T��eval_strr��r��globals�rr�rb�rr�rrbr��MyClass�rr�r�r�Fc�t����fdd��}|S)Nc��|d|d�Sr!rr��rDrr�wrapperB�ziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper�rqrQ�rDr�rr�r�times_threeA�zXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_threer r�r��xxx)r�r-r�r:�get_annotationsrdr�rr�r��	function2�	function3�UnannotatedClass�unannotated_function�assertIsNot�__globals__)r@r"�isar�r�rrr�+test_get_annotations_with_stock_annotationssL  ""&""& 
 $zCTestClassesAndFunctions.test_get_annotations_with_stock_annotationscCsbt}|�t�|�ddd��|�t�|j�ddd��|�t�|j�dddd��|�t�|j�ddddd��|�t�|j�ddd	d
��|�t�|j�i�|�t�|j	�i�|�tj|dd�t
td��|�tj|jdd�t
td��|�tj|jdd�t
t|jd��|�tj|jdd�t
d|j|jd��|�tj|jdd�dddd
��|�tj|jdd�i�|�tj|j	dd�i�|�tj|d
d�ddd��|�tj|jd
d�ddd��|�tj|jd
d�dddd��|�tj|jd
d�ddddd��|�tj|jd
d�ddd	d
��|�tj|jd
d�i�|�tj|j	d
d�i�t}|�t�|�i�|�tj|dd�i�|�tj|d
d�i�dd�}||j�}|�|dd�|�dd��|�
|j|jj�|�t�|�dddd��|�tj|dd�t
t|jd��|�tj|d
d�dddd��|�t�|j�ddi�|�tj|jdd�dt
i�dS)Nr�r-r�r�r��'str'r��'int'�	'MyClass'r�Tr�Fcr�)Ncr�r!rr�r�rrr�nr�znTestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three.<locals>.wrapperr�r�rr�rr�mr�z]TestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_threer r�r�r�Zmytype)rr�r:r�r�r�r�r�r�r�r�r-rr�r�ZMyClassWithLocalAnnotations)r@rZisa2r�r�rrr�0test_get_annotations_with_stringized_annotationsNsF"&  " 
  zHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations)NNNN)"r7rFrGr*r5r<rDrJrYrarfr�rsrrprrurwr}r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr%Ls\
�

�(	�
��Q

#	 
	3r%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>.NonDataDescriptorNcSr/rr)r@�valuergrrrr�r�zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__r�r7rFrGrrrrr�NonDataDescriptor��r	c@ry)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0cSr/rr)r@rdrrrrr�r�zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N�r7rFrGrrrrr�DataDescriptor0�r}rc@ry)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1cSr/rrr�rrr�
__delete__�r�zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)r7rFrGr
rrrr�DataDescriptor1�r}rc@seZdZdZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nrrrrr�DataDescriptor2�r�rz-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)r?r:rjr6)r@r	rrrrrr�test_custom_descriptors�s ����z,TestIsDataDescriptor.test_custom_descriptorscC�&Gdd�d�}|�t�|j�d�dS)Nc@r�)z/TestIsDataDescriptor.test_slot.<locals>.Slotted�r"Nr�rrrr�Slotted�r�rza slot is a data descriptor)r6r:rjr")r@rrrr�	test_slot�s�zTestIsDataDescriptor.test_slotcCr)Nc@�eZdZedd��ZdS)z6TestIsDataDescriptor.test_property.<locals>.PropertiedcSr/rrrZrrr�
a_property�r3zATestIsDataDescriptor.test_property.<locals>.Propertied.a_propertyN)r7rFrGrWrrrrr�
Propertied�r�rza property is a data descriptor)r6r:rjr)r@rrrr�
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>.TestcSr/rrrZrrr�instance_method�r�zATestIsDataDescriptor.test_functions.<locals>.Test.instance_methodcSr/rrr�rrr�class_method�r{z>TestIsDataDescriptor.test_functions.<locals>.Test.class_methodcSr/rrrrrr�
static_method�r{z?TestIsDataDescriptor.test_functions.<locals>.Test.static_methodN)r7rFrGrr�rr�rrrrr�Test�s
rcSr/rrrrrrr��r{z5TestIsDataDescriptor.test_functions.<locals>.functioncSr/rrrrrrr��r�z5TestIsDataDescriptor.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�r?r:rjrrr)r@rr�Za_lambdarrr�test_functions�s$�����z#TestIsDataDescriptor.test_functionsN)r7rFrGrrrrrrrrrs
rc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestGetClosureVarscC�Vdd�}t�}d|i}dti}dti}dh}t�||||�}|�t�||��|�dS)Nc��fdd�}|S)Nc�t|�tt�dSr��print�_global_ref�unbound_ref�Z	local_ref��nonlocal_refrrr���z=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.gr�r(r�rr'rr���z2TestGetClosureVars.test_name_resolution.<locals>.fr(r$r#r%�r�r$r#r:�ClosureVarsr��getclosurevars�r@r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesr)rrr�test_name_resolution�s�z'TestGetClosureVars.test_name_resolutioncCr)Ncr )Nc3s�t|�tt�dVdSrr"r&r'rrr��s�
z?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@ry)z1TestGetClosureVars.test_method_closure.<locals>.Ccs�fdd�}|S)Ncr!rr"r&r'rrr��r)z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r@r(r�rr'rr��r+z3TestGetClosureVars.test_method_closure.<locals>.C.fNr�rrrrr��r}r�r(r$r#r%)r�r$r#r:r-r�r.r�)r@r�r0r1r2r3r4r)rrr�test_method_closure�s�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)r:r.Z	nonlocalsrNrrr�_nonlocal_vars��z=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscr )Nc��|Srr�r�r�rr�add�r3zFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r�r<rr�r�
make_adder�r+z9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�Srr�rF�rEr�rrr���
zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�rErr?r�curry�rz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kSrrr�rrr�	less_than�r3z8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�Srrr�rNrrr��r�zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>rrN��lerNrr��rz;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)�g_ref)rDr�)�YrCrrF�sz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs���|�d�ji�dS)Nr�)r�rE�r��rFr8r@rr�check_y_combinator�rHzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorr r!r�r�r?cs�fdd�S)Ncr:rrr;r�rrr�	szITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>rr�rr�rr�	r�z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r@r=rArBrIZincZadd_twoZgreater_than_fiverrHr�test_nonlocal_vars�s$

��z%TestGetClosureVars.test_nonlocal_varscCsFdd�}t�iiit��}|�t�dd��|�|�t�|�|�dS)NcSr/rrrrrrr"r�z9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSr��NTrrrrrr�r�z>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)r:r-r9r�r.)r@r"Z_emptyrrr�test_getclosurevars_empty
sz,TestGetClosureVars.test_getclosurevars_emptycCsBGdd�d�}|�ttjd�|�ttjt�|�ttji�dS)Nc@r~)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TNrrrrr�Tr�rMr )rJrKr:r.r�)r@rMrrr�test_getclosurevars_errorsz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r�)r')r@rwrmrrr�_private_globalss
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nr�r#r)rO�popr:r-r#r�r.�r@r�rmr)rrr�test_builtins_fallback�z)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nrr r�r#)rOr:r-r�r.rQrrr�test_builtins_as_dict%rSz(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nr�rr#)rOr
r:r-rr�r.rQrrr�test_builtins_as_module+sz*TestGetClosureVars.test_builtins_as_moduleN)
r7rFrGr5r6r7rJrLrNrOrRrTrUrrrrr�s&rc@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|�||�dS)NrG�func(%s)�inspect.getcallargs(func, %s))r�r5r�)r@r��call_params_string�locsZr1Zr2rrr�assertEqualCallArgs4s
�z,TestGetcallargsFunctions.assertEqualCallArgsc
Cs�t|pi|d�}z
td|d|�Wnty&}z|}WYd}~n
d}~ww|�d�z
td|d|�WntyJ}z|}WYd}~n
d}~ww|�d�|�t|�t|��|�t|�t|��~~dS)NrGrWzException not raisedrX)r�r5rZZfailr�rgr�r-)r@r�Zcall_param_stringrZr�Zex1Zex2rrr�assertEqualException;s(��

���
z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r5)r@r|rwrrr�makeCallableNsz%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[�r@r�rrr�
test_plainSs&
z#TestGetcallargsFunctions.test_plaincC�V|�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])rbrcrrr�test_varargsjs
z%TestGetcallargsFunctions.test_varargscCsz|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�dS)Nza, b=1, **craz2, 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)rbrcrrr�
test_varkwss
z#TestGetcallargsFunctions.test_varkwcCre)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)rbrcrrr�test_varkw_onlys
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\rcrrr�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)rbrcrrr�test_multiple_features�s

z/TestGetcallargsFunctions.test_multiple_featuresc	Cs�|�d�}|�d�}|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�||fD]D}|�|d	�|�|d
�|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�qI|�d�}|�|d�|�|d�|�d�}|�|d�|�|d�dd�}|�td��
t�|�Wd�n1s�wYdd�}|�td��
t�|�Wd�n1s�wY|�td��tjdtjjd d!�Wd�n	1�s
wY|�td"��tjd#d$d d!�Wd�n	1�s)wY|�td%��tjd&d'd(�Wd�dS1�sHwYdS))Nr�za, br^r�r$z1,x=1razb=3rfz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=3riz1, 2z1, 2, a=1, b=2z	*, a, b=0cSr/rrrcrrr�f5�r�z0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSr/rrr�rrr�f6�r{z0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesr"r���kind�defaultz%value 5 is not a valid Parameter.kindrr�zname must be a str, not a int�{r?�rq)	r]r\r�rKr:Zgetcallargsr@r]�VAR_KEYWORD)	r@Zf0�f1�f2r��f3�f4rnrorrr�test_errors�sr




���������$�z$TestGetcallargsFunctions.test_errorsr)
r7rFrGr[r\r]rdrgrhrjrlrmrzrrrrrV2s

	
rVcr�)�TestGetcallargsMethodscCs"Gdd�dt�}||_|�|_dS)Nc@r~)z)TestGetcallargsMethods.setUp.<locals>.FooNrrrrr�Foo�r�r|)r�r��inst)r@r|rrrr��szTestGetcallargsMethods.setUpcs0d|vsJ�tt|�j}|d|�|j_|jjS)Nr@zself, )rr{r]r�r�r})r@r|�mkrrrr]sz#TestGetcallargsMethods.makeCallable)r7rFrGr�r]rrrrrr{�sr{csBeZdZ�fdd�Zd
�fdd�	Zd
�fdd�	Zd
dd	�Z�ZS)�TestGetcallargsUnboundMethodscstt|��|�|jjSr)rrr]r�r��r@r|rrrr]
sz*TestGetcallargsUnboundMethods.makeCallableNc�tt|�j|�|||��Sr)rrr[�_getAssertEqualParams�r@r�rYrZrrrr[�
�z1TestGetcallargsUnboundMethods.assertEqualCallArgscr�r)rrr\r�r�rrrr\r�z2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,d|vsJ�t|p
i|jd�}|d||fS)Nr})r}zinst,)r�r}r�rrrr�sz3TestGetcallargsUnboundMethods._getAssertEqualParamsr)r7rFrGr]r[r\r�rrrrrrs
rc@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).�TestGetattrStaticcCs�Gdd�dt�}|�}|�t�|d�|j�|�t�|dd�|j�|�t��t�|d�Wd�n1s8wY|�t�|dd�d�dS)Nc@�eZdZe�ZdS)z+TestGetattrStatic.test_basic.<locals>.ThingN�r7rFrGr�r�rrrr�Thingr�r�r�r�r�)r�r�r:�getattr_staticr�rJrV�r@r��thingrrr�
test_basics�zTestGetattrStatic.test_basiccCs@Gdd�dt�}Gdd�d|�}|�}|�t�|d�|j�dS)Nc@r�)z/TestGetattrStatic.test_inherited.<locals>.ThingNr�rrrrr�+r�r�c@r~)z4TestGetattrStatic.test_inherited.<locals>.OtherThingNrrrrr�
OtherThing-r�r�r��r�r�r:r�r�)r@r�r�Z	somethingrrr�test_inherited*sz TestGetattrStatic.test_inheritedcCsHGdd�dt�}|d�}|�t�|d�d�|`|�t�|d�d�dS)Nc@r�)z3TestGetattrStatic.test_instance_attr.<locals>.Thingr!cSs
||_dSrr��r@r�rrrr�6�
z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)r7rFrGr�r�rrrrr�4r�r�r�r�r!r�r�rrr�test_instance_attr3s
z$TestGetattrStatic.test_instance_attrcCs0Gdd�dt�}|�}|�t�|d�|j�dS)Nc@r)z.TestGetattrStatic.test_property.<locals>.ThingcSr0�NzI'm pretending not to existrUrZrrrr�?sz0TestGetattrStatic.test_property.<locals>.Thing.xN)r7rFrGrWr�rrrrr�>r�r�r�r�r�rrrr=szTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@ry)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWr0r�rU)rxrrrrGr3zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nrrrrr�
descriptorFr}r�cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN�r7rFrGr�r�Zdescrrr�Jr�r�r�)r�r�r:r�)r@r�r�r�rr�r�%test_descriptor_raises_AttributeErrorEs
z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs*Gdd�dt�}|�t�|d�|j�dS)Nc@r�)z4TestGetattrStatic.test_classAttribute.<locals>.ThingNr�rrrrr�Pr�r�r�r��r@r�rrr�test_classAttributeOsz%TestGetattrStatic.test_classAttributecCs.Gdd�dt�}|�t�|d�|jd�dS)Nc@s eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jSr)�_xrZrrrr�W�z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r7rFrGrfr�r�r�r�rrrrr�Vs

r�r�)r�r�r:r�rbr�rrr�test_classVirtualAttributeUsz,TestGetattrStatic.test_classVirtualAttributecCs:Gdd�dt�}Gdd�d|�}|�t�|d�|j�dS)Nc@r�)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNr�rrrrr�_r�r�c@r~)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNrrrrrr�ar�r�r�r��r@r�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�cS�
d|_dS�Nr"r�rZrrrr�jr�z4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)r7rFrGr�r�r�rrrrr�gsr�r�r�rr�r�rrr�
test_slotsfs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@r�)z.TestGetattrStatic.test_metaclass.<locals>.metar"N)r7rFrGr�rrrr�metatr�r�c@r~)z/TestGetattrStatic.test_metaclass.<locals>.ThingNrrrrrr�vr�r�r�r�r"c@r~)z-TestGetattrStatic.test_metaclass.<locals>.subNrrrrr�subzr�r�c@r�)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�Nr�rrrrr�|r�r�c@r~)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNrrrrr�OtherOtherThing�r�r�r�r��rgr�r�r:r�)r@r�r�r�r�r�rrr�test_metaclassssz TestGetattrStatic.test_metaclasscCs.|�t�ddd�d�|�t�dd�d�dS)Nr r"�lower)r�r:r��assertNotEqualrZrrr�test_no_dict_no_slots�sz'TestGetattrStatic.test_no_dict_no_slotscCsLttdd��}|�t�|d�t|�j�Wd�dS1swYdS)Nr�r�rd)r�r�r�r:r�rgrd)r@�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�cSr�r�r�rZrrrr��r�z>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)r7rFrGr�r�rrrrr��sr�c@r~)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNrrrrrr��r�r�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@ry)z5TestGetattrStatic.test_descriptor.<locals>.descriptorcSr�r!r�r@�instance�ownerrrrr�r{z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__Nrrrrrr��r}r�cr�)z.TestGetattrStatic.test_descriptor.<locals>.FooN�r7rFrGr�r�r�rrr|�r�r|r r�cSr/rr)r�r)�vrrrr��r�z3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r�rbr�r:r�r�r@r|r"rr�r�test_descriptor�s

z!TestGetattrStatic.test_descriptorcsVGdd�dt��G�fdd�dt�}Gdd�dt|d�}|�t�|d�|jd�dS)	Nc@ry)zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSr�r!rr�rrrr�r{zLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__Nrrrrrr��r}r�cr�)z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNr�rr�rrr��r�r�c@r~)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNrrrrrr��r�r�r�r�)r�rgr�r:r�rb)r@r�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@r�)z6TestGetattrStatic.test_class_as_property.<locals>.Baser�Nr�rrrr�Base�r�r�c@seZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tSrK)�executedr�rZrrrr��zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r7rFrGr�rWrrrrr�	Something�sr�r"r�)r�r�r:r�r?r�)r@r�r�r�rrr�test_class_as_property�sz(TestGetattrStatic.test_class_as_propertycCsbGdd�dt�}Gdd�dt�}Gdd�d||d�}|�t�|�d�d	�|�t�|d�d	�dS)
Nc@r)z4TestGetattrStatic.test_mro_as_property.<locals>.MetacSstfSrr�rZrrr�__mro__�r�z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)r7rFrGrWr�rrrrr��r�r�c@r�)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�Nr�rrrrr��r�r�c@r~)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNrrrrrr��r�r�r�r"r�r�)r@r�r�r�rrr�test_mro_as_property�s
z&TestGetattrStatic.test_mro_as_propertycsN|�d�_G�fdd�dt�}|�}d|_|�t�|d�d�|��j�dS)NFcs eZdZdZe�fdd��ZdS)z4TestGetattrStatic.test_dict_as_property.<locals>.Foor�cs
d�_iSrK)�calledrZ�rZrrrb�r�z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r7rFrGrrWrbrr�rrr|�sr|r?rr�)r�r�rr�r:r�r?r�rr�r�test_dict_as_property�sz'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��||�dSrK)r�r�get)r@�keyrr)rrZrrr��sz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getr)r7rFrGr�rrr�rr�Custom�sr�c@r�)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)r7rFrGrrrrrr|�r�r|rr�)r�r�r�rbr�r:r�r?)r@r�r|r"rr�r�test_custom_object_dict�sz)TestGetattrStatic.test_custom_object_dictcCsLGdd�dt�}Gdd�d|d�}|�}|�t�|d�d�|�|j�dS)Nc@r)z?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.MetacSr�rK)r�rZrrrrb�s
zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N�r7rFrGrWrbrrrrr��r�r�c@r�)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSr��Nr��rYrZrrrr�r�zITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)r7rFrGr�r�rrrrr��sr�r�rYr�)rgr�r:r�r?r�)r@r�r�r�rrr�test_metaclass_dict_as_property�s
z1TestGetattrStatic.test_metaclass_dict_as_propertycCs t�}|�t�td|�|�dS)N�version)r�r�r:r�rc)r@�sentinelrrr�test_modules�zTestGetattrStatic.test_modulecCs|Gdd�dt�}Gdd�dt|d�}Gdd�d|d�}|�t��t�|d�Wd�n1s1wY|�|j�dS)	Nc@r)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTr�r�)r�r�rZrrrrbs
z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__Nr�rrrr�MetaMetar�r�c@r�)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)r7rFrGr�rrrrr�r�r�r�c@r~)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNrrrrrr�r�r�rY)rgrJrVr:r�r?r�)r@r�r�r�rrr�3test_metaclass_with_metaclass_with_dict_as_property
s�zETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)r7rFrGr�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�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)Ncs��td�D]}|VqdS�Nr�rS�Znumberrrr�number_generator!rVz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r@r�rrrr� szTestGetGeneratorState.setUpcC�t�|j�Sr)r:Zgetgeneratorstater�rZrrr�_generatorstate&r9z%TestGetGeneratorState._generatorstatecC�|�|��tj�dSr)r�r�r:ZGEN_CREATEDrZrrr�test_created)rrz"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dSr)�nextr�r�r�r:Z
GEN_SUSPENDEDrZrrr�test_suspended,s
z$TestGetGeneratorState.test_suspendedcCs"|jD]}q|�|��tj�dSr)r�r�r�r:�
GEN_CLOSEDrTrrr�test_closed_after_exhaustion0s
z2TestGetGeneratorState.test_closed_after_exhaustioncC�L|�t��|j�t�Wd�n1swY|�|��tj�dSr)rJrr�r0r�r�r:r�rZrrr�%test_closed_after_immediate_exception5��z;TestGetGeneratorState.test_closed_after_immediate_exceptioncs,�fdd�}|��_t�j�t�j�dS)Nc3s>�td�D]}�����tj�|V�����tj�qdSr�)r#r�r�r:ZGEN_RUNNINGr�rZrr�running_check_generator?s��zCTestGetGeneratorState.test_running.<locals>.running_check_generator)r�r�)r@r�rrZr�test_running:s
z"TestGetGeneratorState.test_runningcC�@d��}|D]}tt|�}|�|t|��|�|t|��qdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED�r�r�r:r��reprr-�r@�namesrd�staterrr�test_easy_debuggingJ�
�z)TestGetGeneratorState.test_easy_debuggingc	Cs�ddd�}|gd��}|�t�|�dgd�d��t|�|�t�|�dgd�ddd��t|�|�t�|�dgd�ddd��t|�|�t�|�dgd�ddd	d
��zt|�Wn	tyeYnw|�t�|�i�dS)Ncss&�d}|D]}|dkr
d}|VqdS)NrIr�rpr)�lstrr�r�rrrr�eachSs��z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrI)rr�r )rr�r�r�r!r�rp)rr�r�r�rr�r�r:�getgeneratorlocalsr��
StopIteration)r@r�Znumbersrrr�test_getgeneratorlocalsRs:
�
��
��
���z-TestGetGeneratorState.test_getgeneratorlocalscCsVdd�}|�}|�t�|�i�zt|�Wn	tyYnw|�t�|�i�dS)Ncss�dVdSrprrrrr�	yield_oneps�
zFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_oner�)r@r�r�rrr�test_getgeneratorlocals_emptyos�z3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|�ttjd�|�ttjdd��|�ttjt�|�ttjd�dS)Nr cSr�rKrr�rrrr�|r�zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)r!r�)rJrKr:r�r9rZrrr�test_getgeneratorlocals_errorzsz3TestGetGeneratorState.test_getgeneratorlocals_errorN)r7rFrGr�r�r�r�r�r�r�r�r�r�r�rrrrr�sr�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestGetCoroutineStatecs&tjdd����fdd�}|�|_dS)Ncsr�r�rSr�rrr�number_coroutine�s��z5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s���IdHdSrrr�r�rr�	coroutine�s�z.TestGetCoroutineState.setUp.<locals>.coroutine)rfr�)r@r�rr�rr��s
zTestGetCoroutineState.setUpcCs|j��dSr)r�rsrZrrrr�rzTestGetCoroutineState.tearDowncCr�r)r:Zgetcoroutinestater�rZrrr�_coroutinestate�r9z%TestGetCoroutineState._coroutinestatecCr�r)r�r�r:ZCORO_CREATEDrZrrrr��rrz"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dSr)r��sendr�r�r:ZCORO_SUSPENDEDrZrrrr��sz$TestGetCoroutineState.test_suspendedcCs>	z|j�d�Wn	tyYqwq|�|��tj�dSr)r�r�r�r�r�r:�CORO_CLOSEDrZrrrr��s��z2TestGetCoroutineState.test_closed_after_exhaustioncCr�r)rJrr�r0r�r�r:r�rZrrrr��r�z;TestGetCoroutineState.test_closed_after_immediate_exceptioncCr�)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSEDr�r�rrrr��r�z)TestGetCoroutineState.test_easy_debuggingcshtjdd������d�fdd�	}|�}|�t�|�d�d��|�d�|�t�|�d�dd��dS)	Ncsrwrrrrrr�gencoro�s�
z>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�s�d}�IdHdSrXrr��r�rrr��s�z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rr�rY)rr�r�r)rfr�r�r:Zgetcoroutinelocalsr�)r@r�rurr�r�test_getcoroutinelocals�s
�

�z-TestGetCoroutineState.test_getcoroutinelocalsN)r7rFrGr�rr�r�r�r�r�r�r�rrrrr��s		r�c@r~)�MySignatureNrrrrrr���r�c@r~)�MyParameterNrrrrrr��r�r�c@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�Zd2d3�Z d4d5�Z!e�ed�d6d7��Z"e�ed�d8d9��Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+dJdK�Z,dLdM�Z-e�ed�dNdO��Z.dPdQ�Z/dRdS�Z0dTdU�Z1dVdW�Z2dXdY�Z3dZS)[�TestSignatureObjectcKsBtj|fi|��}tdd�|j��D��|j|jurdfS|jfS)NcssL�|]!}|j|j|jurdn|j|j|jurdn|jt|j���fVqdS).N)rdrr�empty�
annotationr-rqr�)r�paramrrr�	<genexpr>�s���z0TestSignatureObject.signature.<locals>.<genexpr>.)r:r|�tupler(�values�return_annotationr�)r��kw�sigrrrr|�s���zTestSignatureObject.signaturec
Cs�tj}tj}|�t|��d�|�t|�j�d�ddd�}t�|�}|jdj|j	d�}|jd	j|j	d�}|jd
}|jd}|jd}	|jd
}
|jd}||||	|
|f�|�
td��||||	|
|f�Wd�n1sswY|�
td��|||	||
|f�Wd�n1s�wY|�
td��||	|||
|f�Wd�n1s�wY|�
td��||||	||
f�Wd�n1s�wY|jdd�}|�
td��||||	||
f�Wd�n1s�wY|�
td��|||f�Wd�n	1�swY|�
td��||||f�Wd�n	1�s0wY|�
td��|||f�Wd�n	1�sMwY|�t|��
d��|�dt|�v�dS)N�()zmappingproxy(OrderedDict())r��dc_r/rr)�po�pk�pod�pkd�korr�rrrrZ�r{z7TestSignatureObject.test_signature_object.<locals>.testr
rtrrr
rrr�zwrong parameter order�rdzduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r�r	)r:r_r]r�r-r�r(r|�replacer^r�r@r6rM)
r@�S�PrZrr
rrr
rrr�Zkwargs2rrr�test_signature_object�sR






��������z)TestSignatureObject.test_signature_objectc		Cs�id�dddddifdd�}tj|dd	�}t�|�}ttjd�D](}|j|d
d��t�t�	||��}|�
||�Wd�n1sDwYq!t�|�}tdtjj
d
�}tj|j|d	�}t�j|��|jd�}|�t|t��|�t|jdt��ttjd�D];}|j|dd��*t�t�	||��}|�
||�|�t|t��|�t|jdt��Wd�n1s�wYq�dS)N�rrr rbr�rLc[r/rr�rr�rrrrrr"	r�z=TestSignatureObject.test_signature_object_pickle.<locals>.foorcF)�
pickle_ver�subclassr)rdrq)r(rT)rqrrr:r|r#�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�r�r]r^�collections�OrderedDictr(r�rrrr6r�)	r@r"Zfoo_partialr�verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_pickle
	s8
��
�����z0TestSignatureObject.test_signature_object_picklecCs|dd�}t�|�}|�t��d|_Wd�n1swY|�t��d|jd<Wd�dS1s7wYdS)NcSr/rrrcrrrrZ'	r{z=TestSignatureObject.test_signature_immutability.<locals>.testrr)r:r|rJrVr"rKr(�r@rZrrrr�test_signature_immutability&	s
�"�z/TestSignatureObject.test_signature_immutabilitycCsdd�}|�|�|�d�dS)NcSr/rrrrrrrZ2	r{z9TestSignatureObject.test_signature_on_noarg.<locals>.test�r.�r�r|�r@rZrrr�test_signature_on_noarg1	sz+TestSignatureObject.test_signature_on_noargcCs ddd�}|�|�|�d�dS)	Nr�r"rbrscSr/rrr�rrrrZ7	r{z9TestSignatureObject.test_signature_on_wargs.<locals>.test))�r..�positional_or_keyword)r�.r"r(rs)r�r"rbrsr$r%rrr�test_signature_on_wargs6	s
�z+TestSignatureObject.test_signature_on_wargscCsDdtdtdtfdd�}|�|�|�ddtdfddtdfftf�dS)Nrr�rbcSr/rrr�rrrrZ?	r{z;TestSignatureObject.test_signature_on_wkwonly.<locals>.test.�keyword_only)�floatr-r�r�r|r%rrr�test_signature_on_wkwonly>	s

���z-TestSignatureObject.test_signature_on_wkwonlycCsPddd�dddddd	d
tfdd�}|�|�|�d
ddddd
dtdffdf�dS)Nr�rs)rLr�r"rrrY�bazr�c_r/rr)rr�rYrLrr�rrrrZG	r{z@TestSignatureObject.test_signature_on_complex_args.<locals>.testr')r�r�r"r()r.r�var_positional)rY.r-r*)rLrs.r*.�var_keyword�r�)r�r�r|r%rrr�test_signature_on_complex_argsF	s"
���z2TestSignatureObject.test_signature_on_complex_argscs�dd��dd��G��fdd�d�}|�|���d�|�|���d�|�|�|j�d�|�|�|j�d�|�|�|j�d�|�|�|j�d�dS)	NcWr/rrrrrr�test_args_onlyS	r{zGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_r/rr�rr�rrr�test_args_kwargs_onlyV	r{zNTestSignatureObject.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>.AcWr/rrrrrr�test_classmethodZ	r3zKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWr/rrrrrr�test_staticmethod^	r3zLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodr N)
r7rFrGr�r5r�r6rqrRrvrwrxryr�r4r2rrr&Y	s

r&�)�r..r..�)r9�r�..r/.)r�r|rvrwrxryr�rr7r�test_signature_without_selfR	s*������z/TestSignatureObject.test_signature_without_selfrgcs�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�}||��Wd�n1s�wY|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)rr@)
r:r|r6r�r_r�r�r(rrd�rr|rZrr�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)rr@)
r:r|r6r�r_r(r�r�rrdr=rZrr�
test_callable�	s

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jSr)r(rrr)r|rrr*�	r�z9TestSignatureObject.test_signature_on_builtins.<locals>.pr�rqr�sbytesr�g��Q�	@r)�#�nr"Tr�F�localr�rcrBsabczno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r7rFrGrgrPrrrr�ThisWorksNow�	r�rC)rrrsr�rc�maxsizer�r(r�rjrkrlrm�StringIO�bytes�	maketransr��fromkeysrgrPr�r��minr�r@�__delitem__rWr
Z#docstring_with_signature_but_no_doc)r@rrr>r?r*r�rCrr�r�test_signature_on_builtinsu	sD









�

z.TestSignatureObject.test_signature_on_builtinscCsdddl}|j}dd�}||�}|�t�|�t�|��dtfdd�}|�tj|dd�t�|��dS)	Nrcs t���dtf�fdd��}|S)Nrbc��|i|��Srrr3rGrrr��	�z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)rqrQr��r�r�rrGr�	decorator�	�zKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorrbc_r/rrr3rrr�wrapper_like�	r�zNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF�Zfollow_wrapped)rrrsr�r:r|r�)r@rrr�rOZdecorated_funcrQrrr�$test_signature_on_decorated_builtins�	s�
��z8TestSignatureObject.test_signature_on_decorated_builtinscCs|ddl}|�td��t�|j�Wd�n1swY|�td��t�t�Wd�dS1s7wYdS)Nrzno signature found for builtin)rrr�r@r:r|rvr-)r@rrrrr�'test_signature_on_builtins_no_signature�	s���"�z;TestSignatureObject.test_signature_on_builtins_no_signaturecCs<|�td��t�d�Wd�dS1swYdS)N�is not a callable objectr�)r�rKr:r|rZrrr�test_signature_on_non_function�	s"�z2TestSignatureObject.test_signature_on_non_functioncsdd�dd�}Gdd�d�}tj�|�}tj�||��}|�||�t�||��}|�||�||�}|`|�|�|�d�tj��fdd	�}tj�	d
|��)||�}|�
t�|��d|_|�t�|��|�t�|�|�Wd�dS1szwYdS)NT��kwonlyc_r/rr�rr�rXZ	kwonlyreqrr�rrrr��	r{zITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@r�)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecS�2|j|_|j|_|j|_|j|_|j|_||_dSr�r7rcrd�__defaults__�__kwdefaults__r��r@r�rrrr��	�
zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_�|j|i|��SrrGr�rrrrP�	rzVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N�r7rFrGr�rPrrrr�funclike�	�rbr:cst|d�rdS�|�S)N�_builtinmockT�re)rC�Z_orig_isdescrr�_isdesc
s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
r:r_�
from_callabler�r|r\r�r�r4r5r?rdr6)r@r�rbZsig_funcZsig_funclikeZflrgZbuiltin_funcrrfr�'test_signature_from_functionlike_object�	s*�"�z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|�tt�|��d�dS)NTrWc_r/rrrYrrrr�
r{zCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSr/rr)r@Zmarkerrrrr�!
r{zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)r7rFrGr�rcrdr\r]rrGrrrb 
s
rbz(marker))r�r-r:r|)r@rbrrGr�!test_signature_functionlike_class
s
z5TestSignatureObject.test_signature_functionlike_classcCs�Gdd�d�}|�|�|�j�dtf�|�|�|�j�d�|�|�|�d�|�td��|�|��Wd�dS1s@wYdS)Nc@s4eZdZdd�Zddefdd�Zdd�Zd	d
�ZdS)
z:TestSignatureObject.test_signature_on_method.<locals>.TestcWr/rrrrrrr�.
r{zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r rbcSr/rr�r@rErFrrrr�0
r{z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWr/rrrrrr�m22
r{z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSr/rrrcrrrrP4
r{zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__Nr)r7rFrGr�r�r�rlrPrrrrr-
s
r��rE..r()rFr .r(r8zinvalid method signature)r�r|r�r�rlr�r@)r@rrrr�test_signature_on_method,
s
����"�z,TestSignatureObject.test_signature_on_methodcCs>Gdd�d�}t�|�j�dd��}|�|�|�dtf�dS)Nc@seZdZddefdd�ZdS)zETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr rbcSr/rrrkrrrr�J
r{zHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1Nr)r7rFrGr�r�rrrrrI
r�rc_r/rrr3rrr�m1dL
r3zDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1drm)rqrQr�r�r|r�)r@rrprrr�#test_signature_wrapped_bound_methodG
s
��z7TestSignatureObject.test_signature_wrapped_bound_methodcC�DGdd�d�}|�j}|�|�|�d�|j}|�|�|�d�dS)Nc@seZdZedd�dd��ZdS)z?TestSignatureObject.test_signature_on_classmethod.<locals>.Testr r>cSr/rr)r�rErFrrrr"V
r3zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)r7rFrGr�r"rrrrrU
sr))rn)rFr .r*.�r"r�r|�r@r�methrrr�test_signature_on_classmethodT
���z1TestSignatureObject.test_signature_on_classmethodcCrr)Nc@r)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSr/rr)r�rGrrrr"h
r3zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)r7rFrGr�r"rrrrrg
r�r)))r�..r()rG..r*.rsrtrrr�test_signature_on_staticmethodf
rwz2TestSignatureObject.test_signature_on_staticmethodc
Cs�ddlm}tj}dd�}|�|�||��d�|�td��t�||d��Wd�n1s1wY|�td��t�||dd��Wd�n1sPwYd	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�dtdd fd!d�}t�|�}|_	|�|�|||d���d"dd#td$ffd f�|�|�|||d�d��dd#td$ffd f�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�}|�||ji|j��d5�dGd6d&�}||d7d
�}t�|�j
d3d�}|�||ji|j��d8�t�|��
d3d9�}|�||ji|j��d:�t�|�j
d3d9d�}|�||ji|j��d:�t�|�j
d9d�}|�||ji|j��d;�||d'd(d�}t�|��
d9�}|�||ji|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)rrcSr/rrrrrrrZ}
r{z;TestSignatureObject.test_signature_on_partial.<locals>.testr#�has incorrect argumentsr rccSr/rrrHrrrrZ�
r{))r'�r�..r(�r..r*�r�..r*.))rzr{r|.r!r))rz�rr!.r*r|.)r�r))r'�r�r .r*r}r|.))r~r}r|.))�rr .r*�r�..r*r{r|.c_r/rr)rr�rr�rrrrZ�
r{))r9r�r;.))rr�r;.r�Tr�)rZr�))r9�r�r.r*r;.�r�))r'r9r�r;.)r�rZrrbr�cSr/rrr�rrrrZ�
r{rz.r(cS�|Srrrcrrrr"�
r{z:TestSignatureObject.test_signature_on_partial.<locals>.foor��)))rr�.r*.cS�
|||fSrrr�rrrr"�
r�r�)))r�r�.r*r{.)r r�r�cS�||||fSrrrHrrrr"r9)r�r)r�r�))r')r�r�.r*)rr�.r*)r�r�.r*.��r�r�)r�r�r�r�cSr�rrr�rrrr"r��
)r�r!r�rp)r�rpr�)r rpr�)rpr�r�c[r/rr)rr�rr�r�rrrr"'r{rrtr�z(a, b, /, c, d, **kwargs)))�r�..Zpositional_only�r..r(�r�..r(r;.))r�r�r;.))r�r;.))�rr�.r*r|r;.))r�r�r|r;.rI)rqrrr:r]r�r|r�r@r�r`�bindrr�r(�copyrr^r_rr-)
r@rrr]rZrZpsigr"Z_foo�ba�paramsrrr�test_signature_on_partialx
s����������������
��������



�����z-TestSignatureObject.test_signature_on_partialcs�ddlm�G�fdd�d�}|�td��t�|j�Wd�n1s&wYG�fdd�d�}|�|j|jdd�d	�|�|j|�jdd�d
�G�fdd�d�}|�|j|jdd�d�dS)
Nr�rRcseZdZdd�Z�e�ZdS)�ATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSr/rrrrrrrZTr{�FTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN�r7rFrGrZrLrr�rr�SpamSsr�rycs"eZdZddd�Z�edd�ZdS)	r�rbrYcSr/rr)�itrrrrrrZ\r{r�r rN)rbrYr�rr�rrr�[s
Fr�)))r�..r(r'�rr .r*rY))r'r�rYcs eZdZddd�Z�ed�ZdS)r�r@�annocSr/rrr�rrrrZlr{r�r N)r@r�)r7rFrGrZr�rr�rrr�ks
)))r@.r�r(.)	rqrRr�r@r:r|rLr�r�)r@r�rr�r�test_signature_on_partialmethodPs ����z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSr/rrrcrrrr"vr�zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorYz(a))�_partialmethodr�r-r:r|�r@r"rrr�$test_signature_on_fake_partialmethodusz8TestSignatureObject.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 ����dtf�fdd��}|S)NrbcrLrrr3rGrrr�~rM�STestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)rQr�rN�rqrGrrO}rPzBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcr�)�<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSr/rr�r@rr�rrrr�r3z@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)r7rFrGrr�rOrrr|�r�r|))�r@..r(r'rz.))r'rz.FrRr:csN����dtf�fdd��}t���}t|j���dd�}|j|d�|_|S)Nrbcs�dg|�Ri|��Sr�rr3rGrrr��sr�r r[)	rQr�r:r|rr(rrr`)r�r�r�
new_paramsr�rGrrO�s
cr�)r�cSr/rrr�rrrrP�r3zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N�r7rFrGrPrr�rrr|�r��)rz.cSr/rrrrrr�wrapped_foo_call�r{zITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)rqr�r|rrP�__wrapped__)r@r|r�r)rOrqr�test_signature_on_decoratedzs2���	���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@ry)�6TestSignatureObject.test_signature_on_class.<locals>.CcSr/rr�r@rrrrr��r{�?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N�r7rFrGr�rrrrr��r}r��)r'.c@ry)�7TestSignatureObject.test_signature_on_class.<locals>.CMcSr/rr)r�rrrrrP�r{z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__Nr�rrrrrX�r}rXc@ry)r�cSr/rr�r@r�rrrr��r{r�Nr�rrrrr��r}r�c�"eZdZdd��fdd�
Z�ZS)r�r rc�t��||||�Sr�rrU��mclsrd�bases�dctr"rrrrU�r)�?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__�r7rFrGrUrrrrrrX��c@ry)r�cSr/rrr�rrrr��r{r�Nr�rrrrr��r}r�))�rd..r(�r�..r(�r�..r()r"r .r*.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMr rcr�rr�r�rrrrU�r)z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�Sr)rg)r��nm�bs�dtrrrrP�r9zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r7rFrGrUrPrrrrr�CMM�sr�cr�)r�r!�rcr�rr�)r�rdr�r�rrrrrU�r)r�r�rrrrrX�r�c@ry)r�cSr/rrr�rrrr��r{r�Nr�rrrrr��r})))r�..r()r�..r()r�..r(.cr�)r�r!r�cst��|||�Sr)rr�)r�rdr�r�rrrrr�rz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r7rFrGr�rrrrrrXr�c@ry)r�cSr/rrr�rrrr�r{r�Nr�rrrrr�r}))r�r�r�)rr!.r*.)r�r|rg)r@r�rXr�rrr�test_signature_on_class�sD��������z+TestSignatureObject.test_signature_on_classcCsxGdd�d�}Gdd�d|�}Gdd�d|�}Gdd�d|�}|�|�|�d	�|�|�|�d
�|�|�|�d�dS)Nc@seZdZddd�ZdS)z9TestSignatureObject.test_signature_on_subclass.<locals>.Ar c_�
t�|�Sr�r�rU)r�rrr�rrrrUr�zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__Nr�r7rFrGrUrrrrr&r
r&c@ry)z9TestSignatureObject.test_signature_on_subclass.<locals>.BcSr/rrr�rrrr�r{zBTestSignatureObject.test_signature_on_subclass.<locals>.B.__init__Nr�rrrrr'r}r'c@seZdZddd�ZdS)z9TestSignatureObject.test_signature_on_subclass.<locals>.Cr r!c_r�rr�)r�rr�rr�rrrrUr�zATestSignatureObject.test_signature_on_subclass.<locals>.C.__new__N�r r!r�rrrrr�r
r�c@r~)z9TestSignatureObject.test_signature_on_subclass.<locals>.DNrrrrrr(r�r(r�))�rr .r()r�r!.r(r9r;.))r�r9r;.r$)r@r&r'r�r(rrr�test_signature_on_subclasss���z.TestSignatureObject.test_signature_on_subclasscCsPddlm}m}|d�}Gdd�d||�}|�|�|�ddtdffdf�dS)	Nr)�Generic�TypeVarrMc@seZdZdeddfdd�ZdS)zATestSignatureObject.test_signature_on_generic_subclass.<locals>.ArrbNcSr/rrr�rrrr�0r{zJTestSignatureObject.test_signature_on_generic_subclass.<locals>.A.__init__)r7rFrGr�r�rrrrr&/�r&r.r*)�typingr�r�r�r|r�)r@r�r�rMr&rrr�"test_signature_on_generic_subclass*s��z6TestSignatureObject.test_signature_on_generic_subclasscCs�Gdd�d�}|�tt�|��d�Gdd�d|�}|�tt�|��d�Gdd�dt�}Gdd�d|�}|�td��|�t�|�d�Wd�n1sOwY|�td��|�t�|�d�Wd�dS1sowYdS)	Nc@r~�zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CNrrrrrr�;r�r�rc@r~�zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNrrrrrr(=r�r(c@r~r�rrrrrr�Ar�c@r~r�rrrrrr(Br�zcallable.*is not supported)r�r-r:r|rgr�r@)r@r�r(rrr�$test_signature_on_class_without_init7s�"�z8TestSignatureObject.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@r~)z>TestSignatureObject.test_signature_on_builtin_class.<locals>.PNrrrrrrOr�rc@r~)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNrrrrr�
EmptyTraitPr�r�c@r~)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nrrrrr�P2Qr�r�c@ry)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSr/rr)r@rYrrrr�Vr{zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__Nr�rrrr�P3Ur}r�r\c@ry)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSr/rr)r�r"rrrrrP[r{zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__Nr�rrrr�MetaPZr}r�c@r~)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nrrrrr�P4]r�r�r�z
(foo, bar))r�r-r:r|rjrkrg)r@r)rr�r�r�r�r�rrr�test_signature_on_builtin_classHsz3TestSignatureObject.test_signature_on_builtin_classcCs�Gdd�d�}|�|�|��d�Gdd�d�}|�td��t�|��Wd�n1s/wYGdd�d||�}|�|�|��d�Gd	d
�d
�}dd�|_|�|�|�d�||_|�td
��|�|�Wd�dS1svwYdS)Nc@ry)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.FoocSr/rrr�rrrrPcr{zLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__Nr�rrrrr|br}r|r�c@r~)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNrrrrrr�jr�r�rUc@r~)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNrrrrr�Baror�r�c@r~)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNrrrrr�Wrappedvr�r�cSr/rrrcrrrr�xr�zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>�wrapper loop)r�r|r�rKr:r�r@)r@r|r�r�r�rrr�"test_signature_on_callable_objectsas*���
�"�z6TestSignatureObject.test_signature_on_callable_objectscCs|�|�ddd��d�dS)Nr�cSr�rrrcrrrr��r�z?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rr�.r(.r0r$rZrrr�test_signature_on_lambdas�s�z-TestSignatureObject.test_signature_on_lambdascCsXdtdtfdd�}|�t�|�dk�|�t�|�dk�|�t�|�tk�|�t�|�tk�dtdtfdd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dtdtfdd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dtfd	d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dd
�dtdtfdd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dtfdd�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dtdtfd
d�}|�t�|�t�|�k�|�t�|�t�|�k�|�	tt�|��tt�|���dtdtfdd�}|�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�dtfdd�}dd�dtfdd�}|�t�|�t�|�k�|�t�|�t�|�k�|�tt�|��tt�|���dS)Nr�rbcSr/rrr�rrrr"�r�z8TestSignatureObject.test_signature_equality.<locals>.foor�cSr/rrr�rrrr�r�z8TestSignatureObject.test_signature_equality.<locals>.barcSr/rrr�rrrr�r�cSr/rrr�rrrr�r�r�cSr/rrr�rrrr�r�cSr/rr�rrrrrr�r�cSr/rrr�rrrr�r�cSr/rr�r�rrrrrY�r�z9TestSignatureObject.test_signature_equality.<locals>.spamcSr/rrr�rrrr"�r�cSr/rr�rr�rrrrr�r�r rccSr/rrr�rrrr"�r�cSr/rrr�rrrr�r�cSr/rr��posrr�rrrrr"�r�cSr/rr�r�rr�rrrrr�r�cSr/rrr�rrrr"�r�cSr/rrr�rrrr�r�r�c_r/rr)r�rr�rrr�rrrr"�r�c_r/rr)r�rr�rrr�rrrr�r�)
r�r+r?r:r|r6rr��hashr�)r@r"rrYrrr�test_signature_equality�s�������������z+TestSignatureObject.test_signature_equalitycCstj}tj}dd�}t�|�}||d|j�gd�}|�t|�t|��|�t|�t|jdd���dd	d
�}|�t|�tt�|���ifdd�}|�	t
d��tt�|��Wd�n1sawYdifd
d�}|�	t
d��tt�|��Wd�dS1s�wYdS)NcSr/rrrcrrrr"�r�z8TestSignatureObject.test_signature_hashable.<locals>.foorr[rY�rrbr cSr/rrrcrrrr�r�z8TestSignatureObject.test_signature_hashable.<locals>.barcSr/rrrcrrrr"�r��unhashable typecSr/rrrcrrrr"�r�)rbr )r:r_r]r|�POSITIONAL_OR_KEYWORDr�r�r�rr�rK)r@rrr"�foo_sigZ
manual_sigrrrr�test_signature_hashable�s&

�
�"�z+TestSignatureObject.test_signature_hashablecCs�ddd�dtddfdd�}|�tt�|��d�ddd�dtddfd	d�}|�tt�|��d
�dd�}|�tt�|��d�dttdtttffd
d�}|�tt�|��d�ddlm	}dttd|ttffdd�}|�tt�|��d�dS)Nr rrrbr�c[r/rr�rr�rr�rrrr"�r{z3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c_r/rr)rr�rrr�rrrr"�r{z.(a: int = 1, *args, b, c=None, **kwargs) -> 42cSr/rrrrrrr"�r{rcSr/rrrcrrrr"
r{z#(a: list[str]) -> tuple[str, float]r)�TuplecSr/rrrcrrrr"
r{z#(a: list[str]) -> Tuple[str, float]r)
r�r�r-r:r|r�rr+r�r�)r@r"r�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�rrrrZ
r3zDTestSignatureObject.test_signature_str_positional_only.<locals>.testrrtr[z(a_po, /, *, b, **kwargs)r"z(foo, /)rz(foo, /, **bar)z(foo, /, *bar))r:r]r_r|r�r(rrr^r`r�r-ru�VAR_POSITIONAL)r@rrrZrr�rrr�"test_signature_str_positional_only
s2
��

��

��z6TestSignatureObject.test_signature_str_positional_onlycCs|ddd�}t�|�}|jdd�}|�|jd�|j|jd�}|�|j|j�|jdd�}|�|jd�|�|t�|��dS)Nrbr�cSr/rrrrrrrZ(
r{z=TestSignatureObject.test_signature_replace_anno.<locals>.testr�)rbr�)r:r|rr�rr�r�r!rrr�test_signature_replace_anno'
s

z/TestSignatureObject.test_signature_replace_annocCsRGdd�d�}Gdd�d|�}|�|�|j�d�|�|�|j�|�|j��dS)Nc@seZdZd
dd�ddd�Zd	S)zFTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamr!r�)�	_Spam__p2�	_Spam__p1r r�cSr/rr)r@r�r�rrrr"6
r{zJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)r!)r�r r�r!r�rrrrr�5
r�r�c@r~)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNrrrrr�Ham8
r�r�))r�)r�r!r r()r�r�r!r*.)r�r|r")r@r�r�rrr�$test_signature_on_mangled_parameters4
s�
�z8TestSignatureObject.test_signature_on_mangled_parameterscCs6Gdd�dtj�}ddd�}|�|�}|�||�dS)Nc@r~)zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureNrrrrrr�E
r�r�r�r cSr/rrr�rrrr"F
r�zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo�r�r �r:r_rh�assertIsInstance�r@r�r"r�rrr�'test_signature_from_callable_python_objD
s

z;TestSignatureObject.test_signature_from_callable_python_objcCs:Gdd�dtj�}Gdd�d�}|�|�}|�||�dS)Nc@r~)zKTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureNrrrrrr�L
r�r�c@r~)zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooNrrrrrr"M
r�r"r�r�rrr�"test_signature_from_callable_classJ
s
z6TestSignatureObject.test_signature_from_callable_classcCs.Gdd�dtj�}|�tj�}|�||�dS)Nc@r~)zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureNrrrrrr�T
r�r�)r:r_rhrjrkr�)r@r�rrrr�(test_signature_from_callable_builtin_objQ
sz<TestSignatureObject.test_signature_from_callable_builtin_objcCrxr)
r.r:r|r�r(ryr6r�r2rzr{rrr�3test_signature_definition_order_preserved_on_kwonlyX
r~zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlycCs0t�dd��j}t�dd��j}|�||�dS)NcSr/rrrKrrrr�d
r�zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>cSr/rr)r�r�rrrr�e
r�)r:r|r(r�)r@Zp1�p2rrr�#test_signater_parameters_is_orderedc
sz7TestSignatureObject.test_signater_parameters_is_orderedc	CsGdd�d�}d|dtfdd�}d|dddtfd	d
�}tjtjjfD]j}|j|d��Z||�}|�|jt�|�|jdj	|�||t
�d�}|�|jt�|�|jdj	|�||dtit
�d
�}|�|jt�|�|jdj	|�|�|jdj	d�Wd�n1s�wYq"dS)Nc@r~)zQTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.FooNrrrrrr|i
r�r|r"rbcSr/rrrrrrr�j
r�zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.funcrr�cSr/rr�r"rrrr�func2k
r�zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func2��signature_func)r�)r�r�)r�r:r|r_rhrr�rr(rr�)r@r|r�rrZsig1Zsig2Zsig3rrr�0test_signature_annotations_with_local_namespacesh
s$���zDTestSignatureObject.test_signature_annotations_with_local_namespacescCs&t}tj}tj}tjj}tjtjjfD�]|}|j|d���j|�||j	�||d|�|d|�fd��|�||j
�|d|d|dd�|d|dd�fd	��|�||j�|d|d|dd�|d|d
d�|d|dd�fd	��|�||j�||d|dd�|d|d
d�|d|d
d�fd��|�||j
�|��|�||j�||d|�|d|�|d|�fd��|�||j	dd�||d|�|d|�fd��|�||j
dd�||j	|d|td�|d|td�fd	��|�||jdd�||j	|d|td�|d|dd�|d||j	d�fd	��|�||jdd�||d|dd�|d|dd�|d|dd�fd��ttd�}ttd�}|�t��||j
d|d�Wd�n	1�sBwY|�||j
d|d�|t|d|td�|d|td�fd	��|�||j
d||d�|t|d|td�|d|td�fd	��Wd�n	1�s�wYqdS)Nrrr�r[r�r��rr-)rr(rrrrTr�)r�r-)r-r�r�r�)r�r�r�)rr:r_r]r�r|rhrr�r�r�r�r�r�r�r�r-r+�complexrr�rJ�	NameError)r@rrZparZPORKrZglobalnsZlocalnsrrr�test_signature_eval_str|
s����������	���	������������	���
	
����	������z+TestSignatureObject.test_signature_eval_strc	Cs�Gdd�d�}dd�}||�}d|_tjtjjfD]"}|j|d��|�||�t���Wd�n1s6wYq|�t�|�i�dS)Nc@r�)zDTestSignatureObject.test_signature_none_annotation.<locals>.funclikecSrZrr[r^rrrr��
r_zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__c_r`rrGr�rrrrP�
rzMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__Nrarrrrrb�
rcrbcSr/rrrrrrr"�
r�z?TestSignatureObject.test_signature_none_annotation.<locals>.foor)rdr:r|r_rhrr�r�)r@rbr"rrrr�test_signature_none_annotation�
s��z2TestSignatureObject.test_signature_none_annotationN)4r7rFrGr�r|rr r"r&r)r,r1r<rr�rsrrKrSrTrVrirjrorqrvrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr��s�
0#�F�

5
Y%CQ
�
�
 S
�
ir�c@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�TestParameterObjectcCsltj}|�|j|jko|jko|jko|jkn�|�t	|j�d�|�dt
|j�v�dS)Nr^)r:r]r6r^r�r��KEYWORD_ONLYrur�r-r�)r@rrrr�test_signature_parameter_kindss���z2TestParameterObject.test_signature_parameter_kindscCs�tjddtjjd�}|�|jd�|�|jd�|�|j|j�|�|j	tjj�|�
td��tjdddd�Wd�n1sBwY|�
td��tjdtjjd�Wd�n1sawY|�
t
d	��tjdtjjd�Wd�n1s�wY|�
td
��tjdtjjd�Wd�n1s�wY|�
td
��tjdtjjd�Wd�n1s�wY|�
td
��tjddtjjd�Wd�n1s�wY|�
td
��tjddtjjd�Wd�n1s�wYtjddtjjd�}|�
td
��|jtjjd�Wd�n	1�s'wY|�t|��d��|�dt|�v�dS)Nr"r��rrrqz)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer�rt�name must be a strzis not a valid parameter name�$z.azcannot have default valuesrr�z
<Parameterz"a=42")r:r]r^r�rdrrr�rr�rqr�r@rurKr�r�rr6r�rM�r@r*rrr�test_signature_parameter_objectsX��������������z3TestParameterObject.test_signature_parameter_objectc	Csttj}|d|jd�}|�t|�t|d|jd���|�t|�t|d|jdd���|�t|�t|j|jd���dS)Nr"rtr�rp)r:r]r^r�r�r�rr�)r@rr"rrr�!test_signature_parameter_hashable2s
�
�z5TestParameterObject.test_signature_parameter_hashablecCs�tj}|ddtjjd�}|�||k�|�||k�|�|dk�|�|dk�|�|tk�|�|tk�|�||ddtjjd�k�|�||ddtjjd�k�dS)Nr"r�r)r:r]r
r6r?r)r@rr*rrr�!test_signature_parameter_equality;s
��z5TestParameterObject.test_signature_parameter_equalitycCs�tjddtjjd�}|�||���|�||���|jdd�}|�|jd�|j|jd�}|�||�|jdd�}|�|jd�|�	||�|�
td��|j|jd�}Wd�n1s_wY|jddd	�}|�|j
d�|�	||�|jd|jd	�}|�|j
|j�|jd|jd�}|�|j|j�|�	||�|�
td
��|j|jd�}Wd�n1s�wY|j|jd�}|�||�dS)Nr"r�rr rrrzname is a required attribute)rdrrz<value <class 'inspect._empty'> is not a valid Parameter.kindrt)r:r]r
r�rr�rr�rdr�r�r@r�rrr�rq)r@r*r�rrr� test_signature_parameter_replaceKs@�����z4TestParameterObject.test_signature_parameter_replacecCsD|�td��tjdtjjd�Wd�dS1swYdS)Nr
rt)r�rKr:r]r^rZrrr�(test_signature_parameter_positional_onlyss"�z<TestParameterObject.test_signature_parameter_positional_onlycCst|�td��tjdtjjd�Wd�n1swYtjdtjjd�}|�|jtjj�|�|jd�dS)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0rtZ	implicit0)	r�r@r:r]r^r�r�rqrd)r@rrrr�!test_signature_parameter_implicitws���z5TestParameterObject.test_signature_parameter_implicitcCsxtjdtjjd�}|�t��d|_Wd�n1swY|�t��d|_Wd�dS1s5wYdS)NrYrtrrs)r:r]r
rJrVr"rqrrrr�%test_signature_parameter_immutability�s�"�z9TestParameterObject.test_signature_parameter_immutabilityN)r7rFrGrrrrrrrrrrrrrr	�
s*	(
r	c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zedd��Zdd�ZdS) �TestSignatureBindcOs,t�|�}|j|i|��}||ji|j��Sr)r:r|r�rr�)r�rr�rr�rrr�call�s
zTestSignatureBind.callcCs�dd�}|�|�|�d�|�td��|�|d�Wd�n1s$wY|�td��|j|ddd�Wd�n1sBwY|�td��|j|dd�Wd�dS1s`wYdS)	NcSr�r�rrrrrrZ�r{z9TestSignatureBind.test_signature_bind_empty.<locals>.testr��too many positional argumentsr r�r��)got an unexpected keyword argument 'spam'�r�rr�rKr%rrr�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_�||fSrrr3rrrrZ�r3z7TestSignatureBind.test_signature_bind_var.<locals>.testrr rr!r�rrr"r�rr�r�rr%rrr�test_signature_bind_var�s 
�z)TestSignatureBind.test_signature_bind_varcCsVdd�}|�|�|ddd�d�|�td��|�|dddd�Wd�n1s*wY|�td	��|�|d�Wd�n1sFwY|�td
��
|�|�Wd�n1sawYddd�}|�|�|ddd�d�|�|�|dd�d
�ddd�}|�|j|ddd�d�|�|j|dd�d�|�|j|dd�d�dS)NcSr�rrr�rrrrZ�r�z=TestSignatureBind.test_signature_bind_just_args.<locals>.testr r!r�rIrr?z missing a required argument: 'b'z missing a required argument: 'a'r�cSr�rrr�rrrrZ�r�)r r!r�cSr�rrr�rrrrZ�r�r�r�)r�r!r�rc)r�r!r�r�)r r�r�r0rr%rrr�test_signature_bind_just_args�s,�����

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|�|�|�d�|�|�|ddd�d�dS)NcWr�rrrrrrrZ�r{zATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr r!r�rIrr%rrr�!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�Wd�dS1sRwYdS)Nr�cWr�rr)rr�rrrrrrZ�r9zDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testr r!r?r�)r r!r�)r?r�)r r!r�rr�)r!r r�rr�z multiple values for argument 'c'r�r�rr%rrr�$test_signature_bind_args_and_varargs�s
�"�z6TestSignatureBind.test_signature_bind_args_and_varargscCs<dd�}|�|�|�i�|�|j|ddd�ddd��dS)Nc[r�rr)r�rrrrZ�r{z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrrL�r"rYrr%rrr�test_signature_bind_just_kwargs�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[r�rrr�rrrrZ�r9zCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testr r!rrLr$)r�rr"rY)rr�r"rY)r�r"rYr?)r�rr"rYrr"r�)rrr�r"rr%rrr�#test_signature_bind_args_and_kwargs�s.
������
�z5TestSignatureBind.test_signature_bind_args_and_kwargsc	Cs�dd�}|�td��|�|d�Wd�n1swY|�|j|dd�d�dd�dd�}|�td��|�|d�Wd�n1sIwYdd�}|�|j|dd	d
�d�|�|j|d	dd�d�|�td
��|j|d	ddd�Wd�n1s�wY|�td��|�|dd	�Wd�n1s�wY|�td��|j|dd	d	d
�Wd�n1s�wY|�td
��|j|dd	dd�Wd�n1s�wY|�td��|�|d�Wd�n1s�wYdd�}|�|j|dd	d
�dd	if�|�|j|dd	d�dd	if�|�|j|dd	dd�dd	ddif�|�|j|ddd	d�dd	ddif�|�td��|j|dd	d�Wd�n	1�s`wY|�|j|dd	ddd�dd	ddd�f�dS)NcSr�rrrrrrrZ�r{z:TestSignatureBind.test_signature_bind_kwonly.<locals>.testrr rcSs|Srr)rr"rrrrrZr{z"missing a required argument: 'bar'cSrrrr�rrrrZ
r3r!r�r�)rr"rr�)rr"rYrL)rrYc[r�rr)r"r�binrrrrZ%r�r�rY)rYr"rz"missing a required argument: 'foo')rYr)rr'rY)r'rY)r�rKrr�r%rrr�test_signature_bind_kwonly�st�������������������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)Nr	�rc_r/rr)rr�rrr�rrrrZ4r{z=TestSignatureBind.test_signature_bind_arguments.<locals>.testr�r�r�r�r8�<)r�rrr��rr�)r)r�)r�r�r�)rrr�)r�r�)	r:r|r�r�r�	arguments�itemsr�r�r@rZrr�rrr�test_signature_bind_arguments3s
���z/TestSignatureBind.test_signature_bind_argumentsc
Cs�tj}ddd�dd�}t�|�}t�t|j����}dD]
}||j|j	d�||<q|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�Wd�n1s�wY|�td��|j
|d
ddd�Wd�n1s�wY|�td��|j
|d
dd�Wd�dS1s�wYdS)Nr�r�r8r�c[s||||||fSrr)r��b_po�c_por"rr�rrrrZDrzCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)r�r0r1rtr[r r!r?r��r�zbut was passed as a keywordr�)r"rr1zparameter is positional only)r1)r�r0)r�r�)r:r]r|rrrr(r-rr^rr`r�rr�rK)r@rrZrr�rdZnew_sigrrr�#test_signature_bind_positional_onlyAs4
�����"�z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}t�|�}|�ddd�}|�|jd�|jdddd�}|�|jd�dS)NcSr/rr)rr@r�rrrrZbr{zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testr r!r�rIr�)r:r|r�r�rr.rrr�!test_signature_bind_with_self_arg`s
z3TestSignatureBind.test_signature_bind_with_self_argcCs�dd�}t�|�}|�td��|jddd�Wd�n1s!wYdd�}|�|j|dd�d	d
dif�t�|�}|jdd�}|�|jdd
dii�dS)NcWrrr�rrrrrrZkr3z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rr r5c_rrrr3rrrrZtr3rrrr�)r:r|r�rKr�r�rr,r.rrr�test_signature_bind_vararg_namejs
��
z1TestSignatureBind.test_signature_bind_vararg_namecCsHdd�}|jjd}t�|i�}ttd��}|�|�||�hd��dS)NcSsdd�td�D�S)NcSsh|]}||�qSrr)rrrrr�	<setcomp>�rzWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<setcomp>r�rSrrrr�make_setr)zDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setr r�>rr r?r�r�)rc�	co_constsrf�FunctionType�iterr#r�r)r@r8Zsetcomp_codeZsetcomp_func�iteratorrrr� test_signature_bind_implicit_arg|s
z2TestSignatureBind.test_signature_bind_implicit_argcCsHdd�}t�|�}|jddd�}|�|jddi�|�d|j���dS)Nc[s||�|�fSr)r�)rr�rrrr"�rzATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo�pos-only�keywordr�r)rr>)r:r|r�r�r�r�r,r-)r@r"r�resultrrr�"test_signature_bind_posonly_kwargs�s

z4TestSignatureBind.test_signature_bind_posonly_kwargsN)r7rFrGr�rrrr r!r#r%r&r(r/r3r4r6rr=rArrrrr�s$


7


rc@r�)�TestBoundArgumentscCsRdd�}t�|��d�}|�td��
t|�Wd�dS1s"wYdS)NcSr/rrrcrrrr"�r�zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foor r�)r:r|r�r�rKr��r@r"r�rrr�)test_signature_bound_arguments_unhashable�s

"�z<TestBoundArguments.test_signature_bound_arguments_unhashablec	CsPdd�}t�|��d�}|�||k�|�||k�|�|tk�|�|tk�t�|��d�}|�||k�|�||k�t�|��d�}|�||k�|�||k�d|jd<|�||k�|�||k�dd�}t�|��d�}|�||k�|�||k�dd�}t�|�}|jddd	�}|jddd
�}|�||k�|�||k�dS)NcSr/rrrcrrrr"�r�zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foor r!rcSr/rrr�rrrr�r�zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSr/rrr�rrrr"�r�r�r�)r:r|r�r6r?rr,)	r@r"r�Zba2Zba3rZba4rZba1rrr�'test_signature_bound_arguments_equality�s2

z:TestBoundArguments.test_signature_bound_arguments_equalityc	Cs�id�dddddifdd�}t�|�}|jd	d
id�}ttjd�D]'}|j|d��t�t�||��}|�	||�Wd�n1sDwYq"dS)
Nrrr rbr�rLc[r/rrrrrrr"�r�zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor�r�r))r)
r:r|r�r#rrrrrr�)r@r"rr�rZ
ba_pickledrrr�%test_signature_bound_arguments_pickle�s
���z8TestBoundArguments.test_signature_bound_arguments_picklecCsJid�dddddifdd�}t�|�}|jd	d
id�}|�t|�d�dS)
Nrrr rbr�rLc[r/rrrrrrr"�r�zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor�r�r)z <BoundArguments \(a=20,.*\}\}\)>)r:r|r�ZassertRegexr��r@r"rr�rrr�#test_signature_bound_arguments_repr�s
z6TestBoundArguments.test_signature_bound_arguments_reprc
CsPdid�ddd�}t�|�}|�d�}|��|�t|j���ddd	difd
ifg�|jddddd
�}|��|�t|j���ddddifd
ddifg�dd�}t�|�}|�d�}|��|�t|j���dg�dd�}t�|�}|��}|��|�t|j���g�ddd�}t�|�}|��}|��|�t|j���dg�dS)Nr rrc_r/rr)rr�rrrrrrr"�r�zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor�)rr�r�)rrrr�r�)r�r+)r�r�)r)r�r�cSr/rrr�rrrr"�r�cSr/rrrrrrr"�r�rYcSr/rrrcrrrr"�r�)rrYr)rr r�)	r:r|r�Zapply_defaultsr�r�r,r-Zbind_partialrGrrr�-test_signature_bound_arguments_apply_defaults�s@

��

�


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultscCs.dd�}t�|��d�}|�t|j�t�dS)NcSr/rrrcrrrr"�r�zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foor )r:r|r�r�rgr,r�rCrrr�-test_signature_bound_arguments_arguments_type�sz@TestBoundArguments.test_signature_bound_arguments_arguments_typeN)	r7rFrGrDrErFrHrIrJrrrrrB�s
*rBc@s$eZdZdd�Zdd�Zdd�ZdS)�TestSignaturePrivateHelperscCs:tj}|�|d�d�|�|d�d�|�|d�d�dS)Nz($self)r@z($self, obj)z($cls, /, obj)r�)r:Z_signature_get_bound_paramr�)r@�getterrrr�test_signature_get_bound_param�sz:TestSignaturePrivateHelpers.test_signature_get_bound_paramcCs8t�|�\}}}|�||�|�||�|�||�dSr)r:Z"_signature_strip_non_python_syntaxr�)r@�inputZclean_signatureZself_parameterZlast_positional_onlyZcomputed_clean_signatureZcomputed_self_parameterZcomputed_last_positional_onlyrrr�_strip_non_python_syntaxs�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)r!z(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r�)rOrZrrr�&test_signature_strip_non_python_syntax
sT�������zBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r7rFrGrMrOrPrrrrrK�s
rKc@s,eZdZee�ed�dd���Zdd�ZdS)�TestSignatureDefinitionsrgc	Cs(t�}hd�}||O}dh}||O}dh}||O}hd�}||O}ddh}||O}t�}tt�}t|���D]:\}	}
t|
�s?q6t|
t�rM|	|vrM|�|	�|	|vrRq6|j	|	d��|�
t�|
��Wd�n1skwYq6|D]}	|j	|	d��|�
|
j�Wd�n1s�wYqsdS)N>r�r#�slicer;r�r��vars�anext�round>�__build_class__�
breakpoint�maxrIr#r��
__import__)rt)r9rSr+ryr-�callabler�rgr<r�assertIsNotNoner:r|r(�__text_signature__)r@Zno_signatureZneeds_groupsZ
needs_nullZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrmrdrCrrr�test_builtins_have_signatures;s<
�����z6TestSignatureDefinitions.test_builtins_have_signaturescCsVdd�}d|_t�|�}|�|�|�t|�d�d|_t�|�}|�t|�d�dS)Nc_r/rrr3rrrr�sr{zNTestSignatureDefinitions.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\r:r|r[r�r-)r@r�rrrr�'test_python_function_override_signaturers


z@TestSignatureDefinitions.test_python_function_override_signatureN)	r7rFrGrr�rsrr]r^rrrrrQ7s�4rQc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dSr)rA�_next)r@rArrrr�s
zNTimesUnwrappable.__init__cCs2|jdkr	td��|jdurt|jd�|_|jS)NrzUnwrapped too many timesr )rArZr`r_rZrrrr��s


zNTimesUnwrappable.__wrapped__N)r7rFrGr�rWr�rrrrr_~sr_c@r�)�
TestUnwrapcCs.dd�}tjdd�|�}|�t�|�|�dS)NcS�||Srrr�rrrr��r3z(TestUnwrap.test_unwrap_one.<locals>.funcr�)rD)rq�	lru_cacher�r:�unwrap)r@r�r�rrr�test_unwrap_one�szTestUnwrap.test_unwrap_onecCsPdd�}|}td�D]}t�|�dd��}q
|�|j|�|�t�|�|�dS)NcSrbrrr�rrrr��r3z,TestUnwrap.test_unwrap_several.<locals>.funcr�cSr/rrrrrrr��r3z/TestUnwrap.test_unwrap_several.<locals>.wrapper)r#rqrQr�r�r�r:rd)r@r�r��__rrr�test_unwrap_several�szTestUnwrap.test_unwrap_severalcCsTdd�}t�|�dd��}t�|�dd��}d|_tj|dd	�d
�}|�||�dS)NcSrbrrr�rrr�func1�r3z#TestUnwrap.test_stop.<locals>.func1cSr/rrrrrrr�r3z#TestUnwrap.test_stop.<locals>.func2cSr/rrrrrrr��r3z%TestUnwrap.test_stop.<locals>.wrapperr cSs
t|d�S)N�	stop_herererNrrrr��r@z&TestUnwrap.test_stop.<locals>.<lambda>)�stop)rqrQrir:rdr�)r@rhrr�Z	unwrappedrrr�	test_stop�s

�zTestUnwrap.test_stopcCs�dd�}||_|�td��
t�|�Wd�n1swYdd�}||_||_|�td��
t�|�Wd�n1sBwY|�td��t�|�Wd�dS1s^wYdS)NcSr/rrrrrrrh�r�z$TestUnwrap.test_cycle.<locals>.func1r�cSr/rrrrrrr�r�z$TestUnwrap.test_cycle.<locals>.func2)r�r�r@r:rd)r@rhrrrr�
test_cycle�s��"�zTestUnwrap.test_cyclecs6dd��d�_G�fdd�d�}|�t�|���dS)NcSr/rrrrrrr��r�z(TestUnwrap.test_unhashable.<locals>.funccseZdZdZ�ZdS)z%TestUnwrap.test_unhashable.<locals>.CN)r7rFrG�__hash__r�rrGrrr��sr�)r�r(r:rd)r@r�rrGr�test_unhashable�szTestUnwrap.test_unhashablecCsLtt��d�}|�td��t�|�Wd�dS1swYdS)Nr r�)r_rc�getrecursionlimitr�r@r:rd)r@rCrrr�test_recursion_limit�s"�zTestUnwrap.test_recursion_limitN)	r7rFrGrergrkrlrnrprrrrra�srac@sDeZdZdd�Zdd�Ze�edud�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nr��-mr:r�)�	importlib�
import_moduler
�decoderhr�r:r)r@�module�rcr1�errrrrr�test_only_source�s

�zTestMain.test_only_sourcecCsHdd�}d|_|�t��t�|�Wd�dS1swYdS)NcSr/rrrrrrr"�r{z)TestMain.test_custom_getattr.<locals>.foor�)r`rJrKr:r|r�rrr�test_custom_getattr�s
"�zTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|����}|�|dd�t�t����|�|d�dS)Nrrr:z%concurrent.futures:ThreadPoolExecutorrrs)r
rvrhr�r:rr)r@rxr1ryrrrr�test_qualname_source�s
��zTestMain.test_qualname_sourcecCs:t�d�}tddd�\}}}|����}|�|dg�dS)Nr�rrr:rcz#Can't get info for builtin modules.)rtrurrvrhr�)r@rwrxr1ryrrrr�
test_builtins�s

�zTestMain.test_builtinscCsxt�d�}t��}tg|�d�d�d�d�R�\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nr�rrr:z	--detailsrs)rtrurZ!optim_args_from_interpreter_flagsr
rvr�r7r��
__cached__r�)r@rwrrxr1ry�outputrrr�test_details�s
��zTestMain.test_details)r7rFrGrzr{r�rsrr|r}r�rrrrrq�s	
�
	rqc@s0eZdZe�d�Ze�d�Zdd�Zdd�ZdS)�
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    cCsXt�|�}t|dd��}|�|���d�|�d��Wd�dS1s%wYdS)Nr�r�T)r:rr�r�r�rh)r@rr�Z
inspected_srcr�rrr�assertInspectEquals
�"�zTestReload.assertInspectEqualc	Cs�td|j��9\}}t�|�}|�||�t|ddd��}|�|j�Wd�n1s,wY|�||�Wd�dS1sBwYdS)NZ
reload_bugrr�r�)r�
src_beforertrur�r�r�	src_after)r@rdrrwr�rrr�test_getsource_reloads
�"�z TestReload.test_getsource_reloadN)	r7rFrG�textwrap�dedentr�r�r�r�rrrrr��s


r��__main__)ir+rrnrqrtr:rmrBr
Zos.pathrrjrrrcrfr�r�r�Z
unittest.mockrk�concurrent.futuresr�ImportErrorZtest.supportrrrZtest.support.import_helperrZtest.support.os_helperr	Ztest.support.script_helperr
rrZrr`r
r%rrrrZtest.test_importrr�r�rrrr�r.r2r�rzr�r4rUrWr[r�r\r]r�r�rr
rvr{r~r�r�r�rr�rrr$r%rr$rrVr{rr�r�r�r_r�r]r�r�r	rrBrKrQr_rarqr�r7�mainrrrr�<module>s��

87U
*l78zIc@<f?G
<0
�
© 2025 GrazzMean