Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/test_inspect.cpython-310.pyc
o

�9j���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZzddlmZWneyedZYnwddlmZddlmZmZddlmZddlmZddl m!Z!m"Z"dd	l#m$Z%dd
l#m&Z'ddl#m(Z(ddl#m)Z)dd
l#m*Z*ddl#m+Z+ddl,m-Z-e%j.Z/e/�0d�r�e/dd�Z/e
e/�Z/dd�Z1e%�2�Z3dd�Z4dd�Z5d�6�Z7Gdd�dej8�Z9dd�Z:dd�Z;dd �Z<ej=d!d"��Z>Gd#d$�d$e9�Z?Gd%d&�d&e9�Z@Gd'd(�d(ej8�ZAGd)d*�d*�ZBGd+d,�d,eA�ZCGd-d.�d.ej8�ZDGd/d0�d0eA�ZEGd1d2�d2eA�ZFGd3d4�d4eA�ZGGd5d6�d6eA�ZHGd7d8�d8eA�ZIGd9d:�d:eA�ZJGd;d<�d<eA�ZKGd=d>�d>eL�ZMGd?d@�d@eL�ZNdAdB�ZOGdCdD�dDej8�ZPGdEdF�dFej8�ZQGdGdH�dHej8�ZReL�ZSGdIdJ�dJej8�ZTGdKdL�dLej8�ZUGdMdN�dNeU�ZVGdOdP�dPeV�ZWGdQdR�dRej8�ZXGdSdT�dTej8�ZYGdUdV�dVej8�ZZGdWdX�dXej[�Z\GdYdZ�dZej]�Z^Gd[d\�d\ej8�Z_Gd]d^�d^ej8�Z`Gd_d`�d`ej8�ZaGdadb�dbej8�ZbGdcdd�ddej8�ZcGdedf�dfej8�ZdGdgdh�dh�ZeGdidj�djej8�ZfGdkdl�dlej8�ZgGdmdn�dnej8�Zheidok�rAe�j�dSdS)p�N��normcase)�ThreadPoolExecutor)�cpython_only)�MISSING_C_DOCSTRINGS�	ALWAYS_EQ)�
DirsOnSysPath)�TESTFN)�assert_python_ok�assert_python_failure)�inspect_fodder)�inspect_fodder2)�support)�inspect_stock_annotations)�inspect_stringized_annotations)� inspect_stringized_annotations_2)�_ready_to_import)�c�o���cGst|�f|S�Nr)�filename�args�r�(/usr/lib/python3.10/test/test_inspect.py�revise<�rccs��gd�}tddt|��D]2}g}d}tt|��D]}|||>@r)|�||�qdd�|�d}i}t|||�|dVqdS)	z�
    Yields a whole bunch of functions with only keyword-only parameters,
    where those parameters are always in lexicographically sorted order.
    )�a�barr�delta�ephraim�magical�yoyo�z��zdef foo(*, z, z): pass�fooN)�range�len�append�join�exec)�
parameters�i�p�bit�j�fn_text�symbolsrrr�5signatures_with_lexicographic_keyword_only_parametersBs���r3cC�dSrr)�throw�out�the�baby�with_�the_�	bathwaterrrr�#unsorted_keyword_only_parameters_fnT�r<z'throw out the baby with_ the_ bathwaterc@sTeZdZeejejejejej	ej
ejejej
ejejejejejg�Zdd�ZdS)�
IsTestBasecCs�t|�}|�||�d|j|f�|jt|g�D]$}|tjks*|tjks*|tjkr0|tj	kr0q|�
||�d|j|f�qdS)Nz%s(%s)z
not %s(%s))�eval�
assertTrue�__name__�
predicates�set�inspect�isgeneratorfunction�isasyncgenfunction�iscoroutinefunction�
isfunction�assertFalse)�self�	predicate�exp�obj�otherrrr�istestbs



�zIsTestBase.istestN)rA�
__module__�__qualname__rCrD�	isbuiltin�isclass�iscode�isframerH�ismethod�ismodule�istraceback�isgeneratorrE�iscoroutinerG�
isasyncgenrFrBrOrrrrr>Zs�r>ccs�td�D]}|VqdS�Nr%�r'�rJr-rrr�generator_function_examplen���r_cCs$�td�2z	3dHW}|Vq6dSr\r]r^rrr� async_generator_function_examplers��rac�s�dS�N�spamr�rJrrr�coroutine_function_examplevs�reccs�dVdSrbrrdrrr�gen_coroutine_function_exampleys�rfc@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))r_z#async_generator_function_example(1)ra�ignorezcoroutine_function_example(1)re�MemberDescriptorTypezdatetime.timedelta.days)!rOrDrRrT�	Exception�
__traceback__rhrUrX�hasattr�types�isgetsetdescriptorrI�type�tb_frame�f_localsrHrVrW�isdatadescriptorrYrEr[rF�warnings�catch_warnings�simplefilterrZrG�ismemberdescriptor�datetime�	timedelta�days�rJ�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$)rarfrerIrDrG�	functools�partialrZr@rErY�unittest�mock�Mock�	AsyncMockrFr[�close)rJ�async_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>.FuturecSr4rrrrrr�	__await__��z9TestPredicates.test_isawaitable.<locals>.Future.__await__N)rArPrQr�rrrr�Future��r�c@�eZdZdS)z2TestPredicates.test_isawaitable.<locals>.NotFutureN�rArPrQrrrr�	NotFuture��r�cSr4rrrrrr�<lambda>��z1TestPredicates.test_isawaitable.<locals>.<lambda>)rIrD�isawaitablererfr@r�r�)rJr�r�r�r�r��not_futrrr�test_isawaitable�s
zTestPredicates.test_isawaitablecCs(|�t�tj��|�t�gj��dSr)r@rD�	isroutinerjrc�countrdrrr�test_isroutine�szTestPredicates.test_isroutinecCsD|�tjd�|�t�t��Gdd�dt�}|�t�|���dS)Nz
mod.StupidGitc@r�)z2TestPredicates.test_isclass.<locals>.CustomGetattrcSr4rr)rJ�attrrrr�__getattr__r�z>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)rArPrQr�rrrr�
CustomGetattrr�r�)rOrDrSr@�list�objectrI)rJr�rrr�test_isclassszTestPredicates.test_isclasscCsFGdd�dt�}|�}d|_tt�|��}|�d|�|�d|�dS)Nc@�eZdZdZdS)z/TestPredicates.test_get_slot_members.<locals>.C�r�bN�rArPrQ�	__slots__rrrr�C�r��*rr�)r�r�dictrD�
getmembers�assertIn�assertNotIn)rJr��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>.AbstractClassExamplecSr4rrrdrrrr&r=z@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN�rArPrQr&r�r�rr�AbstractClassExamplesr���	metaclassc@r�)z4TestPredicates.test_isabstract.<locals>.ClassExamplecSr4rrrdrrrr&r�z8TestPredicates.test_isabstract.<locals>.ClassExample.fooNr�rrrr�ClassExampler�r��)�abcr�r�r@rD�
isabstractrI�int)rJr�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)rDr���cls��isabstract_checksrr�__init_subclass__.�z^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)rArPrQr�rr�rr�AbstractChecker-sr�r�cr�)zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplecSr4rrrdrrrr&1r=zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr�rr�rrr�0�r�c@r�)zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplecSr4rrrdrrrr&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)rJr�r�r�r�r�r�r�r)r�r�r�$test_isabstract_during_init_subclass*sz3TestPredicates.test_isabstract_during_init_subclassN)rArPrQrr�r�r�r�r�r�r�rrrrrg~s*=		rgc@�<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestInterpreterStackcOs,tjj|g|�Ri|��t�ddd�dS)N���	)r��TestCase�__init__�git�abuse�rJr�kwargsrrrr�DszTestInterpreterStack.__init__cCs |�tjd�|�tjd�dS)Nz	git.ex[2]zmod.fr)rOrDrXrUrdrrr�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�rc�    eggs(b + d, c + f)
r%�+�argue�            spam(a, b, c)
��'r�z        self.argue(a, b, c)
zinspect.stack())r@r(rj�str�r�modfile�assertIs�frame�fr�linenor�__file__�functionr��code_context�index)rJ�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�rcr�r%�r�z    q = y / 0
)r�r(r��trrr�rdrrr�
test_trace`s���zTestInterpreterStack.test_tracecCslt�tj�\}}}}|�|ddg�|�|d�|�|d�|�|dddd��|�t�||||�d�dS)Nr��y��)r�r.r�z(x=11, y=14))rD�getargvaluesrjr�r��formatargvalues�rJr�varargs�varkw�localsrrr�
test_frameis�zTestInterpreterStack.test_framecCsZt�tjj�\}}}}|�|gd��|�|d�|�|d�|�t�||||�d�dS)N�rr�r�dr~�f�g�hz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))rDr�rjr��f_backr�r�r�rrr�test_previous_framers�z(TestInterpreterStack.test_previous_frameN)	rArPrQr�r�r�r�r�rrrrrr�Cs		r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)�
GetSourceBaseNcCsDtt�|j�dd��}|��|_Wd�dS1swYdS)N�utf-8��encoding)�openrD�
getsourcefile�fodderModule�read�source)rJ�fprrr�setUp~s"�zGetSourceBase.setUpcCs0|j�d�}d�||d|��|rdSdS)N�
r$�)r�splitr*)rJ�top�bottom�linesrrr�sourcerange�s$zGetSourceBase.sourcerangecCs|�t�|�|�||��dSr)r�rD�	getsourcer)rJrMrrrrr�assertSourceEqual�s
�zGetSourceBase.assertSourceEqual)rArPrQrrrrrrrrrzs
rc@seZdZdZddd�ZdS)�SlotUserzDocstrings for __slots__�measured in kilowatts�measured in kilometers)�power�distanceN)rArPrQ�__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�	StupidGit�Tit�
WhichCommentscS�g|]}|d�qS�r$r��.0r�rrr�
<listcomp>��z<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>rcSr'r(rr)rrrr+�r,T)rDr�rjrSr�r!r"r#r$r&�getclasstreer�)rJ�classes�treerrr�test_getclasses�sR��
�
��
���

��
���z(TestRetrievingSourceCode.test_getclassescCs6t�ttj�}|�|dtjfdtjfdtjfg�dS)Nr��lobbestrc)rDr�rjrHr�r�r1rc)rJ�	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�rD�getdocrjr$r�r�rrrrdrrr�test_getdoc�s����z$TestRetrievingSourceCode.test_getdoccCs\|�t�tj�d�|�t�tjj�d�|�t�t��j�d�|�t�tjj�d�dS)Nr4r5zThe automatic gainsaying.)r�rDr6rjr!r��
contradictionrdrrr�test_getdoc_inherited�s����z.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringscCsvtj}|�|t�tj�|�|tj�tjj�|�|t�j�tjj�|�|tj�tjj�|�|tj�tjj�dSr)rD�_finddocr�r�r�to_bytes�
from_bytes�real)rJ�finddocrrr�test_finddoc�sz%TestRetrievingSourceCode.test_finddoccCs|�t�d�d�dS)NzAn
    indented
    docstring.zAn
indented
docstring.)r�rD�cleandocrdrrr�
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�rD�getcommentsrjr$�mod2�cls160�compile�assertIsNoner�)rJ�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�rD�	getmodulerjr$r��str�sys�modulesr�rdrrr�test_getmodule�sz'TestRetrievingSourceCode.test_getmodulecCs^dd�}tj�d|��t��}|�t�|��t�|�Wd�dS1s(wYdS)NcS�td��)Nzbad file)�FileNotFoundError)rM�	_filenamerrr�_getabsfile�zKTestRetrievingSourceCode.test_getmodule_file_not_found.<locals>._getabsfilezinspect.getabsfile)r�r��patchrD�currentframerHrL�getouterframes)rJrTrrrr�test_getmodule_file_not_found�s"�z6TestRetrievingSourceCode.test_getmodule_file_not_foundcCs8t�|jjd�}|�|jdd�|�|jdd�dS)N�2rrBr$z'A module docstring.'
)rD�getframeinforr�r�r�)rJ�
frame_inforrr� test_getframeinfo_get_first_line�z9TestRetrievingSourceCode.test_getframeinfo_get_first_linecCs4|�tjdd�|�tjdd�|�tjdd�dS)N�r���3�K�L)rr�r�rjr$r1rdrrr�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.pyrCr+r$�None)
r�rrDrrjrcr�r�r�rG�co_filename�	linecache�cache)rJ�fnrIrrr�test_getsourcefilesz+TestRetrievingSourceCode.test_getsourcefilecCs|�t�tj�tj�dSr)r�rD�getfilerjr$r�rdrrr�test_getfile�z%TestRetrievingSourceCode.test_getfilecC�N|�t��
}t�t�Wd�n1swY|�t|j��d��dS)Nz<module)	�assertRaises�	TypeErrorrDrkrNr@rM�	exception�
startswithr}rrr�test_getfile_builtin_module ��z4TestRetrievingSourceCode.test_getfile_builtin_modulecCrn)Nz<class)	rorprDrkr�r@rMrqrrr}rrr�test_getfile_builtin_class%rtz3TestRetrievingSourceCode.test_getfile_builtin_classcCs�|�t��
}t�t�Wd�n1swY|�dt|j��|�t��}t�tj	�Wd�n1s9wY|�dt|j��dS)Nz
expected, got)
rorprDrk�absr�rMrqr�r))rJ�e_abs�e_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�rrrrP4r=zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)rArPrQ�propertyrrrr�CM3r�r~c@r�)zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNr�rrrrr�7r�r�r�)rrrorprDrk)rJr~r�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>.ErrorReprcSrQ)N�xyz)rmrdrrr�__repr__>rUzMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)rArPrQr�rrrr�	ErrorRepr=r�r�)rorprDrk)rJr��errrr�test_getfile_broken_repr<s
"�z1TestRetrievingSourceCode.test_getfile_broken_reprcCsnddlm}d}||�}tj|<d|_d|_td|j�|�t	�
|jj�d�tj|=t	�
tddd	��dS)
Nr)�
ModuleType�__inspect_dummy�<string>�dummyz
def x(): passza=10r�single)rpr�rNrOr��
__loader__r+�__dict__r�rDrr��__code__rLrG)rJr��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�ri�getlinesrrr�monkeySs
zHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyr�r�r)rgr�r+rGrDr)rJr��nsrr�r�test_proceed_with_fake_filenameOsz8TestRetrievingSourceCode.test_proceed_with_fake_filenamecC�|�tjjdd�dS)N�r�)rrjr�r�rdrrr�test_getsource_on_code_object`�z6TestRetrievingSourceCode.test_getsource_on_code_objectN) rArPrQrjrr0r3r��skipIfrN�flags�optimizer7r9rr?rArJrPrYr]rdrjrlrsruryrr�r�r�r�rrrrr �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)�
__isolateds"OSError: source code not available)rr�)rJ�code�_�stderrrrr�test_getclasses_interactivedsz4TestGetsourceInteractive.test_getclasses_interactiveN)rArPrQr�rrrrr�cr�r�c@s eZdZeZdd�Zdd�ZdS)�!TestGettingSourceOfToplevelFramescCsd|_|�tjdd�dSr�)�maxDiffrrjrWrdrrr�test_range_toplevel_frameqsz;TestGettingSourceOfToplevelFrames.test_range_toplevel_framecCs|�tjdd�dSr�)rrjrhrdrrr�#test_range_traceback_toplevel_frameur�zETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)rArPrQrjrr�r�rrrrr�nsr�c@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
�TestDecoratorscC�|�tjdd�dS)Nr��)rrE�wrappedrdrrr�test_wrapped_decorator{r�z%TestDecorators.test_wrapped_decoratorcCr�)Nr��
)rrE�gonerdrrr�test_replacing_decorator~r�z'TestDecorators.test_replacing_decoratorcCr�)N��)rrEr=rdrrr�test_getsource_unwrap�r�z$TestDecorators.test_getsource_unwrapcCr�)N�q�s)rrE�func114rdrrr�test_decorator_with_lambda�r�z)TestDecorators.test_decorator_with_lambdaN)	rArPrQrEr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�)rrE�ollrdrrr�test_oneline_lambda��z!TestOneliners.test_oneline_lambdacCr�)N��)rrE�tllrdrrr�test_threeline_lambda��z#TestOneliners.test_threeline_lambdacCr�)N�!�")rrE�tllirdrrr�test_twoline_indented_lambda�r�z*TestOneliners.test_twoline_indented_lambdacCr�)N�%)rrE�onelinefuncrdrrr�test_onelinefunc�r�zTestOneliners.test_onelinefunccCr�)N�(�))rrE�manyargsrdrrr�
test_manyargs��zTestOneliners.test_manyargscCr�)N�,�-)rrE�twolinefuncrdrrr�test_twolinefunc�r�zTestOneliners.test_twolinefunccCs|�tjddd�dS)Nr$�1)rrErrdrrr�test_lambda_in_list�sz!TestOneliners.test_lambda_in_listcCr�)N�7)rrE�	anonymousrdrrr�test_anonymous�r�zTestOneliners.test_anonymousN)
rArPrQrErr�r�r�r�r�r�r�r�rrrrr��sr�c@s(eZdZeZdd�Zdd�Zdd�ZdS)�TestBlockCommentscCr�)N�`�r)rrjr&rdrrr�test_toplevel_class�r�z%TestBlockComments.test_toplevel_classcCr�)N�c�h)rrjr&rrdrrr�test_class_method�r�z#TestBlockComments.test_class_methodcCr�)N�m�p)rrjr&�asyncfrdrrr�test_class_async_method�r�z)TestBlockComments.test_class_async_methodN)rArPrQrjr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�:�;)rrE�with_commentrdrrr�test_with_comment�r�z TestBuggyCases.test_with_commentcCs|�tjddd�dS)Nr�?�@)rrE�
multiline_sigrdrrr�test_multiline_sig��z!TestBuggyCases.test_multiline_sigcCs|�t��jdd�dS)N�G�H)rrE�func69�func71rdrrr�test_nested_class�r�z TestBuggyCases.test_nested_classcCr�)N�M)rrE�func77rdrrr�#test_one_liner_followed_by_non_name�r�z2TestBuggyCases.test_one_liner_followed_by_non_namecCs|�tjjdd�dS)N�S)rrE�cls82�func83rdrrr�test_one_liner_dedent_non_name�r�z-TestBuggyCases.test_one_liner_dedent_non_namecCr�)N�X�Z)rrE�func88rdrrr�&test_with_comment_instead_of_docstring�r�z5TestBuggyCases.test_with_comment_instead_of_docstringcCr�)N�_�a)rrE�method_in_dynamic_classrdrrr�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)ro�OSErrorrDr�unicodedata�
findsourcerdrrr�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)NrCr�_dynamically_created_filer+r$)
rGrorrDrrrfrgrhr�)rJrrIrrr�!test_findsource_code_in_linecache�sz0TestBuggyCases.test_findsource_code_in_linecachecCs:dD]}td|d�}|�ttj|�|�ttj|�qdS)N)rr�rCr+)rGro�IOErrorrDrr)rJ�fnamerIrrr� 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+rr$r%zlineno is out of bounds)
r(rDrrjrGr�r?r�r��co_firstlineno�assertRaisesRegexrr)rJ�mod_len�srcrIr�l�funcrrr�)test_findsource_with_out_of_bounds_lineno�s
"�z8TestBuggyCases.test_findsource_with_out_of_bounds_linenocCr�)N�v�w)rrE�ClassWithMethod�methodrdrrr�test_getsource_on_method�r�z'TestBuggyCases.test_getsource_on_methodcCr�)N��)rrE�cls135�func136rdrrr�test_nested_func�r�zTestBuggyCases.test_nested_funccCr�)N��)rrE�cls149rdrrr�4test_class_definition_in_multiline_string_definitionr�zCTestBuggyCases.test_class_definition_in_multiline_string_definitioncCr�)N��)rrErFrdrrr�*test_class_definition_in_multiline_commentr�z9TestBuggyCases.test_class_definition_in_multiline_commentcCr�)N��)rrE�cls173�cls175rdrrr�,test_nested_class_definition_indented_stringr�z;TestBuggyCases.test_nested_class_definition_indented_stringcC�&|�tjdd�|�tjjdd�dS)N���)rrE�cls183�cls185rdrrr�test_nested_class_definition
�z+TestBuggyCases.test_nested_class_definitioncCr')N������)rrE�cls196�cls200rdrrr�test_class_decoratorr.z#TestBuggyCases.test_class_decoratorcCr')N������)rrE�cls238�cls239rdrrr�test_class_inside_conditionalr.z,TestBuggyCases.test_class_inside_conditionalcCs`|�tjdd�|�tjjdd�|�tjjjdd�|�tjjdd�|�tjjjdd�dS)N��������������)rrE�cls203�cls204�cls205�cls207rdrrr�test_multiple_children_classess
z-TestBuggyCases.test_multiple_children_classescCs<|�t��dd�|�tjdd�|�t����dd�dS)N������������)rrE�func212�cls213�func219rdrrr�,test_nested_class_definition_inside_functionsz;TestBuggyCases.test_nested_class_definition_inside_functioncCs^ddl}|�|jd�|�|�t���dd�|�tjdd�|�|�t�����dd�dS)Nr������������)	�asyncio�
addCleanup�set_event_loop_policyr�runrE�func225�cls226�func232)rJrWrrr�2test_nested_class_definition_inside_async_function"s
 zATestBuggyCases.test_nested_class_definition_inside_async_functionN)!rArPrQrErr�r�r�r�r�r�rr�r�rorr��endswithrrr	rrrrr!r&r-r4r:rFrPr^rrrrr��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)N�_dirzinspect_fodder3%spy�wrrzclass X:
    pass # No EOLr)r	�tempdir�os�mkdirr
�pathr*�extsep�writer�inspect_fodder3r�superr)rJr�mod3��	__class__rrr*s
��
�zTestNoEOL.setUpcCst�|j�dSr)�shutil�rmtreercrdrrr�tearDown5�zTestNoEOL.tearDowncC�|�|jjdd�dS)Nr$r%)rr�Xrdrrr�
test_class8r�zTestNoEOL.test_class)rArPrQrrprt�
__classcell__rrrlrr`)sr`c@seZdZeZdd�ZdS)�TestComplexDecoratorcCrr)Nii)rr�complex_decoratedrdrrr�test_parens_in_decorator?r�z-TestComplexDecorator.test_parens_in_decoratorN)rArPrQrErrxrrrrrv<�rvc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    cGrQ�Nzbroken data descriptorr{�rrrr�__get__FrUz_BrokenDataDescriptor.__get__cGrzr)�RuntimeErrorr|rrr�__set__Ir�z_BrokenDataDescriptor.__set__cGrQr{r{r|rrrr�LrUz!_BrokenDataDescriptor.__getattr__N)rArPrQrr}rr�rrrrrzBs
rzc@s eZdZdZdd�Zdd�ZdS)�_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    cGrQ�Nzbroken method descriptorr{r|rrrr}TrUz_BrokenMethodDescriptor.__get__cGrQr�r{r|rrrr�WrUz#_BrokenMethodDescriptor.__getattr__N)rArPrQrr}r�rrrrr�Psr�cCsdd�t�|�D�S)NcSsg|]}|dd��qS�Nr�r)r*�trrrr+]sz!attrs_wo_objs.<locals>.<listcomp>)rD�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�rD�getmror�)rJr�r�r�r��expected�gotrrr�test_newstyle_mroas
z)TestClassesAndFunctions.test_newstyle_mroNc	Cs�|�t��t�|�\}}}	}
Wd�n1swY|�||�|�||�|�|	|�|�|
|�|dur^|�t��|�t�|||	|
�|�Wd�dS1sWwYdSdSr)�assertWarns�DeprecationWarningrD�
getargspecr��
formatargspec)rJ�routine�args_e�	varargs_e�varkw_e�
defaults_e�	formattedrr�r��defaultsrrr�assertArgSpecEqualsls��"��z+TestClassesAndFunctions.assertArgSpecEqualscCs�t�|�\}}}
}}}}|�||�|�||�|�|
|�|�||�|�||�|�||�|�||	�|
dura|�t��|�t�|||
||||�|
�Wd�dS1sZwYdSdSr)rD�getfullargspecr�r�r�r�)rJr�r�r�r�r��
posonlyargs_e�kwonlyargs_e�kwonlydefaults_e�ann_er�rr�r�r��
kwonlyargs�kwonlydefaults�annrrr�assertFullArgSpecEqualsys$���"��z/TestClassesAndFunctions.assertFullArgSpecEqualscCsp|jtjddgdd�|�tjgd�dddd	�|�t|jtjg�|�t|jtjg�|�t|jtj	g�dS)
Nr�r��(x, y)�r�r�rr)r��r�z!(a, b, c, d=3, e=4, f=5, *g, **h))
r�rjr�rcro�
ValueErrorrE�	keyworded�	annotated�keyword_only_argrdrrr�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))r�r�r�r�z(arg1: list))r�r��argz(*, arg))r�r��rr�rrr~rz(a, b, c, d, *, e, f)rr�z#(a, b, c, d, *args, e, f, **kwargs))r�r�r�r��r$r%r�r�r�)r~rz(a, b=1, c=2, d=3, *, e=4, f=5))r�r�r�r�)	r�rEr�r�r�r��all_markers� all_markers_with_args_and_kwargs�all_markers_with_defaultsrdrrr�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)NcSr4rr�r�r�rrr�ham�r=zETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamr�r�r�r�cs�j|gd�dd�dS)N�rJr�r�z(self, x, y)r�)r��rrdrr�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>.CcSr4rrr�rrrr��r=zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamcSr4rrr�rrr�__call__�r=zLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)rArPrQr��wrapsrjrcr��
partialmethod�phamr�rrrrr��s



r�c@� eZdZe�ej�dd��ZdS)zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newcSr4rrr�rrr�__new__�r=zOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)rArPrQr�r�rjrcr�rrrr�C_new��
r�c@r�)zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initcSr4rrr�rrrr��r=zQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)rArPrQr�r�rjrcr�rrrr�C_init�r�r�)	r�r�rjrcr�r�r�r�r�)rJr�r�r�r�r�rrdr� test_argspec_api_ignores_wrapped�s$

�


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedcCs>dd�}t�dtjj�}tj|fd�|_|j|dgdd�dS)NcSr4rrrrrr�test�r�zHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrc�r,�(spam)r�)rD�	Parameter�POSITIONAL_ONLY�	Signature�
__signature__r�)rJr��
spam_paramrrr�"test_getfullargspec_signature_attr�sz:TestClassesAndFunctions.test_getfullargspec_signature_attrcCsJddd�}t�|�}|�|j|j�dd�}t�|�}|�|j|j�dS)	Nrrc�returnr�cSr4rr�rrrrr��r�zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testcSr4rrrrrrr��r�)rrcr�r�)rDr�r��__annotations__�annotations)rJr��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)NrJrMz(self, obj)r�rf�dir_fd�follow_symlinksT)r�r�z,(path, *, dir_fd=None, follow_symlinks=True))r�r�r�r�)r��_pickle�Pickler�dump�io�BytesIOrd�statrdrrr�#test_getfullargspec_builtin_methods�s��
�z;TestClassesAndFunctions.test_getfullargspec_builtin_methodscCs.ddl}|j}t�|�}|�|jdd�dS)Nr�avocado)�	_testcapi�&docstring_with_signature_with_defaultsrDr�r�r�)rJr��builtinr�rrr� test_getfullargspec_builtin_funcs
z8TestClassesAndFunctions.test_getfullargspec_builtin_funccCsHddl}|j}|�t��t�|�Wd�dS1swYdS)Nr)r��docstring_no_signaturerorprDr�)rJr�r�rrr�-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)
r3rDr�r�r��sortedr@r�r<� unsorted_keyword_only_parameters�rJri�	signaturer�sorted_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>.AcSr4rrrdrrrr�$r�z;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN�rArPrQr�rrrrr�#r�r�rJ)r�r�r��rJr�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>.AcSr4rrrrrr�s+r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.scSr4rrr�rrrr.r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ccSr4rrrdrrr�getp1r�z>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpcSr4rrrdrrrr�4r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mcSr4rrrdrrr�m16r�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1�1N)rArPrQr��staticmethodr�classmethodr�r}r.r�r��datablobrz�ddr��mdrrrrr�)s
r�r��
static method�missing __new__r�rzmissing __init__r�zmissing static methodr�class method�missing class methodr.r}zmissing propertyr�zmissing plain method: %rr��missing plain methodr��datazmissing datar�zmissing method descriptorr�zmissing data descriptorc@r�)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.BcSr4rrrdrrrr�Or�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNr�rrrrr�M�r�c@�eZdZdd�Zdd�ZdS)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.CcSr4rrrdrrrr�^r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mcSr4rrrdrrrr_r�z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)rArPrQr�rrrrrr�\sr�c@r�)z9TestClassesAndFunctions.test_classify_newstyle.<locals>.DcSr4rrrdrrrr�mr�z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)rArPrQr�rrrrr�kr�r�)r�r�r�)rJr��attrsr�r�r�rrr�test_classify_newstyle(s\��z.TestClassesAndFunctions.test_classify_newstylecCs�tt�D]}tt|�}t|t�rt�|�qtt�}|�	ddtf|d�|�	ddt
f|d�|�	ddt
f|d	�|�	d
dt
f|d	�|�	ddtf|d	�dS)Nr�r�r�r<r�r�r;rr��__add__�__and__)�dir�__builtins__�getattr�
isinstancerrrDr�r��boolr�r�)rJr�r�r�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)Nr�rc�rjr��rJr�rlrrr���zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__�rArPrQr�rurrrlr�Meta��rc@�eZdZejdd��ZdS)zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAcS�dS)Nr�rrdrrrr��r=zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)rArPrQrp�DynamicClassAttributer�rrrr�VA��rr�r�r�rc)rrrD�	Attributer�r�r�)rJrr�should_find_dca�should_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)rJrN��NoBoolrr�__eq__�szKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__cSrQ)Nz,This object does not specify a boolean value)�NotImplementedErrorrdrrr�__bool__�s�zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)rArPrQrrrrrrr�src�eZdZ��ZdS)zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)rArPrQr�rrrr�HasNB��
r r�r�)r�rDrr�r�r�)rJr �should_find_attrrrr�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)rmrPrA�fishrrdrrr�__dir__�rUzUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)rArPrQr(r)rrrrr��rc@r�)zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNr�rrrr�Class�r�r+r�r(r�r&�rrrDrr�r��rJrr+�should_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)rmrPrA�BOOMrr�rrrr)�rUzLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__cr
)Nr1r�)rj�_Meta__getattrrrlrrr��r
zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__�rArPrQr)r�rurrrlrr��rc@r�)zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNr�rrrrr+�r�r+r�r1r�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)Ncr0)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1cSr')N)rmrPrA�onerr�rrrr)�rUz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__cr
)Nr6r$rrrlrrr��r
z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__r3rrrlr�Meta1�r4r7cr0)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2cSr')N)rmrPrA�tworr�rrrr)�rUz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__cr
)Nr8r%rrrlrrr��r
z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__r3rrrlr�Meta2�r4r9cs*eZdZ��fdd�Z�fdd�Z�ZS)zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3cs(tttgd���|���|����S)N)rmrPrA�three)r�r�rCr)r��r7r9rrr)�s
�
�z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__cr
)Nr:r�rrrlrrr��r
z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__r3rr;rlr�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>r6r�r$r8r%r:r�)rrrDrr�r�)	rJr<r=r>�should_find1�should_find2�should_find3�cca�sfrr;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)rmrA�missingrr�rrrr)�rUzSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N�rArPrQr)rrrr�M�r�rIc@r�)zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNr�rrrrr��r�r�r�cSr'�rr�r*rrrrr+�r,zTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>rG)rrrDr�r��rJrIr�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)rArPrQrzr�r�r�rrrrr��s
r�cs"Gdd�dt����fdd�}|S)Nc@r�)zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNr�rrrr�Empty�r�rOcs$dt|�vrt�|j�rdS�|�S)NrAF)rrorA�r��rO�predrrr��szZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped�r�)rRr�rrQr�pred_wrapper�szITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr�r�c@r�)z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNr�rrrrr�r�r�)r�rD�ismethoddescriptorrur�r�r�)rJr�rTrUrur�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>.BcSr4rrrdrrrrr�z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN�rArPrQrrrrrr�r�r�r)r�rrDr�r�rV)rJr�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�r�rlrrr�r
zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__rrrrlrrIrrIc@r)zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.AcSrrbrrdrrrr� r=zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)rArPrQrprr�rrrrr�rr�r�)r�rY)r�rc)rrr�rDr�)rJrIr�rrr� test_getmembers_VirtualAttributesz8TestClassesAndFunctions.test_getmembers_VirtualAttributecCrE)	Nc@r�)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.McSr'rFrr�rrrr)(rUzITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__NrHrrrrrI'r�rIc@r�)zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNr�rrrrr�*r�r�r�cSr'rJrrKrrrr+,r,zJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>rG)rrrDr�r�rLrrr�test_getmembers_with_buggy_dir&rNz6TestClassesAndFunctions.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�cSr4rrr�rrrr&0r�zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foor�r&rMT��eval_strr��r]�globals�rr�r��rr�rr�r��MyClass�rr�r�r]Fc�t����fdd��}|S)Nc��|d|d�Sr�rr��rirr�wrapperV�ziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper�r�r��rirhrrgr�times_threeU�zXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_threer$r�r��xxx)r�rMr�rD�get_annotationsr�r�rrbr��	function2�	function3�UnannotatedClass�unannotated_function�assertIsNot�__globals__)rJr&�isarlr�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�rMr�rbr`�'str'ra�'int'�	'MyClass'rcTrdFcre)Ncrfr�rr�rgrrrh�riznTestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three.<locals>.wrapperrjrkrrgrrl�rmz]TestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_threer$r�r�rn�mytype)rr�rDrorbr�rprqrrrsr�rMrrtru�MyClassWithLocalAnnotations)rJrv�isa2rlr�rrr�0test_get_annotations_with_stringized_annotationsbsF"&  " 
  zHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations)NNNN)"rArPrQr�r�r�r�r�r�r�r�r�r�rr�rr�r�r�r�rrrr#r/r5rDrMrVrXrZr[rwr~rrrrr�`s\
�

�(	�
��Q

#	 
	3r�c@r�)�TestFormatAnnotationcCs8ddlm}m}|�t�|�d�|�t�|�d�dS)Nr)r��ann1zUnion[List[str], int]z%Union[List[testModule.typing.A], int])�test.typinganndata.ann_module9r�r�r�rD�formatannotation)rJr�r�rrr�test_typing_replacement�r^z,TestFormatAnnotation.test_typing_replacementN)rArPrQr�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>.NonDataDescriptorNcSr4rr)rJ�valuerrrrrr}�r�zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__r�rArPrQr}rrrr�NonDataDescriptor��r�c@r�)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0cSr4rr)rJr�r�rrrr�r�zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N�rArPrQrrrrr�DataDescriptor0�r�r�c@r�)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1cSr4rrrrrr�
__delete__�r�zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)rArPrQr�rrrr�DataDescriptor1�r�r�c@seZdZdZdS)zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nr�rrrr�DataDescriptor2�r�r�z-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)rIrDrur@)rJr�r�r�r�rrr�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�r�za slot is a data descriptor)r@rDrur&)rJr�rrr�	test_slot�s�zTestIsDataDescriptor.test_slotcCr�)Nc@�eZdZedd��ZdS)z6TestIsDataDescriptor.test_property.<locals>.PropertiedcSr4rrrdrrr�
a_property�r=zATestIsDataDescriptor.test_property.<locals>.Propertied.a_propertyN)rArPrQr}r�rrrr�
Propertied�r�r�za property is a data descriptor)r@rDrur�)rJr�rrr�
test_property�s�z"TestIsDataDescriptor.test_propertycCs�Gdd�dt�}dd�}dd�}|�t�|�j�d�|�t�|�j�d�|�t�|�j�d	�|�t�|�d
�|�t�|�d�dS)Nc@s,eZdZdd�Zedd��Zedd��ZdS)z1TestIsDataDescriptor.test_functions.<locals>.TestcSr4rrrdrrr�instance_method�r�zATestIsDataDescriptor.test_functions.<locals>.Test.instance_methodcSr4rrr�rrr�class_method�r�z>TestIsDataDescriptor.test_functions.<locals>.Test.class_methodcSr4rrrrrr�
static_method�r�z?TestIsDataDescriptor.test_functions.<locals>.Test.static_methodN)rArPrQr�r�r�r�r�rrrr�Test�s
r�cSr4rrrrrrr��r�z5TestIsDataDescriptor.test_functions.<locals>.functioncSr4rrrrrrr��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�rIrDrur�r�r�)rJr�r��a_lambdarrr�test_functions�s$�����z#TestIsDataDescriptor.test_functionsN)rArPrQr�r�r�r�rrrrr��s
r�c@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��	local_ref��nonlocal_refrrr��z=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.gr�r�rrr�rr��z2TestGetClosureVars.test_name_resolution.<locals>.fr�r�r�r��r�r�r�rD�ClosureVarsr��getclosurevars�rJr�_arg�
nonlocal_vars�global_vars�builtin_vars�
unbound_namesr�rrr�test_name_resolution�s�z'TestGetClosureVars.test_name_resolutioncCr�)Ncr�)Nc3s�t|�tt�dVdSrr�r�r�rrr�s�
z?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.grr�rr�rr�sz4TestGetClosureVars.test_generator_closure.<locals>.fr�r�r�r�r�r�rrr�test_generator_closure�s�z)TestGetClosureVars.test_generator_closurecCs`Gdd�d�}t�}d|i}dti}dti}dh}t�||||�}|�t�|��|��|�dS)Nc@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)rJr�rrr�rr�r�z3TestGetClosureVars.test_method_closure.<locals>.C.fNrWrrrrr��r�r�r�r�r�r�)r�r�r�rDr�r�r�r)rJr�r�r�r�r�r�r�rrr�test_method_closure�s�z&TestGetClosureVars.test_method_closurecs�dd��dd�}dd�}dd�}�fd	d
�����fdd�}|d
�}|d�}||d�}���|�dd
i����|�ddi����|�d|d�����dd�d��ddi��|�dS)NcSst�|�jSr)rDr��	nonlocalsr�rrr�_nonlocal_vars�z=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varscr�)Nc��|Srr�r�rPrr�addrUzFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr)r�r�rrPr�
make_adderr�z9TestGetClosureVars.test_nonlocal_vars.<locals>.make_addercs��fdd�S)Ncs
��|�Srr�r��r�rrrr�
�
zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r)rr�rr�r�curryrz4TestGetClosureVars.test_nonlocal_vars.<locals>.currycSs||kSrrr�rrr�	less_thanrUz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thancs�fdd�}|�_||�S)Ncs��fdd��S)Ncs���|�SrrrPr�rrr�r�zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>rr���ler�rrrqz;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)�g_ref)r�r)�Yr�rr�sz0TestGetClosureVars.test_nonlocal_vars.<locals>.Ycs���|�d�ji�dS)Nr)r�r��r�r�r�rJrr�check_y_combinatorrmzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorr$r%r�r�r�cs�fdd�S)Ncr�rrr�rPrrr�$szITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>rrPrrPrr�$r�z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>r�)r�)rJr�r�r�r��inc�add_two�greater_than_fiverr�r�test_nonlocal_varss$

��z%TestGetClosureVars.test_nonlocal_varscCsFdd�}t�iiit��}|�t�dd��|�|�t�|�|�dS)NcSr4rrrrrrr&)r�z9TestGetClosureVars.test_getclosurevars_empty.<locals>.foocSr�NTrrrrrr�+r�z>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)rDr�rCr�r�)rJr&�_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�r�r$)rorprDr�r�)rJr�rrr�test_getclosurevars_error.sz,TestGetClosureVars.test_getclosurevars_errorcCsd}i}t||�|d|fS)Nzdef f(): print(path)r)r+)rJr�r�rrr�_private_globals4s
z#TestGetClosureVars._private_globalscCsD|��\}}|�dd�t�iidtidh�}|�t�|�|�dS)Nrr�rf)r��poprDr�r�r�r��rJrr�r�rrr�test_builtins_fallback:�z)TestGetClosureVars.test_builtins_fallbackcCsD|��\}}ddi|d<t�iiddidh�}|�t�|�|�dS)Nrfr$rr�)r�rDr�r�r�r�rrr�test_builtins_as_dict@r�z(TestGetClosureVars.test_builtins_as_dictcCsB|��\}}t|d<t�iidtjidh�}|�t�|�|�dS)Nrrfr�)r�rdrDr�rfr�r�r�rrr�test_builtins_as_moduleFsz*TestGetClosureVars.test_builtins_as_moduleN)
rArPrQr�r�r�r�r�r�r�r�r�r�rrrrr��s&r�c@s`eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�TestGetcallargsFunctionsNcCs@t|pi|d�}td|d|�}td|d|�}|�||�dS)Nr��func(%s)�inspect.getcallargs(func, %s))r�r?r�)rJr�call_params_string�locs�r1�r2rrr�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)Nr�r�zException not raisedr�)r�r?rm�failr�rrr�rM)rJr�call_param_stringr�r~�ex1�ex2rrr�assertEqualExceptionVs(��

���
z-TestGetcallargsFunctions.assertEqualExceptioncCsd}t||�S)z+Create a function that returns its locals()zlambda %s: locals())r?)rJr�r�rrr�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)�r�r��rJrrrr�
test_plainns&
z#TestGetcallargsFunctions.test_plaincC�V|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�dS)Nz
a, b=1, *cr�r��2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])r�r�rrr�test_varargs�s
z%TestGetcallargsFunctions.test_varargscCsz|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�|d
�dS)Nza, b=1, **cr�z2, b=3, c=4z
b=3, a=2, c=4zc=4, **{"a":2, "b":3}z2, c=4, **{"b":3}zb=2, **{"a":3, "c":4}z%**collections.UserDict(a=2, b=3, c=4)z#2, c=4, **collections.UserDict(b=3)z%b=2, **collections.UserDict(a=3, c=4)r�r�rrr�
test_varkw�s
z#TestGetcallargsFunctions.test_varkwcCr�)N�**crza=1za=1, b=2zc=3, **{"a": 1, "b": 2}z **collections.UserDict(a=1, b=2)z%c=3, **collections.UserDict(a=1, b=2)r�r�rrr�test_varkw_only�s
z(TestGetcallargsFunctions.test_varkw_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d	�|�d
�}|�|d�|�|d�|�|d�dS)
Nza=3, *, c, d=2zc=3zc=3, a=3za=2, c=4z4, c=4r�3za=3zd=4z	*, c, d=2zc=3, d=4zd=4, c=3)r�r�r�r�rrr�test_keyword_only�s

z*TestGetcallargsFunctions.test_keyword_onlycCs�|�d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�d	�}|�|d�|�|d�|�|d
�|�|d�|�|d�|�|d
�dS)Nza, b=2, *f, **gz2, 3, 7z	2, 3, x=8z2, 3, x=8, *[(4,[5,6]), 7]z2, x=8, *[3, (4,[5,6]), 7], y=9zx=8, *[2, 3, (4,[5,6])], y=9z@x=8, *collections.UserList([2, 3, (4,[5,6])]), **{"y":9, "z":10}zP2, x=8, *collections.UserList([3, (4,[5,6])]), **collections.UserDict(y=9, z=10)za, b=2, *f, x, y=99, **gz%2, x=8, *[3, (4,[5,6]), 7], y=9, z=10z"x=8, *[2, 3, (4,[5,6])], y=9, z=10zEx=8, *collections.UserList([2, 3, (4,[5,6])]), q=0, **{"y":9, "z":10}zU2, x=8, *collections.UserList([3, (4,[5,6])]), q=0, **collections.UserDict(y=9, z=10)r�r�rrr�test_multiple_features�s

z/TestGetcallargsFunctions.test_multiple_featuresc	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))Nrza, br�r�rCz1,x=1r�zb=3r�z1, 2, 3, a=1z2, 3, 4, c=5zc=2z2, c=3z	2, 3, c=4z2, c=4, b=3u**{u"πι": 4}z1, a=2z1, **{"a":2}z	1, 2, b=3r�z1, 2z1, 2, a=1, b=2z	*, a, b=0cSr4rrr�rrr�f5�r�z0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlycSr4rrrcrrr�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�{r��r�)	r�r�rrprD�getcallargsr�r��VAR_KEYWORD)	rJ�f0�f1�f2r�f3�f4r�r�rrr�test_errors�sr




���������$�z$TestGetcallargsFunctions.test_errorsr)
rArPrQr�r�r�r�r�r�r�r�r�rrrrrr�Ms

	
r�cr0)�TestGetcallargsMethodscCs"Gdd�dt�}||_|�|_dS)Nc@r�)z)TestGetcallargsMethods.setUp.<locals>.FooNr�rrrr�Foor�r	)r�r��inst)rJr	rrrrszTestGetcallargsMethods.setUpcs0d|vsJ�tt|�j}|d|�|j_|jjS)NrJzself, )rjrr�r�rr
)rJr��mkrlrrr�sz#TestGetcallargsMethods.makeCallable)rArPrQrr�rurrrlrrsrcsBeZdZ�fdd�Zd
�fdd�	Zd
�fdd�	Zd
dd	�Z�ZS)�TestGetcallargsUnboundMethodscstt|��|�|jjSr)rjrr�r�r�rJr�rlrrr�%sz*TestGetcallargsUnboundMethods.makeCallableNc�tt|�j|�|||��Sr)rjrr��_getAssertEqualParams�rJrr�r�rlrrr�)�
�z1TestGetcallargsUnboundMethods.assertEqualCallArgscrr)rjrr�rrrlrrr�-rz2TestGetcallargsUnboundMethods.assertEqualExceptioncCs,d|vsJ�t|p
i|jd�}|d||fS)Nr
)r
zinst,)r�r
rrrrr1sz3TestGetcallargsUnboundMethods._getAssertEqualParamsr)rArPrQr�r�r�rrurrrlrr#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�rArPrQr�r�rrrr�Thing:r!rr�r�r�)r�r�rD�getattr_staticr�ror|�rJr�thingrrr�
test_basic9s�zTestGetattrStatic.test_basiccCs@Gdd�dt�}Gdd�d|�}|�}|�t�|d�|j�dS)Nc@r)z/TestGetattrStatic.test_inherited.<locals>.ThingNrrrrrrFr!rc@r�)z4TestGetattrStatic.test_inherited.<locals>.OtherThingNr�rrrr�
OtherThingHr�rr��r�r�rDrr�)rJrr�	somethingrrr�test_inheritedEsz TestGetattrStatic.test_inheritedcCsHGdd�dt�}|d�}|�t�|d�d�|`|�t�|d�d�dS)Nc@r%)z3TestGetattrStatic.test_instance_attr.<locals>.Thingr%cSs
||_dSrrP�rJr�rrrr�Q�
z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)rArPrQr�r�rrrrrOr*rr�r�r%rrrrr�test_instance_attrNs
z$TestGetattrStatic.test_instance_attrcCs0Gdd�dt�}|�}|�t�|d�|j�dS)Nc@r�)z.TestGetattrStatic.test_property.<locals>.ThingcSrQ�NzI'm pretending not to existr{rdrrrr�Zsz0TestGetattrStatic.test_property.<locals>.Thing.xN)rArPrQr}r�rrrrrYr�rr�rrrrrr�XszTestGetattrStatic.test_propertycsHGdd�dt�}|��G�fdd�dt�}|�}|�t�|d���dS)Nc@r�)zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorcWrQr!r{)r�rrrr}brUzSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nr�rrrr�
descriptorar�r"cseZdZ�ZdS)zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN�rArPrQr�r��descrrrer�rr�)r�r�rDr)rJr"rrrr$r�%test_descriptor_raises_AttributeError`s
z7TestGetattrStatic.test_descriptor_raises_AttributeErrorcCs*Gdd�dt�}|�t�|d�|j�dS)Nc@r)z4TestGetattrStatic.test_classAttribute.<locals>.ThingNrrrrrrkr!rr�r�rJrrrr�test_classAttributejsz%TestGetattrStatic.test_classAttributecCs.Gdd�dt�}|�t�|d�|jd�dS)Nc@s eZdZejdd��Ze�ZdS)z;TestGetattrStatic.test_classVirtualAttribute.<locals>.ThingcSs|jSr)�_xrdrrrr�r�z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)rArPrQrprr�r�r)rrrrrqs

rr�)r�r�rDrr�r'rrr�test_classVirtualAttributepsz,TestGetattrStatic.test_classVirtualAttributecCs:Gdd�dt�}Gdd�d|�}|�t�|d�|j�dS)Nc@r)z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNrrrrrrzr!rc@r�)zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNr�rrrrr|r�rr�r�rJrrrrr�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&rPrdrrrr��rz4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)rArPrQr�r�r�rrrrr�srr�r�rrrrrr�
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)rArPrQr�rrrr�meta�r�r1c@r�)z/TestGetattrStatic.test_metaclass.<locals>.ThingNr�rrrrr�r�rr�r�r&c@r�)z-TestGetattrStatic.test_metaclass.<locals>.subNr�rrrr�sub�r�r2c@r�)z4TestGetattrStatic.test_metaclass.<locals>.OtherThingr�Nr#rrrrr�r�rc@r�)z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNr�rrrr�OtherOtherThing�r�r3r�r��rrr�r�rDr)rJr1rr2rr3rrr�test_metaclass�sz TestGetattrStatic.test_metaclasscCs.|�t�ddd�d�|�t�dd�d�dS)Nr$r&�lower)r�rDr�assertNotEqualrdrrr�test_no_dict_no_slots�sz'TestGetattrStatic.test_no_dict_no_slotscCsLttdd��}|�t�|d�t|�j�Wd�dS1swYdS)Nrrr�)r
r�r�rDrrrr�)rJ�handlerrr�%test_no_dict_no_slots_instance_member�s"�z7TestGetattrStatic.test_no_dict_no_slots_instance_membercCs<Gdd�dt�}Gdd�d|�}|�t�|�d�|j�dS)Nc@seZdZdgZdd�ZdS)z5TestGetattrStatic.test_inherited_slots.<locals>.Thingr�cSr.r/rPrdrrrr��rz>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)rArPrQr�r�rrrrr�src@r�)z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNr�rrrrr�r�rr�rr,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>.descriptorcSrr�r�rJ�instance�ownerrrrr}�r�z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__Nr�rrrrr"�r�r"cr)z.TestGetattrStatic.test_descriptor.<locals>.FooN�rArPrQrr�r"rrr	�r!r	r$rcSr4rr)r�r-�vrrrr��r�z3TestGetattrStatic.test_descriptor.<locals>.<lambda>)r�r�r�rDrr�rJr	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>.descriptorcSrr�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@rrr1�r!r1c@r�)z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNr�rrrrr�r�rr�r)r�rrr�rDrr�)rJr1rrr@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�rEc@seZdZdZedd��ZdS)z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFcSs
d|_tSr�)�executedr�rdrrrrm��zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)rArPrQrFr}rmrrrr�	Something�srHr&r�)r�r�rDrrIrF)rJrErHr=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>.MetacSstfSrrSrdrrr�__mro__�r*z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)rArPrQr}rJrrrrr�r�rc@r�)z4TestGetattrStatic.test_mro_as_property.<locals>.Baser�Nr�rrrrrE�r�rEc@r�)z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNr�rrrrrH�r�rHr�r&r�r4)rJrrErHrrr�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�_iSr�)�calledrd�r�rrr��rGz=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)rArPrQrr}r�rrMrrr	�sr	r�rr�)rLr�rr�rDrrIrBrrMr�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��||�dSr�)rLrj�get)rJ�keyr�)rmr�rrrOsz=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getr)rArPrQrOrurrMrlr�CustomsrQc@r�)z6TestGetattrStatic.test_custom_object_dict.<locals>.Foor�N)rArPrQrrrrrr	r�r	rr�)rLr�r�r�r�rDrrI)rJrQr	r&rrMr�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.r�)rFrdrrrr�s
zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N�rArPrQr}r�rrrrrr�rc@r%)z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFcSr.�Nr��rcrdrrrr�rzITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)rArPrQrFr�rrrrrryrr�rcr�)rrr�rDrrIrF)rJrrr=rrr�test_metaclass_dict_as_propertys
z1TestGetattrStatic.test_metaclass_dict_as_propertycCs t�}|�t�td|�|�dS)N�version)r�rtrDrrN)rJ�sentinelrrr�test_module#s�zTestGetattrStatic.test_modulecCs|Gdd�dt�}Gdd�dt|d�}Gdd�d|d�}|�t��t�|d�Wd�n1s1wY|�|j�dS)	Nc@r�)zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetacSsd|_tdd�S)NTr�rU)rFr�rdrrrr�*s
z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__NrSrrrr�MetaMeta)r�rZc@r�)zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rArPrQrFrrrrr/r�rr�c@r�)zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNr�rrrrr2r�rrc)rrror|rDrrIrF)rJrZrrrrr�3test_metaclass_with_metaclass_with_dict_as_property(s�zETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)rArPrQrrr r�r&r(r+r-r0r5r8r:r;rCrDrIrKrNrRrVrYr[rrrrr7s.	

	

rc@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�r]��numberrrr�number_generator<r`z5TestGetGeneratorState.setUp.<locals>.number_generator)�	generator)rJrarrrr;szTestGetGeneratorState.setUpcC�t�|j�Sr)rD�getgeneratorstaterbrdrrr�_generatorstateAr�z%TestGetGeneratorState._generatorstatecC�|�|��tj�dSr)r�rerD�GEN_CREATEDrdrrr�test_createdDr�z"TestGetGeneratorState.test_createdcCs t|j�|�|��tj�dSr)�nextrbr�rerD�
GEN_SUSPENDEDrdrrr�test_suspendedGs
z$TestGetGeneratorState.test_suspendedcCs"|jD]}q|�|��tj�dSr)rbr�rerD�
GEN_CLOSEDr^rrr�test_closed_after_exhaustionKs
z2TestGetGeneratorState.test_closed_after_exhaustioncC�L|�t��|j�t�Wd�n1swY|�|��tj�dSr)ror~rbr5r�rerDrlrdrrr�%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�rerD�GEN_RUNNINGr_rdrr�running_check_generatorZs��zCTestGetGeneratorState.test_running.<locals>.running_check_generator)rbri)rJrrrrdr�test_runningUs
z"TestGetGeneratorState.test_runningcC�@d��}|D]}tt|�}|�|t|��|�|t|��qdS)Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED�rrrDr��reprrM�rJ�namesr��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)Nr�r�r�r)�lstrr�rArrrr�eachns��z;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachr�)rr|r$)rr|rAr�r%r�r�)rr|rAr�rr�r�rD�getgeneratorlocalsri�
StopIteration)rJr}�numbersrrr�test_getgeneratorlocalsms:
�
��
��
���z-TestGetGeneratorState.test_getgeneratorlocalscCsVdd�}|�}|�t�|�i�zt|�Wn	tyYnw|�t�|�i�dS)Ncss�dVdSr�rrrrr�	yield_one�s�
zFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_oner~)rJr�r6rrr�test_getgeneratorlocals_empty�s�z3TestGetGeneratorState.test_getgeneratorlocals_emptycCsH|�ttjd�|�ttjdd��|�ttjt�|�ttjd�dS)Nr$cSrr�rrPrrrr��r�zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)r%r�)rorprDrrCrdrrr�test_getgeneratorlocals_error�sz3TestGetGeneratorState.test_getgeneratorlocals_errorN)rArPrQrrerhrkrmrorsrzr�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^r]r_rrr�number_coroutine�s��z5TestGetCoroutineState.setUp.<locals>.number_coroutinec�s���IdHdSrrr�r�rr�	coroutine�s�z.TestGetCoroutineState.setUp.<locals>.coroutine)rpr�)rJr�rr�rr�s
zTestGetCoroutineState.setUpcCs|j��dSr)r�r�rdrrrrp�rzTestGetCoroutineState.tearDowncCrcr)rD�getcoroutinestater�rdrrr�_coroutinestate�r�z%TestGetCoroutineState._coroutinestatecCrfr)r�r�rD�CORO_CREATEDrdrrrrh�r�z"TestGetCoroutineState.test_createdcCs"|j�d�|�|��tj�dSr)r��sendr�r�rD�CORO_SUSPENDEDrdrrrrk�sz$TestGetCoroutineState.test_suspendedcCs>	z|j�d�Wn	tyYnwq|�|��tj�dSr)r�r�r�r�r�rD�CORO_CLOSEDrdrrrrm�s��z2TestGetCoroutineState.test_closed_after_exhaustioncCrnr)ror~r�r5r�r�rDr�rdrrrro�rpz;TestGetCoroutineState.test_closed_after_immediate_exceptioncCrt)Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSEDrurwrrrrz�r{z)TestGetCoroutineState.test_easy_debuggingcshtjdd������d�fdd�	}|�}|�t�|�d�d��|�d�|�t�|�d�dd��dS)	Ncsr�rrrrrr�gencoro�s�
z>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc�s�d}�IdHdSrbrr��r�rrr�s�z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)rr�rc)rr�r�r)rpr�r�rD�getcoroutinelocalsr�)rJrr�rr�r�test_getcoroutinelocals�s
�

�z-TestGetCoroutineState.test_getcoroutinelocalsN)rArPrQrrpr�rhrkrmrorzr�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)r�r��empty�
annotationrMr�r6)r*�paramrrr�	<genexpr>�s���z0TestSignatureObject.signature.<locals>.<genexpr>.)rDr��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_r4rr)�po�pk�pod�pkd�korr�rrrr��r�z7TestSignatureObject.test_signature_object.<locals>.testr�r�r�r�r�rr�r�zwrong parameter order�r�zduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r�r�)rDr�r�r�rMrvr,r��replacer�rr�r@rr)
rJ�S�Pr�r�r�r�r�r�rr�r��kwargs2rrr�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$r�r�r�c[r4rr�rr�rr�rrrr&&	r�z=TestSignatureObject.test_signature_object_pickle.<locals>.foor�F)�
pickle_ver�subclassr#)r�r�)r,r�T)r�r�rDr�r'�pickle�HIGHEST_PROTOCOL�subTest�loads�dumpsr�r�r�r��collections�OrderedDictr,r�r�r�r�r@r)	rJr&�foo_partialr��ver�sig_pickled�myparam�myparams�mysigrrr�test_signature_object_pickle%	s8
��
�����z0TestSignatureObject.test_signature_object_picklecCs|dd�}t�|�}|�t��d|_Wd�n1swY|�t��d|jd<Wd�dS1s7wYdS)NcSr4rrr�rrrr�B	r�z=TestSignatureObject.test_signature_immutability.<locals>.testrr)rDr�ror|r&rpr,�rJr�r�rrr�test_signature_immutabilityA	s
�"�z/TestSignatureObject.test_signature_immutabilitycCsdd�}|�|�|�d�dS)NcSr4rrrrrrr�M	r�z9TestSignatureObject.test_signature_on_noarg.<locals>.test�r.�r�r��rJr�rrr�test_signature_on_noargL	sz+TestSignatureObject.test_signature_on_noargcCs ddd�}|�|�|�d�dS)	Nr�r&r�r�cSr4rrr�rrrr�R	r�z9TestSignatureObject.test_signature_on_wargs.<locals>.test))�r..�positional_or_keyword)r�.r&r�r�)r�r&r�r�r�r�rrr�test_signature_on_wargsQ	s
�z+TestSignatureObject.test_signature_on_wargscCsDdtdtdtfdd�}|�|�|�ddtdfddtdfftf�dS)Nrr�r�cSr4rrr�rrrr�Z	r�z;TestSignatureObject.test_signature_on_wkwonly.<locals>.test.�keyword_only)�floatrMr�r�r�r�rrr�test_signature_on_wkwonlyY	s

���z-TestSignatureObject.test_signature_on_wkwonlycCsPddd�dddddd	d
tfdd�}|�|�|�d
ddddd
dtdffdf�dS)Nr�r�)r�r�r&rrrc�bazr�c_r4rr)rr�rcr�rr�rrrr�b	r�z@TestSignatureObject.test_signature_on_complex_args.<locals>.testr�)r�r�r&r�)r.r�var_positional)rc.r�r�)r�r�.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)	NcWr4rrr|rrr�test_args_onlyn	r�zGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc_r4rr�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>.AcWr4rrr|rrr�test_classmethodu	r=zKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodcWr4rrr|rrr�test_staticmethody	r=zLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodr$N)
rArPrQr�r�r�r�r�r�rrrrr�r�r�rrr�t	s

r��)�r..r�.�)r��r�..r�.)r�r�rrrrr�rr�r�test_signature_without_selfm	s*������z/TestSignatureObject.test_signature_without_selfr�cs�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)rrJ)
rDr�r@rr�r�r�r,r�r��rr�rdrr�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)rrJ)
rDr�r@rr�r,r7r�r�r�r�rdrr�
test_callable�	s

zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablecs�j|jSr)r,r�r�)r�rrr.�	r�z9TestSignatureObject.test_signature_on_builtins.<locals>.pr�r�r�sbytesrg��Q�	@r-�#�nr�TrF�localr�rNrLr$sabczno signature foundc@seZdZeZdS)zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rArPrQrrr�rrrr�ThisWorksNow�	r�r�)r�r�r�rN�maxsizer�r�r�r�r��StringIO�bytes�	maketransr��fromkeysrrr�r�r�minrr��__delitem__r}r��#docstring_with_signature_but_no_doc)rJr�r�r�r.rr�rr
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)Nr�c��|i|��Srrr�r�rrrh�	�z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper�r�r�r��rrhrr�r�	decorator�	�zKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorr�c_r4rrr�rrr�wrapper_like�	r�zNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF��follow_wrapped)r�r�r�rDr�r�)rJr�rr��decorated_funcr�rrr�$test_signature_on_decorated_builtins�	s�
��z8TestSignatureObject.test_signature_on_decorated_builtinscCs|ddl}|�td��t�|j�Wd�n1swY|�td��t�t�Wd�dS1s7wYdS)Nrzno signature found for builtin)r�rr�rDr�r�rM)rJr�rrr�'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�)rrprDr�rdrrr�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_r4rr�rr�r��	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�rAr�r��__defaults__�__kwdefaults__r�rJrrrrr�
�
zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c_�|j|i|��Srr�r�rrrr�
rqzVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N�rArPrQr�r�rrrr�funclike
�rr�cst|d�rdS�|�S)N�_builtinmockT�ro)rM��_orig_isdescrr�_isdesc'
s
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)
rDr��
from_callabler�r�rrUr�r�rVrIr	r@)rJrr�sig_func�sig_funclike�flr
�builtin_funcrrr�'test_signature_from_functionlike_object�	s*�"�z;TestSignatureObject.test_signature_from_functionlike_objectcs:dd�dd��G�fdd�d�}|�tt�|��d�dS)NTr�c_r4rrr�rrrr8
r�zCTestSignatureObject.test_signature_functionlike_class.<locals>.funccs2eZdZdd�Z�jZ�jZ�jZ�jZ�jZdS)zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikecSr4rr)rJ�markerrrrr�<
r�zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)rArPrQr�r�r�rrrr�rrr;
s
rz(marker))r�rMrDr�)rJrrr�r�!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>.TestcWr4rrr|rrrr�I
r�zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r$r�cSr4rr�rJr�r�rrrr�K
r�z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1cWr4rrr|rrr�m2M
r�z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2cSr4rrr�rrrr�O
r�zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__Nr()rArPrQr�r�r�rr�rrrrr�H
s
r���r�..r�)r�r$.r�r�zinvalid method signature)r�r�r�r�rrr�)rJr�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$r�cSr4rrrrrrr�e
r�zHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1Nr()rArPrQr�r�rrrrr�d
rr�c_r4rrr�rrr�m1dg
r=zDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dr)r�r�r�r�r�r�)rJr�rrrr�#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$r�cSr4rr)r�r�r�rrrr&q
r=zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)rArPrQr�r&rrrrr�p
sr�))r)r�r$.r�.�r&r�r��rJr��methrrr�test_signature_on_classmethodo
���z1TestSignatureObject.test_signature_on_classmethodcCr)Nc@r�)z@TestSignatureObject.test_signature_on_staticmethod.<locals>.TestcSr4rr)r�r�rrrr&�
r=zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)rArPrQr�r&rrrrr��
r�r�)))r�..r�)r�..r�.rrrrr�test_signature_on_staticmethod�
r"z2TestSignatureObject.test_signature_on_staticmethodc
Cs�ddlm}tj}dd�}|�|�||��d�|�td��t�||d��Wd�n1s1wY|�td��t�||dd��Wd�n1sPwYd	d�}|�|�||��d
�|�|�||d��d�|�|�||ddd
��d�|�|�||ddd��d�|�|�||dddd��d�|�|�||dd��d�dd�}|�|�||d��d�|�|�||dd��d�|�|�||ddd��d�|�|�||ddddd��d�|�|�||dddddd��d�|�|�||dd��d�|�|�||ddd��d�dtdd fd!d�}t�|�}|_	|�|�|||d���d"dd#td$ffd f�|�|�|||d�d��dd#td$ffd f�t�|||d�d��}d%d&�}|||d'd�d(d�}|�|�|�d)�|�|�d(�d*d&�}|||dd(d�d+d�}|�|�|�d,�|�|d'd
�d-�d.d&�}|||d(d(d/�d'd+d0�}|�|�|�d1�t�|�j
d2d3d4�}|�||ji|j��d5�dGd6d&�}||d7d
�}t�|�j
d3d�}|�||ji|j��d8�t�|��
d3d9�}|�||ji|j��d:�t�|�j
d3d9d�}|�||ji|j��d:�t�|�j
d9d�}|�||ji|j��d;�||d'd(d�}t�|��
d9�}|�||ji|j��d<�d=d&�}t�|�}|j
��}	|	d>j|jd?�|	d><|	d@j|jd?�|	d@<t�|	���|_	t�|�}|�t|�dA�|�|�||d��dB�|�|�||dd��dC�|�|�||ddd��dD�|�|�||dddd
��dE�|�|�||ddd
��dF�dS)HNr)r�cSr4rrrrrrr��
r�z;TestSignatureObject.test_signature_on_partial.<locals>.testr��has incorrect argumentsr$r�cSr4rrr�rrrr��
r�))r��r�..r��r..r��r..r�.))r%r&r'.r%r�))r%�rr%.r�r'.)r�r))r��r�r$.r�r(r'.))r)r(r'.))�rr$.r��r�..r�r&r'.c_r4rr)rr�rr�rrrr��
r�))r�r+r�.))r*r+r�.r�TrM)r�r�))r��r�r.r�r�.�r�))r�r�r,r�.)r�r�rr�r�cSr4rrrcrrrr��
r�r%.r�cS�|Srrr�rrrr&r�z:TestSignatureObject.test_signature_on_partial.<locals>.foor��)))rr/.r�.cS�
|||fSrrrcrrrr&rr�)))r�r�.r�r&.)r$r�r�cS�||||fSrrr�rrrr& r�)rr)r�r))r�)r�r�.r�)rr/.r�)rr�.r�.��r�r�)r2r�r/r�cSr0rrrcrrrr&-r�
)r�r%r3r�)r�r�r3)r$r�r3)r�r�r/c[r4rr)rr�rrr�rrrr&Br�rr�r�z(a, b, /, c, d, **kwargs)))�r�..�positional_only�r..r��r..r�r�.))r6r7r�.))r7r�.))�rr�.r�r'r�.))r4r8r'r�.r�)r�r�rDr�r�r�rr�r�r��bindrr�r,�copyr�r�r�r�rM)
rJr�r�r�r��psigr&�_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�r�cseZdZdd�Z�e�ZdS)�ATestSignatureObject.test_signature_on_partialmethod.<locals>.SpamcSr4rrrrrrr�or��FTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN�rArPrQr�r�rr@rr�SpamnsrDr$cs"eZdZddd�Z�edd�ZdS)	rAr�rccSr4rr)�itrrrrrr�wr�rBr$r�N)r�rcrCrr@rrrDvs
Frd)))rE..r�r��rr$.r�rc))r�rFrccs eZdZddd�Z�ed�ZdS)rArJ�annocSr4rrrrrrr��r�rBr$N)rJrG)rArPrQr�rrr@rrrD�s
)))rJ.rGr�.)	r�r�rr�rDr�r�r�r)rJrDrr@r�test_signature_on_partialmethodks ����z3TestSignatureObject.test_signature_on_partialmethodcCs(dd�}d|_|�tt�|��d�dS)NcSr4rrr�rrrr&�r�zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorcz(a))�_partialmethodr�rMrDr��rJr&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)Ncr�)Nr�cr�rrr�r�rrrh�r��STestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapperr�r�rr�rr��r�zBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorcr�)�<TestSignatureObject.test_signature_on_decorated.<locals>.FoocSr4rr�rJrr�rrrr�r=z@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)rArPrQrr�r�rrr	�r�r	))�rJ..r�r�r%.))r�r%.Fr�r�csNt���dtf�fdd��}t���}t|j���dd�}|j|d�|_	|S)Nr�cs�dg|�Ri|��SrTrr�r�rrrh�srLr$r�)
r�r�r�rDr�r�r,r�r�r�)rrhr��
new_paramsrr�rr��s
cr�)rMcSr4rrrNrrrr��r=zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N�rArPrQr�rrOrrr	�r��)r%.cSr4rrrrrr�wrapped_foo_call�r�zITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)rr�r�r��__wrapped__)rJr	rrTrrOr�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>.CcSr4rr�rJrrrrr��r��?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N�rArPrQr�rrrrr��r�r��)r�.c@r�)�7TestSignatureObject.test_signature_on_class.<locals>.CMcSr4rr)r�rrrrr��r�z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__NrRrrrrr~�r�r~c@r�)rWcSr4rr�rJr�rrrr��r�rYNrZrrrrr��r�r�c�"eZdZdd��fdd�
Z�ZS)r\r$r�c�t��||||�Sr�rjr���mclsr��bases�dctr&rlrrr��r��?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__�rArPrQr�rurrrlrr~��c@r�)rWcSr4rrr]rrrr��r�rYNrZrrrrr��r�rS))�r�..r��rc..r��rd..r�)r&r$.r�.cs*eZdZdd��fdd�
Zdd�Z�ZS)z8TestSignatureObject.test_signature_on_class.<locals>.CMMr$r�cr_rr`rarlrrr�r�z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__cSst|||�Sr)rr)r��nm�bs�dtrrrr�r�zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)rArPrQr�r�rurrrlr�CMMsrncr^)r\r%�rcr_rr`)rbr�rcrdrrlrrr�	r�rerfrrrlrr~rgc@r�)rWcSr4rrr]rrrr�r�rYNrZrrrrr�r�)))rk..r�)rl..r�)rm..r�.cr^)r\r%rocst��|||�Sr)rjr�)r�r�rcrdrrlrrr�!rqz@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)rArPrQr�rurrrlrr~ rgc@r�)rWcSr4rrr]rrrr�$r�rYNrZrrrrr�#r�))rhrirj)rr%.r�.)r�r�rr)rJr�r~rnrrr�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�r�)r�rrr�rrrr�0rzATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__Nr(�rArPrQr�rrrrr�/r�r�c@r�)z9TestSignatureObject.test_signature_on_subclass.<locals>.BcSr4rrr]rrrr�3r�zBTestSignatureObject.test_signature_on_subclass.<locals>.B.__init__NrZrrrrr�2r�r�c@seZdZddd�ZdS)z9TestSignatureObject.test_signature_on_subclass.<locals>.Cr$r%c_rqrrr)r�rr�rr�rrrr�6rzATestSignatureObject.test_signature_on_subclass.<locals>.C.__new__N�r$r%rsrrrrr�5r�r�c@r�)z9TestSignatureObject.test_signature_on_subclass.<locals>.DNr�rrrrr�8r�r�rS))�rr$.r�)r�r%.r�r�r�.))rur�r�.r�)rJr�r�r�r�rrr�test_signature_on_subclass.s���z.TestSignatureObject.test_signature_on_subclasscCsPddlm}m}|d�}Gdd�d||�}|�|�|�ddtdffdf�dS)	Nr)�Generic�TypeVarr�c@seZdZdeddfdd�ZdS)zATestSignatureObject.test_signature_on_generic_subclass.<locals>.Arr�NcSr4rrrXrrrr�Pr�zJTestSignatureObject.test_signature_on_generic_subclass.<locals>.A.__init__)rArPrQr�r�rrrrr�O�r�r.r�)�typingrwrxr�r�r�)rJrwrxr�r�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�rMrDr�rrrr�)rJr�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�rrrrr�or�r�c@r�)zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNr�rrrr�
EmptyTraitpr�rc@r�)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nr�rrrr�P2qr�r�c@r�)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3cSr4rr)rJrcrrrr�vr�zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__NrZrrrr�P3ur�r�r�c@r�)zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPcSr4rr)r�r&rrrrr�{r�zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__NrRrrrr�MetaPzr�r�c@r�)z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr�rrrr�P4}r�r�r�z
(foo, bar))r�rMrDr�r�r�rr)rJr�r�rr�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>.FoocSr4rrrXrrrr��r�zLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__NrRrrrrr	�r�r	r[c@r�)zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNr�rrrrrD�r�rDr�c@r�)zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNr�rrrr�Bar�r�r�c@r�)zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNr�rrrr�Wrapped�r�r�cSr4rrr�rrrr��r�zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>�wrapper loop)r�r�rrprDrUr�)rJr	rDr�r�rrr�"test_signature_on_callable_objects�s*���
�"�z6TestSignatureObject.test_signature_on_callable_objectscCs|�|�ddd��d�dS)Nr�cSr.rrr�rrrr��r�z?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))rr�.r�.r�r�rdrrr�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�r�cSr4rrr�rrrr&�r�z8TestSignatureObject.test_signature_equality.<locals>.foor�cSr4rrr�rrrr�r�z8TestSignatureObject.test_signature_equality.<locals>.barcSr4rrr�rrrr�r�cSr4rrr�rrrr�r�r-cSr4rrr�rrrr�r�cSr4rr�rrrrrr�r�cSr4rrr�rrrr�r�cSr4rr�r�rrrrrc�r�z9TestSignatureObject.test_signature_equality.<locals>.spamcSr4rrrcrrrr&�r�cSr4rr�rr�rrrrr�r�r$r�cSr4rrrcrrrr&�r�cSr4rrr�rrrr�r�cSr4rr��posrr�rrrrr&�r�cSr4rr�r�rr�rrrrr�r�cSr4rrr�rrrr&�r�cSr4rrr�rrrr�r�r�c_r4rr)r�rr�rrr�rrrr&�r�c_r4rr)r�rr�rrr�rrrr�r�)
r�r�rIrDr�r@rr��hashr7)rJr&rrcrrr�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)NcSr4rrr�rrrr&�r�z8TestSignatureObject.test_signature_hashable.<locals>.foorr�rc�r�r�r$cSr4rrr�rrrr
r�z8TestSignatureObject.test_signature_hashable.<locals>.barcSr4rrr�rrrr&	
r��unhashable typecSr4rrr�rrrr&

r�)r�r$)rDr�r�r��POSITIONAL_OR_KEYWORDr�r�r7r�rrp)rJr�r�r&�foo_sig�
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$r�rr�r�c[r4rr�rr�rr�rrrr&
r�z3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c_r4rr)rr�rrr�rrrr&
r�z.(a: int = 1, *args, b, c=None, **kwargs) -> 42cSr4rrrrrrr&
r�r�cSr4rrr�rrrr& 
r�z#(a: list[str]) -> tuple[str, float]r)�TuplecSr4rrr�rrrr&&
r�z#(a: list[str]) -> Tuple[str, float]r()
r�r�rMrDr�r�r�r�rzr�)rJr&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�/
rUzDTestSignatureObject.test_signature_str_positional_only.<locals>.testrr�r�z(a_po, /, *, b, **kwargs)r&z(foo, /)rz(foo, /, **bar)z(foo, /, *bar))rDr�r�r�r�r,r�r�r�r�r�rMr�VAR_POSITIONAL)rJr�r�r�r�rQrrr�"test_signature_str_positional_only+
s2
��

��

��z6TestSignatureObject.test_signature_str_positional_onlycCs|ddd�}t�|�}|jdd�}|�|jd�|j|jd�}|�|j|j�|jdd�}|�|jd�|�|t�|��dS)Nr�r�cSr4rrrrrrr�H
r�z=TestSignatureObject.test_signature_replace_anno.<locals>.testr�)r�r�)rDr�r�r�r�r�r�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�cSr4rr)rJr�r�rrrr&V
r�zJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)r%)r�r$r�r%r�rrrrrDU
ryrDc@r�)zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNr�rrrr�HamX
r�r�))rP)r�r%r$r�)r�r�r%r�.)r�r�r&)rJrDr�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$cSr4rrr�rrrr&f
r�zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo�r�r$�rDr�r�assertIsInstance�rJr�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�)rDr�rr�r�r�)rJr�r�rrr�(test_signature_from_callable_builtin_objq
sz<TestSignatureObject.test_signature_from_callable_builtin_objcCr�r)
r3rDr�r�r,r�r@r�r<r�r�rrr�3test_signature_definition_order_preserved_on_kwonlyx
r�zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlycCs0t�dd��j}t�dd��j}|�||�dS)NcSr4rrr�rrrr��
r�zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>cSr4rr)r�r�rrrr��
r�)rDr�r,r7)rJ�p1�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&r�cSr4rrr�rrrr�
r�zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.funcrr�cSr4rr�r&rrrr�func2�
r�zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func2��signature_func)r�)r_r�)r�rDr�r�rr�r�r�r,r�r�)rJr	rr�r��sig1�sig2�sig3rrr�0test_signature_annotations_with_local_namespaces�
s$���zDTestSignatureObject.test_signature_annotations_with_local_namespacescCs&t}tj}tj}tjj}tjtjjfD�]|}|j|d���j|�||j	�||d|�|d|�fd��|�||j
�|d|d|dd�|d|dd�fd	��|�||j�|d|d|dd�|d|d
d�|d|dd�fd	��|�||j�||d|dd�|d|d
d�|d|d
d�fd��|�||j
�|��|�||j�||d|�|d|�|d|�fd��|�||j	dd�||d|�|d|�fd��|�||j
dd�||j	|d|td�|d|td�fd	��|�||jdd�||j	|d|td�|d|dd�|d||j	d�fd	��|�||jdd�||d|dd�|d|dd�|d|dd�fd��ttd�}ttd�}|�t��||j
d|d�Wd�n	1�sBwY|�||j
d|d�|t|d|td�|d|td�fd	��|�||j
d||d�|t|d|td�|d|td�fd	��Wd�n	1�s�wYqdS)Nr�rr�r�rbr��r�rM)r�r,rxrryrzTrd)r�rM)rMrbr^r\)r]r_r�)rrDr�r�r�r�rr�r�rbr�rprqrrrsr�rMr��complexr�r�ro�	NameError)rJrvr��par�PORKr��globalns�localnsrrr�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�rrrrrrr�rzMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__c_rrr�r�rrrr�rqzMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__NrrrrrrrrcSr4rrrrrrr&r�z?TestSignatureObject.test_signature_none_annotation.<locals>.foor�)r�rDr�r�rr�r�ro)rJrr&r�rrr�test_signature_none_annotations��z2TestSignatureObject.test_signature_none_annotationN)4rArPrQr�r�r�r�r�r�r�r�r�r�rr�r�rr�r�r�r�rrrrr!r#r?rHrKrVrprvr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s�
0#�F�

5
Y%HQ
�
�
 S
�
ir�c@sPeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	d
d��Z
dd�ZdS)�TestParameterObjectcCsltj}|�|j|jko|jko|jko|jkn�|�t	|j�d�|�dt
|j�v�dS)Nr�)rDr�r@r�r�r��KEYWORD_ONLYrr�rMrv)rJr�rrr�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��r�r�z)value '123' is not a valid Parameter.kind�123znot a valid parameter namer�r��name must be a strzis not a valid parameter name�$z.azcannot have default valuesrr�z
<Parameterz"a=42")rDr�r�r�r�r�r�r�r�r�rr�rrpr�r�r�r@rvrr�rJr.rrr�test_signature_parameter_object(sX��������������z3TestParameterObject.test_signature_parameter_objectc	Csttj}|d|jd�}|�t|�t|d|jd���|�t|�t|d|jdd���|�t|�t|j|jd���dS)Nr&r�r�r�)rDr�r�r�r�r7r�r�)rJr�r&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�)rDr�r�r@rIr)rJr�r.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$r�rr�zname is a required attribute)r�r�z<value <class 'inspect._empty'> is not a valid Parameter.kindr�)rDr�r�rtr�r�r�r�r�r7rr�r�r�r�r�)rJr.r�rrr� test_signature_parameter_replaceks@�����z4TestParameterObject.test_signature_parameter_replacecCsD|�td��tjdtjjd�Wd�dS1swYdS)Nr�r�)rrprDr�r�rdrrr�(test_signature_parameter_positional_only�s"�z<TestParameterObject.test_signature_parameter_positional_onlycCst|�td��tjdtjjd�Wd�n1swYtjdtjjd�}|�|jtjj�|�|jd�dS)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0r��	implicit0)	rr�rDr�r�r�r�r�r�)rJr�rrr�!test_signature_parameter_implicit�s���z5TestParameterObject.test_signature_parameter_implicitcCsxtjdtjjd�}|�t��d|_Wd�n1swY|�t��d|_Wd�dS1s5wYdS)Nrcr�rr�)rDr�r�ror|r&r�r�rrr�%test_signature_parameter_immutability�s�"�z9TestParameterObject.test_signature_parameter_immutabilityN)rArPrQr�r�r�r�r�r�rr�r�rrrrr�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)rDr�r9rr�)rrr�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)	NcSrrTrrrrrr��r�z9TestSignatureBind.test_signature_bind_empty.<locals>.testr��too many positional argumentsr$r�rU�)got an unexpected keyword argument 'spam'�r�r�rrpr�rrr�test_signature_bind_empty�s���"�z+TestSignatureBind.test_signature_bind_emptycCs�dd�}|�|�|�dif�|�|�|d�dif�|�|�|dd�dif�|�|j|dd	�dd
dif�|�|j|ddd	�dd
dif�|�|j|dd�dd
dif�|�|j|dddd	�dd
dif�dS)Nc_�||fSrrr�rrrr��rUz7TestSignatureBind.test_signature_bind_var.<locals>.testrr$r(r%rtrr�r&r�r|r�r�r�r�rrr�test_signature_bind_var�s 
�z)TestSignatureBind.test_signature_bind_varcCsVdd�}|�|�|ddd�d�|�td��|�|dddd�Wd�n1s*wY|�td	��|�|d�Wd�n1sFwY|�td
��
|�|�Wd�n1sawYddd�}|�|�|ddd�d�|�|�|dd�d
�ddd�}|�|j|ddd�d�|�|j|dd�d�|�|j|dd�d�dS)NcSr0rrrcrrrr��rz=TestSignatureBind.test_signature_bind_just_args.<locals>.testr$r%r�r�r�r�z missing a required argument: 'b'z missing a required argument: 'a'r�cSr0rrrcrrrr��r)r$r%r�cSr0rrrcrrrr��rr3r�)r�r%r3r�)r�r%r�r-)r$r�r�r�r�r�rrr�test_signature_bind_just_args�s,�����

z/TestSignatureBind.test_signature_bind_just_argscCs6dd�}|�|�|�d�|�|�|ddd�d�dS)NcWr.rrr|rrrr��r�zATestSignatureBind.test_signature_bind_varargs_order.<locals>.testrr$r%r�r�r�r�rrr�!test_signature_bind_varargs_order�sz3TestSignatureBind.test_signature_bind_varargs_orderc
Cs�ddd�}|�|�|ddddd�d�|�|�|dd�d	�|�|j|ddd
�d�|�|j|ddd�d	�|�td
��|j|ddddd�Wd�dS1sRwYdS)Nr�cWr1rr)rr�rrrrrr��r�zDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testr$r%r�r�)r$r%r�)r�r�)r$r%r�rr�)r%r$r�rr-z multiple values for argument 'c'r��r�r�r�rrr�$test_signature_bind_args_and_varargs�s
�"�z6TestSignatureBind.test_signature_bind_args_and_varargscCs<dd�}|�|�|�i�|�|j|ddd�ddd��dS)Nc[r.rr)r�rrrr�r�z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testrr��r&rcr�r�rrr�test_signature_bind_just_kwargss
�z1TestSignatureBind.test_signature_bind_just_kwargsc
CsJddd�}|�|�|dd�dddif�|�|j|ddddd�dddddd�f�|�|j|ddddd	�dddddd�f�|�|j|ddddd
�dddddd�f�|�|j|ddddd�dddddd�f�|�|j|dddddd
�dddddd�f�|�|j|ddddd�dddddif�|�|j|dddd�dddif�dS)Nr�c[r1rrr�rrrr�	r�zCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testr$r%rr�r�)r�rr&rc)rr�r&rc)r�r&rcr�)r�rr&rcr�r&r�)rrr�r�r�r�rrr�#test_signature_bind_args_and_kwargss.
������
�z5TestSignatureBind.test_signature_bind_args_and_kwargsc	Cs�dd�}|�td��|�|d�Wd�n1swY|�|j|dd�d�dd�dd�}|�td��|�|d�Wd�n1sIwYdd�}|�|j|dd	d
�d�|�|j|d	dd�d�|�td
��|j|d	ddd�Wd�n1s�wY|�td��|�|dd	�Wd�n1s�wY|�td��|j|dd	d	d
�Wd�n1s�wY|�td
��|j|dd	dd�Wd�n1s�wY|�td��|�|d�Wd�n1s�wYdd�}|�|j|dd	d
�dd	if�|�|j|dd	d�dd	if�|�|j|dd	dd�dd	ddif�|�|j|ddd	d�dd	ddif�|�td��|j|dd	d�Wd�n	1�s`wY|�|j|dd	ddd�dd	ddd�f�dS)NcSr.rrr�rrrr�r�z:TestSignatureBind.test_signature_bind_kwonly.<locals>.testr�r$r�cSs|Srr)rr&rrrrr�$r�z"missing a required argument: 'bar'cSr�rrr�rrrr�*rUr%rort)rr&r�r�)rr&rcr�)rrcc[r0rr)r&r�binrrrr�Err�rc)rcr&rz"missing a required argument: 'foo')rcr)rr�rc)r�rc)rrpr�r�r�rrr�test_signature_bind_kwonlyst�������������������z,TestSignatureBind.test_signature_bind_kwonlycCs�dd�dd�}t�|�}|jddddd	d
d�}|�t|j���dd
dddd	d
d�ff�|�|jddd	d
d��|�|jd�dS)Nr��r#c_r4rr)rr�r#rr�rrrr�Tr�z=TestSignatureBind.test_signature_bind_arguments.<locals>.testr�r/r�r�rZ�<)r�rrr��rr�)r)r/)r�r�r�)rrr�)r�r/)	rDr�r9r�r��	arguments�itemsr�r�rJr�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�rZroc[s||||||fSrr)r��b_po�c_por&rr�rrrr�drqzCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)r�r�r�r�r�r$r%r�r��r�zbut was passed as a keywordr�)r&rr�zparameter is positional only)r�)r�r�)r�r�)rDr�r�r�r�r�r,r�r�r�r�r�r�r�rrp)rJr�r�r�rQr��new_sigrrr�#test_signature_bind_positional_onlyas4
�����"�z5TestSignatureBind.test_signature_bind_positional_onlycCsPdd�}t�|�}|�ddd�}|�|jd�|jdddd�}|�|jd�dS)NcSr4rr)rrJr�rrrr��r�zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testr$r%r�r�r])rDr�r9r�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)NcWr�rr�rrrrrr��rUz?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'rr$r�c_r�rrr�rrrr��rUr|rrr�)rDr�rrpr9r�r�r�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)r*r#rrr�	<setcomp>�r,zWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<setcomp>r�r]rrrr�make_set�r�zDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setr$r�>rr$r�r�r�)r��	co_constsrp�FunctionType�iterr'r�r�)rJr��setcomp_code�setcomp_func�iteratorrrr� test_signature_bind_implicit_arg�s
z2TestSignatureBind.test_signature_bind_implicit_argcCsHdd�}t�|�}|jddd�}|�|jddi�|�d|j���dS)Nc[s||�|�fSr)rO)rr�rrrr&�rzATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo�pos-only�keywordror)rr�)rDr�r9r�r�r�r�r�)rJr&r��resultrrr�"test_signature_bind_posonly_kwargs�s

z4TestSignatureBind.test_signature_bind_posonly_kwargsN)rArPrQr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�rrrrr��s$


7


r�c@r�)�TestBoundArgumentscCsRdd�}t�|��d�}|�td��
t|�Wd�dS1s"wYdS)NcSr4rrr�rrrr&�r�zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foor$r�)rDr�r9rrpr��rJr&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)NcSr4rrr�rrrr&�r�zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foor$r%rcSr4rrr-rrrr�r�zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barcSr4rrr�rrrr&�r�r�r�)rDr�r9r@rIrr�)	rJr&r=�ba2�ba3r�ba4r��ba1rrr�'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)
Nr�rr$r�r�r�c[r4rrr�rrrr&�r�zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor/r�r�)r�)
rDr�r9r'r�r�r�r�r�r�)rJr&r�r=r��
ba_pickledrrr�%test_signature_bound_arguments_pickle�s
���z8TestBoundArguments.test_signature_bound_arguments_picklecCsJid�dddddifdd�}t�|�}|jd	d
id�}|�t|�d�dS)
Nr�rr$r�r�r�c[r4rrr�rrrr&�r�zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor/r�r�z <BoundArguments \(a=20,.*\}\}\)>)rDr�r9�assertRegexrv�rJr&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$r�rc_r4rr)rr�rrr�rrrr&�r�zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor/)rr/r�)rrr�r�r�)rr�)r�r/)r)r�rcSr4rrr�rrrr&�r�cSr4rrrrrrr&r�rccSr4rrr�rrrr&
r�)rrcr()rr$rU)	rDr�r9�apply_defaultsr�r�r�r��bind_partialrrrr�-test_signature_bound_arguments_apply_defaults�s@

��

�


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultscCs.dd�}t�|��d�}|�t|j�t�dS)NcSr4rrr�rrrr&r�zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foor$)rDr�r9r�rrr�r�r�rrr�-test_signature_bound_arguments_arguments_typesz@TestBoundArguments.test_signature_bound_arguments_arguments_typeN)	rArPrQr�rrr	rr
rrrrr��s
*r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestSignaturePrivateHelperscCs:tj}|�|d�d�|�|d�d�|�|d�d�dS)Nz($self)rJz($self, obj)z($cls, /, obj)r�)rD�_signature_get_bound_paramr�)rJ�getterrrr�test_signature_get_bound_paramsz:TestSignaturePrivateHelpers.test_signature_get_bound_paramcCs8t�|�\}}}|�||�|�||�|�||�dSr)rD�"_signature_strip_non_python_syntaxr�)rJ�input�clean_signature�self_parameter�last_positional_only�computed_clean_signature�computed_self_parameter�computed_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)rrdrrr�&test_signature_strip_non_python_syntax*sT�������zBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)rArPrQrrrrrrrrs
rc@s4eZdZee�ed�dd���Zdd�Zdd�Z	dS)	�TestSignatureDefinitionsr�c	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>rr�ri�varsr'�slicer�anext�round>�maxr�r��
breakpoint�__build_class__r
�
__import__)r�)rCrrKr�r��callablerrrr�r��assertIsNotNonerDr�rH�__text_signature__)rJ�no_signature�needs_groups�
needs_null�needs_semantic_update�
needs_varargs�not_converted_yet�types_with_signaturesr�r�rMrrr�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_r4rrr�rrrr�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'rDr�r&r�rMror�)rJrr�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)rArPrQrrrrr�MyBufferedReader�r�r2z&(raw, buffer_size=DEFAULT_BUFFER_SIZE)z(raw, buffer_size=8192))�test.ann_module7r1r'r�rDr�rM)rJr1r2�text_signaturer�rrr�#test_base_class_have_text_signature�s
z<TestSignatureDefinitions.test_base_class_have_text_signatureN)
rArPrQrr�r�rr/r0r5rrrrrWs�4rc@s eZdZdd�Zedd��ZdS)�NTimesUnwrappablecCs||_d|_dSr)r��_next)rJr�rrrr��s
zNTimesUnwrappable.__init__cCs2|jdkr	td��|jdurt|jd�|_|jS)NrzUnwrapped too many timesr$)r�rmr7r6rdrrrrU�s


zNTimesUnwrappable.__wrapped__N)rArPrQr�r}rUrrrrr6�sr6c@r�)�
TestUnwrapcCs.dd�}tjdd�|�}|�t�|�|�dS)NcS�||Srrr�rrrr�rUz(TestUnwrap.test_unwrap_one.<locals>.funcr/)r�)r��	lru_cacher�rD�unwrap)rJrrhrrr�test_unwrap_one�szTestUnwrap.test_unwrap_onecCsPdd�}|}td�D]}t�|�dd��}q
|�|j|�|�t�|�|�dS)NcSr9rrr�rrrr�rUz,TestUnwrap.test_unwrap_several.<locals>.funcr�cSr4rrrrrrrh�r=z/TestUnwrap.test_unwrap_several.<locals>.wrapper)r'r�r�rtrUr�rDr;)rJrrh�__rrr�test_unwrap_several�szTestUnwrap.test_unwrap_severalcCsTdd�}t�|�dd��}t�|�dd��}d|_tj|dd	�d
�}|�||�dS)NcSr9rrr�rrr�func1�rUz#TestUnwrap.test_stop.<locals>.func1cSr4rrrrrrr��r=z#TestUnwrap.test_stop.<locals>.func2cSr4rrrrrrrh�r=z%TestUnwrap.test_stop.<locals>.wrapperr$cSs
t|d�S)N�	stop_herer
r�rrrr��r�z&TestUnwrap.test_stop.<locals>.<lambda>)�stop)r�r�r@rDr;r�)rJr?r�rh�	unwrappedrrr�	test_stop�s

�zTestUnwrap.test_stopcCs�dd�}||_|�td��
t�|�Wd�n1swYdd�}||_||_|�td��
t�|�Wd�n1sBwY|�td��t�|�Wd�dS1s^wYdS)NcSr4rrrrrrr?�r�z$TestUnwrap.test_cycle.<locals>.func1r�cSr4rrrrrrr��r�z$TestUnwrap.test_cycle.<locals>.func2)rUrr�rDr;)rJr?r�rrr�
test_cycle�s��"�zTestUnwrap.test_cyclecs6dd��d�_G�fdd�d�}|�t�|���dS)NcSr4rrrrrrr�r�z(TestUnwrap.test_unhashable.<locals>.funccseZdZdZ�ZdS)z%TestUnwrap.test_unhashable.<locals>.CN)rArPrQ�__hash__rUrr�rrr��sr�)rUrHrDr;)rJr�rr�r�test_unhashable�szTestUnwrap.test_unhashablecCsLtt��d�}|�td��t�|�Wd�dS1swYdS)Nr$r�)r6rN�getrecursionlimitrr�rDr;)rJrMrrr�test_recursion_limits"�zTestUnwrap.test_recursion_limitN)	rArPrQr<r>rCrDrFrHrrrrr8�sr8c@sDeZdZdd�Zdd�Ze�edud�dd��Zd	d
�Z	dd�Z
dS)
�TestMaincCsVt�d�}tddd�\}}}|����}|�|dd�t�|����|�|d�dS)Nr��-mrDr�)�	importlib�
import_moduler
�decoder�r�rDr)rJ�module�rcr6�errrrrr�test_only_sources

�zTestMain.test_only_sourcecCsHdd�}d|_|�t��t�|�Wd�dS1swYdS)NcSr4rrrrrrr&r�z)TestMain.test_custom_getattr.<locals>.foor�)r�rorprDr�rJrrr�test_custom_getattrs
"�zTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filescCsLtddd�\}}}|����}|�|dd�t�t����|�|d�dS)NrJrDz%concurrent.futures:ThreadPoolExecutorrrK)r
rNr�r�rDrr)rJrPr6rQrrrr�test_qualname_sources
��zTestMain.test_qualname_sourcecCs:t�d�}tddd�\}}}|����}|�|dg�dS)Nr�rJrDrNz#Can't get info for builtin modules.)rLrMrrNr�r�)rJrOr�r6rQrrrr�
test_builtins!s

�zTestMain.test_builtinscCsxt�d�}t��}tg|�d�d�d�d�R�\}}}|��}|�|j|�|�|j|�|�|j	|�|�
|d�dS)Nr�rJrDz	--detailsrK)rLrMr�!optim_args_from_interpreter_flagsr
rNr�rAr��
__cached__r�)rJrOrrPr6rQ�outputrrr�test_details(s
��zTestMain.test_details)rArPrQrRrSr�r�rrTrUrYrrrrrIs	
�
	rIc@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)NrrT)rDrr
r�r
r�)rJrfr�
inspected_srcr
rrr�assertInspectEqualAs
�"�zTestReload.assertInspectEqualc	Cs�td|j��9\}}t�|�}|�||�t|ddd��}|�|j�Wd�n1s,wY|�||�Wd�dS1sBwYdS)N�
reload_bugrbrr)r�
src_beforerLrMr\r
rh�	src_after)rJr�rfrOr
rrr�test_getsource_reloadIs
�"�z TestReload.test_getsource_reloadN)	rArPrQ�textwrap�dedentr^r_r\r`rrrrrZ5s


rZ�__main__)krKr�rzr�rLrDr�rgrd�os.pathrr�r�rnrNrprarr��
unittest.mockrv�concurrent.futuresr�ImportError�test.supportrrr�test.support.import_helperr�test.support.os_helperr	�test.support.script_helperr
rr�rrjr
rErrrr�test.test_importrr�r�r_rr$r�r3r<rr�r�r>r_rarer�rfrgr�rrr r�r�r�r�r�r�r`rvr�rzr�r�r�rr�r�r�r�rrrr\r�r�r�r�r�r�r�r�r�rrr6r8rIrZrA�mainrrrr�<module>s��

F7U
*l78zIc@Af?e
<0
�

Youez - 2016 - github.com/yon3zu
LinuXploit