Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_inspect.cpython-310.opt-1.pyc

o

0�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�8/opt/alt/python310/lib64/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)�selfZ	predicate�exp�obj�otherrrr�istestbs



�zIsTestBase.istestN)r7�
__module__�__qualname__r9r:�	isbuiltin�isclass�iscode�isframer>�ismethod�ismodule�istraceback�isgeneratorr;�iscoroutiner=�
isasyncgenr<r8rDrrrrr4Zs�r4ccs�td�D]}|VqdS�Nr!�r#�r@r)rrr�generator_function_examplen���rTcCs$�td�2z	3dHW}|Vq6dSrQrRrSrrr� async_generator_function_examplers��rVc�s�dS�N�spamr�r@rrr�coroutine_function_examplevs�rZccs�dVdSrWrrYrrr�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))rTz#async_generator_function_example(1)rV�ignorezcoroutine_function_example(1)rZ�MemberDescriptorTypezdatetime.timedelta.days)!rDr:rGrI�	Exception�
__traceback__r]rJrM�hasattr�typesZisgetsetdescriptorr?�type�tb_frame�f_localsr>rKrL�isdatadescriptorrNr;rPr<�warnings�catch_warnings�simplefilterrOr=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 )rVr[rZr?r:r=�	functools�partialrOr6r;rN�unittest�mockZMockZ	AsyncMockr<rP�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)r7rErFr}rrrr�Future��rc@�eZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN�r7rErFrrrr�	NotFuture��r�cSr/rrrrrr�<lambda>��z1TestPredicates.test_isawaitable.<locals>.<lambda>)r?r:ZisawaitablerZr[r6r}rv)r@r{rxrwrr�Znot_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|�t�tj��|�t�gj��dSr)r6r:Z	isroutiner_rX�countrYrrr�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__r~z>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)r7rErFr�rrrr�
CustomGetattrr�r�)rDr:rHr6�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�r7rErF�	__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/rrrYrrrr"r3z@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN�r7rErFr"r�r�rr�AbstractClassExamplesr���	metaclassc@r|)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSr/rrrYrrrr"r~z8TestPredicates.test_isabstract.<locals>.ClassExample.fooNr�rrrr�ClassExampler�r��)�abcr�r�r6r:�
isabstractr?�int)r@r�r�r�rrr�r�test_isabstractszTestPredicates.test_isabstractcs�ddlm}m�g�G�fdd�d|d�}G�fdd�d|�}Gdd	�d	|�}|��d
dg����Gdd
�d
|�}Gdd�d|�}Gdd�d|�}|��gd��dS)Nrr�cseZdZ�fdd�ZdS)zLTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckercs��t�|��dSr)r%r:r���cls��isabstract_checksrr�__init_subclass__.�z^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)r7rErFr�rr�rr�AbstractChecker-sr�r�cr�)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSr/rrrYrrrr"1r3zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr�rr�rrr�0�r�c@r|)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSr/rrrYrrrr"5r~zMTestPredicates.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)r7rErFrpryr�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���	)rt�TestCase�__init__�git�abuse�r@r�kwargsrrrr�DszTestInterpreterStack.__init__cCs |�tjd�|�tjd�dS)Nz	git.ex[2]zmod.fr)rDr:rMrJrYrrr�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�rX�    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�rXr�r!�r�z    q = y / 0
)r�r$r�Ztrrr�rYrrr�
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�dro�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)	r7rErFr�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@rBr�r�rrr�assertSourceEqual�s
�zGetSourceBase.assertSourceEqual)r7rErFr�r�rrrrrrr�zs
r�c@seZdZdZddd�ZdS)�SlotUserzDocstrings for __slots__�measured in kilowatts�measured in kilometers)�power�distanceN)r7rErF�__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_rHr�rrr
rrZgetclasstreer�)r@ZclassesZtreerrr�test_getclasses�sR��
�
��
���

��
���z(TestRetrievingSourceCode.test_getclassescCs6t�ttj�}|�|dtjfdtjfdtjfg�dS)Nr��lobbestrX)r:r�r_r>r�r�rrX)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�rrrrYrrr�test_getdoc�s����z$TestRetrievingSourceCode.test_getdoccCs\|�t�tj�d�|�t�tjj�d�|�t�t��j�d�|�t�tjj�d�dS)NrrzThe automatic gainsaying.)r�r:rr_rr�Z
contradictionrYrrr�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:ZcleandocrYrrr�
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�rYrrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs^dd�}tj�d|��t��}|�t�|��t�|�Wd�dS1s(wYdS)NcS�td��)Nzbad file)�FileNotFoundError)rBZ	_filenamerrr�_getabsfile�zKTestRetrievingSourceCode.test_getmodule_file_not_found.<locals>._getabsfilezinspect.getabsfile)rtru�patchr:�currentframer(r,Zgetouterframes)r@r3r�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_rrrYrrr�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_rXr�r�r�r'�co_filename�	linecache�cache)r@�fnr)rrr�test_getsourcefilesz+TestRetrievingSourceCode.test_getsourcefilecCs|�t�tj�tj�dSr)r�r:�getfiler_rr�rYrrr�test_getfile�z%TestRetrievingSourceCode.test_getfilecC�N|�t��
}t�t�Wd�n1swY|�t|j��d��dS)Nz<module)	�assertRaises�	TypeErrorr:rGr.r6r-�	exception�
startswithrnrrr�test_getfile_builtin_module ��z4TestRetrievingSourceCode.test_getfile_builtin_modulecCrJ)Nz<class)	rKrLr:rGr�r6r-rMrNrnrrr�test_getfile_builtin_class%rPz3TestRetrievingSourceCode.test_getfile_builtin_classcCs�|�t��
}t�t�Wd�n1swY|�dt|j��|�t��}t�tj	�Wd�n1s9wY|�dt|j��dS)Nz
expected, got)
rKrLr:rG�absr�r-rMr�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�rrrrE4r3zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)r7rErF�propertyrrrr�CM3r�rXc@r�)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNr�rrrrr�7r�r�r�)rfrKrLr:rG)r@rXr�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>.ErrorReprcSr1)NZxyz)rbrYrrr�__repr__>r4zMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r7rErFrZrrrr�	ErrorRepr=r�r[)rKrLr:rG)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)rer]r.r/r��
__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�rE�getlinesr�rr�monkeySs
zHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr_r�r)rCrjr'r'r:r)r@rk�nsrrir�test_proceed_with_fake_filenameOsz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecC�|�tjjdd�dS)N�r�)rr_r�rbrYrrr�test_getsource_on_code_object`�z6TestRetrievingSourceCode.test_getsource_on_code_objectN) r7rErFr_r�rrrt�skipIfr.�flags�optimizerrrr!r"r*r0r7r9r@rFrHrOrQrSrYr\rermrprrrrr
�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)r7rErFryrrrrrucr�ruc@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dSrq)ZmaxDiffrr_r6rYrrr�test_range_toplevel_frameqsz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dSrq)rr_r]rYrrr�#test_range_traceback_toplevel_frameur�zETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r7rErFr_r�r{r|rrrrrznsrzc@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscC�|�tjdd�dS)Nr��)rr%�wrappedrYrrr�test_wrapped_decorator{r�z%TestDecorators.test_wrapped_decoratorcCr~)Nr��
)rr%ZgonerYrrr�test_replacing_decorator~r�z'TestDecorators.test_replacing_decoratorcCr~)N��)rr%r rYrrr�test_getsource_unwrap�r�z$TestDecorators.test_getsource_unwrapcCr~)N�q�s)rr%Zfunc114rYrrr�test_decorator_with_lambda�r�z)TestDecorators.test_decorator_with_lambdaN)	r7rErFr%r�r�r�r�r�rrrrr}xsr}c@sPeZdZeZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�
TestOnelinerscC�|�tjdd�dS)N�)rr%ZollrYrrr�test_oneline_lambda��z!TestOneliners.test_oneline_lambdacCr~)N��)rr%ZtllrYrrr�test_threeline_lambda��z#TestOneliners.test_threeline_lambdacCr~)N�!�")rr%ZtllirYrrr�test_twoline_indented_lambda�r�z*TestOneliners.test_twoline_indented_lambdacCr�)N�%)rr%ZonelinefuncrYrrr�test_onelinefunc�r�zTestOneliners.test_onelinefunccCr~)N�(�))rr%ZmanyargsrYrrr�
test_manyargs��zTestOneliners.test_manyargscCr~)N�,�-)rr%ZtwolinefuncrYrrr�test_twolinefunc�r�zTestOneliners.test_twolinefunccCs|�tjddd�dS)Nr �1)rr%rrYrrr�test_lambda_in_list�sz!TestOneliners.test_lambda_in_listcCr�)N�7)rr%Z	anonymousrYrrr�test_anonymous�r�zTestOneliners.test_anonymousN)
r7rErFr%r�r�r�r�r�r�r�r�r�rrrrr��sr�c@s(eZdZeZdd�Zdd�Zdd�ZdS)�TestBlockCommentscCr~)N�`�r)rr_rrYrrr�test_toplevel_class�r�z%TestBlockComments.test_toplevel_classcCrn)N�c�h)rr_rr�rYrrr�test_class_method�rqz#TestBlockComments.test_class_methodcCrn)N�m�p)rr_rZasyncfrYrrr�test_class_async_method�rqz)TestBlockComments.test_class_async_methodN)r7rErFr_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_commentrYrrr�test_with_comment�r�z TestBuggyCases.test_with_commentcCs|�tjddd�dS)Nr�?�@)rr%Z
multiline_sigrYrrr�test_multiline_sig��z!TestBuggyCases.test_multiline_sigcCs|�t��jdd�dS)N�G�H)rr%Zfunc69Zfunc71rYrrr�test_nested_class�r�z TestBuggyCases.test_nested_classcCr�)N�M)rr%Zfunc77rYrrr�#test_one_liner_followed_by_non_name�r�z2TestBuggyCases.test_one_liner_followed_by_non_namecCs|�tjjdd�dS)N�S)rr%Zcls82Zfunc83rYrrr�test_one_liner_dedent_non_name�rqz-TestBuggyCases.test_one_liner_dedent_non_namecCr~)N�X�Z)rr%Zfunc88rYrrr�&test_with_comment_instead_of_docstring�r�z5TestBuggyCases.test_with_comment_instead_of_docstringcCr~)N�_�a)rr%Zmethod_in_dynamic_classrYrrr�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)rK�OSErrorr:r�unicodedata�
findsourcerYrrr�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'rKr�r:r�rrBrCrDr�)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'rK�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�rb�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_linenocCrn)N�v�w)rr%ZClassWithMethod�methodrYrrr�test_getsource_on_method�rqz'TestBuggyCases.test_getsource_on_methodcCrn)N��)rr%Zcls135Zfunc136rYrrr�test_nested_func�rqzTestBuggyCases.test_nested_funccCr~)N��)rr%Zcls149rYrrr�4test_class_definition_in_multiline_string_definitionr�zCTestBuggyCases.test_class_definition_in_multiline_string_definitioncCr~)N��)rr%r&rYrrr�*test_class_definition_in_multiline_commentr�z9TestBuggyCases.test_class_definition_in_multiline_commentcCrn)N��)rr%Zcls173Zcls175rYrrr�,test_nested_class_definition_indented_stringrqz;TestBuggyCases.test_nested_class_definition_indented_stringcC�&|�tjdd�|�tjjdd�dS)N���)rr%Zcls183Zcls185rYrrr�test_nested_class_definition
�z+TestBuggyCases.test_nested_class_definitioncCr�)N������)rr%Zcls196Zcls200rYrrr�test_class_decoratorr�z#TestBuggyCases.test_class_decoratorcCr�)N������)rr%Zcls238Zcls239rYrrr�test_class_inside_conditionalr�z,TestBuggyCases.test_class_inside_conditionalcCs`|�tjdd�|�tjjdd�|�tjjjdd�|�tjjdd�|�tjjjdd�dS)N��������������)rr%Zcls203Zcls204Zcls205Zcls207rYrrr�test_multiple_children_classess
z-TestBuggyCases.test_multiple_children_classescCs<|�t��dd�|�tjdd�|�t����dd�dS)N������������)rr%Zfunc212Zcls213Zfunc219rYrrr�,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)!r7rErFr%r�r�r�r�r�r�r�r�rtrrrdr�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)�shutilZrmtreerrYrrr�tearDown5�zTestNoEOL.tearDowncC�|�|jjdd�dS)Nr r!)rr��XrYrrr�
test_class8rqzTestNoEOL.test_class)r7rErFr�rr�
__classcell__rrrrr)src@seZdZeZdd�ZdS)�TestComplexDecoratorcCr)Nii)rr�Zcomplex_decoratedrYrrr�test_parens_in_decorator?rqz-TestComplexDecorator.test_parens_in_decoratorN)r7rErFr%r�rrrrrr<�rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGr1�Nzbroken data descriptorrU�rrrr�__get__Fr4z_BrokenDataDescriptor.__get__cGrTr)�RuntimeErrorrrrr�__set__Ir~z_BrokenDataDescriptor.__set__cGr1rrUrrrrr�Lr4z!_BrokenDataDescriptor.__getattr__N)r7rErFr	rr r�rrrrrBs
rc@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGr1�Nzbroken method descriptorrUrrrrrTr4z_BrokenMethodDescriptor.__get__cGr1r"rUrrrrr�Wr4z#_BrokenMethodDescriptor.__getattr__N)r7rErFr	rr�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�r-r.r/)r@r0r1r2r3r4Z
posonlyargs_e�kwonlyargs_e�kwonlydefaults_e�ann_er5rr�r�r6�
kwonlyargsZkwonlydefaults�annrrr�assertFullArgSpecEqualsys$���"��z/TestClassesAndFunctions.assertFullArgSpecEqualscCsp|jtjddgdd�|�tjgd�dddd	�|�t|jtjg�|�t|jtjg�|�t|jtj	g�dS)
Nr�r��(x, y)�r5r�r�r�)r��r�z!(a, b, c, d=3, e=4, f=5, *g, **h))
r7r_r�rXrK�
ValueErrorr%�	keyworded�	annotated�keyword_only_argrYrrr�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))r2r9r:r5z(arg1: list))r;r5�argz(*, arg))r9r5�rr�rr�ror�z(a, b, c, d, *, e, f)rr�z#(a, b, c, d, *args, e, f, **kwargs))r2r3r9r5�r r!r�rAr�)ror�z(a, b=1, c=2, d=3, *, e=4, f=5))r4r9r:r5)	r>r%rCrDr�rEZall_markersZ all_markers_with_args_and_kwargsZall_markers_with_defaultsrYrrr�test_getfullargspec�s<��
���
�z+TestClassesAndFunctions.test_getfullargspeccs�t�tj�dd��}�j|ddgdd��j|ddgdd��jt�|�ddgdd��fdd�}Gd	d
�d
�}||��||j�||�j�||j�||�j�Gdd�d�}||�Gd
d�d�}||�dS)NcSr/rr�r�r�rrr�ham�r3zETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamr�r�r?r@cs�j|gd�dd�dS)N�r@r�r�z(self, x, y)r@)r7�r�rYrr�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/rrrOrrrrN�r3zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSr/rrrOrrr�__call__�r3zLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)r7rErFrr�wrapsr_rXrN�
partialmethod�phamrRrrrrr��s



r�c@� eZdZe�ej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSr/rrrOrrr�__new__�r3zOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)r7rErFrrrSr_rXrWrrrr�C_new��
rXc@rV)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSr/rrrOrrrr��r3zQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)r7rErFrrrSr_rXr�rrrr�C_init�rYrZ)	rrrSr_rXr7r>rsrNrU)r@rNrQr�rXrZrrYr� test_argspec_api_ignores_wrapped�s$

�


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}t�dtjj�}tj|fd�|_|j|dgdd�dS)NcSr/rrrrrr�test�r~zHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrX�r(�(spam)r@)r:�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r>)r@r\Z
spam_paramrrr�"test_getfullargspec_signature_attr�sz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsJddd�}t�|�}|�|j|j�dd�}t�|�}|�|j|j�dS)	NrrX�returnrNcSr/rr�rrrrr\�r�zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSr/rrrrrrr\�r�)rrXrdrN)r:r8r��__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@rBz(self, obj)r@r�dir_fd�follow_symlinksT)rjrkz,(path, *, dir_fd=None, follow_symlinks=True))r1r9r:r5)r>�_pickle�Pickler�dump�io�BytesIOr	�statrYrrr�#test_getfullargspec_builtin_methods�s��
�z;TestClassesAndFunctions.test_getfullargspec_builtin_methodscCs.ddl}|j}t�|�}|�|jdd�dS)Nr�avocado)�	_testcapi�&docstring_with_signature_with_defaultsr:r8r�r6)r@rt�builtinrgrrr� test_getfullargspec_builtin_funcs
z8TestClassesAndFunctions.test_getfullargspec_builtin_funccCsHddl}|j}|�t��t�|�Wd�dS1swYdS)Nr)rt�docstring_no_signaturerKrLr:r8)r@rtrvrrr�-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:r8r�r<�sortedr6r�r2� unsorted_keyword_only_parameters�r@rE�	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/rrrYrrrrd$r~z;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN�r7rErFrdrrrrr(#r�r(r@)r�r7rd�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/rrrYrrr�getp1r�z>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSr/rrrYrrrrd4r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSr/rrrYrrr�m16r�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)r7rErFr��staticmethodr�classmethodr�rWr*rdr��datablobr�ddr!�mdrrrrr()s
r(rW�
static method�missing __new__r�r�zmissing __init__r�zmissing static methodr�class method�missing class methodr*rWzmissing propertyrdzmissing plain method: %rr��missing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@r|)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSr/rrrYrrrrdOr�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNr�rrrrr)M�r)c@�eZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSr/rrrYrrrrd^r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSr/rrrYrrrr_r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r7rErFrdrrrrrr�\sr�c@r|)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSr/rrrYrrrr�mr�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r7rErFr�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)NrWr�r�rr�r�rr�r��__add__�__and__)�dir�__builtins__�getattr�
isinstancerfr:r%r&�boolr�r�)r@rcrvr�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)NrNrX�rr��r@rcrrrr���zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__�r7rErFr�rrrrr�Meta��r�c@�eZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcS�dS)Nr�rrYrrrrN�r3zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r7rErFre�DynamicClassAttributerNrrrr�VA��r�r�rNr�rX)rfr:�	Attributerar�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@rC��NoBoolrr�__eq__�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSr1)Nz,This object does not specify a boolean value)�NotImplementedErrorrYrrr�__bool__�s�zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)r7rErFr�r�rr�rrr��sr�c�eZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)r7rErFr�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)rrEr7�fishrrYrrr�__dir__�r4zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r7rErFr�r�rrrrr���r�c@r�)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNr�rrrr�Class�r�r�r�r�r�r��rfr: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)rrEr7�BOOMrr�rrrr��r4zLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cr�)Nr�r�)rZ_Meta__getattrr�rrrr��r�zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__�r7rErFr�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)rrEr7�onerr�rrrr��r4z[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)rrEr7�tworr�rrrr��r4z[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)rrEr7�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�)rfr: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��r4zSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N�r7rErFr�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�)rfr: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)r7rErFrr�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�rdr7�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:�ismethoddescriptorrir�r�ra)r@r(r�r�rir)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/rrrYrrrr�r~z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN�r7rErFr�rrrrr)r�r)r�)r�r�r:r�r�rK)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�rcrrrr�r�zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__r�rrrrr�r�r�c@r�)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSr�rWrrYrrrr� r3zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)r7rErFrer�r�rrrrr(r�r(r�)r�r�)r�rX)rfr�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�(r4zITestClassesAndFunctions.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�)rfr: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�rd�rr�rrdr��MyClass�rr�r�r�Fc�t����fdd��}|S)Nc��|d|d�Sr#rr��rErr�wrapperV�ziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper�rrrS�rEr�rr�r�times_threeU�zXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_threer r�r��xxx)r�r-r�r:�get_annotationsrfr�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�r�r�r�r�r-rrrZMyClassWithLocalAnnotations)r@rZisa2r�r�rrr�0test_get_annotations_with_stringized_annotationsbsF"&  " 
  zHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations)NNNN)"r7rErFr,r7r>rFrLr[rcrhrtrrrrrrrwryrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr'`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)r7rErFr
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@�valuerfrrrr�r�zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__r�r7rErFrrrrr�NonDataDescriptor��rc@r|)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0cSr/rr)r@rcrrrrr �r�zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N�r7rErFr rrrr�DataDescriptor0�r�rc@r|)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1cSr/rrr�rrr�
__delete__�r�zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)r7rErFrrrrr�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:rir6)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:rir")r@rrrr�	test_slot�s�zTestIsDataDescriptor.test_slotcCr)Nc@�eZdZedd��ZdS)z6TestIsDataDescriptor.test_property.<locals>.PropertiedcSr/rrrYrrr�
a_property�r3zATestIsDataDescriptor.test_property.<locals>.Propertied.a_propertyN)r7rErFrWrrrrr�
Propertied�r�rza property is a data descriptor)r6r:rir)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/rrrYrrr�instance_method�r�zATestIsDataDescriptor.test_functions.<locals>.Test.instance_methodcSr/rrr�rrr�class_method�r~z>TestIsDataDescriptor.test_functions.<locals>.Test.class_methodcSr/rrrrrr�
static_method�r~z?TestIsDataDescriptor.test_functions.<locals>.Test.static_methodN)r7rErFrr�rr�r rrrr�Test�s
r!cSr/rrrrrrr��r~z5TestIsDataDescriptor.test_functions.<locals>.functioncSr/rrrrrrr��r�z5TestIsDataDescriptor.test_functions.<locals>.<lambda>z*a instance method is not a data descriptorz'a class method is not a data descriptorz(a static method is not a data descriptorz#a function is not a data descriptorz!a lambda is not a data descriptor)r�r?r:rirrr )r@r!r�Za_lambdarrr�test_functions�s$�����z#TestIsDataDescriptor.test_functionsN)r7rErFrrrr"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�r-r�rr,rr���z2TestGetClosureVars.test_name_resolution.<locals>.fr-r)r(r*�r�r)r(r:�ClosureVarsr��getclosurevars�r@r��_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesr+rrr�test_name_resolution�s�z'TestGetClosureVars.test_name_resolutioncCr$)Ncr%)Nc3s�t|�tt�dVdSrr'r+r,rrr��s�
z?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.grr/rr,rr��sz4TestGetClosureVars.test_generator_closure.<locals>.fr-r)r(r*r1r4rrr�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��r.z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr)r@r-r�rr,rr��r0z3TestGetClosureVars.test_method_closure.<locals>.C.fNr�rrrrr��r�r�r-r)r(r*)r�r)r(r:r2r�r3r�)r@r�r5r6r7r8r9r+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:r3Z	nonlocalsrPrrr�_nonlocal_vars�z=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscr%)Nc��|Srr�r�r�rr�addr4zFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r�rArr�r�
make_adderr0z9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�Srr�rH�rGr�rrr�
�
zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)r�rGrrDr�curryrz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kSrrr�rrr�	less_thanr4z8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�Srrr�rPrrr�r�zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>rrP��lerPrr�rz;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)�g_ref)rIr�)�YrHrrKsz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs���|�d�ji�dS)Nr�)r�rJ�r��rKr=r@rr�check_y_combinatorrIzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorr r!r�r�rDcs�fdd�S)Ncr?rrr@r�rrr�$szITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>rr�rr�rr�$r�z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)r@rBrFrGrNZincZadd_twoZgreater_than_fiverrMr�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:r2r9r�r3)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�rRr )rKrLr:r3r�)r@rRrrr�test_getclosurevars_error.sz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r�)r')r@rvrlrrr�_private_globals4s
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nr�r(r)rT�popr:r2r(r�r3�r@r�rlr+rrr�test_builtins_fallback:�z)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nrr r�r()rTr:r2r�r3rVrrr�test_builtins_as_dict@rXz(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nr�rr()rTr	r:r2rr�r3rVrrr�test_builtins_as_moduleFsz*TestGetClosureVars.test_builtins_as_moduleN)
r7rErFr:r;r<rOrQrSrTrWrYrZrrrrr#�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)NrL�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)NrLr\zException not raisedr])r�r5rbZfailr�rfr�r-)r@r�Zcall_param_stringr_roZex1Zex2rrr�assertEqualExceptionVs(��

���
z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r5)r@r~rvrrr�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)�rbr`�r@r�rrr�
test_plainns&
z#TestGetcallargsFunctions.test_plaincC�V|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nz
a, b=1, *crdre�2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])rgrhrrr�test_varargs�s
z%TestGetcallargsFunctions.test_varargscCsz|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�dS)Nza, b=1, **crfz2, 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)rgrhrrr�
test_varkw�s
z#TestGetcallargsFunctions.test_varkwcCrj)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)rgrhrrr�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)rbr`rarhrrr�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)rgrhrrr�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, brcr�r$z1,x=1rfzb=3rkz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=3rnz1, 2z1, 2, a=1, b=2z	*, a, b=0cSr/rrrerrr�f5�r�z0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSr/rrr�rrr�f6r~z0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesr"r���kind�defaultz%value 5 is not a valid Parameter.kindrr�zname must be a str, not a int�{rA�rv)	rbrar�rLr:ZgetcallargsrBr_�VAR_KEYWORD)	r@Zf0�f1�f2r��f3�f4rsrtrrr�test_errors�sr




���������$�z$TestGetcallargsFunctions.test_errorsr)
r7rErFr`rarbrirlrmrorqrrrrrrrr[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�rbr�r�r�)r@r~Zmkrrrrbsz#TestGetcallargsMethods.makeCallable)r7rErFr�rbrrrrrr�sr�csBeZdZ�fdd�Zd
�fdd�	Zd
�fdd�	Zd
dd	�Z�ZS)�TestGetcallargsUnboundMethodscstt|��|�|jjSr)rr�rbr�r��r@r~rrrrb%sz*TestGetcallargsUnboundMethods.makeCallableNc�tt|�j|�|||��Sr)rr�r`�_getAssertEqualParams�r@r�r^r_rrrr`)�
�z1TestGetcallargsUnboundMethods.assertEqualCallArgscr�r)rr�rar�r�rrrra-r�z2TestGetcallargsUnboundMethods.assertEqualExceptioncCs t|pi|jd�}|d||fS)N)r�zinst,)r�r�r�rrrr�1sz3TestGetcallargsUnboundMethods._getAssertEqualParamsr)r7rErFrbr`rar�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�r7rErFr�r�rrrr�Thing:r�r�r�r�r�)r�r�r:�getattr_staticr�rKrV�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)r7rErFr�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>.ThingcSr1�NzI'm pretending not to existrUrYrrrr�Zsz0TestGetattrStatic.test_property.<locals>.Thing.xN)r7rErFrWr�rrrrr�Yr�r�r�r�r�rrrrXszTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@r|)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWr1r�rU)rwrrrrbr4zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nr
rrrr�
descriptorar�r�cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN�r7rErFr�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)�_xrYrrrr�r�z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r7rErFrer�r�r�r�rrrrr�qs

r�r�)r�r�r:r�rar�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�rYrrrr��r�z4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)r7rErFr�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)r7rErFr�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��rfr�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��assertNotEqualrYrrr�test_no_dict_no_slots�sz'TestGetattrStatic.test_no_dict_no_slotscCsLttdd��}|�t�|d�t|�j�Wd�dS1swYdS)Nr�r�rc)r�r�r�r:r�rfrc)r@Zhandlerrr�%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�rYrrrr��r�z>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)r7rErFr�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�r~z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__Nr
rrrrr��r�r�cr�)z.TestGetattrStatic.test_descriptor.<locals>.FooN�r7rErFr�r�r�rrr��r�r�r r�cSr/rr)r�r)�vrrrr��r�z3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r�rar�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�r~zLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__Nr
rrrrr��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�rfr�r:r�ra)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|_tSrP)�executedr�rYrrrr��zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r7rErFr�rWrrrrr�	Something�sr�r"r�)r�r�r:r�r?r�)r@r�r�r�rrr�test_class_as_property�sz(TestGetattrStatic.test_class_as_propertycCsbGdd�dt�}Gdd�dt�}Gdd�d||d�}|�t�|�d�d	�|�t�|d�d	�dS)
Nc@r)z4TestGetattrStatic.test_mro_as_property.<locals>.MetacSstfSrr�rYrrr�__mro__�r�z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)r7rErFrWr�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�_iSrP)�calledrY�r\rrra�r�z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r7rErFrrWrarr�rrr��sr�rArr�)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��||�dSrP)r�r�get)r@�keyrw)rr\rrr�sz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getr)r7rErFr�rrr�rr�Customsr�c@r�)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)r7rErFrrrrrr�r�r�rr�)r�r�r�rar�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�rP)r�rYrrrras
zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N�r7rErFrWrarrrrr�r�r�c@r�)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSr��Nr��rXrYrrrr�r�zITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)r7rErFr�r�rrrrr�rr�r�rXr�)rfr�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�r.)r@Zsentinelrrr�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�rYrrrra*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)r7rErFr�rrrrr�/r�r�r�c@r�)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNr�rrrrr�2r�r�rX)rfrKrVr: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)r7rErFr�r�r�rr�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�rR�Znumberrrr�number_generator<rUz5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)r@r�rrrr�;szTestGetGeneratorState.setUpcC�t�|j�Sr)r:Zgetgeneratorstater�rYrrr�_generatorstateAr>z%TestGetGeneratorState._generatorstatecC�|�|��tj�dSr)r�r�r:ZGEN_CREATEDrYrrr�test_createdDrqz"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dSr)�nextr�r�r�r:Z
GEN_SUSPENDEDrYrrr�test_suspendedGs
z$TestGetGeneratorState.test_suspendedcCs"|jD]}q|�|��tj�dSr)r�r�r�r:�
GEN_CLOSEDrSrrr�test_closed_after_exhaustionKs
z2TestGetGeneratorState.test_closed_after_exhaustioncC�L|�t��|j�t�Wd�n1swY|�|��tj�dSr)rKrr�r0r�r�r:r�rYrrr�%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�rYrr�running_check_generatorZs��zCTestGetGeneratorState.test_running.<locals>.running_check_generator)r�r�)r@r�rrYr�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@�namesrc�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)NrKr�ror)�lstrr�r�rrrr�eachns��z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrK)rr�r )rr�r�r�r!r�ro)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�dVdSrqrrrrr�	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�rPrr�rrrr��r�zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)r!r�)rKrLr:r�r9rYrrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)r7rErFr�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�rRr�rrr�number_coroutine�s��z5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s���IdHdSrrr�r�rr�	coroutine�s�z.TestGetCoroutineState.setUp.<locals>.coroutine)rer�)r@r�rr�rr��s
zTestGetCoroutineState.setUpcCs|j��dSr)r�rvrYrrrr�rzTestGetCoroutineState.tearDowncCr�r)r:Zgetcoroutinestater�rYrrr�_coroutinestate�r>z%TestGetCoroutineState._coroutinestatecCr�r)r�r�r:ZCORO_CREATEDrYrrrr��rqz"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dSr)r��sendr�r�r:ZCORO_SUSPENDEDrYrrrr��sz$TestGetCoroutineState.test_suspendedcCs>	z|j�d�Wn	tyYnwq|�|��tj�dSr)r�r�r�r�r�r:�CORO_CLOSEDrYrrrr��s��z2TestGetCoroutineState.test_closed_after_exhaustioncCr�r)rKrr�r0r�r�r:r�rYrrrr��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)	Ncsrzrrrrrr�gencoro�s�
z>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�s�d}�IdHdSrWrr��r�rrr��s�z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rr�rX)rr�r�r)rer�r�r:Zgetcoroutinelocalsr�)r@r�rxrr�r�test_getcoroutinelocals�s
�

�z-TestGetCoroutineState.test_getcoroutinelocalsN)r7rErFr�rr�r�r�r�r�r�r�rrrrr��s		r�c@r�)�MySignatureNr�rrrrr���r�c@r�)�MyParameterNr�rrrrr��r�r�c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Ze
e�ed�dd���Ze
e�ed�dd���Ze
dd��Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Z d4d5�Z!e�ed�d6d7��Z"e�ed�d8d9��Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+dJdK�Z,dLdM�Z-e�ed�dNdO��Z.dPdQ�Z/dRdS�Z0dTdU�Z1dVdW�Z2dXdY�Z3dZS)[�TestSignatureObjectcKsBtj|fi|��}tdd�|j��D��|j|jurdfS|jfS)NcssL�|]!}|j|j|jurdn|j|j|jurdn|jt|j���fVqdS).N)rcrw�empty�
annotationr-rvr�)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\�r~z7TestSignatureObject.test_signature_object.<locals>.testrryrr
rrrr�zwrong parameter order�rczduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r�r)r:rar_r�r-r�r(r~�replacer`r�rBr6rN)
r@�S�Pr\r	rrr
rrrr�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 rdr�rNc[r/rr�rr�rrrrrr"&	r�z=TestSignatureObject.test_signature_object_pickle.<locals>.fooreF)�
pickle_ver�subclassr)rcrv)r(rT)rrrsr:r~r#�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�r�r_r`�collections�OrderedDictr(r�rrrr6r�)	r@r"Zfoo_partialr	�verZsig_pickledZmyparamZmyparamsZmysigrrr�test_signature_object_pickle%	s8
��
�����z0TestSignatureObject.test_signature_object_picklecCs|dd�}t�|�}|�t��d|_Wd�n1swY|�t��d|jd<Wd�dS1s7wYdS)NcSr/rrrerrrr\B	r~z=TestSignatureObject.test_signature_immutability.<locals>.testrr)r:r~rKrVr"rLr(�r@r\r	rrr�test_signature_immutabilityA	s
�"�z/TestSignatureObject.test_signature_immutabilitycCsdd�}|�|�|�d�dS)NcSr/rrrrrrr\M	r~z9TestSignatureObject.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"rdrxcSr/rrr�rrrr\R	r~z9TestSignatureObject.test_signature_on_wargs.<locals>.test))�r..�positional_or_keyword)r�.r"r*rx)r�r"rdrxr&r'rrr�test_signature_on_wargsQ	s
�z+TestSignatureObject.test_signature_on_wargscCsDdtdtdtfdd�}|�|�|�ddtdfddtdfftf�dS)Nrr�rdcSr/rrr�rrrr\Z	r~z;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�rx)rNr�r"rrrX�bazr�c_r/rr)rr�rXrNrr�rrrr\b	r~z@TestSignatureObject.test_signature_on_complex_args.<locals>.testr))r�r�r"r*)r.r�var_positional)rX.r/r,)rNrx.r,.�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/rrrrrr�test_args_onlyn	r~zGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_r/rr�rr�rrr�test_args_kwargs_onlyq	r~zNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_onlycsTeZdZedd��Zedd��Ze�ed�Z	e��d�Z
e�ed�Ze��d�ZdS)z:TestSignatureObject.test_signature_without_self.<locals>.AcWr/rrrrrr�test_classmethodu	r3zKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWr/rrrrrr�test_staticmethody	r3zLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodr N)
r7rErFr�r7r�r8rrrTr{r|r}r~r�r6r4rrr(t	s

r(�)�r..r0.�)r;�r�..r1.)r�r~r{r|r}r~r�rr9r�test_signature_without_selfm	s*������z/TestSignatureObject.test_signature_without_selfrics�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�rar�r�r(rrc�rr~rYrr�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�rar(r�r�rrcr?rYrr�
test_callable�	s

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jSr)r(rwr)r~rrr*�	r�z9TestSignatureObject.test_signature_on_builtins.<locals>.pr�rsr�sbytesr�g��Q�	@r)�#�nr$Tr�FZlocalr�r.rAr sabczno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r7rErFrfrRrrrr�ThisWorksNow�	r�rD)rtrur�r.�maxsizer�rlrmrnro�StringIO�bytes�	maketransr��fromkeysrfrRr�r��minr�rB�__delitem__rWrZ#docstring_with_signature_but_no_doc)r@rtr@rAr*r�rDrr�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)Nrdc��|i|��Srrr5rLrrr��	�z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper�rrrSr��r�r�rrLr�	decorator�	�zKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorrdc_r/rrr5rrr�wrapper_like�	r�zNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF�Zfollow_wrapped)rtrur�r:r~r�)r@rtr�rRZdecorated_funcrTrrr�$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)rtr�rBr:r~rxr-)r@rtrrr�'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�rLr:r~rYrrr�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�r[Z	kwonlyreqrr�rrrr�
r~zITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc@r�)zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikecS�2|j|_|j|_|j|_|j|_|j|_||_dSr�r7rbrf�__defaults__�__kwdefaults__r��r@r�rrrr�
�
zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_�|j|i|��SrrLr�rrrrR
rzVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N�r7rErFr�rRrrrr�funclike
�rer<cst|d�rdS�|�S)N�_builtinmockT�rd)rB�Z_orig_isdescrr�_isdesc'
s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
r:ra�
from_callabler�r~r_r�rtrur5r?rgr6)r@r�reZsig_funcZsig_funclikeZflrjZbuiltin_funcrrir�'test_signature_from_functionlike_object�	s*�"�z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|�tt�|��d�dS)NTrZc_r/rrr\rrrr�8
r~zCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSr/rr)r@Zmarkerrrrr�<
r~zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)r7rErFr�rbrfr_r`rrLrrre;
s
rez(marker))r�r-r:r~)r@rerrLr�!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/rrrrrrr�I
r~zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r rdcSr/rr�r@rGrHrrrr�K
r~z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWr/rrrrrr�m2M
r~z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSr/rrrerrrrRO
r~zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__Nr)r7rErFr�r�r�rorRrrrrr!H
s
r!��rG..r*)rHr .r*r:zinvalid method signature)r�r~r�r�ror�rB)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 rdcSr/rrrnrrrr�e
r~zHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1Nr)r7rErFr�r�rrrrr!d
r�r!c_r/rrr5rrr�m1dg
r3zDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1drp)rrrSr�r�r~r�)r@r!rsrrr�#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 rCcSr/rr)r�rGrHrrrr"q
r3zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)r7rErFr�r"rrrrr!p
sr!))rq)rHr .r,.�r"r�r~�r@r!Zmethrrr�test_signature_on_classmethodo
���z1TestSignatureObject.test_signature_on_classmethodcCru)Nc@r)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSr/rr)r�rIrrrr"�
r3zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)r7rErFr�r"rrrrr!�
r�r!)))r�..r*)rI..r,.rvrwrrr�test_signature_on_staticmethod�
ryz2TestSignatureObject.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)rscSr/rrrrrrr\�
r~z;TestSignatureObject.test_signature_on_partial.<locals>.testr%�has incorrect argumentsr recSr/rrrJrrrr\�
r~))r)�r�..r*�r..r,�r�..r,.))r|r}r~.r!r))r|�rr!.r,r~.)r�r))r)�r�r .r,rr~.))r�rr~.))�rr .r,�r�..r,r}r~.c_r/rr)rr�rr�rrrr\�
r~))r;r�r=.))r�r�r=.r�Tr�)r\r�))r;�r�r.r,r=.�r�))r)r;r�r=.)r�r\rrdr�cSr/rrr�rrrr\�
r~r|.r*cS�|Srrrerrrr"r~z:TestSignatureObject.test_signature_on_partial.<locals>.foor��)))rr�.r,.cS�
|||fSrrr�rrrr"r�r�)))r�r�.r,r}.)r r�r�cS�||||fSrrrJrrrr" r>)r�r)r�r�))r))r�r�.r,)rr�.r,)r�r�.r,.��r�r�)r�r�r�r�cSr�rrr�rrrr"-r��
)r�r!r�ro)r�ror�)r ror�)ror�r�c[r/rr)rr�rr�r�rrrr"Br~rryr�z(a, b, /, c, d, **kwargs)))�r�..Zpositional_only�r..r*�r�..r*r=.))r�r�r=.))r�r=.))�rr�.r,r~r=.))r�r�r~r=.rK)rrrsr:r_r�r~r�rBr�rb�bindrr�r(�copyrr`rarr-)
r@rsr_r\r	Zpsigr"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�rTcseZdZdd�Z�e�ZdS)�ATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSr/rrrrrrr\or~�FTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN�r7rErFr\rNrr�rr�Spamnsr�r{cs"eZdZddd�Z�edd�ZdS)	r�rdrXcSr/rr)�itrrrrrr\wr~r�r rN)rdrXr�rr�rrr�vs
Fr�)))r�..r*r)�rr .r,rX))r)r�rXcs eZdZddd�Z�ed�ZdS)r�r@�annocSr/rrr�rrrr\�r~r�r N)r@r�)r7rErFr\r�rr�rrr��s
)))r@.r�r*.)	rrrTr�rBr:r~rNr�r�)r@r�rr�r�test_signature_on_partialmethodks ����z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSr/rrrerrrr"�r�zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorXz(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)NcrM)NrdcrNrrr5rLrrr��rO�STestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperrPrQrrLrrR�rSzBTestSignatureObject.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)r7rErFrr�rRrrr��r�r�))�r@..r*r)r|.))r)r|.FrUr<csNt���dtf�fdd��}t���}t|j���dd�}|j|d�|_	|S)Nrdcs�dg|�Ri|��Sr�rr5rLrrr��sr�r r])
rrrSr�r:r~rr(rrrb)r�r�r	�
new_paramsrrLrrR�s
cr�)r�cSr/rrr�rrrrR�r3zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N�r7rErFrRrr�rrr��r��)r|.cSr/rrrrrr�wrapped_foo_call�r~zITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)rr�r~rR�__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�r7rErFr�rrrrr��r�r��)r).c@r|)�7TestSignatureObject.test_signature_on_class.<locals>.CMcSr/rr)r�rrrrrR�r~z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__Nr�rrrrrX�r�rXc@r|)r�cSr/rr�r@r�rrrr��r~r�Nr�rrrrr��r�r�c�"eZdZdd��fdd�
Z�ZS)r�r rc�t��||||�Sr�rrW��mclsrc�bases�dctr"rrrrW�r.�?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__�r7rErFrWrrrrrrX��c@r|)r�cSr/rrr�rrrr��r~r�Nr�rrrrr��r�r�))�rc..r*�r�..r*�r�..r*)r"r .r,.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMr rcr�rr�r�rrrrWr.z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�Sr)rf)r��nm�bs�dtrrrrRr>zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r7rErFrWrRrrrrr�CMMsr�cr�)r�r!�rcr�rr�)r�rcr�r�rrrrrW	r.r�r�rrrrrXr�c@r|)r�cSr/rrr�rrrr�r~r�Nr�rrrrr�r�)))r�..r*)r�..r*)r�..r*.cr�)r�r!r�cst��|||�Sr)rr�)r�rcr�r�rrrrr�!rz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r7rErFr�rrrrrrX r�c@r|)r�cSr/rrr�rrrr�$r~r�Nr�rrrrr�#r�))r�r�r�)rr!.r,.)r�r~rf)r@r�rXr�rrr�test_signature_on_class�sD��������z+TestSignatureObject.test_signature_on_classcCsxGdd�d�}Gdd�d|�}Gdd�d|�}Gdd�d|�}|�|�|�d	�|�|�|�d
�|�|�|�d�dS)Nc@seZdZddd�ZdS)z9TestSignatureObject.test_signature_on_subclass.<locals>.Ar c_�
t�|�Sr�r�rW)r�rrr�rrrrW0r�zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__Nr�r7rErFrWrrrrr(/rr(c@r|)z9TestSignatureObject.test_signature_on_subclass.<locals>.BcSr/rrr�rrrr�3r~zBTestSignatureObject.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�rrrrW6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 .r*)r�r!.r*r;r=.))r�r;r=.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�TypeVarrRc@seZdZdeddfdd�ZdS)zATestSignatureObject.test_signature_on_generic_subclass.<locals>.ArrdNcSr/rrr�rrrr�Pr~zJTestSignatureObject.test_signature_on_generic_subclass.<locals>.A.__init__)r7rErFr�r�rrrrr(O�r(r.r,)�typingr�r�r�r~r�)r@r�r�rRr(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�r
c@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~rfr�rB)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@rXrrrr�vr~zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__Nr�rrrr�P3ur�r�r^c@r|)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSr/rr)r�r"rrrrrR{r~zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__Nr�rrrr�MetaPzr�r�c@r�)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr�rrrr�P4}r�r�r�z
(foo, bar))r�r-r:r~rlrmrf)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�rrrrR�r~zLTestSignatureObject.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�rXc@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/rrrerrrr��r�zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>�wrapper loop)r�r~r�rLr:r�rB)r@r�r�r�r�rrr�"test_signature_on_callable_objects�s*���
�"�z6TestSignatureObject.test_signature_on_callable_objectscCs|�|�ddd��d�dS)Nr�cSr�rrrerrrr��r�z?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rr�.r*.r2r&rYrrr�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�rdcSr/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�rrrrrX�r�z9TestSignatureObject.test_signature_equality.<locals>.spamcSr/rrr�rrrr"�r�cSr/rr�rr�rrrrr�r�r recSr/rrr�rrrr"�r�cSr/rrr�rrrr�r�cSr/rr��posrr�rrrrr"�r�cSr/rr�r�rr�rrrrr�r�cSr/rrr�rrrr"�r�cSr/rrr�rrrr�r�r�c_r/rr)r�rr�rrr�rrrr"�r�c_r/rr)r�rr�rrr�rrrr�r�)
r�r-r?r:r~r6rr��hashr�)r@r"rrXrrr�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/rrrerrrr"�r�z8TestSignatureObject.test_signature_hashable.<locals>.foorr]rX�rrdr cSr/rrrerrrr
r�z8TestSignatureObject.test_signature_hashable.<locals>.barcSr/rrrerrrr"	
r��unhashable typecSr/rrrerrrr"

r�)rdr )r:rar_r~�POSITIONAL_OR_KEYWORDr�r�r�rr�rL)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 rrrdr�c[r/rr�rr�rr�rrrr"
r~z3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c_r/rr)rr�rrr�rrrr"
r~z.(a: int = 1, *args, b, c=None, **kwargs) -> 42cSr/rrrrrrr"
r~r
cSr/rrrerrrr" 
r~z#(a: list[str]) -> tuple[str, float]r)�TuplecSr/rrrerrrr"&
r~z#(a: list[str]) -> Tuple[str, float]r)
r�r�r-r:r~r�rr-r�r�)r@r"r�rrr�test_signature_str
s&����z&TestSignatureObject.test_signature_strcCs�tj}tj}dd�}t�|�}t|j���}|dj|jd�|d<|j|d�|_	|�
tt�|��d�|�
t||d|j�gd��d�|�
t||d|j�|d	|j�gd��d
�|�
t||d|j�|d	|j
�gd��d�dS)Nc[s||fSrr)�a_por�r�rrrr\/
r4zDTestSignatureObject.test_signature_str_positional_only.<locals>.testrryr]z(a_po, /, *, b, **kwargs)r"z(foo, /)rz(foo, /, **bar)z(foo, /, *bar))r:r_rar~r�r(rrr`rbr�r-rz�VAR_POSITIONAL)r@rrr\r	r�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)Nrdr�cSr/rrrrrrr\H
r~z=TestSignatureObject.test_signature_replace_anno.<locals>.testr�)rdr�)r:r~rr�rrr�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
r~zJTestSignatureObject.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 r*)r�r�r!r,.)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�rrrrr�e
r�r�r�r cSr/rrr�rrrr"f
r�zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo�r�r �r:rark�assertIsInstance�r@r�r"r�rrr�'test_signature_from_callable_python_objd
s

z;TestSignatureObject.test_signature_from_callable_python_objcCs:Gdd�dtj�}Gdd�d�}|�|�}|�||�dS)Nc@r�)zKTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureNr�rrrrr�l
r�r�c@r�)zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooNr�rrrrr"m
r�r"r�r�rrr�"test_signature_from_callable_classj
s
z6TestSignatureObject.test_signature_from_callable_classcCs.Gdd�dtj�}|�tj�}|�||�dS)Nc@r�)zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureNr�rrrrr�t
r�r�)r:rarkrlrmr�)r@r�r	rrr�(test_signature_from_callable_builtin_objq
sz<TestSignatureObject.test_signature_from_callable_builtin_objcCrzr)
r.r:r~r�r(r{r6r�r2r|r}rrr�3test_signature_definition_order_preserved_on_kwonlyx
r�zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlycCs0t�dd��j}t�dd��j}|�||�dS)NcSr/rrrMrrrr��
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"rdcSr/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~rarkrr�rr(rr�)r@r�r�rrZsig1Zsig2Zsig3rrr�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)Nrrr�r]r�r��rr-)rr(rrrrTr�)r�r-)r-r�r�r�)r�r�r�)rr:rar_r�r~rkrr�r�r�r�r�r�r�r�r-r-�complexrr�rK�	NameError)r@rr	ZparZPORKrZglobalnsZlocalnsrrr�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>.funclikecSr]rr^rarrrr�rbzMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__c_rcrrLr�rrrrRrzMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__NrdrrrrrerfrecSr/rrrrrrr"r�z?TestSignatureObject.test_signature_none_annotation.<locals>.foor)rfr:r~rarkrr�r�)r@rer"rrrr�test_signature_none_annotations��z2TestSignatureObject.test_signature_none_annotationN)4r7rErFr�r~rr"r$r(r+r.r3r>rrtrrrrLrVrWrYrlrmrrrtrxrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrrrr�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)Nr`)r:r_r6r`r�r��KEYWORD_ONLYrzr�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��rwrvz)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer�ry�name must be a strzis not a valid parameter name�$z.azcannot have default valuesrr�z
<Parameterz"a=42")r:r_r`r�rcrwr�rrrvr�rBrzrLr�r�rr6r�rN�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"ryr�ru)r:r_r`r�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:r_rr6r?r)r@rr*rrr�!test_signature_parameter_equality[s
��z5TestParameterObject.test_signature_parameter_equalitycCs�tjddtjjd�}|�||���|�||���|jdd�}|�|jd�|j|jd�}|�||�|jdd�}|�|jd�|�	||�|�
td��|j|jd�}Wd�n1s_wY|jddd	�}|�|j
d�|�	||�|jd|jd	�}|�|j
|j�|jd|jd�}|�|j|j�|�	||�|�
td
��|j|jd�}Wd�n1s�wY|j|jd�}|�||�dS)Nr"r�r
r rrrzname is a required attribute)rcrwz<value <class 'inspect._empty'> is not a valid Parameter.kindry)r:r_rrrr�rrrcr�r�rBr�rwr�rv)r@r*r�rrr� test_signature_parameter_replaceks@�����z4TestParameterObject.test_signature_parameter_replacecCsD|�td��tjdtjjd�Wd�dS1swYdS)Nrry)r�rLr:r_r`rYrrr�(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.0ryZ	implicit0)	r�rBr:r_r`r�r�rvrc)r@rrrr�!test_signature_parameter_implicit�s���z5TestParameterObject.test_signature_parameter_implicitcCsxtjdtjjd�}|�t��d|_Wd�n1swY|�t��d|_Wd�dS1s5wYdS)NrXryrrx)r:r_rrKrVr"rvrrrr�%test_signature_parameter_immutability�s�"�z9TestParameterObject.test_signature_parameter_immutabilityN)r7rErFrrrrrrrrrrrrrr
s*	(
r
c@s�eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zedd��Zdd�ZdS) �TestSignatureBindcOs,t�|�}|j|i|��}||ji|j��Sr)r:r~r�rr�)r�rr�r	r�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\�r~z9TestSignatureBind.test_signature_bind_empty.<locals>.testr��too many positional argumentsr r�r��)got an unexpected keyword argument 'spam'�r�rr�rLr'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_�||fSrrr5rrrr\�r4z7TestSignatureBind.test_signature_bind_var.<locals>.testrr rr!r�rrr"r�rr�r�rr'rrr�test_signature_bind_var�s 
�z)TestSignatureBind.test_signature_bind_varcCsVdd�}|�|�|ddd�d�|�td��|�|dddd�Wd�n1s*wY|�td	��|�|d�Wd�n1sFwY|�td
��
|�|�Wd�n1sawYddd�}|�|�|ddd�d�|�|�|dd�d
�ddd�}|�|j|ddd�d�|�|j|dd�d�|�|j|dd�d�dS)NcSr�rrr�rrrr\�r�z=TestSignatureBind.test_signature_bind_just_args.<locals>.testr r!r�rKrrAz 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�re)r�r!r�r�)r r�r�r2rr'rrr�test_signature_bind_just_args�s,�����

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|�|�|�d�|�|�|ddd�d�dS)NcWr�rrrrrrr\�r~zATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr r!r�rKrr'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\�r>zDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testr r!rAr�)r r!r�)rAr�)r r!r�rr�)r!r r�rr�z multiple values for argument 'c'r�r�rr'rrr�$test_signature_bind_args_and_varargs�s
�"�z6TestSignatureBind.test_signature_bind_args_and_varargscCs<dd�}|�|�|�i�|�|j|ddd�ddd��dS)Nc[r�rr)r�rrrr\r~z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrrN�r"rXrr'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\	r>zCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testr r!rrNr%)r�rr"rX)rr�r"rX)r�r"rXrA)r�rr"rXrr"r�)rrr�r#rr'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\r~z:TestSignatureBind.test_signature_bind_kwonly.<locals>.testrr rcSs|Srr)rr"rrrrr\$r~z"missing a required argument: 'bar'cSrrrrrrrr\*r4r!r�r�)rr"rr�)rr"rXrN)rrXc[r�rr)r"r�binrrrr\Er�rrX)rXr"rz"missing a required argument: 'foo')rXr)rr(rX)r(rX)r�rLrr�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\Tr~z=TestSignatureBind.test_signature_bind_arguments.<locals>.testr�r�r�r�r8�<)r�rrr��rr�)r)r�)r�r�r�)rrr�)r�r�)	r:r~r�r�r�	arguments�itemsr�r�r@r\r	r�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�r8r�c[s||||||fSrr)r��b_po�c_por"rr�rrrr\drzCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)r�r1r2ryr]r r!rAr��rzbut was passed as a keywordr�)r"rr2zparameter is positional only)r2)r�r1)r�r�)r:r_r~rr rr(r.rr`rrbr�rr�rL)r@rr\r	r�rcZnew_sigrrr�#test_signature_bind_positional_onlyas4
�����"�z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}t�|�}|�ddd�}|�|jd�|jdddd�}|�|jd�dS)NcSr/rr)rr@r�rrrr\�r~zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testr r!r�rKr�)r:r~r�r�rr/rrr�!test_signature_bind_with_self_arg�s
z3TestSignatureBind.test_signature_bind_with_self_argcCs�dd�}t�|�}|�td��|jddd�Wd�n1s!wYdd�}|�|j|dd�d	d
dif�t�|�}|jdd�}|�|jdd
dii�dS)NcWrrr�rrrrrr\�r4z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rr r6c_rrrr5rrrr\�r4rrrr�)r:r~r�rLr�r�rr-r/rrr�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�rRrrrr�make_set�r.zDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setr r�>rr rAr�r�)rb�	co_constsre�FunctionType�iterr#r�r)r@r9Zsetcomp_codeZsetcomp_func�iteratorrrr� test_signature_bind_implicit_arg�s
z2TestSignatureBind.test_signature_bind_implicit_argcCsHdd�}t�|�}|jddd�}|�|jddi�|�d|j���dS)Nc[s||�|�fSr)r�)rr�rrrr"�rzATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo�pos-only�keywordr�r)rr?)r:r~r�r�r�r�r-r.)r@r"r	�resultrrr�"test_signature_bind_posonly_kwargs�s

z4TestSignatureBind.test_signature_bind_posonly_kwargsN)r7rErFr�rrr r!r"r$r&r'r)r0r4r5r7rr>rBrrrrr�s$


7


rc@r�)�TestBoundArgumentscCsRdd�}t�|��d�}|�td��
t|�Wd�dS1s"wYdS)NcSr/rrrerrrr"�r�zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foor r�)r:r~r�r�rLr��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/rrrerrrr"�r�zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foor r!rcSr/rrr�rrrr�r�zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSr/rrr�rrrr"�r�r�r�)r:r~r�r6r?rr-)	r@r"r�Zba2Zba3rZba4r	Zba1rrr�'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 rdr�rNc[r/rrrrrrr"�r�zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor�r�r*)r)
r:r~r�r#rrrrrr�)r@r"r	r�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 rdr�rNc[r/rrrrrrr"�r�zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor�r�r*z <BoundArguments \(a=20,.*\}\}\)>)r:r~r�ZassertRegexr��r@r"r	r�rrr�#test_signature_bound_arguments_repr�s
z6TestBoundArguments.test_signature_bound_arguments_reprc
CsPdid�ddd�}t�|�}|�d�}|��|�t|j���ddd	difd
ifg�|jddddd
�}|��|�t|j���ddddifd
ddifg�dd�}t�|�}|�d�}|��|�t|j���dg�dd�}t�|�}|��}|��|�t|j���g�ddd�}t�|�}|��}|��|�t|j���dg�dS)Nr rrc_r/rr)rr�rrrrrrr"�r�zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor�)rr�r�)rrrr�r�)r�r,)r�r�)r)r�r�cSr/rrr�rrrr"�r�cSr/rrrrrrr"r�rXcSr/rrrerrrr"
r�)rrXr)rr r�)	r:r~r�Zapply_defaultsr�r�r-r.Zbind_partialrHrrr�-test_signature_bound_arguments_apply_defaults�s@

��

�


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultscCs.dd�}t�|��d�}|�t|j�t�dS)NcSr/rrrerrrr"r�zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foor )r:r~r�r�rfr-r�rDrrr�-test_signature_bound_arguments_arguments_typesz@TestBoundArguments.test_signature_bound_arguments_arguments_typeN)	r7rErFrErFrGrIrJrKrrrrrC�s
*rCc@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�)rPrYrrr�&test_signature_strip_non_python_syntax*sT�������zBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r7rErFrNrPrQrrrrrLs
rLc@s4eZdZee�ed�dd���Zdd�Zdd�Z	dS)	�TestSignatureDefinitionsric	Cs(t�}hd�}||O}dh}||O}dh}||O}hd�}||O}ddh}||O}t�}tt�}t|���D]:\}	}
t|
�s?q6t|
t�rM|	|vrM|�|	�|	|vrRq6|j	|	d��|�
t�|
��Wd�n1skwYq6|D]}	|j	|	d��|�
|
j�Wd�n1s�wYqsdS)N>r#�varsr�r�r<�slicer��anext�round>�
breakpoint�maxr(�__build_class__rJr��
__import__)rv)r9rSr+r{r.�callabler�rfrAr�assertIsNotNoner:r~r(�__text_signature__)r@Zno_signatureZneeds_groupsZ
needs_nullZneeds_semantic_updateZ
needs_varargsZnot_converted_yetZtypes_with_signaturesrlrcrBrrr�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/rrr5rrrr��r~zNTestSignatureDefinitions.test_python_function_override_signature.<locals>.funcz(($self, a, b=1, *args, c, d=2, **kwargs)z*(self, /, a, b=1, *args, c, d=2, **kwargs)z+($self, a, b=1, /, *args, c, d=2, **kwargs)z*(self, a, b=1, /, *args, c, d=2, **kwargs)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))r]r:r~r\r�r-rKrB)r@r�r	rrr�'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)r7rErFr	rrrr�MyBufferedReader�r�raz&(raw, buffer_size=DEFAULT_BUFFER_SIZE)z(raw, buffer_size=8192))Ztest.ann_module7r`r]r�r:r~r-)r@r`raZtext_signaturer	rrr�#test_base_class_have_text_signature�s
z<TestSignatureDefinitions.test_base_class_have_text_signatureN)
r7rErFrrtrrrr^r_rbrrrrrRWs�4rRc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dSr)rC�_next)r@rCrrrr��s
zNTimesUnwrappable.__init__cCs2|jdkr	td��|jdurt|jd�|_|jS)NrzUnwrapped too many timesr )rCrbrdrcrYrrrr��s


zNTimesUnwrappable.__wrapped__N)r7rErFr�rWr�rrrrrc�srcc@r�)�
TestUnwrapcCs.dd�}tjdd�|�}|�t�|�|�dS)NcS�||Srrr�rrrr��r4z(TestUnwrap.test_unwrap_one.<locals>.funcr�)rE)rr�	lru_cacher�r:�unwrap)r@r�r�rrr�test_unwrap_one�szTestUnwrap.test_unwrap_onecCsPdd�}|}td�D]}t�|�dd��}q
|�|j|�|�t�|�|�dS)NcSrfrrr�rrrr��r4z,TestUnwrap.test_unwrap_several.<locals>.funcr�cSr/rrrrrrr��r3z/TestUnwrap.test_unwrap_several.<locals>.wrapper)r#rrrSrr�r�r:rh)r@r�r��__rrr�test_unwrap_several�szTestUnwrap.test_unwrap_severalcCsTdd�}t�|�dd��}t�|�dd��}d|_tj|dd	�d
�}|�||�dS)NcSrfrrr�rrr�func1�r4z#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_hererhrPrrrr��rEz&TestUnwrap.test_stop.<locals>.<lambda>)�stop)rrrSrmr:rhr�)r@rlrr�Z	unwrappedrrr�	test_stop�s

�zTestUnwrap.test_stopcCs�dd�}||_|�td��
t�|�Wd�n1swYdd�}||_||_|�td��
t�|�Wd�n1sBwY|�td��t�|�Wd�dS1s^wYdS)NcSr/rrrrrrrl�r�z$TestUnwrap.test_cycle.<locals>.func1r�cSr/rrrrrrr�r�z$TestUnwrap.test_cycle.<locals>.func2)r�r�rBr:rh)r@rlrrrr�
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)r7rErF�__hash__r�rrLrrr��sr�)r�r(r:rh)r@r�rrLr�test_unhashable�szTestUnwrap.test_unhashablecCsLtt��d�}|�td��t�|�Wd�dS1swYdS)Nr r�)rcr.�getrecursionlimitr�rBr:rh)r@rBrrr�test_recursion_limits"�zTestUnwrap.test_recursion_limitN)	r7rErFrirkrorprrrtrrrrre�srec@sDeZdZdd�Zdd�Ze�edud�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nrt�-mr:r�)�	importlib�
import_moduler
�decodergr�r:r)r@�module�rcr1�errrrrr�test_only_sources

�zTestMain.test_only_sourcecCsHdd�}d|_|�t��t�|�Wd�dS1swYdS)NcSr/rrrrrrr"r~z)TestMain.test_custom_getattr.<locals>.foor�)rbrKrLr:r~r�rrr�test_custom_getattrs
"�zTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|����}|�|dd�t�t����|�|d�dS)Nrvr:z%concurrent.futures:ThreadPoolExecutorrrw)r
rzrgr�r:rr)r@r|r1r}rrrr�test_qualname_sources
��zTestMain.test_qualname_sourcecCs:t�d�}tddd�\}}}|����}|�|dg�dS)Nrtrvr:r.z#Can't get info for builtin modules.)rxryrrzrgr�)r@r{rwr1r}rrrr�
test_builtins!s

�zTestMain.test_builtinscCsxt�d�}t��}tg|�d�d�d�d�R�\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nrtrvr:z	--detailsrw)rxryrZ!optim_args_from_interpreter_flagsr
rzr�r7r��
__cached__r�)r@r{rr|r1r}�outputrrr�test_details(s
��zTestMain.test_details)r7rErFr~rrtrrrr�r�r�rrrrrus	
�
	ruc@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�rg)r@rr�Z
inspected_srcr�rrr�assertInspectEqualAs
�"�zTestReload.assertInspectEqualc	Cs�td|j��9\}}t�|�}|�||�t|ddd��}|�|j�Wd�n1s,wY|�||�Wd�dS1sBwYdS)NZ
reload_bugrr�r�)r�
src_beforerxryr�r�r
�	src_after)r@rcrr{r�rrr�test_getsource_reloadIs
�"�z TestReload.test_getsource_reloadN)	r7rErF�textwrap�dedentr�r�r�r�rrrrr�5s


r��__main__)kr+rrmrrrxr:rorCr	Zos.pathrrlrrr.rer�r�rtZ
unittest.mockrjZconcurrent.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�r|r�r4rTrVrZr�r[r\r�r�rr
rurzr}r�r�r�rrr�rr!r&r'rrr)r#r[r�r�r�r�r�rar�r_r�rr
rrCrLrRrcrerur�r7�mainrrrr�<module>s��

F7U
*l78zIc@Af?e
<0
�