HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_inspect.cpython-310.opt-1.pyc
o

�i���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	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<eA�ZKGd=d>�d>eL�ZMGd?d@�d@eL�ZNdAdB�ZOGdCdD�dDej8�ZPGdEdF�dFej8�ZQGdGdH�dHej8�ZReL�ZSGdIdJ�dJej8�ZTGdKdL�dLej8�ZUGdMdN�dNeU�ZVGdOdP�dPeV�ZWGdQdR�dRej8�ZXGdSdT�dTej8�ZYGdUdV�dVej8�ZZGdWdX�dXej[�Z\GdYdZ�dZej]�Z^Gd[d\�d\ej8�Z_Gd]d^�d^ej8�Z`Gd_d`�d`ej8�ZaGdadb�dbej8�ZbGdcdd�ddej8�ZcGdedf�dfej8�ZdGdgdh�dh�ZeGdidj�djej8�ZfGdkdl�dlej8�ZgGdmdn�dnej8�Zheidok�rAe�j�dSdS)p�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/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�zGzddWn<tyX}z0|ja|�tjd�|�tjd�t	t
d�rB|�tjd	�n|�t�t
tj�j��WYd}~nd}~wwWdandaw|�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 rztb.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�	Exception�
__traceback__r^rKrN�hasattr�typesZisgetsetdescriptorr?�type�tb_frame�f_localsr>rLrM�isdatadescriptorrOr;rQr<�warnings�catch_warnings�simplefilterrPr=Zismemberdescriptor�datetimeZ	timedeltaZdays�r@�errr�test_excluding_predicates�sP
������

�
z(TestPredicates.test_excluding_predicatesc	Cs�td�}td�}td�}|�t�t��|�t�t�t�t����|�t�|��|�	t�
t��|�	t�
t�t�t����|�	t�|��|�t�tj
����|�	t�tj
����|�	t�t��|�	t�t�t�t����|�	t�|��|�t�
tj
����|�t�
tj
����|�t�
t��|�t�
t�t�t����|�t�|��|�t�tj
����|�t�tj
����|�t�t��|�	t�t��|�	t�t�t�t����|�	t�|��|��|��dS�Nr )rWr\r[r?r:r=�	functools�partialrPr6r;rO�unittest�mockZMockZ	AsyncMockr<rQ�close)r@Zasync_gen_coro�gen_coro�cororrr�test_iscoroutine�s����������������������������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)r7rFrGr~rrrr�Future��r�c@�eZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN�r7rFrGrrrr�	NotFuture��r�cSr/rrrrrr�<lambda>��z1TestPredicates.test_isawaitable.<locals>.<lambda>)r?r:Zisawaitabler[r\r6r~rw)r@r|ryrxr�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@r})z2TestPredicates.test_isclass.<locals>.CustomGetattrcSr/rr)r@�attrrrr�__getattr__rz>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)r7rFrGr�rrrr�
CustomGetattrr�r�)rEr:rIr6�list�objectr?)r@r�rrr�test_isclassszTestPredicates.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_memberss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�AbstractClassExamplesr���	metaclassc@r})z4TestPredicates.test_isabstract.<locals>.ClassExamplecSr/rrrZrrrr"rz8TestPredicates.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�AbstractChecker-sr�r�cr�)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSr/rrrZrrrr"1r3zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr�rr�rrr�0�r�c@r})zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSr/rrrZrrrr"5rzMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooNr�rrrrr�4r�r�TFc@r�)zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildNr�rrrr�
AbstractChild:�r�c@r�)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildNr�rrrr�AbstractGrandchild<r�r�c@r�)zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildNr�rrrr�ConcreteGrandchild>r�r�)TTF)r�r�r��assertEqual�clear)r@r�r�r�r�r�r�r�r)r�r�r�$test_isabstract_during_init_subclass*sz3TestPredicates.test_isabstract_during_init_subclassN)r7rFrGrqrzr�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���	)ru�TestCase�__init__�git�abuse�r@r�kwargsrrrr�DszTestInterpreterStack.__init__cCs |�tjd�|�tjd�dS)Nz	git.ex[2]zmod.fr)rEr:rNrKrZrrr�test_abuse_doneIsz$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_stackMs(����
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_trace`s���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_frameis�zTestInterpreterStack.test_framecCsZt�tjj�\}}}}|�|gd��|�|d�|�|d�|�t�||||�d�dS)N�rr�r�drp�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_framers�z(TestInterpreterStack.test_previous_frameN)	r7rFrGr�r�r�r�r�r�rrrrr�Cs		r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNcCsDtt�|j�dd��}|��|_Wd�dS1swYdS)N�utf-8��encoding)�openr:�
getsourcefile�fodderModule�read�source)r@�fprrr�setUp~s"�zGetSourceBase.setUpcCs0|j�d�}d�||d|��|rdSdS)N�
r �)r��splitr&)r@�top�bottom�linesrrr�sourcerange�s$zGetSourceBase.sourcerangecCs|�t�|�|�||��dSr)r�r:�	getsourcer)r@rCrrrrr�assertSourceEqual�s
�zGetSourceBase.assertSourceEqual)r7rFrGr�r�rrrrrrr�zs
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�r
rrrrZ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�rr	r
rZrrr�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`r
r�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��str�sys�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)rurv�patchr:�currentframer*r.Zgetouterframes)r@r5r�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�z9TestRetrievingSourceCode.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:rIr0r6r/�	exception�
startswithrorrr�test_getfile_builtin_module ��z4TestRetrievingSourceCode.test_getfile_builtin_modulecCrL)Nz<class)	rMrNr:rIr�r6r/rOrProrrr�test_getfile_builtin_class%rRz3TestRetrievingSourceCode.test_getfile_builtin_classcCs�|�t��
}t�t�Wd�n1swY|�dt|j��|�t��}t�tj	�Wd�n1s9wY|�dt|j��dS)Nz
expected, got)
rMrNr:rI�absr�r/rOr�r%)r@Ze_absZe_appendrrr�'test_getfile_builtin_function_or_method*s��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�rrrrF4r3zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)r7rFrG�propertyrrrr�CM3r�rZc@r�)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNr�rrrrr�7r�r�r�)rgrMrNr:rI)r@rZr�rrr�!test_getfile_class_without_module2s
"�z:TestRetrievingSourceCode.test_getfile_class_without_modulecCsNGdd�d�}|�}|�t��t�|�Wd�dS1s wYdS)Nc@r})zDTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorReprcSr3)NZxyz)rcrZrrr�__repr__>r6zMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r7rFrGr\rrrr�	ErrorRepr=r�r])rMrNr:rI)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_r0r1r��
__loader__r'�__dict__r�r:r�r��__code__r.r))r@r_�name�mrrr�test_getmodule_recursionDs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�rG�getlinesr�rr�monkeySs
zHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyrar�r)rErlr'r)r:r)r@rm�nsrrkr�test_proceed_with_fake_filenameOsz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecC�|�tjjdd�dS)N�r�)rr`r�rdrZrrr�test_getsource_on_code_object`�z6TestRetrievingSourceCode.test_getsource_on_code_objectN) r7rFrGr`r�rrru�skipIfr0�flags�optimizerrrr#r$r,r2r9r;rBrHrJrQrSrUr[r^rgrorrrrrrr�s<(�
�




	
rc@r})�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_interactivedsz4TestGetsourceInteractive.test_getclasses_interactiveN)r7rFrGr{rrrrrwcr�rwc@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dSrr)ZmaxDiffrr`r8rZrrr�test_range_toplevel_frameqsz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dSrr)rr`r^rZrrr�#test_range_traceback_toplevel_frameur�zETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r7rFrGr`r�r}r~rrrrr|nsr|c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscC�|�tjdd�dS)Nr��)rr'�wrappedrZrrr�test_wrapped_decorator{r�z%TestDecorators.test_wrapped_decoratorcCr�)Nr��
)rr'ZgonerZrrr�test_replacing_decorator~r�z'TestDecorators.test_replacing_decoratorcCr�)N��)rr'r"rZrrr�test_getsource_unwrap�r�z$TestDecorators.test_getsource_unwrapcCr�)N�q�s)rr'Zfunc114rZrrr�test_decorator_with_lambda�r�z)TestDecorators.test_decorator_with_lambdaN)	r7rFrGr'r�r�r�r�r�rrrrrxsrc@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��sr�c@s(eZdZeZdd�Zdd�Zdd�ZdS)�TestBlockCommentscCr�)N�`�r)rr`rrZrrr�test_toplevel_class�r�z%TestBlockComments.test_toplevel_classcCrp)N�c�h)rr`rr�rZrrr�test_class_method�rsz#TestBlockComments.test_class_methodcCrp)N�m�p)rr`rZasyncfrZrrr�test_class_async_method�rsz)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�rsz-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)rM�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)rMr�r:r�rrDrErFr�)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)rM�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�rd�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_linenocCrp)N�v�w)rr'ZClassWithMethod�methodrZrrr�test_getsource_on_method�rsz'TestBuggyCases.test_getsource_on_methodcCrp)N��)rr'Zcls135Zfunc136rZrrr�test_nested_func�rszTestBuggyCases.test_nested_funccCr�)N��)rr'Zcls149rZrrr�4test_class_definition_in_multiline_string_definitionr�zCTestBuggyCases.test_class_definition_in_multiline_string_definitioncCr�)N��)rr'r(rZrrr�*test_class_definition_in_multiline_commentr�z9TestBuggyCases.test_class_definition_in_multiline_commentcCrp)N��)rr'Zcls173Zcls175rZrrr�,test_nested_class_definition_indented_stringrsz;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_function"s
 zATestBuggyCases.test_nested_class_definition_inside_async_functionN)!r7rFrGr'r�r�r�r�r�r�r�r�rurtrer�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�tearDown5�zTestNoEOL.tearDowncC�|�|jjdd�dS)Nr r!)rr��XrZrrr�
test_class8rszTestNoEOL.test_class)r7rFrGr�rr�
__classcell__rrrrr)src@seZdZeZdd�ZdS)�TestComplexDecoratorcCr)Nii)rr�Zcomplex_decoratedrZrrr�test_parens_in_decorator?rsz-TestComplexDecorator.test_parens_in_decoratorN)r7rFrGr'r�rrrrrr<�rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGr3�Nzbroken data descriptorrW�rrrr�__get__Fr6z_BrokenDataDescriptor.__get__cGrVr)�RuntimeErrorr rrr�__set__Irz_BrokenDataDescriptor.__set__cGr3rrWr rrrr�Lr6z!_BrokenDataDescriptor.__getattr__N)r7rFrGrr!r#r�rrrrrBs
rc@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGr3�Nzbroken method descriptorrWr rrrr!Tr6z_BrokenMethodDescriptor.__get__cGr3r%rWr rrrr�Wr6z#_BrokenMethodDescriptor.__getattr__N)r7rFrGrr!r�rrrrr$Psr$cCsdd�t�|�D�S)NcSsg|]}|dd��qS�Nr�r)r�trrrr]sz!attrs_wo_objs.<locals>.<listcomp>)r:�classify_class_attrsr�rrr�
attrs_wo_objs\r�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>.ANr�rrrr�Acr�r+c@r�)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNr�rrrr�Bdr�r,c@r�)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNr�rrrrr�er�r�c@r�)z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNr�rrrr�Dfr�r-)r�r:Zgetmror�)r@r+r,r�r-�expectedZgotrrr�test_newstyle_mroas
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�assertArgSpecEqualsls��"��z+TestClassesAndFunctions.assertArgSpecEqualscCs�t�|�\}}}
}}}}|�||�|�||�|�|
|�|�||�|�||�|�||�|�||	�|
dura|�t��|�t�|||
||||�|
�Wd�dS1sZwYdSdSr)r:�getfullargspecr�r0r1r2)r@r3r4r5r6r7Z
posonlyargs_e�kwonlyargs_e�kwonlydefaults_e�ann_er8rr�r�r9�
kwonlyargsZkwonlydefaults�annrrr�assertFullArgSpecEqualsys$���"��z/TestClassesAndFunctions.assertFullArgSpecEqualscCsp|jtjddgdd�|�tjgd�dddd	�|�t|jtjg�|�t|jtjg�|�t|jtj	g�dS)
Nr�r��(x, y)�r8r�r�r�)r��r�z!(a, b, c, d=3, e=4, f=5, *g, **h))
r:r`r�rYrM�
ValueErrorr'�	keyworded�	annotated�keyword_only_argrZrrr�test_getargspec�s�
�
�
�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))r5r<r=r8z(arg1: list))r>r8�argz(*, arg))r<r8�rr�rr�rpr�z(a, b, c, d, *, e, f)rr�z#(a, b, c, d, *args, e, f, **kwargs))r5r6r<r8�r r!r�rDr�)rpr�z(a, b=1, c=2, d=3, *, e=4, f=5))r7r<r=r8)	rAr'rFrGr�rHZall_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�rBrCcs�j|gd�dd�dS)N�r@r�r�z(self, x, y)rC)r:�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/rrrRrrrrQ�r3zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSr/rrrRrrr�__call__�r3zLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)r7rFrGrs�wrapsr`rYrQ�
partialmethod�phamrUrrrrr��s



r�c@� eZdZe�ej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSr/rrrRrrr�__new__�r3zOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)r7rFrGrsrVr`rYrZrrrr�C_new��
r[c@rY)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSr/rrrRrrrr��r3zQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)r7rFrGrsrVr`rYr�rrrr�C_init�r\r])	rsrVr`rYr:rArtrQrX)r@rQrTr�r[r]rrZr� test_argspec_api_ignores_wrapped�s$

�


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}t�dtjj�}tj|fd�|_|j|dgdd�dS)NcSr/rrrrrr�test�rzHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrY�r(�(spam)rC)r:�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__rA)r@r_Z
spam_paramrrr�"test_getfullargspec_signature_attr�sz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsJddd�}t�|�}|�|j|j�dd�}t�|�}|�|j|j�dS)	NrrY�returnrQcSr/rr�rrrrr_�r�zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSr/rrrrrrr_�r�)rrYrgrQ)r:r;r��__annotations__Zannotations)r@r_�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)rCr
�dir_fd�follow_symlinksT)rmrnz,(path, *, dir_fd=None, follow_symlinks=True))r4r<r=r8)rA�_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:r;r�r9)r@rw�builtinrjrrr� test_getfullargspec_builtin_funcs
z8TestClassesAndFunctions.test_getfullargspec_builtin_funccCsHddl}|j}|�t��t�|�Wd�dS1swYdS)Nr)rw�docstring_no_signaturerMrNr:r;)r@rwryrrr�-test_getfullargspec_builtin_func_no_signatures
"�zETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signaturecC�bt�D]}t�|�}t|j�}t|�}|�|�|�||�qt�t�}t|j�}|�|t	�dSr)
r.r:r;r�r?�sortedr6r�r2� unsorted_keyword_only_parameters�r@rG�	signaturer�Zsorted_lrrr�8test_getfullargspec_definition_order_preserved_on_kwonly�





zPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlycCs$Gdd�dt�}|�|jdg�dS)Nc@r})z9TestClassesAndFunctions.test_getargspec_method.<locals>.AcSr/rrrZrrrrf$rz;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN�r7rFrGrfrrrrr+#r�r+r@)r�r:rf�r@r+rrr�test_getargspec_method"sz.TestClassesAndFunctions.test_getargspec_methodcCsGdd�dt�}t|�}|�ddtf|d�|�ddtf|d�|�d	d|f|d
�|�dd|f|d
�|�dd|f|d�|�dd|f|d|�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gdd�d|�}t|�}|�d	d|f|d
�|�dd|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gdd�d|�}t|�}|�d	d|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�Gd d!�d!||�}t|�}|�d	d|f|d
�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�|�dd|f|d�dS)"Nc@s\eZdZdd�Zee�Zdd�Zee�Zdd�Zee�Z	dd�Z
d	d
�ZdZe
�Ze�ZdS)
z9TestClassesAndFunctions.test_classify_newstyle.<locals>.AcSr/rrrrrr�s+r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSr/rrr�rrrr.r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSr/rrrZrrr�getp1r�z>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSr/rrrZrrrrf4r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSr/rrrZrrr�m16r�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)r7rFrGr��staticmethodr�classmethodr�rYr*rfr��datablobr�ddr$�mdrrrrr+)s
r+rZ�
static method�missing __new__r�r�zmissing __init__r�zmissing static methodr�class method�missing class methodr*rYzmissing propertyrfzmissing plain method: %rr��missing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@r})z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSr/rrrZrrrrfOr�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNr�rrrrr,M�r,c@�eZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSr/rrrZrrrrf^r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSr/rrrZrrrr_r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r7rFrGrfrrrrrr�\sr�c@r})z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSr/rrrZrrrr�mr�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r7rFrGr�rrrrr-kr�r-)r�r)r�)r@r+�attrsr,r�r-rrr�test_classify_newstyle(s\��z.TestClassesAndFunctions.test_classify_newstylecCs�tt�D]}tt|�}t|t�rt�|�qtt�}|�	ddtf|d�|�	ddt
f|d�|�	ddt
f|d	�|�	d
dt
f|d	�|�	ddtf|d	�dS)NrZr�r�r!r�r�r r�r��__add__�__and__)�dir�__builtins__�getattr�
isinstancergr:r(r)�boolr�r�)r@reryr�rrr�test_classify_builtin_typesys*


������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)NrQrY�rr��r@rerrrr���zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__�r7rFrGr�rrrrr�Meta��r�c@�eZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcS�dS)Nr�rrZrrrrQ�r3zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r7rFrGrf�DynamicClassAttributerQrrrr�VA��r�r�rQr�rY)rgr:�	Attributercr�r()r@r�r�Zshould_find_dcaZshould_find_garrr�#test_classify_DynamicClassAttribute�sz;TestClassesAndFunctions.test_classify_DynamicClassAttributecsPG�fdd�dt��G�fdd�dt�}t�dd||j�}|�|t�|��dS)Ncs eZdZ�fdd�Zdd�ZdS)zDTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolcs��Srr)r@rD��NoBoolrr�__eq__�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSr3)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__�r6zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r7rFrGr�r�rrrrr���r�c@r�)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNr�rrrr�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��r6zLTestClassesAndFunctions.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>.ClassNr�rrrrr��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��r6z[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��r6z[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�r~r9r�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>.Class1Nr�rrrr�Class1�r�r�r�c@r�)zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nr�rrrr�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@r})zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.McSr��N)rr7�missingrr�rrrr��r6zSTestClassesAndFunctions.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>.CNr�rrrrr��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�r$r�rrrrr+�s
r+cs"Gdd�dt����fdd�}|S)Nc@r�)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNr�rrrr�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>.BNr�rrrrr,r�r,)r�r:�ismethoddescriptorrjr�r�rc)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@r})z9TestClassesAndFunctions.test_getmembers_method.<locals>.BcSr/rrrZrrrr�rz;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN�r7rFrGr�rrrrr,r�r,r�)r�r�r:r�r�rL)r@r,r�rrr�test_getmembers_methods z.TestClassesAndFunctions.test_getmembers_methodcCsLGdd�dt�}Gdd�d|d�}|�dt�|��|�dt�|���dS)Ncr�)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mcr�)Nr��	scrambledr�)r�rerrrr�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@r})zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSr�r�rr�rrrr�(r6zITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__Nr�rrrrr�'r�r�c@r�)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNr�rrrrr�*r�r�r�cSrr�rr�rrrr,rzJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>r�)rgr:r�r�r�rrr�test_getmembers_with_buggy_dir&r�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"0r�zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foor�r"r/T��eval_strr��r��globals�rr�rg�rr�rrgr��MyClass�rr�r�r�Fc�t����fdd��}|S)Nc��|d|d�Sr&rr��rGrr�wrapperV�ziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper�rsrV�rGr�rr�r�times_threeU�zXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_threer r�r��xxx)r�r/r�r:�get_annotationsrir�rr�r��	function2�	function3�UnannotatedClass�unannotated_function�assertIsNot�__globals__)r@r"�isar�r�rrr�+test_get_annotations_with_stock_annotations/sL  ""&""& 
 $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��r�znTestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three.<locals>.wrapperr�r�rr�rr��r�z]TestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_threer r�r�r�Zmytype)rr�r:r�r�r�r�rrrr�r/rrrZMyClassWithLocalAnnotations)r@rZisa2r�r�rrr�0test_get_annotations_with_stringized_annotationsbsF"&  " 
  zHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations)NNNN)"r7rFrGr/r:rArIrOr^rfrkrurtrrurrzr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rrrrr*`s\
�

�(	�
��Q

#	 
	3r*c@r})�TestFormatAnnotationcCs8ddlm}m}|�t�|�d�|�t�|�d�dS)Nr)r@�ann1zUnion[List[str], int]z%Union[List[testModule.typing.A], int])Ztest.typinganndata.ann_module9r@rr�r:Zformatannotation)r@r@rrrr�test_typing_replacement�r<z,TestFormatAnnotation.test_typing_replacementN)r7rFrGr
rrrrr�r�rc@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�r7rFrGr!rrrr�NonDataDescriptor��rc@r})zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0cSr/rr)r@rerrrrr#�r�zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N�r7rFrGr#rrrr�DataDescriptor0�r�rc@r})zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1cSr/rrr�rrr�
__delete__�r�zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)r7rFrGrrrrr�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@rrrrrrr�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)r7rFrGrYrrrrr�
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�rz>TestIsDataDescriptor.test_functions.<locals>.Test.class_methodcSr/rrrrrr�
static_method�rz?TestIsDataDescriptor.test_functions.<locals>.Test.static_methodN)r7rFrGr!r�r"r�r#rrrr�Test�s
r$cSr/rrrrrrr��rz5TestIsDataDescriptor.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:rjr!r"r#)r@r$r�Za_lambdarrr�test_functions�s$�����z#TestIsDataDescriptor.test_functionsN)r7rFrGrrr r%rrrrr�s
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�r0r�rr/rr���z2TestGetClosureVars.test_name_resolution.<locals>.fr0r,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>.grr2rr/rr��sz4TestGetClosureVars.test_generator_closure.<locals>.fr0r,r+r-r4r7rrr�test_generator_closure�s�z)TestGetClosureVars.test_generator_closurecCs`Gdd�d�}t�}d|i}dti}dti}dh}t�||||�}|�t�|��|��|�dS)Nc@r})z1TestGetClosureVars.test_method_closure.<locals>.Ccs�fdd�}|S)Ncr)rr*r.r/rrr��r1z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r@r0r�rr/rr��r3z3TestGetClosureVars.test_method_closure.<locals>.C.fNr�rrrrr��r�r�r0r,r+r-)r�r,r+r:r5r�r6r�)r@r�r8r9r:r;r<r.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:r6Z	nonlocalsrSrrr�_nonlocal_vars�z=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscr()Nc��|Srr�r�r�rr�addr6zFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r�rDrr�r�
make_adderr3z9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�Srr�rK�rJr�rrr�
�
zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�rJrrGr�curryrz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kSrrr�rrr�	less_thanr6z8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�Srrr�rSrrr�r�zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>rrS��lerSrr�rz;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)�g_ref)rLr�)�YrKrrNsz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs���|�d�ji�dS)Nr�)r�rM�r��rNr@r@rr�check_y_combinatorrKzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorr r!r�r�rGcs�fdd�S)NcrBrrrCr�rrr�$szITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>rr�rr�rr�$r�z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r@rErIrJrQZincZadd_twoZgreater_than_fiverrPr�test_nonlocal_varss$

��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:r5r9r�r6)r@r"Z_emptyrrr�test_getclosurevars_empty(sz,TestGetClosureVars.test_getclosurevars_emptycCsBGdd�d�}|�ttjd�|�ttjt�|�ttji�dS)Nc@r�)z7TestGetClosureVars.test_getclosurevars_error.<locals>.TNr�rrrr�T/r�rUr )rMrNr:r6r�)r@rUrrr�test_getclosurevars_error.sz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r�)r')r@rxrnrrr�_private_globals4s
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nr�r+r
)rW�popr:r5r+r�r6�r@r�rnr.rrr�test_builtins_fallback:�z)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nr
r r�r+)rWr:r5r�r6rYrrr�test_builtins_as_dict@r[z(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nr�r
r+)rWrr:r5r
r�r6rYrrr�test_builtins_as_moduleFsz*TestGetClosureVars.test_builtins_as_moduleN)
r7rFrGr=r>r?rRrTrVrWrZr\r]rrrrr&�s&r&c@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|�||�dS)NrO�func(%s)�inspect.getcallargs(func, %s))r�r5r�)r@r��call_params_string�locsZr1Zr2rrr�assertEqualCallArgsOs
�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)NrOr_zException not raisedr`)r�r5rcZfailr�rgr�r/)r@r�Zcall_param_stringrbrpZex1Zex2rrr�assertEqualExceptionVs(��

���
z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r5)r@r�rxrrr�makeCallableis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)�rerc�r@r�rrr�
test_plainns&
z#TestGetcallargsFunctions.test_plaincC�V|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nz
a, b=1, *crgrh�2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])rjrkrrr�test_varargs�s
z%TestGetcallargsFunctions.test_varargscCsz|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�dS)Nza, b=1, **criz2, 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)rjrkrrr�
test_varkw�s
z#TestGetcallargsFunctions.test_varkwcCrm)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)rjrkrrr�test_varkw_only�s
z(TestGetcallargsFunctions.test_varkw_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�d
�}|�|d�|�|d�|�|d�dS)
Nza=3, *, c, d=2zc=3zc=3, a=3za=2, c=4z4, c=4r��3za=3zd=4z	*, c, d=2zc=3, d=4zd=4, c=3)rercrdrkrrr�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)rjrkrrr�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, brfr�r&z1,x=1rizb=3rnz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=3rqz1, 2z1, 2, a=1, b=2z	*, a, b=0cSr/rrrhrrr�f5�r�z0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSr/rrr�rrr�f6rz0TestGetcallargsFunctions.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�{rD�ry)	rerdr�rNr:ZgetcallargsrErb�VAR_KEYWORD)	r@Zf0�f1�f2r��f3�f4rvrwrrr�test_errors�sr




���������$�z$TestGetcallargsFunctions.test_errorsr)
r7rFrGrcrdrerlrorprrrtrur�rrrrr^Ms

	
r^cr�)�TestGetcallargsMethodscCs"Gdd�dt�}||_|�|_dS)Nc@r�)z)TestGetcallargsMethods.setUp.<locals>.FooNr�rrrr�Foor�r�)r�r��inst)r@r�rrrr�szTestGetcallargsMethods.setUpcs$tt|�j}|d|�|j_|jjS)Nzself, )rr�rer�r�r�)r@r��mkrrrresz#TestGetcallargsMethods.makeCallable)r7rFrGr�rerrrrrr�sr�csBeZdZ�fdd�Zd
�fdd�	Zd
�fdd�	Zd
dd	�Z�ZS)�TestGetcallargsUnboundMethodscstt|��|�|jjSr)rr�rer�r��r@r�rrrre%sz*TestGetcallargsUnboundMethods.makeCallableNc�tt|�j|�|||��Sr)rr�rc�_getAssertEqualParams�r@r�rarbrrrrc)�
�z1TestGetcallargsUnboundMethods.assertEqualCallArgscr�r)rr�rdr�r�rrrrd-r�z2TestGetcallargsUnboundMethods.assertEqualExceptioncCs t|pi|jd�}|d||fS)N)r�zinst,)r�r�r�rrrr�1sz3TestGetcallargsUnboundMethods._getAssertEqualParamsr)r7rFrGrercrdr�rrrrrr�#s
r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�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�Thing:r�r�r�r�r�)r�r�r:�getattr_staticr�rMrX�r@r��thingrrr�
test_basic9s�zTestGetattrStatic.test_basiccCs@Gdd�dt�}Gdd�d|�}|�}|�t�|d�|j�dS)Nc@r�)z/TestGetattrStatic.test_inherited.<locals>.ThingNr�rrrrr�Fr�r�c@r�)z4TestGetattrStatic.test_inherited.<locals>.OtherThingNr�rrrr�
OtherThingHr�r�r��r�r�r:r�r�)r@r�r�Z	somethingrrr�test_inheritedEsz 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�Q�
z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)r7rFrGr�r�rrrrr�Or�r�r�r�r!r�r�rrr�test_instance_attrNs
z$TestGetattrStatic.test_instance_attrcCs0Gdd�dt�}|�}|�t�|d�|j�dS)Nc@r)z.TestGetattrStatic.test_property.<locals>.ThingcSr3�NzI'm pretending not to existrWrZrrrr�Zsz0TestGetattrStatic.test_property.<locals>.Thing.xN)r7rFrGrYr�rrrrr�Yr�r�r�r�r�rrrr XszTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@r})zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWr3r�rW)ryrrrr!br6zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nrrrrr�
descriptorar�r�cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN�r7rFrGr�r�Zdescrrr�er�r�r�)r�r�r:r�)r@r�r�r�rr�r�%test_descriptor_raises_AttributeError`s
z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs*Gdd�dt�}|�t�|d�|j�dS)Nc@r�)z4TestGetattrStatic.test_classAttribute.<locals>.ThingNr�rrrrr�kr�r�r�r��r@r�rrr�test_classAttributejsz%TestGetattrStatic.test_classAttributecCs.Gdd�dt�}|�t�|d�|jd�dS)Nc@s eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jSr)�_xrZrrrr�r�z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r7rFrGrfr�r�r�r�rrrrr�qs

r�r�)r�r�r:r�rcr�rrr�test_classVirtualAttributepsz,TestGetattrStatic.test_classVirtualAttributecCs:Gdd�dt�}Gdd�d|�}|�t�|d�|j�dS)Nc@r�)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNr�rrrrr�zr�r�c@r�)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNr�rrrrr�|r�r�r�r��r@r�r�rrr�test_inherited_classattributeysz/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��r�z4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)r7rFrGr�r�r�rrrrr��sr�r�r�rr�r�rrr�
test_slots�szTestGetattrStatic.test_slotscCs�Gdd�dt�}Gdd�dt|d�}|�t�|d�d�Gdd	�d	|�}Gd
d�dt|d�}|�t�|d�d�Gdd
�d
|�}|�t�|d�d�dS)Nc@r�)z.TestGetattrStatic.test_metaclass.<locals>.metar"N)r7rFrGr�rrrr�meta�r�r�c@r�)z/TestGetattrStatic.test_metaclass.<locals>.ThingNr�rrrrr��r�r�r�r�r"c@r�)z-TestGetattrStatic.test_metaclass.<locals>.subNr�rrrr�sub�r�r�c@r�)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�Nr�rrrrr��r�r�c@r�)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNr�rrrr�OtherOtherThing�r�r�r�r��rgr�r�r:r�)r@r�r�r�r�r�rrr�test_metaclass�sz 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�re)r�r�r�r:r�rgre)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>.OtherThingNr�rrrrr��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@r})z5TestGetattrStatic.test_descriptor.<locals>.descriptorcSr�r&r�r@�instance�ownerrrrr!�rz=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�rcr�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@r})zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorcSr�r&rr�rrrr!�rzLTestGetattrStatic.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>.ThingNr�rrrrr��r�r�r�r�)r�rgr�r:r�rc)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|_tSrS)�executedr�rZrrrr��zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r7rFrGr�rYrrrrr�	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)r7rFrGrYr�rrrrr��r�r�c@r�)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�Nr�rrrrr��r�r�c@r�)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNr�rrrrr��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�_iSrS)�calledrZ�r_rrrc�r�z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r7rFrGrrYrcrr�rrr��sr�rDrr�)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��||�dSrS)r�r�get)r@�keyrz)rr_rrr�sz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getr)r7rFrGr�rrr�rr�Customsr�c@r�)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)r7rFrGrrrrrr�r�r�rr�)r�r�r�rcr�r:r�r?)r@r�r�r"rr�r�test_custom_object_dictsz)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�rS)r�rZrrrrcs
zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N�r7rFrGrYrcrrrrr�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�rr�r�rYr�)rgr�r:r�r?r�)r@r�r�r�rrr�test_metaclass_dict_as_propertys
z1TestGetattrStatic.test_metaclass_dict_as_propertycCs t�}|�t�td|�|�dS)N�version)r�rr:r�r0)r@�sentinelrrr�test_module#s�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�rZrrrrc*s
z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__Nr�rrrr�MetaMeta)r�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>.ThingNr�rrrrr�2r�r�rY)rgrMrXr: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�r r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�7s.	

	

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�_generatorstateArAz%TestGetGeneratorState._generatorstatecC�|�|��tj�dSr)r�r�r:ZGEN_CREATEDrZrrr�test_createdDrsz"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dSr)�nextr�r�r�r:Z
GEN_SUSPENDEDrZrrr�test_suspendedGs
z$TestGetGeneratorState.test_suspendedcCs"|jD]}q|�|��tj�dSr)r�r�r�r:�
GEN_CLOSEDrTrrr�test_closed_after_exhaustionKs
z2TestGetGeneratorState.test_closed_after_exhaustioncC�L|�t��|j�t�Wd�n1swY|�|��tj�dSr)rMr"r�r0r�r�r:r�rZrrr�%test_closed_after_immediate_exceptionP��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_generatorZs��zCTestGetGeneratorState.test_running.<locals>.running_check_generator)r�r�)r@r�rrZr�test_runningUs
z"TestGetGeneratorState.test_runningcC�@d��}|D]}tt|�}|�|t|��|�|t|��qdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED�r�r�r:r��reprr/�r@�namesre�staterrr�test_easy_debugginge�
�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)NrNr�rqr)�lstrr�r�rrrr�eachns��z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrN)rr�r )rr�r�r�r!r�rq)rr�r�r�rr�r�r:�getgeneratorlocalsr��
StopIteration)r@r�Znumbersrrr�test_getgeneratorlocalsms:
�
��
��
���z-TestGetGeneratorState.test_getgeneratorlocalscCsVdd�}|�}|�t�|�i�zt|�Wn	tyYnw|�t�|�i�dS)Ncss�dVdSrrrrrrr�	yield_one�s�
zFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_oner�)r@r�r�rrr�test_getgeneratorlocals_empty�s�z3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|�ttjd�|�ttjdd��|�ttjt�|�ttjd�dS)Nr cSr�rSrr�rrrr��r�zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)r!r�)rMrNr:r�r9rZrrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)r7rFrGr�r�r�r�r�r�r�r�r�r�r�rrrrr�9s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�rwrZrrrr�rzTestGetCoroutineState.tearDowncCr�r)r:Zgetcoroutinestater�rZrrr�_coroutinestate�rAz%TestGetCoroutineState._coroutinestatecCr�r)r�r�r:ZCORO_CREATEDrZrrrr��rsz"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dSr)r��sendr�r�r:ZCORO_SUSPENDEDrZrrrr��sz$TestGetCoroutineState.test_suspendedcCs>	z|j�d�Wn	tyYnwq|�|��tj�dSr)r�r�r�r�r�r:�CORO_CLOSEDrZrrrr��s��z2TestGetCoroutineState.test_closed_after_exhaustioncCr�r)rMr"r�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)	Ncsr{rrrrrr�gencoro�s�
z>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�s�d}�IdHdSrXrr��rrrr��s�z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rrrY)rrr�r)rfr�r�r:Zgetcoroutinelocalsr�)r@r�ryrrr�test_getcoroutinelocals�s
�

�z-TestGetCoroutineState.test_getcoroutinelocalsN)r7rFrGr�rr�r�r�r�r�r�rrrrrr��s		r�c@r�)�MySignatureNr�rrrrr��rc@r�)�MyParameterNr�rrrrr�rrc@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)rerz�empty�
annotationr/ryr�)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�rrrr_�rz7TestSignatureObject.test_signature_object.<locals>.testrr|rrrrrr�zwrong parameter order�rezduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r�r)r:rdrbr�r/r�r(r��replacercr�rEr6rP)
r@�S�Pr_rrrrrrrr�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 rgr�rQc[r/rr�rr�rrrrrr"&	r�z=TestSignatureObject.test_signature_object_pickle.<locals>.foorhF)�
pickle_ver�subclassr)rery)r(r
T)rsrtr:r�r#�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�rrbrc�collections�OrderedDictr(rrrr
r6r�)	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/rrrhrrrr_B	rz=TestSignatureObject.test_signature_immutability.<locals>.testrr)r:r�rMrXr"rNr(�r@r_rrrr�test_signature_immutabilityA	s
�"�z/TestSignatureObject.test_signature_immutabilitycCsdd�}|�|�|�d�dS)NcSr/rrrrrrr_M	rz9TestSignatureObject.test_signature_on_noarg.<locals>.test�r.�r�r��r@r_rrr�test_signature_on_noargL	sz+TestSignatureObject.test_signature_on_noargcCs ddd�}|�|�|�d�dS)	Nr�r"rgr{cSr/rrr�rrrr_R	rz9TestSignatureObject.test_signature_on_wargs.<locals>.test))�r..�positional_or_keyword)r�.r"r0r{)r�r"rgr{r,r-rrr�test_signature_on_wargsQ	s
�z+TestSignatureObject.test_signature_on_wargscCsDdtdtdtfdd�}|�|�|�ddtdfddtdfftf�dS)Nrr�rgcSr/rrr�rrrr_Z	rz;TestSignatureObject.test_signature_on_wkwonly.<locals>.test.�keyword_only)�floatr/r�r�r�r-rrr�test_signature_on_wkwonlyY	s

���z-TestSignatureObject.test_signature_on_wkwonlycCsPddd�dddddd	d
tfdd�}|�|�|�d
ddddd
dtdffdf�dS)Nr�r{)rQr�r"rrrY�bazr�c_r/rr)rr�rYrQrr�rrrr_b	rz@TestSignatureObject.test_signature_on_complex_args.<locals>.testr/)r�r�r"r0)r.r�var_positional)rY.r5r2)rQr{.r2.�var_keyword�r�)r�r�r�r-rrr�test_signature_on_complex_argsa	s"
���z2TestSignatureObject.test_signature_on_complex_argscs�dd��dd��G��fdd�d�}|�|���d�|�|���d�|�|�|j�d�|�|�|j�d�|�|�|j�d�|�|�|j�d�dS)	NcWr/rrr rrr�test_args_onlyn	rzGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_r/rr�rr�rrr�test_args_kwargs_onlyq	rzNTestSignatureObject.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/rrr rrr�test_classmethodu	r3zKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWr/rrr rrr�test_staticmethody	r3zLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodr N)
r7rFrGr�r=r�r>rsrWr~rr�r�r�r<r:rrr+t	s

r+�)�r..r6.�)rA�r�..r7.)r�r�r~rr�r�r�rr?r�test_signature_without_selfm	s*������z/TestSignatureObject.test_signature_without_selfrlcs�ddl}�fdd�}�fdd�}||j���fdd�}��|d�d	���|d
�d���|d�d
���|d�d���|d�d���|d�d���|d�d���|d�d���|d�tj���|d�tjd�|t�|tjj�t�t	�
��}||j�|tj�|dj�|t
j�|ij�|tj�|tj�|dj�|tj���td��Gdd�d�}||��Wd�n1s�wY|t
j�|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�rdr�r�r(rre�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�rdr(r�r�rrerErZrr�
test_callable�	s

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jSr)r(rzr)r�rrr*�	r�z9TestSignatureObject.test_signature_on_builtins.<locals>.pr�rvr�sbytesr�g��Q�	@r)�#�nr'Tr�F�localr�r0rBr sabczno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r7rFrGrgrUrrrr�ThisWorksNow�	r�rK)rwrxr�r0�maxsizer�rorprqrr�StringIO�bytes�	maketransr��fromkeysrgrUr�r��minr�rE�__delitem__rYrZ#docstring_with_signature_but_no_doc)r@rwrFrGr*r�rKrr�r�test_signature_on_builtins�	sD









�

z.TestSignatureObject.test_signature_on_builtinscCsdddl}|j}dd�}||�}|�t�|�t�|��dtfdd�}|�tj|dd�t�|��dS)	Nrc� t���dtf�fdd��}|S)Nrgc��|i|��Srrr;rOrrr��	�z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper�rsrVr��r�r�rrOr�	decorator�	�zKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorrgc_r/rrr;rrr�wrapper_like�	r�zNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF�Zfollow_wrapped)rwrxr�r:r�r�)r@rwr�rYZdecorated_funcr[rrr�$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)rwr�rEr:r�r{r/)r@rwrrr�'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�rNr: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�rbZ	kwonlyreqrr�rrrr�
rzITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@r�)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecS�2|j|_|j|_|j|_|j|_|j|_||_dSr�r7rdri�__defaults__�__kwdefaults__r��r@r�rrrr�
�
zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_�|j|i|��SrrOr�rrrrU
rzVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N�r7rFrGr�rUrrrr�funclike
�rlrBcst|d�rdS�|�S)N�_builtinmockT�re)rC�Z_orig_isdescrr�_isdesc'
s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
r:rd�
from_callabler�r�rfr�rurvr7r?rnr6)r@r�rlZsig_funcZsig_funclikeZflrqZbuiltin_funcrrpr�'test_signature_from_functionlike_object�	s*�"�z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|�tt�|��d�dS)NTrac_r/rrrcrrrr�8
rzCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSr/rr)r@Zmarkerrrrr�<
rzPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)r7rFrGr�rdrirfrgrrOrrrl;
s
rlz(marker))r�r/r:r�)r@rlrrOr�!test_signature_functionlike_class4
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/rrr rrrr�I
rzCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r rgcSr/rr�r@rJrKrrrr�K
rz=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWr/rrr rrr�m2M
rz=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSr/rrrhrrrrUO
rzCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__Nr)r7rFrGr�r�r�rvrUrrrrr$H
s
r$��rJ..r0)rKr .r0r@zinvalid method signature)r�r�r�r�rvr�rE)r@r$rrr�test_signature_on_methodG
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 rgcSr/rrrurrrr�e
rzHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1Nr)r7rFrGr�r�rrrrr$d
r�r$c_r/rrr;rrr�m1dg
r3zDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1drw)rsrVr�r�r�r�)r@r$rzrrr�#test_signature_wrapped_bound_methodb
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 rFcSr/rr)r�rJrKrrrr"q
r3zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)r7rFrGr�r"rrrrr$p
sr$))rx)rKr .r2.�r"r�r��r@r$�methrrr�test_signature_on_classmethodo
���z1TestSignatureObject.test_signature_on_classmethodcCr|)Nc@r)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSr/rr)r�rLrrrr"�
r3zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)r7rFrGr�r"rrrrr$�
r�r$)))r�..r0)rL..r2.r}r~rrr�test_signature_on_staticmethod�
r�z2TestSignatureObject.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)rtcSr/rrrrrrr_�
rz;TestSignatureObject.test_signature_on_partial.<locals>.testr+�has incorrect argumentsr rhcSr/rrrMrrrr_�
r))r/�r�..r0�r..r2�r�..r2.))r�r�r�.r!r))r��rr!.r2r�.)r�r))r/�r�r .r2r�r�.))r�r�r�.))�rr .r2�r�..r2r�r�.c_r/rr)rr�rr�rrrr_�
r))rAr�rC.))r�r�rC.r�Tr�)r_r�))rA�r�r.r2rC.�r�))r/rAr�rC.)r�r_rrgr�cSr/rrr�rrrr_�
rr�.r0cS�|Srrrhrrrr"rz:TestSignatureObject.test_signature_on_partial.<locals>.foor��)))rr�.r2.cS�
|||fSrrr�rrrr"r�r�)))r�r�.r2r�.)r r�r�cS�||||fSrrrMrrrr" rA)r�r)r�r�))r/)r�r�.r2)rr�.r2)r�r�.r2.��r�r�)r�r�r�r�cSr�rrr�rrrr"-r��
)r�r!r�rq)r�rqr�)r rqr�)rqr�r�c[r/rr)rr�rr�r�rrrr"Brrr|r�z(a, b, /, c, d, **kwargs)))�r�..Zpositional_only�r..r0�r�..r0rC.))r�r�rC.))r�rC.))�rr�.r2r�rC.))r�r�r�rC.rN)rsrtr:rbr�r�r�rEr�re�bindrr�r(�copyrrcrdrr/)
r@rtrbr_rZpsigr"Z_foo�ba�paramsrrr�test_signature_on_partial�
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�rWcseZdZdd�Z�e�ZdS)�ATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSr/rrrrrrr_or�FTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN�r7rFrGr_rQrr�rr�Spamnsr�r�cs"eZdZddd�Z�edd�ZdS)	r�rgrYcSr/rr)�itrrrrrr_wrr�r rN)rgrYr�rr�rrr�vs
Fr�)))r�..r0r/�rr .r2rY))r/r�rYcs eZdZddd�Z�ed�ZdS)r�r@�annocSr/rrr�rrrr_�rr�r N)r@r�)r7rFrGr_r�rr�rrr��s
)))r@.r�r0.)	rsrWr�rEr:r�rQr�r�)r@r�rr�r�test_signature_on_partialmethodks ����z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSr/rrrhrrrr"�r�zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorYz(a))�_partialmethodr�r/r:r��r@r"rrr�$test_signature_on_fake_partialmethod�sz8TestSignatureObject.test_signature_on_fake_partialmethodcs�dd��G�fdd�d�}�|�j�}|�|�|j�d�|�|�|�j�d�|�|j|jdd�d	�|�|�|�d�d
d��G�fdd�d�}|�|�|j�d�|�|�|�j�d�d
d�}|j|_|�|�|�d�dS)NcrT)NrgcrUrrr;rOrrr��rV�STestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperrWrXrrOrrY�rZzBTestSignatureObject.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�rYrrr��r�r�))�r@..r0r/r�.))r/r�.Fr\rBcsNt���dtf�fdd��}t���}t|j���dd�}|j|d�|_	|S)Nrgcs�dg|�Ri|��Sr�rr;rOrrr��sr�r r`)
rsrVr�r:r�rr(rrre)r�r�r�
new_paramsrrOrrY�s
cr�)r�cSr/rrr�rrrrU�r3zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N�r7rFrGrUrr�rrr��r��)r�.cSr/rrrrrr�wrapped_foo_call�rzITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)rr�r�rU�__wrapped__)r@r�rr�rr�r�test_signature_on_decorated�s8����	���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@r})�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@r})�7TestSignatureObject.test_signature_on_class.<locals>.CMcSr/rr)r�rrrrrU�rz@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__Nr�rrrrrZ�r�rZc@r})r�cSr/rr�r@r�rrrr��rr�Nr�rrrrr��r�r�c�"eZdZdd��fdd�
Z�ZS)r�r rc�t��||||�Sr�rrZ��mclsre�bases�dctr"rrrrZ�r1�?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__�r7rFrGrZrrrrrrZ��c@r})r�cSr/rrr�rrrr��rr�Nr�rrrrr��r�r�))�re..r0�r�..r0�r�..r0)r"r .r2.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMr rcr�rr�r�rrrrZr1z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�Sr)rg)r��nm�bs�dtrrrrUrAzATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r7rFrGrZrUrrrrr�CMMsr�cr�)r�r!�rcr�rr�)r�rer�r�rrrrrZ	r1r�r�rrrrrZr�c@r})r�cSr/rrr�rrrr�rr�Nr�rrrrr�r�)))r�..r0)r�..r0)r�..r0.cr�)r�r!r�cst��|||�Sr)rr�)r�rer�r�rrrrr�!rz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r7rFrGr�rrrrrrZ r�c@r})r�cSr/rrr�rrrr�$rr�Nr�rrrrr�#r�))r�r�r�)rr!.r2.)r�r�rg)r@r�rZr�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�rZ)r�rrr�rrrrZ0r�zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__Nr�r7rFrGrZrrrrr+/rr+c@r})z9TestSignatureObject.test_signature_on_subclass.<locals>.BcSr/rrr�rrrr�3rzBTestSignatureObject.test_signature_on_subclass.<locals>.B.__init__Nr�rrrrr,2r�r,c@seZdZddd�ZdS)z9TestSignatureObject.test_signature_on_subclass.<locals>.Cr r!c_r�rr�)r�rr�rr�rrrrZ6r�zATestSignatureObject.test_signature_on_subclass.<locals>.C.__new__N�r r!r�rrrrr�5rr�c@r�)z9TestSignatureObject.test_signature_on_subclass.<locals>.DNr�rrrrr-8r�r-r�))�rr .r0)r�r!.r0rArC.))r�rArC.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�TypeVarrUc@seZdZdeddfdd�ZdS)zATestSignatureObject.test_signature_on_generic_subclass.<locals>.ArrgNcSr/rrr�rrrr�PrzJTestSignatureObject.test_signature_on_generic_subclass.<locals>.A.__init__)r7rFrGr�r�rrrrr+O�r+r.r2)�typingr�r�r�r�r�)r@r�r�rUr+rrr�"test_signature_on_generic_subclassJ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>.CNr�rrrrr�[r�r�rc@r��zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNr�rrrrr-]r�r-c@r�r�r�rrrrr�ar�c@r�r�r�rrrrr-br�zcallable.*is not supported)r�r/r:r�rgr�rE)r@r�r-rrr�$test_signature_on_class_without_initW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>.PNr�rrrrror�rc@r�)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNr�rrrr�
EmptyTraitpr�r�c@r�)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nr�rrrr�P2qr�r�c@r})z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSr/rr)r@rYrrrr�vrzHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__Nr�rrrr�P3ur�r�rac@r})zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSr/rr)r�r"rrrrrU{rzKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__Nr�rrrr�MetaPzr�r�c@r�)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr�rrrr�P4}r�r�r�z
(foo, bar))r�r/r:r�rorprg)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@r})zCTestSignatureObject.test_signature_on_callable_objects.<locals>.FoocSr/rrr�rrrrU�rzLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__Nr�rrrrr��r�r�r�c@r�)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNr�rrrrr��r�r�r_c@r�)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNr�rrrr�Bar�r�r�c@r�)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNr�rrrr�Wrapped�r�r�cSr/rrrhrrrr��r�zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>�wrapper loop)r�r�r�rNr:r�rE)r@r�r�r�r�rrr�"test_signature_on_callable_objects�s*���
�"�z6TestSignatureObject.test_signature_on_callable_objectscCs|�|�ddd��d�dS)Nr�cSr�rrrhrrrr��r�z?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rr�.r0.r8r,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�rgcSr/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 rhcSr/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�r3r?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/rrrhrrrr"�r�z8TestSignatureObject.test_signature_hashable.<locals>.foorr`rY�r
rgr cSr/rrrhrrrr
r�z8TestSignatureObject.test_signature_hashable.<locals>.barcSr/rrrhrrrr"	
r��unhashable typecSr/rrrhrrrr"

r�)rgr )r:rdrbr��POSITIONAL_OR_KEYWORDr�r�r�rr�rN)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 rrrgr�c[r/rr�rr�rr�rrrr"
rz3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c_r/rr)rr�rrr�rrrr"
rz.(a: int = 1, *args, b, c=None, **kwargs) -> 42cSr/rrrrrrr"
rrcSr/rrrhrrrr" 
rz#(a: list[str]) -> tuple[str, float]r)�TuplecSr/rrrhrrrr"&
rz#(a: list[str]) -> Tuple[str, float]r)
r�r�r/r:r�r�rr3r�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�rrrr_/
r6zDTestSignatureObject.test_signature_str_positional_only.<locals>.testrr|r`z(a_po, /, *, b, **kwargs)r"z(foo, /)rz(foo, /, **bar)z(foo, /, *bar))r:rbrdr�r�r(rrrcrer�r/r}�VAR_POSITIONAL)r@rrr_rr�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)Nrgr�cSr/rrrrrrr_H
rz=TestSignatureObject.test_signature_replace_anno.<locals>.testr�)rgr�)r:r�rr�r
rr�r)rrr�test_signature_replace_annoG
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"V
rzJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)r!)r�r r�r!r�rrrrr�U
r�r�c@r�)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNr�rrrr�HamX
r�r�))r�)r�r!r r0)r�r�r!r2.)r�r�r")r@r�r�rrr�$test_signature_on_mangled_parametersT
s�
�z8TestSignatureObject.test_signature_on_mangled_parameterscCs6Gdd�dtj�}ddd�}|�|�}|�||�dS)Nc@r�)zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureNr�rrrrre
r�rr�r cSr/rrr�rrrr"f
r�zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo�r�r �r:rdrr�assertIsInstance�r@rr"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>.MySignatureNr�rrrrrl
r�rc@r�)zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooNr�rrrrr"m
r�r"r�rrrr�"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>.MySignatureNr�rrrrrt
r�r)r:rdrrrorpr)r@rrrrr�(test_signature_from_callable_builtin_objq
sz<TestSignatureObject.test_signature_from_callable_builtin_objcCr}r)
r.r:r�r�r(r~r6r�r2rr�rrr�3test_signature_definition_order_preserved_on_kwonlyx
r�zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlycCs0t�dd��j}t�dd��j}|�||�dS)NcSr/rrrPrrrr��
r�zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>cSr/rr)r�r�rrrr��
r�)r:r�r(r�)r@Zp1�p2rrr�#test_signater_parameters_is_ordered�
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>.FooNr�rrrrr��
r�r�r"rgcSr/rrrrrrr��
r�zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.funcrr�cSr/rr�r"rrrr�func2�
r�zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func2��signature_func)r�)r�r�)r�r:r�rdrrr"r�r
r(rr�)r@r�r�r	rZsig1Zsig2Zsig3rrr�0test_signature_annotations_with_local_namespaces�
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)Nr
rr�r`r�r��rr/)r
r(rrrr	Tr�)r�r/)r/r�r�r�)r�r�r�)rr:rdrbr�r�rrr"r�r�r�r�rrrr�r/r3�complexrr�rM�	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>.funclikecSrdrrerhrrrr�rizMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__c_rjrrOr�rrrrUrzMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__NrkrrrrrlrmrlcSr/rrrrrrr"r�z?TestSignatureObject.test_signature_none_annotation.<locals>.foor
)rir:r�rdrrr"r�r�)r@rlr"rrrr�test_signature_none_annotations��z2TestSignatureObject.test_signature_none_annotationN)4r7rFrGr�r�rr(r*r.r1r4r9rDrrurtrrSr]r^r`rsrtryr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrrrr�s�
0#�F�

5
Y%HQ
�
�
 S
�
irc@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)Nrc)r:rbr6rcr�r��KEYWORD_ONLYr}r�r/r�)r@rrrr�test_signature_parameter_kinds s���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��rzryz)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer�r|�name must be a strzis not a valid parameter name�$z.azcannot have default valuesrr�z
<Parameterz"a=42")r:rbrcr�rerzr�rrryr�rEr}rNr�r�rr6r�rP�r@r*rrr�test_signature_parameter_object(sX��������������z3TestParameterObject.test_signature_parameter_objectc	Csttj}|d|jd�}|�t|�t|d|jd���|�t|�t|d|jdd���|�t|�t|j|jd���dS)Nr"r|r�rx)r:rbrcr�r�r�rr�)r@rr"rrr�!test_signature_parameter_hashableRs
�
�z5TestParameterObject.test_signature_parameter_hashablecCs�tj}|ddtjjd�}|�||k�|�||k�|�|dk�|�|dk�|�|tk�|�|tk�|�||ddtjjd�k�|�||ddtjjd�k�dS)Nr"r�r)r:rbrr6r?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�rr r
rrzname is a required attribute)rerzz<value <class 'inspect._empty'> is not a valid Parameter.kindr|)r:rbrrrr�rrrer�r�rEr�rzr�ry)r@r*rrrr� test_signature_parameter_replaceks@�����z4TestParameterObject.test_signature_parameter_replacecCsD|�td��tjdtjjd�Wd�dS1swYdS)Nrr|)r�rNr:rbrcrZrrr�(test_signature_parameter_positional_only�s"�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.0r|Z	implicit0)	r�rEr:rbrcr�r�ryre)r@r	rrr�!test_signature_parameter_implicit�s���z5TestParameterObject.test_signature_parameter_implicitcCsxtjdtjjd�}|�t��d|_Wd�n1swY|�t��d|_Wd�dS1s5wYdS)NrYr|rr{)r:rbrrMrXr"ryrrrr�%test_signature_parameter_immutability�s�"�z9TestParameterObject.test_signature_parameter_immutabilityN)r7rFrGrrrrrrrrrrrrrrs*	(
rc@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�rrrrrr_�rz9TestSignatureBind.test_signature_bind_empty.<locals>.testr��too many positional argumentsr r�r��)got an unexpected keyword argument 'spam'�r�r!r�rNr-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_�||fSrrr;rrrr_�r6z7TestSignatureBind.test_signature_bind_var.<locals>.testrr rr!r�rrr"r�r r�r�r!r-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�rrrr_�r�z=TestSignatureBind.test_signature_bind_just_args.<locals>.testr r!r�rNr"rDz missing a required argument: 'b'z missing a required argument: 'a'r�cSr�rrr�rrrr_�r�)r r!r�cSr�rrr�rrrr_�r�r�r�)r�r!r�rh)r�r!r�r�)r r�r�r8r$r-rrr�test_signature_bind_just_args�s,�����

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|�|�|�d�|�|�|ddd�d�dS)NcWr�rrr rrrr_�rzATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr r!r�rNr'r-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�rrrrrr_�rAzDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testr r!rDr�)r r!r�)rDr�)r r!r�rr�)r!r r�rr�z multiple values for argument 'c'r�r�r$r-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�rrrr_rz?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrrQ�r"rYr'r-rrr�test_signature_bind_just_kwargss
�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�rrrr_	rAzCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testr r!rrQr-)r�rr"rY)rr�r"rY)r�r"rYrD)r�rr"rYrr"r�)rrr�r+r'r-rrr�#test_signature_bind_args_and_kwargss.
������
�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�rrrrrrr_rz:TestSignatureBind.test_signature_bind_kwonly.<locals>.testr"r rcSs|Srr)rr"rrrrr_$rz"missing a required argument: 'bar'cSr&rrrrrrr_*r6r!r�r�)rr"r#r�)rr"rYrQ)rrYc[r�rr)r"r�binrrrr_Er�rrY)rYr"rz"missing a required argument: 'foo')rYr)rr0rY)r0rY)r�rNr!r�r-rrr�test_signature_bind_kwonlyst�������������������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�rrrr_Trz=TestSignatureBind.test_signature_bind_arguments.<locals>.testr�r�r�r�r:�<)r�rrr��rr�)r)r�)r�r�r�)rrr�)r�r�)	r:r�r�r�r�	arguments�itemsr�r�r@r_rr�rrr�test_signature_bind_argumentsSs
���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�r:r�c[s||||||fSrr)r��b_po�c_por"rr�rrrr_drzCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)r�r9r:r|r`r r!rDr��rzbut was passed as a keywordr�)r"rr:zparameter is positional only)r:)r�r9)r�r�)r:rbr�r%r&rr(r6rrcrrer�r!r�rN)r@rr_rr�reZnew_sigrrr�#test_signature_bind_positional_onlyas4
�����"�z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}t�|�}|�ddd�}|�|jd�|jdddd�}|�|jd�dS)NcSr/rr)rr@r�rrrr_�rzATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testr r!r�rNr�)r:r�r�r�rr7rrr�!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)NcWr&rr�rrrrrr_�r6z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rr r>c_r&rrr;rrrr_�r6r rrr�)r:r�r�rNr�r�r!r5r7rrr�test_signature_bind_vararg_name�s
��
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_set�r1zDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setr r�>rr rDr�r�)rd�	co_constsrf�FunctionType�iterr#r�r!)r@rAZ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)rrG)r:r�r�r�r�r�r5r6)r@r"r�resultrrr�"test_signature_bind_posonly_kwargs�s

z4TestSignatureBind.test_signature_bind_posonly_kwargsN)r7rFrGr�r!r%r(r)r*r,r.r/r1r8r<r=r?rrFrJrrrrr �s$


7


r c@r�)�TestBoundArgumentscCsRdd�}t�|��d�}|�td��
t|�Wd�dS1s"wYdS)NcSr/rrrhrrrr"�r�zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foor r�)r:r�r�r�rNr��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/rrrhrrrr"�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?rr5)	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 rgr�rQc[r/rrrrrrr"�r�zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor�r�r2)r)
r:r�r�r#r r!r"r#r$r�)r@r"rr�r'Z
ba_pickledrrr�%test_signature_bound_arguments_pickle�s
���z8TestBoundArguments.test_signature_bound_arguments_picklecCsJid�dddddifdd�}t�|�}|jd	d
id�}|�t|�d�dS)
Nrrr rgr�rQc[r/rrrrrrr"�r�zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor�r�r2z <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�r4)r�r�)r)r�r�cSr/rrr�rrrr"�r�cSr/rrrrrrr"r�rYcSr/rrrhrrrr"
r�)rrYr)rr r�)	r:r�r�Zapply_defaultsr�r�r5r6Zbind_partialrPrrr�-test_signature_bound_arguments_apply_defaults�s@

��

�


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultscCs.dd�}t�|��d�}|�t|j�t�dS)NcSr/rrrhrrrr"r�zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foor )r:r�r�r�rgr5r�rLrrr�-test_signature_bound_arguments_arguments_typesz@TestBoundArguments.test_signature_bound_arguments_arguments_typeN)	r7rFrGrMrNrOrQrRrSrrrrrK�s
*rKc@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_paramsz: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_syntax s�z4TestSignaturePrivateHelpers._strip_non_python_syntaxcCst|�dddd�|�dddd�|�dddd�|�dddd�|�d	ddd�|�d
d
dd�|�dddd�dS)NzZ($module, /, path, mode, *, dir_fd=None, effective_ids=False,
       follow_symlinks=True)zO(module, path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)rz($module, word, salt, /)z(module, word, salt)r!z(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r�)rXrZrrr�&test_signature_strip_non_python_syntax*sT�������zBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r7rFrGrVrXrYrrrrrTs
rTc@s4eZdZee�ed�dd���Zdd�Zdd�Z	dS)	�TestSignatureDefinitionsrlc	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>�slicer�rDr��varsr�r#�anext�round>rQ�
breakpoint�max�__build_class__r+r��
__import__)ry)r9r\r-r~r6�callabler�rgrDr"�assertIsNotNoner:r�r*�__text_signature__)r@Zno_signatureZneeds_groupsZ
needs_nullZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrnrerCrrr�test_builtins_have_signatures[s<
�����z6TestSignatureDefinitions.test_builtins_have_signaturescCsFdd�}d|_t�|�}|�|�|�t|�d�d|_t�|�}|�t|�d�d|_t�|�}|�t|�d�d	|_t�|�}|�t|�d
�d|_|�t��
t�|�Wd�n1sawYd|_|�t��
t�|�Wd�n1s~wYd
|_|�t��t�|�Wd�dS1s�wYdS)Nc_r/rrr;rrrr��rzNTestSignatureDefinitions.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)z"(self, a=1+2, b=4-3, c=1 | 3 | 16)z(self, a=3, b=1, c=19)z(self, a=1,
b=2,


   c=3)z(self, a=1, b=2, c=3)z(self, x=does_not_exist)z(self, x=sys, y=inspect)z(self, 123))rer:r�rdr�r/rMrE)r@r�rrrr�'test_python_function_override_signature�s4




��"�z@TestSignatureDefinitions.test_python_function_override_signaturecCsLddlm}Gdd�d|�}|j}|�|d�t�|�}|�t|�d�dS)Nr)�BufferedReaderc@r�)zVTestSignatureDefinitions.test_base_class_have_text_signature.<locals>.MyBufferedReaderzbuffer reader class.N)r7rFrGrrrrr�MyBufferedReader�r�riz&(raw, buffer_size=DEFAULT_BUFFER_SIZE)z(raw, buffer_size=8192))Ztest.ann_module7rhrer�r:r�r/)r@rhriZtext_signaturerrrr�#test_base_class_have_text_signature�s
z<TestSignatureDefinitions.test_base_class_have_text_signatureN)
r7rFrGrrurtrrfrgrjrrrrrZWs�4rZc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dSr)rI�_next)r@rIrrrr��s
zNTimesUnwrappable.__init__cCs2|jdkr	td��|jdurt|jd�|_|jS)NrzUnwrapped too many timesr )rIrcrlrkrZrrrr��s


zNTimesUnwrappable.__wrapped__N)r7rFrGr�rYr�rrrrrk�srkc@r�)�
TestUnwrapcCs.dd�}tjdd�|�}|�t�|�|�dS)NcS�||Srrr�rrrr��r6z(TestUnwrap.test_unwrap_one.<locals>.funcr�)rL)rs�	lru_cacher�r:�unwrap)r@r�r�rrr�test_unwrap_one�szTestUnwrap.test_unwrap_onecCsPdd�}|}td�D]}t�|�dd��}q
|�|j|�|�t�|�|�dS)NcSrnrrr�rrrr��r6z,TestUnwrap.test_unwrap_several.<locals>.funcr�cSr/rrrrrrr��r3z/TestUnwrap.test_unwrap_several.<locals>.wrapper)r#rsrVrr�r�r:rp)r@r�r��__rrr�test_unwrap_several�szTestUnwrap.test_unwrap_severalcCsTdd�}t�|�dd��}t�|�dd��}d|_tj|dd	�d
�}|�||�dS)NcSrnrrr�rrr�func1�r6z#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_hererorSrrrr��rHz&TestUnwrap.test_stop.<locals>.<lambda>)�stop)rsrVrur:rpr�)r@rtr	r�Z	unwrappedrrr�	test_stop�s

�zTestUnwrap.test_stopcCs�dd�}||_|�td��
t�|�Wd�n1swYdd�}||_||_|�td��
t�|�Wd�n1sBwY|�td��t�|�Wd�dS1s^wYdS)NcSr/rrrrrrrt�r�z$TestUnwrap.test_cycle.<locals>.func1r�cSr/rrrrrrr	�r�z$TestUnwrap.test_cycle.<locals>.func2)r�r�rEr:rp)r@rtr	rrr�
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�rrOrrr��sr�)r�r*r:rp)r@r�rrOr�test_unhashable�szTestUnwrap.test_unhashablecCsLtt��d�}|�td��t�|�Wd�dS1swYdS)Nr r�)rkr0�getrecursionlimitr�rEr:rp)r@rCrrr�test_recursion_limits"�zTestUnwrap.test_recursion_limitN)	r7rFrGrqrsrwrxrzr|rrrrrm�srmc@sDeZdZdd�Zdd�Ze�edud�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nru�-mr:r�)�	importlib�
import_moduler
�decoderir�r:r)r@�module�rcr1�errrrrr�test_only_sources

�zTestMain.test_only_sourcecCsHdd�}d|_|�t��t�|�Wd�dS1swYdS)NcSr/rrrrrrr"rz)TestMain.test_custom_getattr.<locals>.foor�)rerMrNr:r�r�rrr�test_custom_getattrs
"�zTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|����}|�|dd�t�t����|�|d�dS)Nr~r:z%concurrent.futures:ThreadPoolExecutorrr)r
r�rir�r:rr)r@r�r1r�rrrr�test_qualname_sources
��zTestMain.test_qualname_sourcecCs:t�d�}tddd�\}}}|����}|�|dg�dS)Nrur~r:r0z#Can't get info for builtin modules.)r�r�rr�rir�)r@r�ryr1r�rrrr�
test_builtins!s

�zTestMain.test_builtinscCsxt�d�}t��}tg|�d�d�d�d�R�\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nrur~r:z	--detailsr)r�r�rZ!optim_args_from_interpreter_flagsr
r�r�r7r��
__cached__r�)r@r�rr�r1r��outputrrr�test_details(s
��zTestMain.test_details)r7rFrGr�r�rurtrr�r�r�rrrrr}s	
�
	r}c@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�ri)r@r
r�Z
inspected_srcr�rrr�assertInspectEqualAs
�"�zTestReload.assertInspectEqualc	Cs�td|j��9\}}t�|�}|�||�t|ddd��}|�|j�Wd�n1s,wY|�||�Wd�dS1sBwYdS)NZ
reload_bugr	r�r�)r�
src_beforer�r�r�r�r�	src_after)r@rer
r�r�rrr�test_getsource_reloadIs
�"�z TestReload.test_getsource_reloadN)	r7rFrG�textwrap�dedentr�r�r�r�rrrrr�5s


r��__main__)kr-r%rnrsr�r:rrrErZos.pathrror rr0rfr�r�ruZ
unittest.mockrk�concurrent.futuresr�ImportErrorZtest.supportrrrZtest.support.import_helperrZtest.support.os_helperr	Ztest.support.script_helperr
rr_rr`r
r'rrrrZtest.test_importrr�r�rrrr�r.r2r�rr�r4rUrWr[r�r\r]r�r�rrrwr|rr�r�r�rrr�rr$r)r*rrr,r&r^r�r�r�r�r�rdrrbrrrr rKrTrZrkrmr}r�r7�mainrrrr�<module>s��

F7U
*l78zIc@Af?e
<0
�