o
    °ó®g2¨ ã                   @   sn  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZzd dlmZ W n eye   dZY nw d dlmZmZ d dlmZmZ d dlmZ d dlm Z  d dl!m"Z"m#Z# d d	l$m%Z& d d
l$m'Z( d dl$m)Z) d dl$m*Z* d dl$m+Z+ d dl$m,Z, d dl-m.Z. e&j/Z0e0 1d¡rÂe0dd… Z0e
e0ƒZ0dd„ Z2e& 3¡ Z4dd„ Z5dd„ Z6d 7¡ Z8G dd„ dej9ƒZ:dd„ Z;dd„ Z<dd „ Z=ej>d!d"„ ƒZ?G d#d$„ d$e:ƒZ@G d%d&„ d&e:ƒZAG d'd(„ d(ej9ƒZBG d)d*„ d*ƒZCG d+d,„ d,eBƒZDG d-d.„ d.ej9ƒZEG d/d0„ d0eBƒZFG d1d2„ d2eBƒZGG d3d4„ d4eBƒZHG d5d6„ d6eBƒZIG d7d8„ d8eBƒZJG d9d:„ d:eBƒZKG d;d<„ d<eLƒZMG d=d>„ d>eLƒZNd?d@„ ZOG dAdB„ dBej9ƒZPG dCdD„ dDej9ƒZQeLƒ ZRG dEdF„ dFej9ƒZSG dGdH„ dHej9ƒZTG dIdJ„ dJeTƒZUG dKdL„ dLeUƒZVG dMdN„ dNej9ƒZWG dOdP„ dPej9ƒZXG dQdR„ dRej9ƒZYG dSdT„ dTejZƒZ[G dUdV„ dVej\ƒZ]G dWdX„ dXej9ƒZ^G dYdZ„ dZej9ƒZ_G d[d\„ d\ej9ƒZ`G d]d^„ d^ej9ƒZaG d_d`„ d`ej9ƒZbG dadb„ dbej9ƒZcG dcdd„ ddƒZdG dedf„ dfej9ƒZeG dgdh„ dhej9ƒZfG didj„ djej9ƒZgdkdl„ Zheidmkr5ehƒ  dS dS )né    N©Únormcase)ÚThreadPoolExecutor)Úrun_unittestÚ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éÿÿÿÿc                 G   s   t | ƒf| S ©Nr   )ÚfilenameÚargs© r   úG/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_inspect.pyÚrevise<   ó   r   c                  c   sˆ    	 g d¢} t ddt| ƒ ƒD ]2}g }d}t t| ƒƒD ]}|||> @ r*| | | ¡ qdd |¡ d }i }t|||ƒ |d V  qd S )N)ÚaÚbarr   ZdeltaZephraimZmagicalZyoyoÚzé   é   zdef foo(*, z, z): passÚfoo)ÚrangeÚlenÚappendÚjoinÚexec)Ú
parametersÚiÚpÚbitÚjZfn_textÚsymbolsr   r   r   Ú5signatures_with_lexicographic_keyword_only_parametersB   s   €€÷r/   c                 C   ó   d S r   r   )ÚthrowÚoutZtheZbabyZwith_Zthe_Z	bathwaterr   r   r   Ú#unsorted_keyword_only_parameters_fnT   ó   r3   z'throw out the baby with_ the_ bathwaterc                   @   sT   e Zd Zeejejejejej	ej
ejejejejejejejejgƒZdd„ ZdS )Ú
IsTestBasec                 C   s€   t |ƒ}|  ||ƒd|j|f ¡ | jt|gƒ D ]$}|tjks*|tjks*|tjkr0|tj	kr0q|  
||ƒd|j|f ¡ qd S )Nz%s(%s)z
not %s(%s))ÚevalÚ
assertTrueÚ__name__Ú
predicatesÚsetÚinspectÚisgeneratorfunctionÚisasyncgenfunctionÚiscoroutinefunctionÚ
isfunctionÚassertFalse)ÚselfÚ	predicateÚexpÚobjÚotherr   r   r   Úistestb   s   
ÿþýúzIsTestBase.istestN)r8   Ú
__module__Ú__qualname__r:   r;   Ú	isbuiltinÚisclassÚiscodeÚisframer?   ÚismethodÚismoduleÚistracebackÚisgeneratorr<   Úiscoroutiner>   Ú
isasyncgenr=   r9   rF   r   r   r   r   r5   Z   s    ûr5   c                 c   s    t dƒD ]}|V  qd S ©Nr"   ©r$   ©rA   r*   r   r   r   Úgenerator_function_examplen   ó   €ÿrV   c                 C  s$   t dƒ2 z	3 d H W }|V  q6 d S rS   rT   rU   r   r   r   Ú async_generator_function_exampler   s   €ÿrX   c                 Ã   s   dS ©NÚspamr   ©rA   r   r   r   Úcoroutine_function_examplev   s   €r\   c                 c   s    d V  dS rY   r   r[   r   r   r   Úgen_coroutine_function_exampley   s   €r]   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestPredicatesc              	   C   s¸  |   tjd¡ |   tjd¡ |   tjd¡ z<zdd  W n1   t ¡ d a|   tjd¡ |   tjd¡ t	t
d	ƒrA|   tjd
¡ n|  t ttjƒj¡¡ Y W d and aw |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ t ¡  t d¡ |   tjd¡ |   tjd¡ W d   ƒ n1 s½w   Y  t	t
dƒrÐ|   tjd¡ d S |  t tjj ¡¡ d S )Nzsys.exitz	[].appendzmod.spam.__code__r!   r   r"   ztb.tb_frameÚtbÚGetSetDescriptorTypeztype(tb.tb_frame).f_localszmod.spamzmod.StupidGit.abusez	git.arguezmod.custom_methodÚmodz'collections.defaultdict.default_factoryz(x for x in range(2))rV   z#async_generator_function_example(1)rX   Úignorezcoroutine_function_example(1)r\   ÚMemberDescriptorTypezdatetime.timedelta.days)!rF   r;   rI   rK   ÚsysÚexc_infor_   rL   rO   ÚhasattrÚtypesZisgetsetdescriptorr@   ÚtypeÚtb_frameÚf_localsr?   rM   rN   ÚisdatadescriptorrP   r<   rR   r=   ÚwarningsÚcatch_warningsÚsimplefilterrQ   r>   ZismemberdescriptorÚdatetimeZ	timedeltaZdaysr[   r   r   r   Útest_excluding_predicates€   sL   
ÿ€ÿÿ

ý
z(TestPredicates.test_excluding_predicatesc              	   C   sX  t dƒ}tdƒ}tdƒ}|  t t¡¡ |  t t t t¡¡¡¡ |  t |¡¡ |  	t 
t¡¡ |  	t 
t t t¡¡¡¡ |  	t |¡¡ |  	t t¡¡ |  	t t t t¡¡¡¡ |  	t |¡¡ |  t 
t¡¡ |  t 
t t t¡¡¡¡ |  t |¡¡ |  	t t ¡¡ |  	t t t t ¡¡¡¡ |  	t |¡¡ | ¡  | ¡  d S ©Nr!   )rX   r]   r\   r@   r;   r>   Ú	functoolsÚpartialrQ   r7   r<   rP   r=   rR   Úclose)rA   Zasync_gen_coroÚgen_coroÚcoror   r   r   Útest_iscoroutineª   sv   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzTestPredicates.test_iscoroutinec                 C   s¼   dd„ }|   t |ƒ ¡¡ tdƒ}tdƒ}|  t |¡¡ |  t |¡¡ G dd„ dƒ}|  t |ƒ ¡¡ |   t |¡¡ G dd„ dƒ}|ƒ }dd	„ |_|   t |¡¡ | ¡  | ¡  d S )
Nc                   s   ó    d V  d S r   r   r   r   r   r   ÚgenÚ   s   €
 z,TestPredicates.test_isawaitable.<locals>.genr!   c                   @   ó   e Zd Zdd„ ZdS )z/TestPredicates.test_isawaitable.<locals>.Futurec                   S   r0   r   r   r   r   r   r   Ú	__await__ä   ó   z9TestPredicates.test_isawaitable.<locals>.Future.__await__N)r8   rG   rH   r{   r   r   r   r   ÚFutureã   ó    r}   c                   @   ó   e Zd ZdS )z2TestPredicates.test_isawaitable.<locals>.NotFutureN©r8   rG   rH   r   r   r   r   Ú	NotFutureé   ó    r   c                   S   r0   r   r   r   r   r   r   Ú<lambda>ë   ó    z1TestPredicates.test_isawaitable.<locals>.<lambda>)r@   r;   Zisawaitabler\   r]   r7   r{   rt   )rA   ry   rv   ru   r}   r   Znot_futr   r   r   Útest_isawaitableÙ   s   
zTestPredicates.test_isawaitablec                 C   s(   |   t tj¡¡ |   t g j¡¡ d S r   )r7   r;   Z	isroutinera   rZ   Úcountr[   r   r   r   Útest_isroutineð   s   zTestPredicates.test_isroutinec                 C   sD   |   tjd¡ |  t t¡¡ G dd„ dtƒ}|  t |ƒ ¡¡ d S )Nzmod.StupidGitc                   @   rz   )z2TestPredicates.test_isclass.<locals>.CustomGetattrc                 S   r0   r   r   )rA   Úattrr   r   r   Ú__getattr__ù   r|   z>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__N)r8   rG   rH   r‰   r   r   r   r   ÚCustomGetattrø   r~   rŠ   )rF   r;   rJ   r7   ÚlistÚobjectr@   )rA   rŠ   r   r   r   Útest_isclassô   s   zTestPredicates.test_isclassc                 C   sF   G dd„ dt ƒ}|ƒ }d|_tt |¡ƒ}|  d|¡ |  d|¡ d S )Nc                   @   ó   e Zd ZdZdS )z/TestPredicates.test_get_slot_members.<locals>.C©r   ÚbN©r8   rG   rH   Ú	__slots__r   r   r   r   ÚCþ   ó    r“   é*   r   r   )rŒ   r   Údictr;   Ú
getmembersÚassertInÚassertNotIn)rA   r“   ÚxÚmembersr   r   r   Útest_get_slot_membersý   s   z$TestPredicates.test_get_slot_membersc                    s   ddl m}m‰  G ‡ fdd„d|d}G dd„ d|ƒ}|ƒ }|  t |¡¡ |  t |¡¡ |  t |¡¡ |  t t¡¡ |  t d¡¡ d S )	Nr   ©ÚABCMetaÚabstractmethodc                       ó   e Zd Z” dd„ ƒZdS )z<TestPredicates.test_isabstract.<locals>.AbstractClassExamplec                 S   r0   r   r   r[   r   r   r   r#     r4   z@TestPredicates.test_isabstract.<locals>.AbstractClassExample.fooN©r8   rG   rH   r#   r   ©rŸ   r   r   ÚAbstractClassExample	  s    r£   ©Ú	metaclassc                   @   rz   )z4TestPredicates.test_isabstract.<locals>.ClassExamplec                 S   r0   r   r   r[   r   r   r   r#     r|   z8TestPredicates.test_isabstract.<locals>.ClassExample.fooNr¡   r   r   r   r   ÚClassExample  r~   r¦   é   )Úabcrž   rŸ   r7   r;   Ú
isabstractr@   Úint)rA   rž   r£   r¦   r   r   r¢   r   Útest_isabstract  s   zTestPredicates.test_isabstractc                    sª   ddl m}m‰  g ‰G ‡fdd„d|d}G ‡ fdd„d|ƒ}G dd	„ d	|ƒ}|  ˆd
dg¡ ˆ ¡  G dd„ d|ƒ}G dd„ d|ƒ}G dd„ d|ƒ}|  ˆg d¢¡ d S )Nr   r   c                       s   e Zd Z‡ fdd„ZdS )zLTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckerc                    s   ˆ   t | ¡¡ d S r   )r&   r;   r©   ©Úcls©Úisabstract_checksr   r   Ú__init_subclass__   ó   z^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__N)r8   rG   rH   r°   r   r®   r   r   ÚAbstractChecker  s    r²   r¤   c                       r    )zQTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplec                 S   r0   r   r   r[   r   r   r   r#   #  r4   zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.fooNr¡   r   r¢   r   r   r£   "  ó    r£   c                   @   rz   )zITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplec                 S   r0   r   r   r[   r   r   r   r#   '  r|   zMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.fooNr¡   r   r   r   r   r¦   &  r~   r¦   TFc                   @   r   )zJTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildNr€   r   r   r   r   ÚAbstractChild,  ó    r´   c                   @   r   )zOTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildNr€   r   r   r   r   ÚAbstractGrandchild.  rµ   r¶   c                   @   r   )zOTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildNr€   r   r   r   r   ÚConcreteGrandchild0  rµ   r·   )TTF)r¨   rž   rŸ   ÚassertEqualÚclear)rA   rž   r²   r£   r¦   r´   r¶   r·   r   )rŸ   r¯   r   Ú$test_isabstract_during_init_subclass  s   z3TestPredicates.test_isabstract_during_init_subclassN)r8   rG   rH   rp   rw   r…   r‡   r   rœ   r«   rº   r   r   r   r   r^   ~   s    */		r^   c                   @   ó<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestInterpreterStackc                 O   s,   t jj| g|¢R i |¤Ž t ddd¡ d S )Né   é   é	   )ÚunittestÚTestCaseÚ__init__ÚgitÚabuse©rA   r   Úkwargsr   r   r   rÂ   6  s   zTestInterpreterStack.__init__c                 C   s    |   tjd¡ |   tjd¡ d S )Nz	git.ex[2]zmod.fr)rF   r;   rO   rL   r[   r   r   r   Útest_abuse_done;  s   z$TestInterpreterStack.test_abuse_donec                 C   s&  |   ttjƒdk¡ |  ttjd dd … Ž tdddgdf¡ |  ttjd dd … Ž tddd	gdf¡ |  ttjd
 dd … Ž tdddgdf¡ |  ttjd dd … Ž tdddgdf¡ tjd }|  |jtj	¡ |  |j
d¡ |  |jtj¡ |  |jd¡ |  d|jd ¡ |  |jd¡ d S )Nr§   r   r!   é   Úeggsz    st = inspect.stack()
r¿   rZ   ú    eggs(b + d, c + f)
r"   é+   Úargueú            spam(a, b, c)
é   é'   rÄ   z        self.argue(a, b, c)
zinspect.stack())r7   r%   ra   Ústr¸   r   ÚmodfileÚassertIsÚframeÚfrÚlinenor   Ú__file__Úfunctionr˜   Úcode_contextÚindex)rA   Úrecordr   r   r   Ú
test_stack?  s(   ÿÿÿÿ
zTestInterpreterStack.test_stackc                 C   s”   |   ttjƒd¡ |   ttjd dd … Ž tdddgdf¡ |   ttjd dd … Ž tddd	gdf¡ |   ttjd
 dd … Ž tdddgdf¡ d S )NrÎ   r   r!   rË   rÌ   rÍ   r¿   rZ   rÊ   r"   é   rÉ   z    q = y / 0
)r¸   r%   rÃ   Ztrr   rÑ   r[   r   r   r   Ú
test_traceR  s   ÿÿÿzTestInterpreterStack.test_tracec                 C   sl   t  tj¡\}}}}|  |ddg¡ |  |d ¡ |  |d ¡ |  |ddddœ¡ |  t  ||||¡d¡ d S )Nrš   Úyé   é   )rš   r+   rÞ   z(x=11, y=14))r;   Úgetargvaluesra   rÔ   r¸   Úformatargvalues©rA   r   ÚvarargsÚvarkwÚlocalsr   r   r   Ú
test_frame[  s   ÿzTestInterpreterStack.test_framec                 C   sZ   t  tjj¡\}}}}|  |g d¢¡ |  |d¡ |  |d¡ |  t  ||||¡d¡ d S )N©r   r   r   ÚdÚeÚfÚgÚhz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))r;   rá   ra   rÔ   Úf_backr¸   râ   rã   r   r   r   Útest_previous_framed  s   ÿz(TestInterpreterStack.test_previous_frameN)	r8   rG   rH   rÂ   rÇ   rÛ   rÝ   rç   rï   r   r   r   r   r¼   5  s    		r¼   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )ÚGetSourceBaseNc                 C   sD   t t | j¡dd}| ¡ | _W d   ƒ d S 1 sw   Y  d S )Núutf-8©Úencoding)Úopenr;   ÚgetsourcefileÚfodderModuleÚreadÚsource)rA   Úfpr   r   r   ÚsetUpp  s   "ÿzGetSourceBase.setUpc                 C   s0   | j  d¡}d ||d |… ¡|rd S d S )NÚ
r!   Ú )rø   Úsplitr'   )rA   ÚtopÚbottomÚlinesr   r   r   Úsourceranget  s   $zGetSourceBase.sourcerangec                 C   s   |   t |¡|  ||¡¡ d S r   )r¸   r;   Ú	getsourcer  )rA   rD   rþ   rÿ   r   r   r   ÚassertSourceEqualx  s   
ÿzGetSourceBase.assertSourceEqual)r8   rG   rH   rö   rú   r  r  r   r   r   r   rð   l  s
    rð   c                   @   s   e Zd Z	 dddœZdS )ÚSlotUserúmeasured in kilowattsúmeasured in kilometers)ÚpowerÚdistanceNr‘   r   r   r   r   r  |  s
    
ÿr  c                   @   sä   e Zd ZeZdd„ Zdd„ Ze e	j
jdkd¡dd„ ƒZe e	j
jdkd¡d	d
„ ƒZe ed¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,S )-ÚTestRetrievingSourceCodec                 C   s.  t  tt j¡}|  |dtjfdtjfdtjfdtjfdtjfdtj	fg¡ t  
dd„ |D ƒ¡}|  |td	ftjtfftjtjtjffgtjtfftjtjfftjtjtjffggtj	tffgg¡ t  
d
d„ |D ƒd¡}|  |td	ftjtfftjtfftjtjfftjtjtjffggtj	tffgg¡ d S )NÚFesteringGobÚMalodorousPervertÚParrotDroppingsÚ	StupidGitZTitÚWhichCommentsc                 S   ó   g | ]}|d  ‘qS ©r!   r   ©Ú.0r­   r   r   r   Ú
<listcomp>Ž  ó    z<TestRetrievingSourceCode.test_getclasses.<locals>.<listcomp>r   c                 S   r  r  r   r  r   r   r   r  ž  r  T)r;   r—   ra   rJ   r¸   r
  r  r  r  r  ZgetclasstreerŒ   )rA   ZclassesZtreer   r   r   Útest_getclasses„  sR   ûÿ
ÿ
ÿÿ
öÿÿ

ÿÿ
ùÿÿz(TestRetrievingSourceCode.test_getclassesc                 C   s6   t  tt j¡}|  |dtjfdtjfdtjfg¡ d S )NrÉ   ÚlobbestrZ   )r;   r—   ra   r?   r¸   rÉ   r  rZ   )rA   Z	functionsr   r   r   Útest_getfunctions¬  s
   
þz*TestRetrievingSourceCode.test_getfunctionsr"   z)Docstrings are omitted with -O2 and abovec                 C   sf   |   t t¡d¡ |   t tj¡d¡ |   t tj¡d¡ |   t tj¡d¡ |   t tj	¡d¡ d S )NzA module docstring.úA longer,

indented

docstring.ú$Another

docstring

containing

tabsr  r  )
r¸   r;   Úgetdocra   r  rÃ   rÄ   r  r  r  r[   r   r   r   Útest_getdoc²  s   ÿÿÿÿz$TestRetrievingSourceCode.test_getdocc                 C   s\   |   t tj¡d¡ |   t tjj¡d¡ |   t t ¡ j¡d¡ |   t tjj¡d¡ d S )Nr  r  zThe automatic gainsaying.)r¸   r;   r  ra   r
  rÄ   Zcontradictionr[   r   r   r   Útest_getdoc_inherited¿  s   ÿÿÿÿz.TestRetrievingSourceCode.test_getdoc_inheritedztest requires docstringsc                 C   sv   t j}|  |tƒtj¡ |  |tjƒtjj¡ |  |tƒ jƒtjj¡ |  |tjƒtjj¡ |  |tjƒtjj¡ d S r   )r;   Z_finddocr¸   rª   Ú__doc__Úto_bytesÚ
from_bytesÚreal)rA   Zfinddocr   r   r   Útest_finddocË  s   z%TestRetrievingSourceCode.test_finddocc                 C   s   |   t d¡d¡ d S )NzAn
    indented
    docstring.zAn
indented
docstring.)r¸   r;   Zcleandocr[   r   r   r   Útest_cleandocÔ  s   ÿz&TestRetrievingSourceCode.test_cleandocc                 C   sj   |   t t¡d¡ |   t tj¡d¡ |   t tj¡d¡ tdddƒ}|  t |¡¡ |  t t	¡¡ d S )Nú	# line 1
z
# line 20
z# line 159
úx=1z_non_existing_filename.pyr(   )
r¸   r;   Zgetcommentsra   r  Úmod2Úcls160ÚcompileÚassertIsNoner‹   )rA   Úcor   r   r   Útest_getcommentsØ  s   z)TestRetrievingSourceCode.test_getcommentsc                 C   s‚   |   t t¡t¡ |   t tj¡t¡ |   t tjj¡t¡ |   t tjj¡t¡ |   t t¡tjd ¡ |   t d t	¡t¡ d S )NÚbuiltins)
r¸   r;   Ú	getmodulera   r  rÄ   Ústrrd   ÚmodulesrÑ   r[   r   r   r   Útest_getmoduleâ  s   z'TestRetrievingSourceCode.test_getmodulec                 C   s8   t  | jjd¡}|  |jd d¡ |  |jd d¡ d S )Né2   r   r#  r!   z'A module docstring.'
)r;   Zgetframeinforö   rÔ   r¸   rØ   )rA   Z
frame_infor   r   r   Ú test_getframeinfo_get_first_lineð  s   z9TestRetrievingSourceCode.test_getframeinfo_get_first_linec                 C   s4   |   tjdd¡ |   tjdd¡ |   tjdd¡ d S )Né   rÏ   é   é3   éK   éL   )r  rÃ   rÄ   ra   r  r  r[   r   r   r   Útest_getsourceõ  s   z'TestRetrievingSourceCode.test_getsourcec                 C   sœ   |   tt tj¡ƒt¡ |   tt tj¡ƒt¡ d}t	d|dƒ}|   t |¡d ¡ dd d|j
ftj|j
< z|   tt |¡ƒ|¡ W tj|j
= d S tj|j
= w )Nz2_non_existing_filename_used_for_sourcefile_test.pyr$  r(   r!   ÚNone)r¸   r   r;   rõ   ra   rZ   rÑ   rÃ   rÄ   r'  Úco_filenameÚ	linecacheÚcache)rA   Úfnr)  r   r   r   Útest_getsourcefileú  s   z+TestRetrievingSourceCode.test_getsourcefilec                 C   s   |   t tj¡tj¡ d S r   )r¸   r;   Úgetfilera   r  rÖ   r[   r   r   r   Útest_getfile  ó   z%TestRetrievingSourceCode.test_getfilec                 C   óN   |   t¡}t t¡ W d   ƒ n1 sw   Y  |  t|jƒ d¡¡ d S )Nz<module)	ÚassertRaisesÚ	TypeErrorr;   r>  rd   r7   r-  Ú	exceptionÚ
startswith©rA   rê   r   r   r   Útest_getfile_builtin_module	  ó   ÿz4TestRetrievingSourceCode.test_getfile_builtin_modulec                 C   rA  )Nz<class)	rB  rC  r;   r>  rª   r7   r-  rD  rE  rF  r   r   r   Útest_getfile_builtin_class  rH  z3TestRetrievingSourceCode.test_getfile_builtin_classc                 C   s’   |   t¡}t t¡ W d   ƒ n1 sw   Y  |  dt|jƒ¡ |   t¡}t tj	¡ W d   ƒ n1 s9w   Y  |  dt|jƒ¡ d S )Nzexpected, got)
rB  rC  r;   r>  Úabsr˜   r-  rD  r‹   r&   )rA   Ze_absZe_appendr   r   r   Ú'test_getfile_builtin_function_or_method  s   ÿÿz@TestRetrievingSourceCode.test_getfile_builtin_function_or_methodc                 C   s\   G dd„ dt ƒ}G dd„ d|d}|  t¡ t |¡ W d   ƒ d S 1 s'w   Y  d S )Nc                   @   s   e Zd Zedd„ ƒZdS )zFTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMc                 S   ó   t ‚r   ©ÚAttributeErrorr¬   r   r   r   rG     r4   zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__N)r8   rG   rH   Úpropertyr   r   r   r   ÚCM  r³   rP  c                   @   r   )zETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNr€   r   r   r   r   r“      rµ   r“   r¤   )rh   rB  rC  r;   r>  )rA   rP  r“   r   r   r   Ú!test_getfile_class_without_module  s
   "ÿz:TestRetrievingSourceCode.test_getfile_class_without_modulec                 C   sN   G dd„ dƒ}|ƒ }|   t¡ t |¡ W d   ƒ d S 1 s w   Y  d S )Nc                   @   rz   )zDTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorReprc                 S   ó   t dƒ‚)NZxyz)Ú	Exceptionr[   r   r   r   Ú__repr__'  ó   zMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__N)r8   rG   rH   rT  r   r   r   r   Ú	ErrorRepr&  r~   rV  )rB  rC  r;   r>  )rA   rV  Zerr   r   r   Útest_getfile_broken_repr%  s
   "ÿz1TestRetrievingSourceCode.test_getfile_broken_reprc                 C   sn   ddl m} d}||ƒ }tj|< d|_d|_td|jƒ |  t	 
|jj¡d¡ tj|= t	 tddd	ƒ¡ d S )
Nr   )Ú
ModuleTypeZ__inspect_dummyú<string>Zdummyzdef x(): passza=10rü   Úsingle)rg   rX  rd   r.  rÖ   Ú
__loader__r(   Ú__dict__r¸   r;   rõ   rš   Ú__code__r,  r'  )rA   rX  ÚnameÚmr   r   r   Útest_getmodule_recursion-  s   z1TestRetrievingSourceCode.test_getmodule_recursionc                    sb   	 d\‰ ‰t j‰d‡ ‡‡fdd„	}|t _zi }ttˆˆ dƒ|ƒ t |d ¡ W ˆt _d S ˆt _w )N)z<test>zdef x(): pass
c                    s   | ˆ kr
ˆj ddS ˆ| |ƒS )NT)Úkeepends)Ú
splitlines)r   Úmodule_globals©r<  Úgetlinesrø   r   r   Úmonkey<  s   
zHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkeyrZ  rš   r   )r:  re  r(   r'  r;   r  )rA   rf  Únsr   rd  r   Útest_proceed_with_fake_filename8  s   z8TestRetrievingSourceCode.test_proceed_with_fake_filenamec                 C   ó   |   tjjdd¡ d S )Né   rÜ   )r  ra   rÉ   r]  r[   r   r   r   Útest_getsource_on_code_objectI  ó   z6TestRetrievingSourceCode.test_getsource_on_code_objectN)r8   rG   rH   ra   rö   r  r  rÀ   ÚskipIfrd   ÚflagsÚoptimizer  r  r   r!  r"  r*  r/  r1  r7  r=  r?  rG  rI  rK  rQ  rW  r`  rh  rk  r   r   r   r   r	    s:    (ÿ
ÿ





r	  c                   @   rz   )ÚTestGetsourceInteractivec                 C   s(   d}t d|dd\}}}|  d|¡ d S )Nz©import sys, inspect;                 assert not hasattr(sys.modules['__main__'], '__file__');                 A = type('A', (), {});                 inspect.getsource(A)z-cT)Z
__isolateds"   OSError: source code not available)r   r˜   )rA   ÚcodeÚ_Ústderrr   r   r   Útest_getclasses_interactiveM  s   z4TestGetsourceInteractive.test_getclasses_interactiveN)r8   rG   rH   rt  r   r   r   r   rp  L  r~   rp  c                   @   s    e Zd ZeZdd„ Zdd„ ZdS )Ú!TestGettingSourceOfToplevelFramesc                 C   s   d | _ |  tjdd ¡ d S rq   )ZmaxDiffr  ra   Úcurrentframer[   r   r   r   Útest_range_toplevel_frameZ  s   z;TestGettingSourceOfToplevelFrames.test_range_toplevel_framec                 C   s   |   tjdd ¡ d S rq   )r  ra   r_   r[   r   r   r   Ú#test_range_traceback_toplevel_frame^  r±   zETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frameN)r8   rG   rH   ra   rö   rw  rx  r   r   r   r   ru  W  s    ru  c                   @   s0   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDecoratorsc                 C   ó   |   tjdd¡ d S )Nrà   é   )r  r%  Úwrappedr[   r   r   r   Útest_wrapped_decoratord  r±   z%TestDecorators.test_wrapped_decoratorc                 C   rz  )Nr¿   é
   )r  r%  Zgoner[   r   r   r   Útest_replacing_decoratorg  r±   z'TestDecorators.test_replacing_decoratorc                 C   rz  )Né‚   é„   )r  r%  r   r[   r   r   r   Útest_getsource_unwrapj  r±   z$TestDecorators.test_getsource_unwrapc                 C   rz  )Néq   és   )r  r%  Zfunc114r[   r   r   r   Útest_decorator_with_lambdam  r±   z)TestDecorators.test_decorator_with_lambdaN)	r8   rG   rH   r%  rö   r}  r  r‚  r…  r   r   r   r   ry  a  s    ry  c                   @   sP   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestOnelinersc                 C   ó   |   tjdd¡ d S )Né   )r  r%  Zollr[   r   r   r   Útest_oneline_lambdar  ó   z!TestOneliners.test_oneline_lambdac                 C   rz  )Né   é   )r  r%  Ztllr[   r   r   r   Útest_threeline_lambdav  ó   z#TestOneliners.test_threeline_lambdac                 C   rz  )Né!   é"   )r  r%  Ztllir[   r   r   r   Útest_twoline_indented_lambda{  rŽ  z*TestOneliners.test_twoline_indented_lambdac                 C   r‡  )Né%   )r  r%  Zonelinefuncr[   r   r   r   Útest_onelinefunc€  rŠ  zTestOneliners.test_onelinefuncc                 C   rz  )Né(   é)   )r  r%  Zmanyargsr[   r   r   r   Útest_manyargs„  ó   zTestOneliners.test_manyargsc                 C   rz  )Né,   é-   )r  r%  Ztwolinefuncr[   r   r   r   Útest_twolinefuncŠ  r—  zTestOneliners.test_twolinefuncc                 C   s   |   tjd dd¡ d S )Nr!   é1   )r  r%  r   r[   r   r   r   Útest_lambda_in_list  s   z!TestOneliners.test_lambda_in_listc                 C   r‡  )Né7   )r  r%  Z	anonymousr[   r   r   r   Útest_anonymous•  rŽ  zTestOneliners.test_anonymousN)r8   rG   rH   r%  rö   r‰  r  r‘  r“  r–  rš  rœ  rž  r   r   r   r   r†  p  s    r†  c                   @   s(   e Zd ZeZdd„ Zdd„ Zdd„ ZdS )ÚTestBlockCommentsc                 C   rz  )Né`   ér   )r  ra   r  r[   r   r   r   Útest_toplevel_class  r±   z%TestBlockComments.test_toplevel_classc                 C   ri  )Néc   éh   )r  ra   r  rë   r[   r   r   r   Útest_class_method   rl  z#TestBlockComments.test_class_methodc                 C   ri  )Ném   ép   )r  ra   r  Zasyncfr[   r   r   r   Útest_class_async_method£  rl  z)TestBlockComments.test_class_async_methodN)r8   rG   rH   ra   rö   r¢  r¥  r¨  r   r   r   r   rŸ  š  s
    rŸ  c                   @   sà   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Ze eedƒ p/ej d¡d¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Z d0S )1ÚTestBuggyCasesc                 C   rz  )Né:   é;   )r  r%  Zwith_commentr[   r   r   r   Útest_with_comment©  r±   z TestBuggyCases.test_with_commentc                 C   s   |   tjd dd¡ d S )Nr   é?   é@   )r  r%  Zmultiline_sigr[   r   r   r   Útest_multiline_sig¬  ó   z!TestBuggyCases.test_multiline_sigc                 C   s   |   t ¡ jdd¡ d S )NéG   éH   )r  r%  Zfunc69Zfunc71r[   r   r   r   Útest_nested_class¯  r°  z TestBuggyCases.test_nested_classc                 C   r‡  )NéM   )r  r%  Zfunc77r[   r   r   r   Ú#test_one_liner_followed_by_non_name²  r±   z2TestBuggyCases.test_one_liner_followed_by_non_namec                 C   s   |   tjjdd¡ d S )NéS   )r  r%  Zcls82Zfunc83r[   r   r   r   Útest_one_liner_dedent_non_nameµ  rl  z-TestBuggyCases.test_one_liner_dedent_non_namec                 C   rz  )NéX   éZ   )r  r%  Zfunc88r[   r   r   r   Ú&test_with_comment_instead_of_docstring¸  r±   z5TestBuggyCases.test_with_comment_instead_of_docstringc                 C   rz  )Né_   éa   )r  r%  Zmethod_in_dynamic_classr[   r   r   r   Útest_method_in_dynamic_class»  r±   z+TestBuggyCases.test_method_in_dynamic_classrÖ   z.pyz,unicodedata is not an external binary modulec                 C   s$   |   ttjt¡ |   ttjt¡ d S r   )rB  ÚOSErrorr;   r  ÚunicodedataÚ
findsourcer[   r   r   r   Útest_findsource_binaryÀ  s   z%TestBuggyCases.test_findsource_binaryc                 C   s–   dg}t |d ddƒ}|  ttj|¡ |  ttj|¡ dd ||jftj|j< z|  	t |¡|df¡ |  	t |¡|d ¡ W tj|j= d S tj|j= w )Nr$  r   Z_dynamically_created_filer(   r!   )
r'  rB  r¾  r;   rÀ  r  r9  r:  r;  r¸   )rA   r   r)  r   r   r   Ú!test_findsource_code_in_linecacheÇ  s   z0TestBuggyCases.test_findsource_code_in_linecachec                 C   s:   dD ]}t d|dƒ}|  ttj|¡ |  ttj|¡ qd S )N)rü   rY  r$  r(   )r'  rB  ÚIOErrorr;   rÀ  r  )rA   Úfnamer)  r   r   r   Ú test_findsource_without_filenameÓ  s
   ýz/TestBuggyCases.test_findsource_without_filenamec                 C   sš   t t t¡ƒ}d| d }t|tjdƒ}i i }}t|||ƒ |d }|  |jj	dd|  ¡ |  
td¡ t |¡ W d   ƒ d S 1 sFw   Y  d S )Nz

zdef f(): passr(   rë   r!   r"   zlineno is out of bounds)r%   r;   r  ra   r'  rÖ   r6   r¸   r]  Úco_firstlinenoÚassertRaisesRegexrÃ  rÀ  )rA   Zmod_lenÚsrcr)  rì   ÚlÚfuncr   r   r   Ú)test_findsource_with_out_of_bounds_linenoÙ  s   
"ÿz8TestBuggyCases.test_findsource_with_out_of_bounds_linenoc                 C   ri  )Név   éw   )r  r%  ZClassWithMethodÚmethodr[   r   r   r   Útest_getsource_on_methodä  rl  z'TestBuggyCases.test_getsource_on_methodc                 C   ri  )Néˆ   é‹   )r  r%  Zcls135Zfunc136r[   r   r   r   Útest_nested_funcç  rl  zTestBuggyCases.test_nested_funcc                 C   rz  )Né•   é˜   )r  r%  Zcls149r[   r   r   r   Ú4test_class_definition_in_multiline_string_definitionê  r±   zCTestBuggyCases.test_class_definition_in_multiline_string_definitionc                 C   rz  )Né    é£   )r  r%  r&  r[   r   r   r   Ú*test_class_definition_in_multiline_commentí  r±   z9TestBuggyCases.test_class_definition_in_multiline_commentc                 C   ri  )Né¯   é°   )r  r%  Zcls173Zcls175r[   r   r   r   Ú,test_nested_class_definition_indented_stringð  rl  z;TestBuggyCases.test_nested_class_definition_indented_stringc                 C   ó&   |   tjdd¡ |   tjjdd¡ d S )Né·   é¼   é¹   )r  r%  Zcls183Zcls185r[   r   r   r   Útest_nested_class_definitionó  ó   z+TestBuggyCases.test_nested_class_definitionc                 C   rÜ  )NéÂ   éÉ   éÆ   )r  r%  Zcls196Zcls200r[   r   r   r   Útest_class_decorator÷  rá  z#TestBuggyCases.test_class_decoratorc                 C   rÜ  )Néî   éð   éï   )r  r%  Zcls238Zcls239r[   r   r   r   Útest_class_inside_conditionalû  rá  z,TestBuggyCases.test_class_inside_conditionalc                 C   s`   |   tjdd¡ |   tjjdd¡ |   tjjjdd¡ |   tjjdd¡ |   tjjjdd¡ d S )NéË   éÑ   éÌ   éÎ   éÍ   éÏ   éÐ   )r  r%  Zcls203Zcls204Zcls205Zcls207r[   r   r   r   Útest_multiple_children_classesÿ  s
   z-TestBuggyCases.test_multiple_children_classesc                 C   s<   |   t ¡ dd¡ |   tjdd¡ |   t ¡  ¡ dd¡ d S )NéÕ   éÖ   éÚ   éÞ   éÜ   éÝ   )r  r%  Zfunc212Zcls213Zfunc219r[   r   r   r   Ú,test_nested_class_definition_inside_function  s   z;TestBuggyCases.test_nested_class_definition_inside_functionc                 C   s^   dd l }|  |jd ¡ |  | t ¡ ¡dd¡ |  tjdd¡ |  | t ¡  ¡ ¡dd¡ d S )Nr   éâ   éã   éç   éë   éé   éê   )	ÚasyncioZ
addCleanupZset_event_loop_policyr  Úrunr%  Zfunc225Zcls226Zfunc232)rA   rÿ  r   r   r   Ú2test_nested_class_definition_inside_async_function  s
    zATestBuggyCases.test_nested_class_definition_inside_async_functionN)!r8   rG   rH   r%  rö   r¬  r¯  r³  rµ  r·  rº  r½  rÀ   rm  rf   r¿  rÖ   ÚendswithrÁ  rÂ  rÅ  rË  rÏ  rÒ  rÕ  rØ  rÛ  rà  rå  ré  rñ  rø  r  r   r   r   r   r©  ¦  s8    
þ
r©  c                       s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )Ú	TestNoEOLc                    s¦   t d | _t | j¡ ttj | jdtj ¡ddd}| d¡ W d   ƒ n1 s+w   Y  t	| jƒ dd l
}W d   ƒ n1 sDw   Y  || _tƒ  ¡  d S )NZ_dirzinspect_fodder3%spyÚwrñ   rò   zclass X:
    pass # No EOLr   )r
   ÚtempdirÚosÚmkdirrô   Úpathr'   ÚextsepÚwriter	   Zinspect_fodder3rö   Úsuperrú   )rA   rë   Zmod3©Ú	__class__r   r   rú     s   
ÿþ
ÿzTestNoEOL.setUpc                 C   s   t  | j¡ d S r   )ÚshutilÚrmtreer  r[   r   r   r   ÚtearDown  ó   zTestNoEOL.tearDownc                 C   s   |   | jjdd¡ d S )Nr!   r"   )r  rö   ÚXr[   r   r   r   Ú
test_class!  rl  zTestNoEOL.test_class)r8   rG   rH   rú   r  r  Ú__classcell__r   r   r  r   r    s    r  c                   @   s&   e Zd Z	 dd„ Zdd„ Zdd„ ZdS )Ú_BrokenDataDescriptorc                  G   rR  ©Nzbroken data descriptorrM  ©r   r   r   r   Ú__get__)  rU  z_BrokenDataDescriptor.__get__c                  G   rL  r   )ÚRuntimeErrorr  r   r   r   Ú__set__,  r|   z_BrokenDataDescriptor.__set__c                  G   rR  r  rM  r  r   r   r   r‰   /  rU  z!_BrokenDataDescriptor.__getattr__N)r8   rG   rH   r  r  r‰   r   r   r   r   r  %  s
    r  c                   @   s   e Zd Z	 dd„ Zdd„ ZdS )Ú_BrokenMethodDescriptorc                  G   rR  ©Nzbroken method descriptorrM  r  r   r   r   r  7  rU  z_BrokenMethodDescriptor.__get__c                  G   rR  r  rM  r  r   r   r   r‰   :  rU  z#_BrokenMethodDescriptor.__getattr__N)r8   rG   rH   r  r‰   r   r   r   r   r  3  s    r  c                 C   s   dd„ t  | ¡D ƒS )Nc                 S   s   g | ]}|d d… ‘qS ©NrÎ   r   )r  Útr   r   r   r  @  s    z!attrs_wo_objs.<locals>.<listcomp>)r;   Úclassify_class_attrsr¬   r   r   r   Úattrs_wo_objs?  r±   r   c                   @   s(  e Zd Zdd„ Z		d9dd„Zdddg g di dfdd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
e ed¡dd„ ƒZee ed¡dd„ ƒƒZee ed¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!dS ):ÚTestClassesAndFunctionsc                 C   sj   G dd„ dt ƒ}G dd„ d|ƒ}G dd„ d|ƒ}G dd„ d||ƒ}||||t f}t |¡}|  ||¡ d S )	Nc                   @   r   )z4TestClassesAndFunctions.test_newstyle_mro.<locals>.ANr€   r   r   r   r   ÚAF  r‚   r"  c                   @   r   )z4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNr€   r   r   r   r   ÚBG  r‚   r#  c                   @   r   )z4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNr€   r   r   r   r   r“   H  r‚   r“   c                   @   r   )z4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNr€   r   r   r   r   ÚDI  r‚   r$  )rŒ   r;   Zgetmror¸   )rA   r"  r#  r“   r$  ÚexpectedZgotr   r   r   Útest_newstyle_mroD  s   
z)TestClassesAndFunctions.test_newstyle_mroNc              	   C   sÀ   |   t¡ t |¡\}}}	}
W d   ƒ n1 sw   Y  |  ||¡ |  ||¡ |  |	|¡ |  |
|¡ |d ur^|   t¡ |  t |||	|
¡|¡ W d   ƒ d S 1 sWw   Y  d S d S r   )ÚassertWarnsÚDeprecationWarningr;   Z
getargspecr¸   Úformatargspec)rA   ÚroutineÚargs_eÚ	varargs_eÚvarkw_eÚ
defaults_eÚ	formattedr   rä   rå   Údefaultsr   r   r   ÚassertArgSpecEqualsO  s   ÿÿ"ÿÿz+TestClassesAndFunctions.assertArgSpecEqualsc                 C   sÆ   t  |¡\}}}}}}}|  ||¡ |  ||¡ |  ||¡ |  ||¡ |  ||¡ |  ||¡ |  ||	¡ |
d ura|  t¡ |  t  |||||||¡|
¡ W d   ƒ d S 1 sZw   Y  d S d S r   )r;   Úgetfullargspecr¸   r'  r(  r)  )rA   r*  r+  r,  r-  r.  Zposonlyargs_eÚkwonlyargs_eÚkwonlydefaults_eÚann_er/  r   rä   rå   r0  Ú
kwonlyargsZkwonlydefaultsÚannr   r   r   ÚassertFullArgSpecEquals\  s$   ÿÿþ"ÿÿz/TestClassesAndFunctions.assertFullArgSpecEqualsc                 C   sp   | j tjddgdd |   tjg d¢dddd	¡ |  t| j tjg ¡ |  t| j tjg ¡ |  t| j tj	g ¡ d S )
Nrš   rÞ   ú(x, y)©r/  rè   rì   rí   )rÎ   é   r§   z!(a, b, c, d=3, e=4, f=5, *g, **h))
r1  ra   rÉ   rZ   rB  Ú
ValueErrorr%  Ú	keywordedÚ	annotatedÚkeyword_only_argr[   r   r   r   Útest_getargspecp  s   ý
ÿ
ÿ
ÿz'TestClassesAndFunctions.test_getargspecc                 C   s´   | j tjg ddgddidd | j tjdgdtidd | j tjg dgd	d
 | j tjg d¢ddgdd
 | j tjg d¢ddddgdd | j tjg d¢dddgdddœdd d S )NÚarg1Úarg2r!   z(*arg1, arg2=1))r,  r3  r4  r/  z(arg1: list))r5  r/  Úargz(*, arg))r3  r/  ©r   r   r   ré   rê   rë   z(a, b, c, d, *, e, f)r   rÆ   z#(a, b, c, d, *args, e, f, **kwargs))r,  r-  r3  r/  ©r!   r"   rÎ   r;  r§   )rê   rë   z(a, b=1, c=2, d=3, *, e=4, f=5))r.  r3  r4  r/  )	r8  r%  r=  r>  r‹   r?  Zall_markersZ all_markers_with_args_and_kwargsZall_markers_with_defaultsr[   r   r   r   Útest_getfullargspec  s<   ýþ
þþû
üz+TestClassesAndFunctions.test_getfullargspecc                    sÖ   t  tj¡dd„ ƒ}ˆ j|ddgdd ˆ j|ddgdd ˆ jt  |¡ddgdd ‡ fdd„}G d	d
„ d
ƒ}||ƒ ƒ ||jƒ ||ƒ jƒ ||jƒ ||ƒ jƒ G dd„ dƒ}||ƒ G dd„ dƒ}||ƒ d S )Nc                 S   r0   r   r   ©rš   rÞ   r   r   r   Úham¡  r4   zETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.hamrš   rÞ   r9  r:  c                    s   ˆ j | g d¢dd d S )N©rA   rš   rÞ   z(self, x, y)r:  )r1  ©rë   r[   r   r   Úcheck_methodª  s   
ÿzNTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.check_methodc                   @   s>   e Zd Ze ej¡dd„ ƒZe e¡Z	e ej¡dd„ ƒZ
dS )zCTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.Cc                 S   r0   r   r   rI  r   r   r   rH  ®  r4   zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.hamc                 S   r0   r   r   rI  r   r   r   Ú__call__²  r4   zLTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C.__call__N)r8   rG   rH   rr   Úwrapsra   rZ   rH  ÚpartialmethodÚphamrL  r   r   r   r   r“   ­  s    



r“   c                   @   ó    e Zd Ze ej¡dd„ ƒZdS )zGTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_newc                 S   r0   r   r   rI  r   r   r   Ú__new__¼  r4   zOTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_new.__new__N)r8   rG   rH   rr   rM  ra   rZ   rQ  r   r   r   r   ÚC_new»  ó    
rR  c                   @   rP  )zHTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_initc                 S   r0   r   r   rI  r   r   r   rÂ   Â  r4   zQTestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.C_init.__init__N)r8   rG   rH   rr   rM  ra   rZ   rÂ   r   r   r   r   ÚC_initÁ  rS  rT  )	rr   rM  ra   rZ   r1  r8  rs   rH  rO  )rA   rH  rK  r“   rR  rT  r   r[   r   Ú test_argspec_api_ignores_wrappedŸ  s$   

ÿ


z8TestClassesAndFunctions.test_argspec_api_ignores_wrappedc                 C   s>   dd„ }t  dt jj¡}t j|fd|_| j|dgdd d S )Nc                   S   r0   r   r   r   r   r   r   ÚtestÈ  r|   zHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.testrZ   ©r)   ú(spam)r:  )r;   Ú	ParameterÚPOSITIONAL_ONLYÚ	SignatureÚ__signature__r8  )rA   rV  Z
spam_paramr   r   r   Ú"test_getfullargspec_signature_attrÇ  s   z:TestClassesAndFunctions.test_getfullargspec_signature_attrc                 C   sJ   ddd„}t  |¡}|  |j|j¡ dd„ }t  |¡}|  |j|j¡ d S )	Nr   rZ   ÚreturnrH  c                 S   r0   r   r   ©r   r   r   r   rV  Ð  r„   zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testc                   S   r0   r   r   r   r   r   r   rV  Ô  r„   )r   rZ   r^  rH  )r;   r2  r¸   Ú__annotations__Zannotations)rA   rV  Úspecr   r   r   Ú#test_getfullargspec_signature_annosÏ  s   


z;TestClassesAndFunctions.test_getfullargspec_signature_annosú6Signature information for builtins requires docstringsc                 C   s^   | j tjjddgdd | j t t ¡ ¡jddgdd | j tjdgddgd dd	œd
d d S )NrA   rD   z(self, obj)r:  r  Údir_fdÚfollow_symlinksT)rd  re  z,(path, *, dir_fd=None, follow_symlinks=True))r+  r3  r4  r/  )r8  Ú_pickleÚPicklerÚdumpÚioÚBytesIOr  Ústatr[   r   r   r   Ú#test_getfullargspec_builtin_methodsØ  s   ÿÿ
ûz;TestClassesAndFunctions.test_getfullargspec_builtin_methodsc                 C   s.   dd l }|j}t |¡}|  |jd d¡ d S )Nr   Úavocado)Ú	_testcapiÚ&docstring_with_signature_with_defaultsr;   r2  r¸   r0  )rA   rn  Úbuiltinra  r   r   r   Ú test_getfullargspec_builtin_funcè  s   
z8TestClassesAndFunctions.test_getfullargspec_builtin_funcc                 C   sH   dd l }|j}|  t¡ t |¡ W d   ƒ d S 1 sw   Y  d S )Nr   )rn  Údocstring_no_signaturerB  rC  r;   r2  )rA   rn  rp  r   r   r   Ú-test_getfullargspec_builtin_func_no_signatureñ  s
   "ÿzETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signaturec                 C   ób   t ƒ D ]}t |¡}t|jƒ}t|ƒ}|  |¡ |  ||¡ qt t¡}t|jƒ}|  |t	¡ d S r   )
r/   r;   r2  r‹   r6  Úsortedr7   r¸   r3   Ú unsorted_keyword_only_parameters©rA   r<  Ú	signaturerÉ  Zsorted_lr   r   r   Ú8test_getfullargspec_definition_order_preserved_on_kwonlyú  ó   





zPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlyc                 C   s$   G dd„ dt ƒ}|  |jdg¡ d S )Nc                   @   rz   )z9TestClassesAndFunctions.test_getargspec_method.<locals>.Ac                 S   r0   r   r   r[   r   r   r   r_    r|   z;TestClassesAndFunctions.test_getargspec_method.<locals>.A.mN©r8   rG   rH   r_  r   r   r   r   r"    r~   r"  rA   )rŒ   r1  r_  ©rA   r"  r   r   r   Útest_getargspec_method  s   z.TestClassesAndFunctions.test_getargspec_methodc                 C   s  G dd„ dt ƒ}t|ƒ}|  ddt f|d¡ |  ddt f|d¡ |  d	d|f|d
¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d| ¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ G dd„ d|ƒ}t|ƒ}|  d	d|f|d
¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ G dd„ d|ƒ}t|ƒ}|  d	d|f|d
¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ G d d!„ d!||ƒ}t|ƒ}|  d	d|f|d
¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ |  dd|f|d¡ d S )"Nc                   @   s\   e Zd Zdd„ ZeeƒZdd„ ZeeƒZdd„ ZeeƒZ	dd„ Z
d	d
„ ZdZeƒ Zeƒ ZdS )z9TestClassesAndFunctions.test_classify_newstyle.<locals>.Ac                   S   r0   r   r   r   r   r   r   Ús  r„   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.sc                 S   r0   r   r   r¬   r   r   r   r     r„   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.cc                 S   r0   r   r   r[   r   r   r   Úgetp  r„   z>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpc                 S   r0   r   r   r[   r   r   r   r_    r„   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mc                 S   r0   r   r   r[   r   r   r   Úm1  r„   z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1Ú1N)r8   rG   rH   r~  Ústaticmethodr   Úclassmethodr  rO  r+   r_  r€  Údatablobr  Úddr  Úmdr   r   r   r   r"    s    
r"  rQ  ústatic methodúmissing __new__rÂ   rÎ  zmissing __init__r~  zmissing static methodr   úclass methodúmissing class methodr+   rO  zmissing propertyr_  zmissing plain method: %rr€  úmissing plain methodr„  Údatazmissing datar†  zmissing method descriptorr…  zmissing data descriptorc                   @   rz   )z9TestClassesAndFunctions.test_classify_newstyle.<locals>.Bc                 S   r0   r   r   r[   r   r   r   r_  2  r„   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.mNr{  r   r   r   r   r#  0  ó    r#  c                   @   ó   e Zd Zdd„ Zdd„ ZdS )z9TestClassesAndFunctions.test_classify_newstyle.<locals>.Cc                 S   r0   r   r   r[   r   r   r   r_  A  r„   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.mc                 S   r0   r   r   r[   r   r   r   r   B  r„   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.cN)r8   rG   rH   r_  r   r   r   r   r   r“   ?  s    r“   c                   @   rz   )z9TestClassesAndFunctions.test_classify_newstyle.<locals>.Dc                 S   r0   r   r   r[   r   r   r   r€  P  r„   z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1N)r8   rG   rH   r€  r   r   r   r   r$  N  r  r$  )rŒ   r   r˜   )rA   r"  Úattrsr#  r“   r$  r   r   r   Útest_classify_newstyle  s\   ÿÿz.TestClassesAndFunctions.test_classify_newstylec                 C   sœ   t tƒD ]}tt|ƒ}t|tƒrt |¡ qttƒ}|  	ddtf|d¡ |  	ddt
f|d¡ |  	ddt
f|d	¡ |  	d
dt
f|d	¡ |  	ddtf|d	¡ d S )NrQ  r‡  rˆ  r  r‰  rŠ  r  rÎ  r‹  Ú__add__Ú__and__)ÚdirÚ__builtins__ÚgetattrÚ
isinstancerh   r;   r  r   Úboolr˜   rª   )rA   r^  rp  r  r   r   r   Útest_classify_builtin_types\  s*   


€ÿÿÿÿÿz3TestClassesAndFunctions.test_classify_builtin_typesc                 C   sp   G dd„ dt ƒ}G dd„ d|d}t dd||jd ¡}|  |t |¡¡ t dd|d¡}|  |t |¡¡ d S )	Nc                       ó   e Zd Z‡ fdd„Z‡  ZS )zITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metac                    ó   |dkrdS t ƒ  |¡S )NrH  rZ   ©r  r‰   ©rA   r^  r  r   r   r‰   r  ó   zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__©r8   rG   rH   r‰   r  r   r   r  r   ÚMetaq  ó    rŸ  c                   @   ó   e Zd Zejdd„ ƒZdS )zGTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAc                 S   ó   dS )NrÉ   r   r[   r   r   r   rH  w  r4   zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.hamN)r8   rG   rH   rg   ÚDynamicClassAttributerH  r   r   r   r   ÚVAv  ó    r¤  r¤   rH  rŒ  rZ   )rh   r;   Ú	Attributer\  r˜   r  )rA   rŸ  r¤  Zshould_find_dcaZshould_find_gar   r   r   Ú#test_classify_DynamicClassAttributep  s   z;TestClassesAndFunctions.test_classify_DynamicClassAttributec                    sP   G ‡ fdd„dt ƒ‰ G ‡ fdd„dt ƒ}t dd||j¡}|  |t |¡¡ d S )Nc                       s    e Zd Z‡ fdd„Zdd„ ZdS )zDTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolc                    s   ˆ ƒ S r   r   )rA   rE   ©ÚNoBoolr   r   Ú__eq__  s   zKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__c                 S   rR  )Nz,This object does not specify a boolean value)ÚNotImplementedErrorr[   r   r   r   Ú__bool__„  s   ÿzMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__N)r8   rG   rH   rª  r¬  r   r¨  r   r   r©  €  s    r©  c                       ó   e Zd Z” ƒ ZdS )zCTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)r8   rG   rH   r…  r   r¨  r   r   ÚHasNBˆ  ó    
r®  r…  rŒ  )rŒ   r;   r¦  r…  r˜   r  )rA   r®  Zshould_find_attrr   r¨  r   Útest_classify_overrides_bool  s   z4TestClassesAndFunctions.test_classify_overrides_boolc                 C   óH   G dd„ dt ƒ}G dd„ d|d}t dd|d¡}|  |t |¡¡ d S )	Nc                   @   ó   e Zd ZdZdd„ ZdS )zMTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.MetaÚslapc                 S   ó   g d¢S )N)r  rG   r8   Úfishr   r[   r   r   r   Ú__dir__‘  rU  zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__N)r8   rG   rH   rµ  r¶  r   r   r   r   rŸ    ó    rŸ  c                   @   r   )zNTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNr€   r   r   r   r   ÚClass“  rµ   r¸  r¤   rµ  rŒ  r³  ©rh   r;   r¦  r˜   r  ©rA   rŸ  r¸  Zshould_findr   r   r   Ú'test_classify_metaclass_class_attributeŽ  s   z?TestClassesAndFunctions.test_classify_metaclass_class_attributec                 C   r±  )	Nc                       ó$   e Zd Zdd„ Z‡ fdd„Z‡  ZS )zDTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Metac                 S   r´  )N)r  rG   r8   ÚBOOMr   r¬   r   r   r   r¶  š  rU  zLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__c                    rš  )Nr½  r•   )r  Z_Meta__getattrrœ  r  r   r   r‰   œ  r  zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__©r8   rG   rH   r¶  r‰   r  r   r   r  r   rŸ  ™  ó    rŸ  c                   @   r   )zETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNr€   r   r   r   r   r¸     rµ   r¸  r¤   r½  rŒ  r•   r¹  rº  r   r   r   Útest_classify_VirtualAttribute˜  s   z6TestClassesAndFunctions.test_classify_VirtualAttributec           	         s¸   G dd„ dt ƒ‰ G dd„ dt ƒ‰G ‡ ‡fdd„dˆ ˆƒ}G dd„ dˆ d	}G d
d„ d||d	}t ddˆ d¡}t ddˆd¡}t dd|d¡}t |¡}|||fD ]}|  ||¡ qQd S )Nc                       r¼  )zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1c                 S   r´  )N)r  rG   r8   Úoner   r¬   r   r   r   r¶  §  rU  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__c                    rš  )NrÁ  r!   r›  rœ  r  r   r   r‰   ©  r  z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__r¾  r   r   r  r   ÚMeta1¦  r¿  rÂ  c                       r¼  )zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2c                 S   r´  )N)r  rG   r8   Útwor   r¬   r   r   r   r¶  ®  rU  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__c                    rš  )NrÃ  r"   r›  rœ  r  r   r   r‰   °  r  z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__r¾  r   r   r  r   ÚMeta2­  r¿  rÄ  c                       s*   e Zd Z‡‡fdd„Z‡ fdd„Z‡  ZS )zSTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3c                    s(   t ttg d¢ˆ  | ¡ ˆ | ¡ ƒƒƒS )N)r  rG   r8   Úthree)r‹   ru  r:   r¶  r¬   ©rÂ  rÄ  r   r   r¶  µ  s
   ÿ
ÿz[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__c                    rš  )NrÅ  rÎ   r›  rœ  r  r   r   r‰   ¸  r  z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__r¾  r   rÆ  r  r   ÚMeta3´  s    rÇ  c                   @   r   )zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nr€   r   r   r   r   ÚClass1¼  rµ   rÈ  r¤   c                   @   r   )zTTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nr€   r   r   r   r   ÚClass2¾  rµ   rÉ  rÁ  rŒ  r!   rÃ  r"   rÅ  rÎ   )rh   r;   r¦  r  r˜   )	rA   rÇ  rÈ  rÉ  Zshould_find1Zshould_find2Zshould_find3ZccaZsfr   rÆ  r   Ú,test_classify_VirtualAttribute_multi_classes¥  s   
ÿzDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classesc                 C   óF   G dd„ dt ƒ}G dd„ d|d}dd„ t |¡D ƒ}|  d|¡ d S )	Nc                   @   rz   )zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.Mc                 S   r´  ©N)r  r8   Úmissingr   r¬   r   r   r   r¶  Ê  rU  zSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__N©r8   rG   rH   r¶  r   r   r   r   ÚMÉ  r~   rÏ  c                   @   r   )zKTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNr€   r   r   r   r   r“   Ì  rµ   r“   r¤   c                 S   r  ©r   r   ©r  r   r   r   r   r  Î  r  zTTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.<listcomp>rÍ  )rh   r;   r  r™   ©rA   rÏ  r“   r  r   r   r   Ú(test_classify_class_attrs_with_buggy_dirÈ  ó   z@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dirc                 C   sÀ   G dd„ dt ƒ}dd„ }|tjƒ}|tjƒ}|  t ||¡d|jd fg¡ |  t ||¡d|jd fg¡ G dd„ d|ƒ}|  t ||¡d|jd fg¡ |  t ||¡d|jd fg¡ d S )	Nc                   @   s   e Zd Zeƒ Zeƒ ZdS )z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)r8   rG   rH   r  r…  r  r†  r   r   r   r   r"  Ò  s    
r"  c                    s"   G dd„ dt ƒ‰ ‡ ‡fdd„}|S )Nc                   @   r   )zXTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNr€   r   r   r   r   ÚEmptyÙ  rµ   rÕ  c                    s$   dt | ƒv rtˆ | jƒrdS ˆ| ƒS )Nr8   F)r“  rf   r8   ©rš   ©rÕ  Úpredr   r   r|  Û  s   zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped©rŒ   )rØ  r|  r   r×  r   Úpred_wrapperÖ  s   zITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperr†  r…  c                   @   r   )z>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNr€   r   r   r   r   r#  é  rµ   r#  )rŒ   r;   Úismethoddescriptorrk   r¸   r—   r\  )rA   r"  rÚ  rÛ  rk   r#  r   r   r   Útest_getmembers_descriptorsÑ  s"   

ÿÿÿÿz3TestClassesAndFunctions.test_getmembers_descriptorsc                 C   s€   G dd„ dƒ}|   d|jft |¡¡ |  d|jft |tj¡¡ |ƒ }|   d|jft |¡¡ |   d|jft |tj¡¡ d S )Nc                   @   rz   )z9TestClassesAndFunctions.test_getmembers_method.<locals>.Bc                 S   r0   r   r   r[   r   r   r   rë   ó  r|   z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fN©r8   rG   rH   rë   r   r   r   r   r#  ò  r~   r#  rë   )r˜   rë   r;   r—   r™   rM   )rA   r#  r   r   r   r   Útest_getmembers_methodñ  s    z.TestClassesAndFunctions.test_getmembers_methodc                 C   sL   G dd„ dt ƒ}G dd„ d|d}|  dt |¡¡ |  dt |ƒ ¡¡ d S )Nc                       r™  )zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mc                    rš  )NrÉ   Ú	scrambledr›  )r­   r^  r  r   r   r‰   þ  r  zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__rž  r   r   r  r   rÏ  ý  r   rÏ  c                   @   r¡  )zCTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Ac                 S   r¢  rY   r   r[   r   r   r   rÉ     r4   zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsN)r8   rG   rH   rg   r£  rÉ   r   r   r   r   r"    r¥  r"  r¤   )rÉ   rß  )rÉ   rZ   )rh   r˜   r;   r—   )rA   rÏ  r"  r   r   r   Ú test_getmembers_VirtualAttributeü  s   z8TestClassesAndFunctions.test_getmembers_VirtualAttributec                 C   rË  )	Nc                   @   rz   )zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.Mc                 S   r´  rÌ  r   r¬   r   r   r   r¶    rU  zITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__NrÎ  r   r   r   r   rÏ  
  r~   rÏ  c                   @   r   )zATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNr€   r   r   r   r   r“     rµ   r“   r¤   c                 S   r  rÐ  r   rÑ  r   r   r   r    r  zJTestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.<listcomp>rÍ  )rh   r;   r—   r™   rÒ  r   r   r   Útest_getmembers_with_buggy_dir	  rÔ  z6TestClassesAndFunctions.test_getmembers_with_buggy_dirc                 C   sÊ  dt dtfdd„}|  t |¡t tdœ¡ dddœ|_|  t |¡dddœ¡ |  tj|dtƒ d	|tdœ¡ |  tj|dtƒ d
|tdœ¡ t}|  t |¡t tdœ¡ |  t |j¡t tdœ¡ |  t |j	¡t t|jdœ¡ |  t |j
¡t d|j|jdœ¡ |  t |j¡ddddœ¡ |  t t¡i ¡ |  t |j¡i ¡ |  t |j¡i ¡ |  tj|ddt tdœ¡ |  tj|jddt tdœ¡ |  tj|j	ddt t|jdœ¡ |  tj|j
ddt t|j|jdœ¡ |  tj|jddt t|jdœ¡ |  tjtddi ¡ |  tj|jddi ¡ |  tj|jddi ¡ |  tj|ddt tdœ¡ |  tj|jddt tdœ¡ |  tj|j	ddt t|jdœ¡ |  tj|j
ddt d|j|jdœ¡ |  tj|jddddddœ¡ |  tjtddi ¡ |  tj|jddi ¡ |  tj|jddi ¡ dd„ }||j	ƒ}|  |ddƒ| dd¡¡ |  |j|j	j¡ |  t |¡t t|jdœ¡ |  tj|ddt t|jdœ¡ |  tj|ddt t|jdœ¡ d S )Nr   r   c                 S   r0   r   r   r   r   r   r   r#     r„   zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foor   r#   r-  T©Úeval_strræ   ©rã  Úglobals©r   r   r^  ©r   r   r   r^  rª   ÚMyClass©r   r   r   ©rã  Fc                    ó   t  ˆ ¡‡ fdd„ƒ}|S )Nc                    ó   ˆ | d |d ƒS r  r   r   ©r<  r   r   Úwrapper9  ó   ziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper©rr   rM  ©r<  rî  r   rí  r   Útimes_three8  ó   zXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_threer!   rš   rÎ   Úxxx)rª   r-  r¸   r;   Úget_annotationsr`  ræ   r   rè  r×   Ú	function2Ú	function3ÚUnannotatedClassÚunannotated_functionÚassertIsNotÚ__globals__)rA   r#   Úisarò  r|  r   r   r   Ú+test_get_annotations_with_stock_annotations  sL     ""&""& 
 $zCTestClassesAndFunctions.test_get_annotations_with_stock_annotationsc                 C   sb  t }|  t |¡dddœ¡ |  t |j¡dddœ¡ |  t |j¡ddddœ¡ |  t |j¡dddddœ¡ |  t |j¡ddd	d
œ¡ |  t |j¡i ¡ |  t |j	¡i ¡ |  tj|ddt
tdœ¡ |  tj|jddt
tdœ¡ |  tj|jddt
t|jdœ¡ |  tj|jddt
d|j|jdœ¡ |  tj|jdddddd
œ¡ |  tj|jddi ¡ |  tj|j	ddi ¡ |  tj|dddddœ¡ |  tj|jdddddœ¡ |  tj|jddddddœ¡ |  tj|jdddddddœ¡ |  tj|jddddd	d
œ¡ |  tj|jddi ¡ |  tj|j	ddi ¡ t}|  t |¡i ¡ |  tj|ddi ¡ |  tj|ddi ¡ dd„ }||jƒ}|  |ddƒ| dd¡¡ |  |j|jj¡ |  t |¡ddddœ¡ |  tj|ddt
t|jdœ¡ |  tj|ddddddœ¡ |  t |j¡ddi¡ |  tj|jdddt
i¡ d S )Nrª   r-  r   rè  ræ  ú'str'rç  ú'int'ú	'MyClass'ré  Trê  Fc                    rë  )Nc                    rì  r  r   r   rí  r   r   rî  e  rï  znTestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three.<locals>.wrapperrð  rñ  r   rí  r   rò  d  ró  z]TestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_threer!   rš   rÎ   rô  Zmytype)r   r¸   r;   rõ  rè  r×   rö  r÷  rø  rù  rª   r-  r   rú  rû  ZMyClassWithLocalAnnotations)rA   rü  Zisa2rò  r|  r   r   r   Ú0test_get_annotations_with_stringized_annotationsE  sF   "&  " 
  zHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations)NNNN)"r8   rG   rH   r&  r1  r8  r@  rF  rU  r]  rb  rÀ   rm  r   rl  r   rq  rs  ry  r}  r  r˜  r§  r°  r»  rÀ  rÊ  rÓ  rÜ  rÞ  rà  rá  rý  r  r   r   r   r   r!  C  s\    
ÿ
ü(	ÿ
ÿÿQ
#	 	3r!  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestIsDataDescriptorc                 C   sŒ   G dd„ dƒ}G dd„ dƒ}G dd„ dƒ}G dd„ dƒ}|   t |ƒ ¡d	¡ |  t |ƒ ¡d
¡ |  t |ƒ ¡d¡ |  t |ƒ ¡d¡ d S )Nc                   @   s   e Zd Zddd„ZdS )zGTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptorNc                 S   r0   r   r   )rA   Úvaluerh   r   r   r   r  z  r„   zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__r   ©r8   rG   rH   r  r   r   r   r   ÚNonDataDescriptory  ó    r  c                   @   rz   )zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0c                 S   r0   r   r   )rA   r^  r  r   r   r   r  |  r„   zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__N©r8   rG   rH   r  r   r   r   r   ÚDataDescriptor0{  r~   r  c                   @   rz   )zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1c                 S   r0   r   r   rœ  r   r   r   Ú
__delete__~  r„   zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__N)r8   rG   rH   r	  r   r   r   r   ÚDataDescriptor1}  r~   r
  c                   @   s   e Zd ZdZdS )zETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nr  r   r   r   r   Ú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)r@   r;   rk   r7   )rA   r  r  r
  r  r   r   r   Útest_custom_descriptorsx  s    ÿÿÿÿz,TestIsDataDescriptor.test_custom_descriptorsc                 C   ó&   G dd„ dƒ}|   t |j¡d¡ d S )Nc                   @   rŽ   )z/TestIsDataDescriptor.test_slot.<locals>.Slotted©r#   Nr‘   r   r   r   r   ÚSlotted‹  r”   r  za slot is a data descriptor)r7   r;   rk   r#   )rA   r  r   r   r   Ú	test_slotŠ  s   ÿzTestIsDataDescriptor.test_slotc                 C   r  )Nc                   @   ó   e Zd Zedd„ ƒZdS )z6TestIsDataDescriptor.test_property.<locals>.Propertiedc                 S   r0   r   r   r[   r   r   r   Ú
a_property’  r4   zATestIsDataDescriptor.test_property.<locals>.Propertied.a_propertyN)r8   rG   rH   rO  r  r   r   r   r   Ú
Propertied‘  r³   r  za property is a data descriptor)r7   r;   rk   r  )rA   r  r   r   r   Útest_property  s   ÿz"TestIsDataDescriptor.test_propertyc                 C   sŠ   G dd„ dt ƒ}dd„ }dd„ }|  t |ƒ j¡d¡ |  t |ƒ j¡d¡ |  t |ƒ j¡d	¡ |  t |¡d
¡ |  t |¡d¡ d S )Nc                   @   s,   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdS )z1TestIsDataDescriptor.test_functions.<locals>.Testc                 S   r0   r   r   r[   r   r   r   Úinstance_methodš  r„   zATestIsDataDescriptor.test_functions.<locals>.Test.instance_methodc                 S   r0   r   r   r¬   r   r   r   Úclass_method›  r|   z>TestIsDataDescriptor.test_functions.<locals>.Test.class_methodc                   S   r0   r   r   r   r   r   r   Ústatic_method  r|   z?TestIsDataDescriptor.test_functions.<locals>.Test.static_methodN)r8   rG   rH   r  rƒ  r  r‚  r  r   r   r   r   ÚTest™  s    
r  c                   S   r0   r   r   r   r   r   r   r×   Ÿ  r|   z5TestIsDataDescriptor.test_functions.<locals>.functionc                   S   r0   r   r   r   r   r   r   rƒ   ¡  r„   z5TestIsDataDescriptor.test_functions.<locals>.<lambda>z*a instance method is not a data descriptorz'a class method is not a data descriptorz(a static method is not a data descriptorz#a function is not a data descriptorz!a lambda is not a data descriptor)rŒ   r@   r;   rk   r  r  r  )rA   r  r×   Za_lambdar   r   r   Útest_functions˜  s$   ÿÿÿÿÿz#TestIsDataDescriptor.test_functionsN)r8   rG   rH   r  r  r  r  r   r   r   r   r  v  s
    r  c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestGetClosureVarsc                 C   óV   dd„ }t ƒ }d|i}dti}dti}dh}t ||||¡}|  t ||ƒ¡|¡ d S )Nc                    ó   ‡ fdd„}|S )Nc                    ó   t | ˆ ttƒ d S r   ©ÚprintÚ_global_refÚunbound_ref©Z	local_ref©Únonlocal_refr   r   rì   ´  ó   z=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.gr   ©r$  rì   r   r#  r   rë   ³  ó   z2TestGetClosureVars.test_name_resolution.<locals>.fr$  r   r  r!  ©rŒ   r   r  r;   ÚClosureVarsr¸   Úgetclosurevars©rA   rë   Ú_argÚnonlocal_varsÚglobal_varsÚbuiltin_varsÚunbound_namesr%  r   r   r   Útest_name_resolution±  s   ÿz'TestGetClosureVars.test_name_resolutionc                 C   r  )Nc                    r  )Nc                 3   s    t | ˆ ttƒ d V  d S r   r  r"  r#  r   r   rì   Â  s   €
z?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.gr   r&  r   r#  r   rë   Á  s   z4TestGetClosureVars.test_generator_closure.<locals>.fr$  r   r  r!  r(  r+  r   r   r   Útest_generator_closureÀ  s   ÿz)TestGetClosureVars.test_generator_closurec                 C   s`   G dd„ dƒ}t ƒ }d|i}dti}dti}dh}t ||||¡}|  t |ƒ  |¡¡|¡ d S )Nc                   @   rz   )z1TestGetClosureVars.test_method_closure.<locals>.Cc                    s   ‡ fdd„}|S )Nc                    r  r   r  r"  r#  r   r   rì   Ò  r%  z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gr   )rA   r$  rì   r   r#  r   rë   Ñ  r'  z3TestGetClosureVars.test_method_closure.<locals>.C.fNrÝ  r   r   r   r   r“   Ð  r~   r“   r$  r   r  r!  )rŒ   r   r  r;   r)  r¸   r*  rë   )rA   r“   r,  r-  r.  r/  r0  r%  r   r   r   Útest_method_closureÏ  s   ÿz&TestGetClosureVars.test_method_closurec                    s¼   dd„ ‰dd„ }dd„ }dd„ }‡ fd	d
„‰ ‡ ‡‡fdd„}|dƒ}|dƒ}||dƒ}ˆ  ˆ|ƒddi¡ ˆ  ˆ|ƒddi¡ ˆ  ˆ|ƒd|dœ¡ ˆ  ˆdd„ dƒƒddi¡ ˆ |ƒ d S )Nc                 S   s   t  | ¡jS r   )r;   r*  Z	nonlocalsrJ  r   r   r   Ú_nonlocal_varsà  ó   z=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varsc                    r  )Nc                    ó   ˆ |  S r   r   ©rÞ   rÖ  r   r   Úaddä  rU  zFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addr   )rš   r8  r   rÖ  r   Ú
make_adderã  r'  z9TestGetClosureVars.test_nonlocal_vars.<locals>.make_adderc                    s   ‡ ‡fdd„S )Nc                    s
   ˆˆ | ƒS r   r   ©rB  ©rA  rÊ  r   r   rƒ   é  ó   
 zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>r   )rÊ  rA  r   r;  r   Úcurryè  r   z4TestGetClosureVars.test_nonlocal_vars.<locals>.curryc                 S   s   | |k S r   r   r   r   r   r   Ú	less_thanë  rU  z8TestGetClosureVars.test_nonlocal_vars.<locals>.less_thanc                    s   ‡ fdd„}|ˆ_ ||ƒS )Nc                    s   ˆ‡ fdd„ƒS )Nc                    s   ˆ ˆ ƒ| ƒS r   r   rÖ  rJ  r   r   rƒ   ñ  r‚   zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>r   rJ  ©ÚlerJ  r   rì   ð  r  z;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g)Úg_ref)r@  rì   )ÚYr?  r   rB  ï  s   z0TestGetClosureVars.test_nonlocal_vars.<locals>.Yc                    s   ˆ  ˆ| ƒdˆ ji¡ d S )Nrë   )r¸   rA  ©rÊ  ©rB  r4  rA   r   r   Úcheck_y_combinatorõ  r@  zATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorr!   r"   r§   rš   r;  c                    s   ‡ fdd„S )Nc                    r6  r   r   r7  rÖ  r   r   rƒ      s    zITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>r   rÖ  r   rÖ  r   rƒ      r‚   z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>rÎ   )r¸   )rA   r9  r=  r>  rE  ZincZadd_twoZgreater_than_fiver   rD  r   Útest_nonlocal_varsÞ  s$   

ÿÿz%TestGetClosureVars.test_nonlocal_varsc                 C   sF   dd„ }t  i i i tƒ ¡}|  t  dd„ ¡|¡ |  t  |¡|¡ d S )Nc                   S   r0   r   r   r   r   r   r   r#     r„   z9TestGetClosureVars.test_getclosurevars_empty.<locals>.fooc                   S   r¢  ©NTr   r   r   r   r   rƒ     r„   z>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>)r;   r)  r:   r¸   r*  )rA   r#   Z_emptyr   r   r   Útest_getclosurevars_empty  s   z,TestGetClosureVars.test_getclosurevars_emptyc                 C   sB   G dd„ dƒ}|   ttjd¡ |   ttjt¡ |   ttji ¡ d S )Nc                   @   r   )z7TestGetClosureVars.test_getclosurevars_error.<locals>.TNr€   r   r   r   r   ÚT  r‚   rI  r!   )rB  rC  r;   r*  r‹   )rA   rI  r   r   r   Útest_getclosurevars_error
  s   z,TestGetClosureVars.test_getclosurevars_errorc                 C   s   d}i }t ||ƒ |d |fS )Nzdef f(): print(path)rë   )r(   )rA   rq  rg  r   r   r   Ú_private_globals  s   
z#TestGetClosureVars._private_globalsc                 C   sD   |   ¡ \}}| dd ¡ t i i dtidh¡}|  t |¡|¡ d S )Nr”  r  r  )rK  Úpopr;   r)  r  r¸   r*  ©rA   rë   rg  r%  r   r   r   Útest_builtins_fallback  ó   z)TestGetClosureVars.test_builtins_fallbackc                 C   sD   |   ¡ \}}ddi|d< t i i ddidh¡}|  t |¡|¡ d S )Nr  r!   r”  r  )rK  r;   r)  r¸   r*  rM  r   r   r   Útest_builtins_as_dict  rO  z(TestGetClosureVars.test_builtins_as_dictc                 C   sB   |   ¡ \}}t|d< t i i dtjidh¡}|  t |¡|¡ d S )Nr”  r  r  )rK  r  r;   r)  r  r¸   r*  rM  r   r   r   Útest_builtins_as_module"  s   z*TestGetClosureVars.test_builtins_as_moduleN)r8   rG   rH   r1  r2  r3  rF  rH  rJ  rK  rN  rP  rQ  r   r   r   r   r  ¯  s    &r  c                   @   s`   e Zd Zddd„Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestGetcallargsFunctionsNc                 C   s@   t |pi |d}td| d |ƒ}td| d |ƒ}|  ||¡ d S )NrC  úfunc(%s)úinspect.getcallargs(func, %s))r–   r6   r¸   )rA   rÊ  Úcall_params_stringÚlocsZr1Zr2r   r   r   ÚassertEqualCallArgs+  s   
ÿz,TestGetcallargsFunctions.assertEqualCallArgsc              
   C   sÐ   t |pi |d}z
td| d |ƒ W n ty& } z|}W Y d }~n
d }~ww |  d¡ z
td| d |ƒ W n tyJ } z|}W Y d }~n
d }~ww |  d¡ |  t|ƒt|ƒ¡ |  t|ƒt|ƒ¡ ~~d S )NrC  rS  zException not raisedrT  )r–   r6   rS  ZfailrÒ   rh   r¸   r-  )rA   rÊ  Zcall_param_stringrV  rê   Zex1Zex2r   r   r   ÚassertEqualException2  s(   €ÿ

ÿ€ÿ
z-TestGetcallargsFunctions.assertEqualExceptionc                 C   s   	 d}t || ƒS )Nzlambda %s: locals())r6   )rA   rx  rq  r   r   r   ÚmakeCallableE  s   z%TestGetcallargsFunctions.makeCallablec                 C   sæ   |   d¡}|  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ d S )Núa, b=1Ú2ú2, 3úa=2zb=3, a=2z2, b=3z*(2,)z*[2]z*(2, 3)z*[2, 3]z	**{"a":2}zb=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)z2, **collections.UserDict(b=3)z b=2, **collections.UserDict(a=3)©rY  rW  ©rA   rë   r   r   r   Ú
test_plainJ  s&   
z#TestGetcallargsFunctions.test_plainc                 C   óV   |   d¡}|  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ d S )Nz
a, b=1, *cr[  r\  ú2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])r^  r_  r   r   r   Útest_varargsa  s   
z%TestGetcallargsFunctions.test_varargsc                 C   sz   |   d¡}|  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |  |d
¡ d S )Nza, b=1, **cr]  z2, b=3, c=4zb=3, a=2, c=4zc=4, **{"a":2, "b":3}z2, c=4, **{"b":3}zb=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_  r   r   r   Ú
test_varkwj  s   
z#TestGetcallargsFunctions.test_varkwc                 C   ra  )Nú**crü   za=1za=1, b=2zc=3, **{"a": 1, "b": 2}z **collections.UserDict(a=1, b=2)z%c=3, **collections.UserDict(a=1, b=2)r^  r_  r   r   r   Útest_varkw_onlyv  s   
z(TestGetcallargsFunctions.test_varkw_onlyc                 C   sœ   |   d¡}|  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d	¡ |   d
¡}|  |d¡ |  |d¡ |  |d¡ d S )Nza=3, *, c, d=2zc=3zc=3, a=3za=2, c=4z4, c=4rü   Ú3za=3zd=4z	*, c, d=2zc=3, d=4zd=4, c=3)rY  rW  rX  r_  r   r   r   Útest_keyword_only€  s   

z*TestGetcallargsFunctions.test_keyword_onlyc                 C   s´   |   d¡}|  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |   d	¡}|  |d¡ |  |d¡ |  |d
¡ |  |d¡ |  |d¡ |  |d¡ d S )Nza, b=2, *f, **gz2, 3, 7z	2, 3, x=8z2, 3, x=8, *[(4,[5,6]), 7]z2, x=8, *[3, (4,[5,6]), 7], y=9zx=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)za, 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_  r   r   r   Útest_multiple_features  s   

z/TestGetcallargsFunctions.test_multiple_featuresc           	      C   sž  |   d¡}|   d¡}|   d¡}|  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ ||fD ]D}|  |d	¡ |  |d
¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ |  |d¡ qI|   d¡}|  |d¡ |  |d¡ |   d¡}|  |d¡ |  |d¡ dd„ }|  td¡ t |¡ W d   ƒ n1 sÊw   Y  dd„ }|  td¡ t |¡ W d   ƒ n1 séw   Y  |  td¡ tjdtjjd d! W d   ƒ n	1 s
w   Y  |  td"¡ tjd#d$d d! W d   ƒ n	1 s)w   Y  |  td%¡ tjd&d'd( W d   ƒ d S 1 sHw   Y  d S ))Nrü   za, brZ  r  r$  z1,x=1r]  zb=3rb  z1, 2, 3, a=1z2, 3, 4, c=5zc=2z2, c=3z	2, 3, c=4z2, c=4, b=3u   **{u"Ï€Î¹": 4}z1, a=2z1, **{"a":2}z	1, 2, b=3re  z1, 2z1, 2, a=1, b=2z	*, a, b=0c                 S   r0   r   r   r_  r   r   r   Úf5×  r„   z0TestGetcallargsFunctions.test_errors.<locals>.f5zmissing 1 required keyword-onlyc                 S   r0   r   r   ré  r   r   r   Úf6Þ  r|   z0TestGetcallargsFunctions.test_errors.<locals>.f6z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesr#   r•   ©ÚkindÚdefaultz%value 5 is not a valid Parameter.kindr   r§   zname must be a str, not a inté{   r;  ©rm  )	rY  rX  rÇ  rC  r;   Zgetcallargsr<  rY  ÚVAR_KEYWORD)	rA   Zf0Úf1Úf2rë   Úf3Úf4rj  rk  r   r   r   Útest_errors¨  sr   




ÿþÿÿÿýÿþÿ$þz$TestGetcallargsFunctions.test_errorsr   )r8   rG   rH   rW  rX  rY  r`  rc  rd  rf  rh  ri  rv  r   r   r   r   rR  )  s    

	
rR  c                       r¼  )ÚTestGetcallargsMethodsc                 C   s"   G dd„ dt ƒ}|| _|ƒ | _d S )Nc                   @   r   )z)TestGetcallargsMethods.setUp.<locals>.FooNr€   r   r   r   r   ÚFooô  rµ   rx  )rŒ   r­   Úinst)rA   rx  r   r   r   rú   ó  s   zTestGetcallargsMethods.setUpc                    s$   t t| ƒj}|d| ƒ| j_| jjS )Nzself, )r  rw  rY  r­   rÎ  ry  )rA   rx  Zmkr  r   r   rY  ù  s   z#TestGetcallargsMethods.makeCallable)r8   rG   rH   rú   rY  r  r   r   r  r   rw  ñ  s    rw  c                       sB   e Zd Z‡ fdd„Zd
‡ fdd„	Zd
‡ fdd„	Zd
dd	„Z‡  ZS )ÚTestGetcallargsUnboundMethodsc                    s   t t| ƒ |¡ | jjS r   )r  rz  rY  r­   rÎ  ©rA   rx  r  r   r   rY    s   z*TestGetcallargsUnboundMethods.makeCallableNc                    ó   t t| ƒj|  |||¡Ž S r   )r  rz  rW  Ú_getAssertEqualParams©rA   rÊ  rU  rV  r  r   r   rW    ó   
ÿz1TestGetcallargsUnboundMethods.assertEqualCallArgsc                    r|  r   )r  rz  rX  r}  r~  r  r   r   rX  	  r  z2TestGetcallargsUnboundMethods.assertEqualExceptionc                 C   s    t |pi | jd}|d| |fS )N)ry  zinst,)r–   ry  r~  r   r   r   r}    s   z3TestGetcallargsUnboundMethods._getAssertEqualParamsr   )r8   rG   rH   rY  rW  rX  r}  r  r   r   r  r   rz  ÿ  s
    rz  c                   @   s¼   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S ).ÚTestGetattrStaticc                 C   s”   G dd„ dt ƒ}|ƒ }|  t |d¡|j¡ |  t |dd ¡|j¡ |  t¡ t |d¡ W d   ƒ n1 s8w   Y  |  t |dd¡d¡ d S )Nc                   @   ó   e Zd Zeƒ ZdS )z+TestGetattrStatic.test_basic.<locals>.ThingN©r8   rG   rH   rŒ   rš   r   r   r   r   ÚThing  r¯  rƒ  rš   rÞ   rÎ   )rŒ   r¸   r;   Úgetattr_staticrš   rB  rN  ©rA   rƒ  Úthingr   r   r   Ú
test_basic  s   ÿzTestGetattrStatic.test_basicc                 C   s@   G dd„ dt ƒ}G dd„ d|ƒ}|ƒ }|  t |d¡|j¡ d S )Nc                   @   r  )z/TestGetattrStatic.test_inherited.<locals>.ThingNr‚  r   r   r   r   rƒ  "  r¯  rƒ  c                   @   r   )z4TestGetattrStatic.test_inherited.<locals>.OtherThingNr€   r   r   r   r   Ú
OtherThing$  rµ   rˆ  rš   ©rŒ   r¸   r;   r„  rš   )rA   rƒ  rˆ  Z	somethingr   r   r   Útest_inherited!  s   z TestGetattrStatic.test_inheritedc                 C   sH   G dd„ dt ƒ}|dƒ}|  t |d¡d¡ |`|  t |d¡d¡ d S )Nc                   @   r²  )z3TestGetattrStatic.test_instance_attr.<locals>.Thingr"   c                 S   s
   || _ d S r   rÖ  ©rA   rš   r   r   r   rÂ   -  ó   
z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__N)r8   rG   rH   rš   rÂ   r   r   r   r   rƒ  +  r·  rƒ  rÎ   rš   r"   r‰  r…  r   r   r   Útest_instance_attr*  s
   z$TestGetattrStatic.test_instance_attrc                 C   s0   G dd„ dt ƒ}|ƒ }|  t |d¡|j¡ d S )Nc                   @   r  )z.TestGetattrStatic.test_property.<locals>.Thingc                 S   rR  ©NzI'm pretending not to existrM  r[   r   r   r   rš   6  s   z0TestGetattrStatic.test_property.<locals>.Thing.xN)r8   rG   rH   rO  rš   r   r   r   r   rƒ  5  r³   rƒ  rš   r‰  r…  r   r   r   r  4  s   zTestGetattrStatic.test_propertyc                    sH   G dd„ dt ƒ}|ƒ ‰ G ‡ fdd„dt ƒ}|ƒ }|  t |d¡ˆ ¡ d S )Nc                   @   rz   )zKTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorc                  W   rR  rŽ  rM  )rr  r   r   r   r  >  rU  zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__Nr  r   r   r   r   Ú
descriptor=  r~   r  c                       s   e Zd Z” ZdS )zFTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingN©r8   rG   rH   rš   r   ©Zdescr   r   rƒ  A  r”   rƒ  rš   )rŒ   r¸   r;   r„  )rA   r  rƒ  r†  r   r‘  r   Ú%test_descriptor_raises_AttributeError<  s
   z7TestGetattrStatic.test_descriptor_raises_AttributeErrorc                 C   s*   G dd„ dt ƒ}|  t |d¡|j¡ d S )Nc                   @   r  )z4TestGetattrStatic.test_classAttribute.<locals>.ThingNr‚  r   r   r   r   rƒ  G  r¯  rƒ  rš   r‰  ©rA   rƒ  r   r   r   Útest_classAttributeF  s   z%TestGetattrStatic.test_classAttributec                 C   s.   G dd„ dt ƒ}|  t |d¡|jd ¡ d S )Nc                   @   s    e Zd Zejdd„ ƒZeƒ ZdS )z;TestGetattrStatic.test_classVirtualAttribute.<locals>.Thingc                 S   s   | j S r   )Ú_xr[   r   r   r   rš   N  ó   z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.xN)r8   rG   rH   rg   r£  rš   rŒ   r•  r   r   r   r   rƒ  M  s    

rƒ  rš   )rŒ   r¸   r;   r„  r\  r“  r   r   r   Útest_classVirtualAttributeL  s   z,TestGetattrStatic.test_classVirtualAttributec                 C   s:   G dd„ dt ƒ}G dd„ d|ƒ}|  t |d¡|j¡ d S )Nc                   @   r  )z>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNr‚  r   r   r   r   rƒ  V  r¯  rƒ  c                   @   r   )zCTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNr€   r   r   r   r   rˆ  X  rµ   rˆ  rš   r‰  ©rA   rƒ  rˆ  r   r   r   Útest_inherited_classattributeU  s   z/TestGetattrStatic.test_inherited_classattributec                 C   s^   G dd„ dt ƒ}|ƒ }|  t |d¡|j¡ |  t |d¡d¡ |`|  t |d¡|j¡ d S )Nc                   @   s   e Zd ZdZdgZdd„ ZdS )z+TestGetattrStatic.test_slots.<locals>.Thingr   rš   c                 S   ó
   d| _ d S ©Nr#   rÖ  r[   r   r   r   rÂ   a  rŒ  z4TestGetattrStatic.test_slots.<locals>.Thing.__init__N)r8   rG   rH   rÞ   r’   rÂ   r   r   r   r   rƒ  ^  s    rƒ  rš   rÞ   r   r‰  r…  r   r   r   Ú
test_slots]  s   zTestGetattrStatic.test_slotsc                 C   s˜   G dd„ dt ƒ}G dd„ dt|d}|  t |d¡d¡ G dd	„ d	|ƒ}G d
d„ dt|d}|  t |d¡d¡ G dd„ d|ƒ}|  t |d¡d¡ d S )Nc                   @   rŽ   )z.TestGetattrStatic.test_metaclass.<locals>.metar#   N)r8   rG   rH   rˆ   r   r   r   r   Úmetak  r”   r  c                   @   r   )z/TestGetattrStatic.test_metaclass.<locals>.ThingNr€   r   r   r   r   rƒ  m  rµ   rƒ  r¤   rˆ   r#   c                   @   r   )z-TestGetattrStatic.test_metaclass.<locals>.subNr€   r   r   r   r   Úsubq  rµ   rž  c                   @   rŽ   )z4TestGetattrStatic.test_metaclass.<locals>.OtherThingrÎ   Nr  r   r   r   r   rˆ  s  r”   rˆ  c                   @   r   )z9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNr€   r   r   r   r   ÚOtherOtherThingw  rµ   rŸ  rš   rÎ   ©rh   rŒ   r¸   r;   r„  )rA   r  rƒ  rž  rˆ  rŸ  r   r   r   Útest_metaclassj  s   z TestGetattrStatic.test_metaclassc                 C   s.   |   t ddd ¡d ¡ |  t dd¡d ¡ d S )Nr!   r#   Úlower)r¸   r;   r„  ÚassertNotEqualr[   r   r   r   Útest_no_dict_no_slots|  s   z'TestGetattrStatic.test_no_dict_no_slotsc                 C   sL   t tdd}|  t |d¡t|ƒj¡ W d   ƒ d S 1 sw   Y  d S )Nrñ   rò   r^  )rô   rÖ   r¸   r;   r„  rh   r^  )rA   Úhandler   r   r   Ú%test_no_dict_no_slots_instance_member€  s   "ÿz7TestGetattrStatic.test_no_dict_no_slots_instance_memberc                 C   s<   G dd„ dt ƒ}G dd„ d|ƒ}|  t |ƒ d¡|j¡ d S )Nc                   @   s   e Zd ZdgZdd„ ZdS )z5TestGetattrStatic.test_inherited_slots.<locals>.Thingrš   c                 S   rš  r›  rÖ  r[   r   r   r   rÂ   ‰  rŒ  z>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__N)r8   rG   rH   r’   rÂ   r   r   r   r   rƒ  ‡  s    rƒ  c                   @   r   )z:TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNr€   r   r   r   r   rˆ  Œ  rµ   rˆ  rš   r‰  r˜  r   r   r   Útest_inherited_slots…  s   z&TestGetattrStatic.test_inherited_slotsc                    sp   G dd„ dt ƒ‰ G ‡ fdd„dt ƒ}|ƒ }d|jd< |  t |d¡d¡ dd„ ˆ _|  t |d¡|jd ¡ d S )	Nc                   @   rz   )z5TestGetattrStatic.test_descriptor.<locals>.descriptorc                 S   r¢  r  r   ©rA   ÚinstanceÚownerr   r   r   r  ”  r|   z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__Nr  r   r   r   r   r  “  r~   r  c                       r­  )z.TestGetattrStatic.test_descriptor.<locals>.FooN©r8   rG   rH   ré   r   ©r  r   r   rx  –  r¯  rx  r!   ré   c                 S   r0   r   r   )r~  r*   Úvr   r   r   rƒ   ¡  r„   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>)rŒ   r\  r¸   r;   r„  r  ©rA   rx  r#   r   r¬  r   Útest_descriptor’  s   

z!TestGetattrStatic.test_descriptorc                    sV   G dd„ dt ƒ‰ G ‡ fdd„dtƒ}G dd„ dt |d}|  t |d¡|jd ¡ d S )	Nc                   @   rz   )zDTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorc                 S   r¢  r  r   r¨  r   r   r   r  §  r|   zLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__Nr  r   r   r   r   r  ¦  r~   r  c                       r­  )z>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNr«  r   r¬  r   r   r  ©  r¯  r  c                   @   r   )z?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNr€   r   r   r   r   rƒ  «  rµ   rƒ  r¤   ré   )rŒ   rh   r¸   r;   r„  r\  )rA   r  rƒ  r   r¬  r   Útest_metaclass_with_descriptor¥  s   z0TestGetattrStatic.test_metaclass_with_descriptorc                 C   s^   G dd„ dt ƒ}G dd„ d|ƒ}|ƒ }|  t |d¡d¡ |  |j¡ |  t |d¡d¡ d S )Nc                   @   rŽ   )z6TestGetattrStatic.test_class_as_property.<locals>.BaserÎ   Nr¡   r   r   r   r   ÚBase±  r”   r±  c                   @   s   e Zd ZdZedd„ ƒZdS )z;TestGetattrStatic.test_class_as_property.<locals>.SomethingFc                 S   s
   d| _ tS rG  )ÚexecutedrŒ   r[   r   r   r   r  ¶  ó   zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__N)r8   rG   rH   r²  rO  r  r   r   r   r   Ú	Something´  s    r´  r#   rÎ   )rŒ   r¸   r;   r„  r@   r²  )rA   r±  r´  r©  r   r   r   Útest_class_as_property°  s   z(TestGetattrStatic.test_class_as_propertyc                 C   sb   G dd„ dt ƒ}G dd„ dtƒ}G dd„ d||d}|  t |ƒ d¡d	¡ |  t |d¡d	¡ d S )
Nc                   @   r  )z4TestGetattrStatic.test_mro_as_property.<locals>.Metac                 S   s   t fS r   rÙ  r[   r   r   r   Ú__mro__Â  r–  z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__N)r8   rG   rH   rO  r¶  r   r   r   r   rŸ  Á  r³   rŸ  c                   @   rŽ   )z4TestGetattrStatic.test_mro_as_property.<locals>.BaserÎ   Nr¡   r   r   r   r   r±  Æ  r”   r±  c                   @   r   )z9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNr€   r   r   r   r   r´  É  rµ   r´  r¤   r#   rÎ   r   )rA   rŸ  r±  r´  r   r   r   Útest_mro_as_propertyÀ  s
   z&TestGetattrStatic.test_mro_as_propertyc                    sN   | ‰ dˆ _ G ‡ fdd„dtƒ}|ƒ }d|_|  t |d¡d¡ |  ˆ j ¡ d S )NFc                       s    e Zd ZdZe‡ fdd„ƒZdS )z4TestGetattrStatic.test_dict_as_property.<locals>.FoorÎ   c                    s
   dˆ _ i S rG  )Úcalledr[   ©rV  r   r   r\  Õ  r³  z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N)r8   rG   rH   r   rO  r\  r   r¹  r   r   rx  Ó  s    rx  r;  r   rÎ   )r¸  r–   r   r¸   r;   r„  r@   r®  r   r¹  r   Útest_dict_as_propertyÏ  s   z'TestGetattrStatic.test_dict_as_propertyc                    s`   | ‰ dˆ _ G ‡ fdd„dtƒ}G dd„ dtƒ}|ƒ }|ƒ |_|  t |d¡d¡ |  ˆ j ¡ d S )NFc                       s    e Zd Zd‡ ‡fdd„	Z‡  ZS )z9TestGetattrStatic.test_custom_object_dict.<locals>.CustomNc                    s   dˆ_ tƒ  ||¡ d S rG  )r¸  r  Úget)rA   Úkeyrn  )r  rV  r   r   r»  ä  s   z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getr   )r8   rG   rH   r»  r  r   r¹  r  r   ÚCustomã  s    r½  c                   @   rŽ   )z6TestGetattrStatic.test_custom_object_dict.<locals>.FoorÎ   N)r8   rG   rH   r   r   r   r   r   rx  è  r”   rx  r   rÎ   )r¸  r–   rŒ   r\  r¸   r;   r„  r@   )rA   r½  rx  r#   r   r¹  r   Útest_custom_object_dictß  s   z)TestGetattrStatic.test_custom_object_dictc                 C   sL   G dd„ dt ƒ}G dd„ d|d}|ƒ }|  t |d¡d¡ |  |j¡ d S )Nc                   @   r  )z?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.Metac                 S   rš  rG  )r²  r[   r   r   r   r\  ñ  s   
zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__N©r8   rG   rH   rO  r\  r   r   r   r   rŸ  ð  r³   rŸ  c                   @   r²  )z@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFc                 S   rš  ©Nr•   ©rZ   r[   r   r   r   rÂ   ø  rŒ  zITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__N)r8   rG   rH   r²  rÂ   r   r   r   r   rƒ  õ  s    rƒ  r¤   rZ   r•   )rh   r¸   r;   r„  r@   r²  )rA   rŸ  rƒ  r©  r   r   r   Útest_metaclass_dict_as_propertyï  s
   z1TestGetattrStatic.test_metaclass_dict_as_propertyc                 C   s    t ƒ }|  t td|¡|¡ d S )NÚversion)rŒ   rú  r;   r„  rd   )rA   Úsentinelr   r   r   Útest_moduleÿ  s   ÿzTestGetattrStatic.test_modulec                 C   s|   G dd„ dt ƒ}G dd„ dt |d}G dd„ d|d}|  t¡ t |d¡ W d   ƒ n1 s1w   Y  |  |j¡ d S )	Nc                   @   r  )zWTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetac                 S   s   d| _ tddS )NTr•   rÁ  )r²  r–   r[   r   r   r   r\    s   
z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__Nr¿  r   r   r   r   ÚMetaMeta  r³   rÆ  c                   @   rŽ   )zSTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)r8   rG   rH   r²  r   r   r   r   rŸ    r”   rŸ  r¤   c                   @   r   )zTTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNr€   r   r   r   r   rƒ    rµ   rƒ  rZ   )rh   rB  rN  r;   r„  r@   r²  )rA   rÆ  rŸ  rƒ  r   r   r   Ú3test_metaclass_with_metaclass_with_dict_as_property  s   ÿzETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_propertyN)r8   rG   rH   r‡  rŠ  r  r  r’  r”  r—  r™  rœ  r¡  r¤  r¦  r§  r¯  r°  rµ  r·  rº  r¾  rÂ  rÅ  rÇ  r   r   r   r   r€    s.    	

	r€  c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTestGetGeneratorStatec                 C   s   dd„ }|ƒ | _ d S )Nc                  s   ó    t dƒD ]} | V  qd S ©Nr§   rT   ©Znumberr   r   r   Únumber_generator  rW   z5TestGetGeneratorState.setUp.<locals>.number_generator)Ú	generator)rA   rÌ  r   r   r   rú     s   zTestGetGeneratorState.setUpc                 C   ó   t  | j¡S r   )r;   ZgetgeneratorstaterÍ  r[   r   r   r   Ú_generatorstate  r5  z%TestGetGeneratorState._generatorstatec                 C   ó   |   |  ¡ tj¡ d S r   )r¸   rÏ  r;   ZGEN_CREATEDr[   r   r   r   Útest_created   rl  z"TestGetGeneratorState.test_createdc                 C   s    t | jƒ |  |  ¡ tj¡ d S r   )ÚnextrÍ  r¸   rÏ  r;   ZGEN_SUSPENDEDr[   r   r   r   Útest_suspended#  s   
z$TestGetGeneratorState.test_suspendedc                 C   s"   | j D ]}q|  |  ¡ tj¡ d S r   )rÍ  r¸   rÏ  r;   Ú
GEN_CLOSEDrU   r   r   r   Útest_closed_after_exhaustion'  s   
z2TestGetGeneratorState.test_closed_after_exhaustionc                 C   óL   |   t¡ | j t¡ W d   ƒ n1 sw   Y  |  |  ¡ tj¡ d S r   )rB  r  rÍ  r1   r¸   rÏ  r;   rÔ  r[   r   r   r   Ú%test_closed_after_immediate_exception,  ó   ÿz;TestGetGeneratorState.test_closed_after_immediate_exceptionc                    s,   ‡ fdd„}|ƒ ˆ _ tˆ j ƒ tˆ j ƒ d S )Nc                  3   s>    t dƒD ]} ˆ  ˆ  ¡ tj¡ | V  ˆ  ˆ  ¡ tj¡ qd S rÊ  )r$   r¸   rÏ  r;   ZGEN_RUNNINGrË  r[   r   r   Úrunning_check_generator6  s   €ýzCTestGetGeneratorState.test_running.<locals>.running_check_generator)rÍ  rÒ  )rA   rÙ  r   r[   r   Útest_running1  s   
z"TestGetGeneratorState.test_runningc                 C   ó@   d  ¡ }|D ]}tt|ƒ}|  |t|ƒ¡ |  |t|ƒ¡ qd S )Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSED©rý   r•  r;   r˜   Úreprr-  ©rA   Únamesr^  Ústater   r   r   Útest_easy_debuggingA  ó   
ýz)TestGetGeneratorState.test_easy_debuggingc              	   C   sâ   ddd„}|g d¢ƒ}|   t |¡d g d¢dœ¡ t|ƒ |   t |¡d g d¢dddœ¡ t|ƒ |   t |¡d g d¢dddœ¡ t|ƒ |   t |¡d g d¢ddd	d
œ¡ zt|ƒ W n	 tye   Y nw |   t |¡i ¡ d S )Nc                 s   s&    d}| D ]}|dkrd}|V  qd S )NrE  rÎ   rj  r   )Úlstr   r   r­  r   r   r   r   ÚeachJ  s   €ýz;TestGetGeneratorState.test_getgeneratorlocals.<locals>.eachrE  )r   rã  r!   )r   rã  r­  r   r"   rÎ   rj  )r   rã  r­  r   r   r   ©r¸   r;   ÚgetgeneratorlocalsrÒ  ÚStopIteration)rA   rä  Znumbersr   r   r   Útest_getgeneratorlocalsI  s:   
ÿ
ÿÿ
ÿÿ
ÿÿÿz-TestGetGeneratorState.test_getgeneratorlocalsc                 C   sV   dd„ }|ƒ }|   t |¡i ¡ zt|ƒ W n	 ty   Y nw |   t |¡i ¡ d S )Nc                   s   s    dV  d S rq   r   r   r   r   r   Ú	yield_oneg  s   €
zFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_onerå  )rA   ré  rÁ  r   r   r   Útest_getgeneratorlocals_emptyf  s   ÿz3TestGetGeneratorState.test_getgeneratorlocals_emptyc                 C   sH   |   ttjd¡ |   ttjdd„ ¡ |   ttjt¡ |   ttjd¡ d S )Nr!   c                 S   r¢  rG  r   rÖ  r   r   r   rƒ   s  r„   zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>)r"   rÎ   )rB  rC  r;   ræ  r:   r[   r   r   r   Útest_getgeneratorlocals_errorq  s   z3TestGetGeneratorState.test_getgeneratorlocals_errorN)r8   rG   rH   rú   rÏ  rÑ  rÓ  rÕ  r×  rÚ  rá  rè  rê  rë  r   r   r   r   rÈ    s    rÈ  c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestGetCoroutineStatec                    s&   t jdd„ ƒ‰ ‡ fdd„}|ƒ | _d S )Nc                  s   rÉ  rÊ  rT   rË  r   r   r   Únumber_coroutine{  s   €ÿz5TestGetCoroutineState.setUp.<locals>.number_coroutinec                   “   s   ˆ ƒ I d H  d S r   r   r   ©rí  r   r   Ú	coroutine  s   €z.TestGetCoroutineState.setUp.<locals>.coroutine)rg   rï  )rA   rï  r   rî  r   rú   z  s   
zTestGetCoroutineState.setUpc                 C   s   | j  ¡  d S r   )rï  rt   r[   r   r   r   r  ƒ  r   zTestGetCoroutineState.tearDownc                 C   rÎ  r   )r;   Zgetcoroutinestaterï  r[   r   r   r   Ú_coroutinestate†  r5  z%TestGetCoroutineState._coroutinestatec                 C   rÐ  r   )r¸   rð  r;   ZCORO_CREATEDr[   r   r   r   rÑ  ‰  rl  z"TestGetCoroutineState.test_createdc                 C   s"   | j  d ¡ |  |  ¡ tj¡ d S r   )rï  Úsendr¸   rð  r;   ZCORO_SUSPENDEDr[   r   r   r   rÓ  Œ  s   z$TestGetCoroutineState.test_suspendedc                 C   s>   	 z| j  d ¡ W n	 ty   Y qw q|  |  ¡ tj¡ d S rG  )rï  rñ  rç  r¸   rð  r;   ÚCORO_CLOSEDr[   r   r   r   rÕ    s   ÿýz2TestGetCoroutineState.test_closed_after_exhaustionc                 C   rÖ  r   )rB  r  rï  r1   r¸   rð  r;   rò  r[   r   r   r   r×  ™  rØ  z;TestGetCoroutineState.test_closed_after_immediate_exceptionc                 C   rÛ  )Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSEDrÜ  rÞ  r   r   r   rá  ž  râ  z)TestGetCoroutineState.test_easy_debuggingc                    sh   t jdd„ ƒ‰ ˆ ƒ ‰ d‡ fdd„	}|ƒ }|  t |¡d ˆ dœ¡ | d ¡ |  t |¡d ˆ ddœ¡ d S )	Nc                   s   rx   r   r   r   r   r   r   Úgencoro§  s   €
z>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroc                 “   s   d}ˆ I d H  d S rY   r   r   ©ró  r   r   rÊ  ¬  s   €z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func)r   ró  rZ   )r   ró  r   r   )rg   rï  r¸   r;   Zgetcoroutinelocalsrñ  )rA   rÊ  rv   r   rô  r   Útest_getcoroutinelocals¦  s   
ÿ

ÿz-TestGetCoroutineState.test_getcoroutinelocalsN)r8   rG   rH   rú   r  rð  rÑ  rÓ  rÕ  r×  rá  rõ  r   r   r   r   rì  x  s    		rì  c                   @   r   )ÚMySignatureNr€   r   r   r   r   rö  ¸  ó    rö  c                   @   r   )ÚMyParameterNr€   r   r   r   r   rø  ½  r÷  rø  c                   @   s¸  e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zee ed¡dd„ ƒƒZee ed¡dd„ ƒƒZedd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Z d4d5„ Z!e ed¡d6d7„ ƒZ"e ed¡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 ed¡dNdO„ ƒZ.dPdQ„ Z/dRdS„ Z0dTdU„ Z1dVdW„ Z2dXdY„ Z3dZS )[ÚTestSignatureObjectc                 K   sB   t j| fi |¤Ž}tdd„ |j ¡ D ƒƒ|j|ju rdfS |jfS )Nc                 s   sL    | ]!}|j |j|ju rd n|j|j|ju rd n|jt|jƒ ¡ fV  qdS ).N)r^  rn  ÚemptyÚ
annotationr-  rm  r¢  )r  Úparamr   r   r   Ú	<genexpr>È  s   € ûüz0TestSignatureObject.signature.<locals>.<genexpr>.)r;   rx  Útupler)   ÚvaluesÚreturn_annotationrú  )rÊ  ÚkwÚsigr   r   r   rx  Å  s   ûúùzTestSignatureObject.signaturec                 C   sÎ  t j}t j}|  t|ƒ ƒd¡ |  t|ƒ jƒd¡ ddd„}t  |¡}|jd j|j	d}|jd	 j|j	d}|jd
 }|jd }|jd }	|jd }
|jd }||||	|
|fƒ |  
td¡ ||||	|
|fƒ W d   ƒ n1 ssw   Y  |  
td¡ |||	||
|fƒ W d   ƒ n1 s’w   Y  |  
td¡ ||	|||
|fƒ W d   ƒ n1 s±w   Y  |  
td¡ ||||	||
fƒ W d   ƒ n1 sÐw   Y  |jdd}|  
td¡ ||||	||
fƒ W d   ƒ n1 sõw   Y  |  
td¡ |||fƒ W d   ƒ n	1 sw   Y  |  
td¡ ||||fƒ W d   ƒ n	1 s0w   Y  |  
td¡ |||fƒ W d   ƒ n	1 sMw   Y  |  t|ƒ d¡¡ |  dt|ƒv ¡ d S )Nú()zmappingproxy(OrderedDict())r•   éd   c                _   r0   r   r   )ÚpoÚpkÚpodÚpkdÚkor   rÆ   r   r   r   rV  Ø  r|   z7TestSignatureObject.test_signature_object.<locals>.testr  rp  r  r  r  r   r	  rÆ   zwrong parameter order©r^  zduplicate parameter namezfollows default argumentz
<Signaturez(po, pk)r•   r  )r;   r[  rY  r¸   r-  rÝ  r)   rx  ÚreplacerZ  rÇ  r<  r7   rE  )rA   ÚSÚPrV  r  r  r  r  r  r   r	  rÆ   Zkwargs2r   r   r   Útest_signature_objectÑ  sR   






ÿÿÿÿÿÿÿÿz)TestSignatureObject.test_signature_objectc           	   	   C   s„  i dœdddddifdd„}t j|dd	}t |¡}ttjd ƒD ](}| j|d
d t t 	||¡¡}|  
||¡ W d   ƒ q!1 sDw   Y  q!t |¡}tdtjjd}tj|j|d	}tƒ j| ¡ |jd}|  t|tƒ¡ |  t|jd tƒ¡ ttjd ƒD ];}| j|dd* t t 	||¡¡}|  
||¡ |  t|tƒ¡ |  t|jd tƒ¡ W d   ƒ q„1 sºw   Y  q„d S )N©r   r   r!   r^  r•   rH  c                [   r0   r   r   ©r   r   r   r  r   r   r   r#   	  r„   z=TestSignatureObject.test_signature_object_pickle.<locals>.foor_  F)Ú
pickle_verÚsubclassr    )r^  rm  )r)   r   T)rr   rs   r;   rx  r$   ÚpickleÚHIGHEST_PROTOCOLÚsubTestÚloadsÚdumpsr¸   rø  rY  rZ  ÚcollectionsÚOrderedDictr)   rö  r  rÿ  r   r7   r–  )	rA   r#   Zfoo_partialr  ÚverZsig_pickledZmyparamZmyparamsZmysigr   r   r   Útest_signature_object_pickle	  s4   
þ
ÿÿüÿz0TestSignatureObject.test_signature_object_picklec                 C   s|   dd„ }t  |¡}|  t¡ d|_W d   ƒ n1 sw   Y  |  t¡ d |jd< W d   ƒ d S 1 s7w   Y  d S )Nc                 S   r0   r   r   r_  r   r   r   rV  	  r|   z=TestSignatureObject.test_signature_immutability.<locals>.testr   r   )r;   rx  rB  rN  r#   rC  r)   ©rA   rV  r  r   r   r   Útest_signature_immutability	  s   
ÿ"ÿz/TestSignatureObject.test_signature_immutabilityc                 C   s   dd„ }|   |  |¡d¡ d S )Nc                   S   r0   r   r   r   r   r   r   rV  )	  r|   z9TestSignatureObject.test_signature_on_noarg.<locals>.test©r   .©r¸   rx  ©rA   rV  r   r   r   Útest_signature_on_noarg(	  s   z+TestSignatureObject.test_signature_on_noargc                 C   s    ddd„}|   |  |¡d¡ d S )	Nr   r#   r^  ro  c                 S   r0   r   r   r   r   r   r   rV  .	  r|   z9TestSignatureObject.test_signature_on_wargs.<locals>.test))©r   ..Úpositional_or_keyword)r   .r#   r#  ro  )r   r#   r^  ro  r  r   r   r   r   Útest_signature_on_wargs-	  s   
ÿz+TestSignatureObject.test_signature_on_wargsc                 C   sD   dt dtdtfdd„}|  |  |¡ddt dfddtdfftf¡ d S )Nr   r   r^  c                 S   r0   r   r   r   r   r   r   rV  6	  r|   z;TestSignatureObject.test_signature_on_wkwonly.<locals>.test.Úkeyword_only)Úfloatr-  rª   r¸   rx  r   r   r   r   Útest_signature_on_wkwonly5	  s   

ÿþÿz-TestSignatureObject.test_signature_on_wkwonlyc                 C   sP   dddœdddddd	d
t fdd„}|  |  |¡dddddd
dt dffdf¡ d S )Nr~  ro  )rH  r   r#   r   r   rZ   ÚbazrÆ   c                _   r0   r   r   )r   r   rZ   rH  r   rÆ   r   r   r   rV  >	  r|   z@TestSignatureObject.test_signature_on_complex_args.<locals>.testr"  )r   r~  r#   r#  )r   .r   Úvar_positional)rZ   .r(  r%  )rH  ro  .r%  .Úvar_keyword©r~  )rª   r¸   rx  r   r   r   r   Útest_signature_on_complex_args=	  s   "
ûúÿz2TestSignatureObject.test_signature_on_complex_argsc                    sœ   dd„ ‰dd„ ‰ G ‡ ‡fdd„dƒ}|   |  ˆ¡d¡ |   |  ˆ ¡d¡ |   |  |j¡d¡ |   |  |j¡d¡ |   |  |j¡d¡ |   |  |j¡d¡ d S )	Nc                  W   r0   r   r   r  r   r   r   Útest_args_onlyJ	  r|   zGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyc                  _   r0   r   r   ©r   rÆ   r   r   r   Útest_args_kwargs_onlyM	  r|   zNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_onlyc                       sT   e Zd Zedd„ ƒZedd„ ƒZe ed¡Z	e ”d¡Z
e ed¡Ze ” d¡ZdS )z:TestSignatureObject.test_signature_without_self.<locals>.Ac                  W   r0   r   r   r  r   r   r   Útest_classmethodQ	  r4   zKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodc                  W   r0   r   r   r  r   r   r   Útest_staticmethodU	  r4   zLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodr!   N)r8   rG   rH   rƒ  r0  r‚  r1  rr   rN  rr  rs  rt  ru  r   ©r/  r-  r   r   r"  P	  s    

r"  ©)©r   ..r)  .©)r4  ©rÆ   ..r*  .)r¸   rx  rr  rs  rt  ru  r|  r   r2  r   Útest_signature_without_selfI	  s*   ÿÿÿÿÿÿz/TestSignatureObject.test_signature_without_selfrc  c                    s¸  dd l }‡ fdd„}‡ fdd„}||jƒ‰‡fdd„}ˆ  |dƒd	¡ ˆ  |d
ƒd¡ ˆ  |dƒd¡ ˆ  |dƒd¡ ˆ  |dƒd ¡ ˆ  |dƒd¡ ˆ  |dƒd¡ ˆ  |dƒd¡ ˆ  |dƒtj¡ ˆ  dˆj¡ |tƒ |tj	j
ƒ t 	t ¡ ¡}||j
ƒ |tjƒ |djƒ |tjƒ |i jƒ |tjƒ |tjƒ |djƒ |tjƒ ˆ  td¡ G dd„ dƒ}||ƒ ƒ W d   ƒ n1 sÆw   Y  |tjƒ |tjƒ ||jƒ d S )Nr   c                    s>   	 t  | ¡}ˆ  t|t jƒ¡ ˆ  t|j ¡ ƒd j	d¡ |S ©Nr   rA   )
r;   rx  r7   r–  r[  r¸   r‹   r)   rÿ  r^  ©r   rx  r[   r   r   Útest_unbound_methodr	  s
   
zKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_methodc                    sD   	 t  | ¡}ˆ  t|t jƒ¡ |jr ˆ  t|j ¡ ƒd j	d¡ |S r8  )
r;   rx  r7   r–  r[  r)   r£  r‹   rÿ  r^  r9  r[   r   r   Útest_callabley	  s   
zETestSignatureObject.test_signature_on_builtins.<locals>.test_callablec                    s   ˆ j |  jS r   )r)   rn  r
  )rx  r   r   r+   ‚	  r‚   z9TestSignatureObject.test_signature_on_builtins.<locals>.pr~  rm  r   s   bytesré   g…ëQ¸	@r*   é#   Únr  Trë   FÚlocalrÎ   rd   rC   s   abczno signature foundc                   @   s   e Zd ZeZdS )zDTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)r8   rG   rH   rh   rL  r   r   r   r   ÚThisWorksNowª	  r”   r?  )rn  ro  r¸   rd   Úmaxsizer™   r)   rŒ   rf  rg  rh  ri  ÚStringIOÚbytesÚ	maketransr–   Úfromkeysrh   rL  rª   r‘  ÚminrÇ  r<  Ú__delitem__rO  r	  Z#docstring_with_signature_but_no_doc)rA   rn  r:  r;  r+   ré   r?  r   r{  r   Útest_signature_on_builtinsl	  sD   









ý

z.TestSignatureObject.test_signature_on_builtinsc                 C   sd   dd l }|j}dd„ }||ƒ}|  t |¡t |¡¡ dtfdd„}|  tj|ddt |¡¡ d S )	Nr   c                    s    t  ˆ ¡dtf‡ fdd„ƒ}|S )Nr^  c                     ó   ˆ | i |¤ŽS r   r   r.  rC  r   r   rî  ½	  ó   z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper)rr   rM  rª   ©rÊ  rî  r   rC  r   Ú	decorator¼	  ó   zKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decoratorr^  c                  _   r0   r   r   r.  r   r   r   Úwrapper_likeÇ	  r„   zNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_likeF©Zfollow_wrapped)rn  ro  r¸   r;   rx  rª   )rA   rn  rÊ  rK  Zdecorated_funcrM  r   r   r   Ú$test_signature_on_decorated_builtinsµ	  s   ÿ
ÿþz8TestSignatureObject.test_signature_on_decorated_builtinsc                 C   s|   dd l }|  td¡ t |j¡ W d   ƒ n1 sw   Y  |  td¡ t t¡ W d   ƒ d S 1 s7w   Y  d S )Nr   zno signature found for builtin)rn  rÇ  r<  r;   rx  rr  r-  )rA   rn  r   r   r   Ú'test_signature_on_builtins_no_signatureÌ	  s   ÿþÿ"þz;TestSignatureObject.test_signature_on_builtins_no_signaturec                 C   s<   |   td¡ t d¡ W d   ƒ d S 1 sw   Y  d S )Núis not a callable objectr•   )rÇ  rC  r;   rx  r[   r   r   r   Útest_signature_on_non_function×	  s   "ÿz2TestSignatureObject.test_signature_on_non_functionc                    s  ddœdd„}G dd„ dƒ}t j |¡}t j ||ƒ¡}|  ||¡ t  ||ƒ¡}|  ||¡ ||ƒ}|`|  |  |¡d¡ t j‰ ‡ fdd	„}tj 	d
|¡) ||ƒ}|  
t  |¡¡ d|_|  t  |¡¡ |  t  |¡|¡ W d   ƒ d S 1 szw   Y  d S )NT©Úkwonlyc                _   r0   r   r   ©r   r   rT  Z	kwonlyreqr   rÆ   r   r   r   rÊ  Ü	  r|   zITestSignatureObject.test_signature_from_functionlike_object.<locals>.funcc                   @   rŽ  )zMTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikec                 S   ó2   |j | _ |j| _|j| _|j| _|j| _|| _d S r   ©r8   r]  r`  Ú__defaults__Ú__kwdefaults__rÊ  ©rA   rÊ  r   r   r   rÂ   ä	  ó   
zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__c                 _   ó   | j |i |¤ŽS r   rC  rÅ   r   r   r   rL  ì	  r  zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__N©r8   rG   rH   rÂ   rL  r   r   r   r   Úfunclikeß	  ó    r^  r5  c                    s   t | dƒrdS ˆ | ƒS )NÚ_builtinmockT©rf   )rD   ©Z_orig_isdescr   r   Ú_isdesc
  s   
zLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesczinspect.ismethoddescriptor)r;   r[  Úfrom_callabler¸   rx  rX  rÛ  rÀ   ZmockZpatchr@   r`  r7   )rA   rÊ  r^  Zsig_funcZsig_funclikeZflrc  Zbuiltin_funcr   rb  r   Ú'test_signature_from_functionlike_objectÛ	  s*   ÿ"úz;TestSignatureObject.test_signature_from_functionlike_objectc                    s:   ddœdd„‰ G ‡ fdd„dƒ}|   tt |¡ƒd¡ d S )NTrS  c                _   r0   r   r   rU  r   r   r   rÊ  
  r|   zCTestSignatureObject.test_signature_functionlike_class.<locals>.funcc                       s2   e Zd Zdd„ Z” j Z ” jZ” jZ” jZ” jZdS )zGTestSignatureObject.test_signature_functionlike_class.<locals>.funclikec                 S   r0   r   r   )rA   Zmarkerr   r   r   rÂ   
  r|   zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__N)r8   rG   rH   rÂ   r]  r`  rX  rY  r   rC  r   r   r^  
  s    
r^  z(marker))r¸   r-  r;   rx  )rA   r^  r   rC  r   Ú!test_signature_functionlike_class
  s   
z5TestSignatureObject.test_signature_functionlike_classc                 C   sŽ   G dd„ dƒ}|   |  |ƒ j¡dtf¡ |   |  |ƒ j¡d¡ |   |  |¡d¡ |  td¡ |  |ƒ ¡ W d   ƒ d S 1 s@w   Y  d S )Nc                   @   s4   e Zd Zdd„ Zddefdd„Zdd„ Zd	d
„ ZdS )z:TestSignatureObject.test_signature_on_method.<locals>.Testc                  W   r0   r   r   r  r   r   r   rÂ   %
  r|   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__r!   r^  c                 S   r0   r   r   ©rA   rA  rB  r   r   r   r€  '
  r|   z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1c                  W   r0   r   r   r  r   r   r   Úm2)
  r|   z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2c                 S   r0   r   r   r_  r   r   r   rL  +
  r|   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__Nr  )r8   rG   rH   rÂ   rª   r€  rh  rL  r   r   r   r   r  $
  s
    r  ©©rA  ..r#  )rB  r!   .r#  r3  zinvalid method signature)r¸   rx  r€  rª   rh  rÇ  r<  )rA   r  r   r   r   Útest_signature_on_method#
  s   
þÿÿÿ"ÿz,TestSignatureObject.test_signature_on_methodc                 C   s>   G dd„ dƒ}t  |ƒ j¡dd„ ƒ}|  |  |¡dtf¡ d S )Nc                   @   s   e Zd Zddefdd„ZdS )zETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr!   r^  c                 S   r0   r   r   rg  r   r   r   r€  A
  r|   zHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1Nr  )r8   rG   rH   rª   r€  r   r   r   r   r  @
  r   r  c                  _   r0   r   r   r.  r   r   r   Úm1dC
  r4   zDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dri  )rr   rM  r€  r¸   rx  rª   )rA   r  rl  r   r   r   Ú#test_signature_wrapped_bound_method>
  s   
þÿz7TestSignatureObject.test_signature_wrapped_bound_methodc                 C   óD   G dd„ dƒ}|ƒ j }|  |  |¡d¡ |j }|  |  |¡d¡ d S )Nc                   @   s   e Zd Zeddœdd„ƒZdS )z?TestSignatureObject.test_signature_on_classmethod.<locals>.Testr!   r:  c                S   r0   r   r   )r­   rA  rB  r   r   r   r#   M
  r4   zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooN)r8   rG   rH   rƒ  r#   r   r   r   r   r  L
  s    r  ))rj  )rB  r!   .r%  .©r#   r¸   rx  ©rA   r  Úmethr   r   r   Útest_signature_on_classmethodK
  ó   ÿÿz1TestSignatureObject.test_signature_on_classmethodc                 C   rn  )Nc                   @   r  )z@TestSignatureObject.test_signature_on_staticmethod.<locals>.Testc                S   r0   r   r   )r­   rC  r   r   r   r#   _
  r4   zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooN)r8   rG   rH   r‚  r#   r   r   r   r   r  ^
  r³   r  )))r­   ..r#  )rC  ..r%  .ro  rp  r   r   r   Útest_signature_on_staticmethod]
  rs  z2TestSignatureObject.test_signature_on_staticmethodc           
      C   sŠ  ddl m} tj}dd„ }|  |  ||ƒ¡d¡ |  td¡ t ||dƒ¡ W d   ƒ n1 s1w   Y  |  td¡ t ||dd¡ W d   ƒ n1 sPw   Y  d	d„ }|  |  ||ƒ¡d
¡ |  |  ||dƒ¡d¡ |  |  ||ddd¡d¡ |  |  ||ddd¡d¡ |  |  ||dddd¡d¡ |  |  ||dd¡d¡ dd„ }|  |  ||dƒ¡d¡ |  |  ||dd¡d¡ |  |  ||dddƒ¡d¡ |  |  ||ddddd¡d¡ |  |  ||dddddd¡d¡ |  |  ||dd¡d¡ |  |  ||ddd¡d¡ dtdd fd!d„}t |¡ }|_	|  |  |||dƒƒ¡d"dd#td$ffd f¡ |  |  |||dƒdƒ¡dd#td$ffd f¡ t |||dƒdƒ¡}d%d&„ }|||d'dd(d}|  |  |¡d)¡ |  |ƒ d(¡ d*d&„ }|||dd(dd+d}|  |  |¡d,¡ |  |d'dd-¡ d.d&„ }|||d(d(d/d'd+d0}|  |  |¡d1¡ t |¡j
d2d3d4}|  ||ji |j¤Žd5¡ dGd6d&„}||d7d}t |¡j
d3d}|  ||ji |j¤Žd8¡ t |¡ 
d3d9¡}|  ||ji |j¤Žd:¡ t |¡j
d3d9d}|  ||ji |j¤Žd:¡ t |¡j
d9d}|  ||ji |j¤Žd;¡ ||d'd(d}t |¡ 
d9¡}|  ||ji |j¤Žd<¡ d=d&„ }t |¡}|j ¡ }	|	d> j|jd?|	d>< |	d@ j|jd?|	d@< t |	 ¡ ¡|_	t |¡}|  t|ƒdA¡ |  |  ||dƒ¡dB¡ |  |  ||ddƒ¡dC¡ |  |  ||dddƒ¡dD¡ |  |  ||dddd¡dE¡ |  |  ||ddd¡dF¡ d S )HNr   )rs   c                   S   r0   r   r   r   r   r   r   rV  t
  r|   z;TestSignatureObject.test_signature_on_partial.<locals>.testr  úhas incorrect argumentsr!   r_  c                S   r0   r   r   rD  r   r   r   rV  
  r|   ))r"  ©r   ..r#  ©r   ..r%  ©ré   ..r%  .))rv  rw  rx  .r"   r  ))rv  ©r   r"   .r%  rx  .)r   r   ))r"  ©r   r!   .r%  ry  rx  .))rz  ry  rx  .))©r   r!   .r%  ©r   ..r%  rw  rx  .c                _   r0   r   r   )r   r   r   rÆ   r   r   r   rV  ©
  r|   ))r4  r|  r6  .))r{  r|  r6  .rÎ   Tr¹  )rV  r   ))r4  ©r   r   .r%  r6  .©r   ))r"  r4  r}  r6  .)r   rV  r   r^  r•   c                 S   r0   r   r   ré  r   r   r   rV  Ø
  r|   rv  .r#  c                 S   ó   | S r   r   r_  r   r   r   r#   è
  r|   z:TestSignatureObject.test_signature_on_partial.<locals>.foor~  é   )))r   r€  .r%  .c                 S   ó
   | ||fS r   r   ré  r   r   r   r#   ò
  rŒ  rŒ  )))r   rŒ  .r%  rw  .)r!   rŒ  r~  c                S   ó   | |||fS r   r   rD  r   r   r   r#   ü
  r5  )ré   r   )r   ré   ))r"  )r   r~  .r%  )r   r€  .r%  )ré   rŒ  .r%  .éÈ   rß   r   )rƒ  rß   r€  rŒ  c                 S   r  r   r   ré  r   r   r   r#   	  rŒ  é   )rß   r"   r„  rj  )rß   rj  r„  )r!   rj  r„  )rj  r~  r€  c                 [   r0   r   r   )r   r   r   ré   rÆ   r   r   r   r#     r|   r   rp  r   z(a, b, /, c, d, **kwargs)))©r   ..Zpositional_only©r   ..r#  ©ré   ..r#  r6  .))r†  r‡  r6  .))r‡  r6  .))©r   rÎ   .r%  rx  r6  .))r…  rˆ  rx  r6  .rE  )rr   rs   r;   rY  r¸   rx  rÇ  r<  rª   r\  Úbindr   rÆ   r)   Úcopyr  rZ  r[  rÿ  r-  )
rA   rs   rY  rV  r  Zpsigr#   Z_fooÚbaÚparamsr   r   r   Útest_signature_on_partialo
  sò   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿþÿÿÿÿÿÿ



ÿÿÿÿÿz-TestSignatureObject.test_signature_on_partialc                    sÈ   ddl m‰  G ‡ fdd„dƒ}|  td¡ t |j¡ W d   ƒ n1 s&w   Y  G ‡ fdd„dƒ}|  | j|jddd	¡ |  | j|ƒ jddd
¡ G ‡ fdd„dƒ}|  | j|jddd¡ d S )Nr   ©rN  c                       s   e Zd Zdd„ Z” eƒZdS )úATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamc                   S   r0   r   r   r   r   r   r   rV  K  r|   úFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.testN©r8   rG   rH   rV  rH  r   rŽ  r   r   ÚSpamJ  s    r’  ru  c                       s"   e Zd Zddd„Z” eddZdS )	r  r^  rZ   c                S   r0   r   r   )Úitr   r   r   r   r   rV  S  r|   r  r!   r  N)r^  rZ   r‘  r   rŽ  r   r   r’  R  s    
Frê  )))r“  ..r#  r"  ©r   r!   .r%  rZ   ))r"  r”  rZ   c                       s    e Zd Zddd„Z” edƒZdS )r  rA   Úannoc                 S   r0   r   r   r‹  r   r   r   rV  c  r|   r  r!   N)rA   r•  )r8   rG   rH   rV  rì   r   rŽ  r   r   r’  b  s    
)))rA   .r•  r#  .)	rr   rN  rÇ  r<  r;   rx  rH  r¸   rì   )rA   r’  r   rŽ  r   Útest_signature_on_partialmethodG  s    ÿÿÿÿz3TestSignatureObject.test_signature_on_partialmethodc                 C   s(   dd„ }d|_ |  tt |¡ƒd¡ d S )Nc                 S   r0   r   r   r_  r   r   r   r#   m  r„   zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foorZ   z(a))Ú_partialmethodr¸   r-  r;   rx  ©rA   r#   r   r   r   Ú$test_signature_on_fake_partialmethodl  s   z8TestSignatureObject.test_signature_on_fake_partialmethodc                    sÖ   dd l ‰‡fdd„‰ G ‡ fdd„dƒ}|  |  |j¡d¡ |  |  |ƒ j¡d¡ |  | j|jdd	d
¡ ‡fdd„‰ G ‡ fdd„dƒ}|  |  |j¡d¡ |  |  |ƒ j¡d¡ dd„ }|j|_|  |  |¡d¡ d S )Nr   c                    s    ˆ  ˆ ¡dtf‡ fdd„ƒ}|S )Nr^  c                     rH  r   r   r.  rC  r   r   rî  u  rI  úSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper)rM  rª   rJ  ©rr   rC  r   rK  t  rL  zBTestSignatureObject.test_signature_on_decorated.<locals>.decoratorc                       r    )ú<TestSignatureObject.test_signature_on_decorated.<locals>.Fooc                 S   r0   r   r   ©rA   r   r   r   r   r   r   {  r4   z@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.barN)r8   rG   rH   r   r   ©rK  r   r   rx  z  r³   rx  ))©rA   ..r#  r"  rv  .))r"  rv  .FrN  r5  c                    sN   ˆ  ˆ ¡dtf‡ fdd„ƒ}t ˆ ¡}t|j ¡ ƒdd … }|j|d|_|S )Nr^  c                     s   ˆ dg| ¢R i |¤ŽS rÀ  r   r.  rC  r   r   rî  “  s   rš  r!   rW  )	rM  rª   r;   rx  rþ  r)   rÿ  r  r\  )rÊ  rî  r  Ú
new_paramsr›  rC  r   rK  ’  s   
c                       r    )rœ  c                 S   r0   r   r   r  r   r   r   rL  œ  r4   zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__N©r8   rG   rH   rL  r   rž  r   r   rx  ›  r³   ©)rv  .c                   S   r0   r   r   r   r   r   r   Úwrapped_foo_callª  r|   zITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call)rr   r¸   rx  r   rL  Ú__wrapped__)rA   rx  r£  r   )rK  rr   r   Útest_signature_on_decoratedq  s2   ÿÿÿ	ÿÿÿz/TestSignatureObject.test_signature_on_decoratedc                 C   s>  G dd„ dƒ}|   |  |¡d¡ G dd„ dtƒ}G dd„ d|d}|   |  |¡d¡ G dd„ dtƒ}G d	d„ d|d}|   |  |¡d
¡ |   |  |¡d¡ G dd„ dtƒ}G dd„ dt|d}G dd„ d|d}|   |  |¡d¡ |   |  |¡d¡ |   |  |¡d
¡ G dd„ dtƒ}G dd„ d|d}|   |  |¡d¡ d S )Nc                   @   rz   )ú6TestSignatureObject.test_signature_on_class.<locals>.Cc                 S   r0   r   r   ©rA   r   r   r   r   rÂ   ¶  r|   ú?TestSignatureObject.test_signature_on_class.<locals>.C.__init__N©r8   rG   rH   rÂ   r   r   r   r   r“   µ  r~   r“   ©)r"  .c                   @   rz   )ú7TestSignatureObject.test_signature_on_class.<locals>.CMc                 S   r0   r   r   )r­   r   r   r   r   rL  ¾  r|   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__Nr¡  r   r   r   r   rP  ½  r~   rP  c                   @   rz   )r¦  c                 S   r0   r   r   ©rA   r   r   r   r   rÂ   Á  r|   r¨  Nr©  r   r   r   r   r“   À  r~   r¤   c                       ó"   e Zd Zddœ‡ fdd„
Z‡  ZS )r«  r!   r  c                   ó   t ƒ  | |||¡S r   ©r  rQ  ©Úmclsr^  ÚbasesÚdctr#   r  r   r   rQ  É  r%  ú?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__©r8   rG   rH   rQ  r  r   r   r  r   rP  È  ó    c                   @   rz   )r¦  c                 S   r0   r   r   r¬  r   r   r   rÂ   Ì  r|   r¨  Nr©  r   r   r   r   r“   Ë  r~   r¢  ))©r^  ..r#  ©r²  ..r#  ©r³  ..r#  )r#   r!   .r%  .c                       s*   e Zd Zddœ‡ fdd„
Zdd„ Z‡  ZS )z8TestSignatureObject.test_signature_on_class.<locals>.CMMr!   r  c                   r®  r   r¯  r°  r  r   r   rQ  Û  r%  z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__c                 S   s   t |||ƒS r   )rh   )r­   ÚnmÚbsÚdtr   r   r   rL  Ý  r5  zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__)r8   rG   rH   rQ  rL  r  r   r   r  r   ÚCMMÚ  s    r½  c                       r­  )r«  r"   ©r   c                   r®  r   r¯  )r±  r^  r²  r³  r   r  r   r   rQ  à  r%  r´  rµ  r   r   r  r   rP  ß  r¶  c                   @   rz   )r¦  c                 S   r0   r   r   r¬  r   r   r   rÂ   ã  r|   r¨  Nr©  r   r   r   r   r“   â  r~   )))rº  ..r#  )r»  ..r#  )r¼  ..r#  .c                       r­  )r«  r"   r¾  c                   s   t ƒ  |||¡S r   )r  rÂ   )r­   r^  r²  r³  r   r  r   r   rÂ   ø  r  z@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__)r8   rG   rH   rÂ   r  r   r   r  r   rP  ÷  r¶  c                   @   rz   )r¦  c                 S   r0   r   r   r¬  r   r   r   rÂ   û  r|   r¨  Nr©  r   r   r   r   r“   ú  r~   ))r·  r¸  r¹  )r   r"   .r%  .)r¸   rx  rh   )rA   r“   rP  r½  r   r   r   Útest_signature_on_class´  sD   ÿÿÿÿÿÿÿÿz+TestSignatureObject.test_signature_on_classc                 C   sx   G dd„ dƒ}G dd„ d|ƒ}G dd„ d|ƒ}G dd„ d|ƒ}|   |  |¡d	¡ |   |  |¡d
¡ |   |  |¡d¡ d S )Nc                   @   s   e Zd Zddd„ZdS )z9TestSignatureObject.test_signature_on_subclass.<locals>.Ar!   c                 _   ó
   t  | ¡S r   ©rŒ   rQ  )r­   r   r   rÆ   r   r   r   rQ    rŒ  zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__Nr  ©r8   rG   rH   rQ  r   r   r   r   r"    r  r"  c                   @   rz   )z9TestSignatureObject.test_signature_on_subclass.<locals>.Bc                 S   r0   r   r   r¬  r   r   r   rÂ   
  r|   zBTestSignatureObject.test_signature_on_subclass.<locals>.B.__init__Nr©  r   r   r   r   r#  	  r~   r#  c                   @   s   e Zd Zddd„ZdS )z9TestSignatureObject.test_signature_on_subclass.<locals>.Cr!   r"   c                 _   rÀ  r   rÁ  )r­   r   r   r   rÆ   r   r   r   rQ    rŒ  zATestSignatureObject.test_signature_on_subclass.<locals>.C.__new__N©r!   r"   rÂ  r   r   r   r   r“     r  r“   c                   @   r   )z9TestSignatureObject.test_signature_on_subclass.<locals>.DNr€   r   r   r   r   r$    rµ   r$  r¢  ))©r   r!   .r#  )r   r"   .r#  r4  r6  .))rÄ  r4  r6  .r  )rA   r"  r#  r“   r$  r   r   r   Útest_signature_on_subclass  s   ÿÿÿz.TestSignatureObject.test_signature_on_subclassc                 C   sP   ddl m}m} |dƒ}G dd„ d|| ƒ}|  |  |¡ddtdffd f¡ d S )	Nr   )ÚGenericÚTypeVarrI  c                   @   s   e Zd Zdeddfdd„ZdS )zATestSignatureObject.test_signature_on_generic_subclass.<locals>.Ar   r^  Nc                S   r0   r   r   r§  r   r   r   rÂ   '  r|   zJTestSignatureObject.test_signature_on_generic_subclass.<locals>.A.__init__)r8   rG   rH   rª   rÂ   r   r   r   r   r"  &  ó    r"  r   .r%  )ÚtypingrÆ  rÇ  r¸   rx  rª   )rA   rÆ  rÇ  rI  r"  r   r   r   Ú"test_signature_on_generic_subclass!  s   ÿÿz6TestSignatureObject.test_signature_on_generic_subclassc                 C   sì   G dd„ dƒ}|   tt |¡ƒd¡ G dd„ d|ƒ}|   tt |¡ƒd¡ G dd„ dtƒ}G dd„ d|ƒ}|  td¡ |   t |¡d ¡ W d   ƒ n1 sOw   Y  |  td¡ |   t |¡d ¡ W d   ƒ d S 1 sow   Y  d S )	Nc                   @   r   ©zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CNr€   r   r   r   r   r“   2  r‚   r“   r  c                   @   r   ©zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNr€   r   r   r   r   r$  4  r‚   r$  c                   @   r   rË  r€   r   r   r   r   r“   8  r‚   c                   @   r   rÌ  r€   r   r   r   r   r$  9  r‚   zcallable.*is not supported)r¸   r-  r;   rx  rh   rÇ  r<  )rA   r“   r$  r   r   r   Ú$test_signature_on_class_without_init.  s   ÿ"ÿz8TestSignatureObject.test_signature_on_class_without_initc                 C   sÞ   d}|   tt tj¡ƒ|¡ G dd„ dtjƒ}G dd„ dƒ}G dd„ d||ƒ}|   tt |¡ƒ|¡ |   tt |¡ƒ|¡ G dd	„ d	|ƒ}|   tt |¡ƒd
¡ G dd„ dtƒ}G dd„ d||d}|   tt |¡ƒd¡ d S )Nz=(file, protocol=None, fix_imports=True, buffer_callback=None)c                   @   r   )z>TestSignatureObject.test_signature_on_builtin_class.<locals>.PNr€   r   r   r   r   r  F  r‚   r  c                   @   r   )zGTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNr€   r   r   r   r   Ú
EmptyTraitG  r‚   rÎ  c                   @   r   )z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nr€   r   r   r   r   ÚP2H  r‚   rÏ  c                   @   rz   )z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3c                 S   r0   r   r   )rA   rZ   r   r   r   rÂ   M  r|   zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__Nr©  r   r   r   r   ÚP3L  r~   rÐ  rX  c                   @   rz   )zBTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPc                 S   r0   r   r   )r­   r#   r   r   r   r   rL  R  r|   zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__Nr¡  r   r   r   r   ÚMetaPQ  r~   rÑ  c                   @   r   )z?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr€   r   r   r   r   ÚP4T  rµ   rÒ  r¤   z
(foo, bar))r¸   r-  r;   rx  rf  rg  rh   )rA   r%  r  rÎ  rÏ  rÐ  rÑ  rÒ  r   r   r   Útest_signature_on_builtin_class?  s   z3TestSignatureObject.test_signature_on_builtin_classc                 C   sú   G dd„ dƒ}|   |  |ƒ ¡d¡ G dd„ dƒ}|  td¡ t |ƒ ¡ W d   ƒ n1 s/w   Y  G dd„ d||ƒ}|   |  |ƒ ¡d¡ G d	d
„ d
ƒ}dd„ |_|   |  |¡d¡ ||_|  td¡ |  |¡ W d   ƒ d S 1 svw   Y  d S )Nc                   @   rz   )zCTestSignatureObject.test_signature_on_callable_objects.<locals>.Fooc                 S   r0   r   r   r§  r   r   r   rL  Z  r|   zLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__Nr¡  r   r   r   r   rx  Y  r~   rx  rª  c                   @   r   )zDTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNr€   r   r   r   r   r’  a  rµ   r’  rQ  c                   @   r   )zCTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNr€   r   r   r   r   ÚBarf  rµ   rÔ  c                   @   r   )zGTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNr€   r   r   r   r   ÚWrappedm  rµ   rÕ  c                 S   r0   r   r   r_  r   r   r   rƒ   o  r„   zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>úwrapper loop)r¸   rx  rÇ  rC  r;   r¤  r<  )rA   rx  r’  rÔ  rÕ  r   r   r   Ú"test_signature_on_callable_objectsX  s*   ÿÿÿ
ÿ"ÿz6TestSignatureObject.test_signature_on_callable_objectsc                 C   s   |   |  ddd„¡d¡ d S )Nr~  c                 S   r  r   r   r_  r   r   r   rƒ   y  r„   z?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>)))r   r~  .r#  .r+  r  r[   r   r   r   Útest_signature_on_lambdasx  s   ÿz-TestSignatureObject.test_signature_on_lambdasc                 C   sX  dt dtfdd„}|  t |¡dk¡ |  t |¡dk¡ |  t |¡tk¡ |  t |¡tk¡ dt dtfdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  tt |¡ƒtt |¡ƒ¡ dt dt fdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ dt fd	d„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ dd
œdt dtfdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ dtfdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ dt dtfdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ dt dtfdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ dd„ }dd„ }|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  tt |¡ƒtt |¡ƒ¡ ddœdd„}ddœdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  tt |¡ƒtt |¡ƒ¡ ddœdd„}ddœdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  tt |¡ƒtt |¡ƒ¡ dd„ }ddœdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  	tt |¡ƒtt |¡ƒ¡ ddœdt fdd„}ddœdt fdd„}|  t |¡t |¡k¡ |  t |¡t |¡k¡ |  tt |¡ƒtt |¡ƒ¡ d S )Nr   r^  c                S   r0   r   r   r   r   r   r   r#   ~  r„   z8TestSignatureObject.test_signature_equality.<locals>.foor•   c                S   r0   r   r   r   r   r   r   r   „  r„   z8TestSignatureObject.test_signature_equality.<locals>.barc                S   r0   r   r   r   r   r   r   r   Š  r„   c                S   r0   r   r   r   r   r   r   r     r„   r~  c                S   r0   r   r   r   r   r   r   r   –  r„   c                S   r0   r   r   ©r   r   r   r   r   r   œ  r„   c                 S   r0   r   r   r   r   r   r   r   ¢  r„   c                 S   r0   r   r   ©r   r   r   r   r   rZ   §  r„   z9TestSignatureObject.test_signature_equality.<locals>.spamc                 S   r0   r   r   ré  r   r   r   r#   ­  r„   c                 S   r0   r   r   ©r   r   r   r   r   r   r   ®  r„   r!   r_  c                 S   r0   r   r   ré  r   r   r   r#   ´  r„   c                 S   r0   r   r   rÛ  r   r   r   r   µ  r„   c                S   r0   r   r   ©Úposr   r   r   r   r   r   r#   »  r„   c                S   r0   r   r   ©rÝ  r   r   r   r   r   r   r   ¼  r„   c                S   r0   r   r   rÜ  r   r   r   r#   Â  r„   c                S   r0   r   r   rÞ  r   r   r   r   Ã  r„   rÆ   c                _   r0   r   r   )rÝ  r   r   r   r   rÆ   r   r   r   r#   É  r„   c                _   r0   r   r   )rÝ  r   r   r   r   rÆ   r   r   r   r   Ê  r„   )
rª   r&  r@   r;   rx  r7   r   r¸   Úhashr£  )rA   r#   r   rZ   r   r   r   Útest_signature_equality}  s¤   ÿÿÿÿÿÿÿÿÿÿÿÿz+TestSignatureObject.test_signature_equalityc                 C   s  t j}t j}dd„ }t  |¡}||d|jƒgd}|  t|ƒt|ƒ¡ |  t|ƒt|jddƒ¡ dd	d
„}|  t|ƒtt  |¡ƒ¡ i fdd„}|  	t
d¡ tt  |¡ƒ W d   ƒ n1 saw   Y  di fdd„}|  	t
d¡ tt  |¡ƒ W d   ƒ d S 1 s†w   Y  d S )Nc                 S   r0   r   r   r_  r   r   r   r#   Ô  r„   z8TestSignatureObject.test_signature_hashable.<locals>.foor   rW  rZ   ©r   r^  r!   c                 S   r0   r   r   r_  r   r   r   r   Ý  r„   z8TestSignatureObject.test_signature_hashable.<locals>.barc                 S   r0   r   r   r_  r   r   r   r#   à  r„   úunhashable typec                 S   r0   r   r   r_  r   r   r   r#   ä  r„   )r^  r!   )r;   r[  rY  rx  ÚPOSITIONAL_OR_KEYWORDr¸   rß  r£  r  rÇ  rC  )rA   r  r  r#   Úfoo_sigZ
manual_sigr   r   r   r   Útest_signature_hashableÐ  s&   

ÿ
ÿ"ÿz+TestSignatureObject.test_signature_hashablec                 C   s‚   dd dœdt ddfdd„}|  tt |¡ƒd¡ dd dœdt ddfd	d„}|  tt |¡ƒd
¡ dd„ }|  tt |¡ƒd¡ d S )Nr!   r  r   r^  r•   c                [   r0   r   r   ©r   r   r   rÆ   r   r   r   r#   é  r|   z3TestSignatureObject.test_signature_str.<locals>.fooz*(a: int = 1, *, b, c=None, **kwargs) -> 42c                _   r0   r   r   )r   r   r   r   rÆ   r   r   r   r#   î  r|   z.(a: int = 1, *args, b, c=None, **kwargs) -> 42c                   S   r0   r   r   r   r   r   r   r#   ó  r|   r  r  )rª   r¸   r-  r;   rx  r˜  r   r   r   Útest_signature_strè  s   ÿÿz&TestSignatureObject.test_signature_strc                 C   sÞ   t j}t j}dd„ }t  |¡}t|j ¡ ƒ}|d j|jd|d< |j|d|_	|  
tt  |¡ƒd¡ |  
t||d|jƒgdƒd¡ |  
t||d|jƒ|d	|jƒgdƒd
¡ |  
t||d|jƒ|d	|jƒgdƒd¡ d S )Nc                [   s   | |fS r   r   )Úa_por   rÆ   r   r   r   rV  û  rU  zDTestSignatureObject.test_signature_str_positional_only.<locals>.testr   rp  rW  z(a_po, /, *, b, **kwargs)r#   z(foo, /)r   z(foo, /, **bar)z(foo, /, *bar))r;   rY  r[  rx  r‹   r)   rÿ  r  rZ  r\  r¸   r-  rq  ÚVAR_POSITIONAL)rA   r  r  rV  r  r   r   r   r   Ú"test_signature_str_positional_only÷  s2   
ÿÿ

þý

þýz6TestSignatureObject.test_signature_str_positional_onlyc                 C   s|   ddd„}t  |¡}|jd d}|  |jd ¡ |j|jd}|  |j|j¡ |jdd}|  |jd¡ |  |t  |¡¡ d S )Nr^  r•   c                   S   r0   r   r   r   r   r   r   rV    r|   z=TestSignatureObject.test_signature_replace_anno.<locals>.testrá  )r^  r•   )r;   rx  r  rÒ   r   rú  r¸   r  r   r   r   Útest_signature_replace_anno  s   

z/TestSignatureObject.test_signature_replace_annoc                 C   sR   G dd„ dƒ}G dd„ d|ƒ}|   |  |j¡d¡ |   |  |j¡|  |j¡¡ d S )Nc                   @   s   e Zd Zd
ddœddd„Zd	S )zFTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamr"   rÎ   )Ú	_Spam__p2Ú	_Spam__p1r!   rì  c                S   r0   r   r   )rA   rí  rì  r   r   r   r#   "  r|   zJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.fooN)r"   )rí  r!   rì  r"   r¡   r   r   r   r   r’  !  rÈ  r’  c                   @   r   )zETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNr€   r   r   r   r   ÚHam$  rµ   rî  ))rŸ  )rí  r"   r!   r#  )rì  rÎ   r"   r%  .)r¸   rx  r#   )rA   r’  rî  r   r   r   Ú$test_signature_on_mangled_parameters   s   ÿ
ÿz8TestSignatureObject.test_signature_on_mangled_parametersc                 C   s6   G dd„ dt jƒ}ddd„}| |¡}|  ||¡ d S )Nc                   @   r   )zPTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureNr€   r   r   r   r   rö  1  r‚   rö  r   r!   c                S   r0   r   r   r   r   r   r   r#   2  r„   zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo©r   r!   ©r;   r[  rd  ÚassertIsInstance©rA   rö  r#   rä  r   r   r   Ú'test_signature_from_callable_python_obj0  s   

z;TestSignatureObject.test_signature_from_callable_python_objc                 C   s:   G dd„ dt jƒ}G dd„ dƒ}| |¡}|  ||¡ d S )Nc                   @   r   )zKTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureNr€   r   r   r   r   rö  8  r‚   rö  c                   @   r   )zCTestSignatureObject.test_signature_from_callable_class.<locals>.fooNr€   r   r   r   r   r#   9  r‚   r#   rñ  ró  r   r   r   Ú"test_signature_from_callable_class6  s   
z6TestSignatureObject.test_signature_from_callable_classc                 C   s.   G dd„ dt jƒ}| tj¡}|  ||¡ d S )Nc                   @   r   )zQTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureNr€   r   r   r   r   rö  @  r‚   rö  )r;   r[  rd  rf  rg  rò  )rA   rö  r  r   r   r   Ú(test_signature_from_callable_builtin_obj=  s   z<TestSignatureObject.test_signature_from_callable_builtin_objc                 C   rt  r   )
r/   r;   rx  r‹   r)   ru  r7   r¸   r3   rv  rw  r   r   r   Ú3test_signature_definition_order_preserved_on_kwonlyD  rz  zGTestSignatureObject.test_signature_definition_order_preserved_on_kwonlyc                 C   s0   t  dd„ ¡j}t  dd„ ¡j}|  ||¡ d S )Nc                 S   r0   r   r   rG  r   r   r   rƒ   P  r„   zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>c                 S   r0   r   r   )rÞ   rš   r   r   r   rƒ   Q  r„   )r;   rx  r)   r£  )rA   Zp1Úp2r   r   r   Ú#test_signater_parameters_is_orderedO  s   z7TestSignatureObject.test_signater_parameters_is_orderedc              	   C   s  G dd„ dƒ}d|dt fdd„}d|dddt fd	d
„}tjtjjfD ]j}| j|dZ ||ƒ}|  |jt ¡ |  |jd j	|¡ ||t
ƒ d}|  |jt ¡ |  |jd j	|¡ ||dt it
ƒ d}|  |jt ¡ |  |jd j	|¡ |  |jd j	d¡ W d   ƒ q"1 s‡w   Y  q"d S )Nc                   @   r   )zQTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.FooNr€   r   r   r   r   rx  U  r‚   rx  r#   r^  c                 S   r0   r   r   r  r   r   r   rÊ  V  r„   zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.funcr   rÔ  c                 S   r0   r   r   ©r#   r   r   r   r   Úfunc2W  r„   zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func2©Úsignature_func)ræ   )rå  ræ   )rª   r;   rx  r[  rd  r  r¸   r   r)   rû  ræ   )rA   rx  rÊ  rû  rý  Zsig1Zsig2Zsig3r   r   r   Ú0test_signature_annotations_with_local_namespacesT  s"   ôÿzDTestSignatureObject.test_signature_annotations_with_local_namespacesc                 C   s&  t }tj}tj}tjj}tjtjjfD ]|}| j|dj |  ||j	ƒ||d|ƒ|d|ƒfd¡ |  ||j
ƒ|d|d|dd|d|ddfd	¡ |  ||jƒ|d|d|dd|d|d
d|d|ddfd	¡ |  ||jƒ||d|dd|d|d
d|d|ddfd¡ |  ||jƒ|ƒ ¡ |  ||jƒ||d|ƒ|d|ƒ|d|ƒfd¡ |  ||j	dd||d|ƒ|d|ƒfd¡ |  ||j
dd||j	|d|td|d|tdfd	¡ |  ||jdd||j	|d|td|d|dd|d||j	dfd	¡ |  ||jdd||d|dd|d|dd|d|ddfd¡ ttdœ}ttdœ}|  t¡ ||j
d|d W d   ƒ n	1 sBw   Y  |  ||j
d|d|t|d|td|d|tdfd	¡ |  ||j
d||d|t|d|td|d|tdfd	¡ W d   ƒ q1 s‹w   Y  qd S )Nrü  r   r   rW  rè  rª   ©rû  r-  )r   r)   rþ  r   rÿ  r   Trê  )rª   r-  )r-  rè  rä  râ  )rã  rå  ræ   )r   r;   r[  rY  rã  rx  rd  r  r¸   rè  r×   rö  r÷  rø  rù  rª   r-  r&  Úcomplexrþ  r–   rB  Ú	NameError)rA   rü  r  ZparZPORKrý  ZglobalnsZlocalnsr   r   r   Útest_signature_eval_strh  sà   þÿþþþþýþþ	ýÿþ	ýÿÿþÿþþþþýþþ	ýÿþ
	
ÿþþþ	þþþ ¦ÿz+TestSignatureObject.test_signature_eval_strc              	   C   sŽ   G dd„ dƒ}dd„ }||ƒ}d |_ tjtjjfD ]"}| j|d |  ||ƒt ¡ ¡ W d   ƒ q1 s6w   Y  q|  t |¡i ¡ d S )Nc                   @   rŽ  )zDTestSignatureObject.test_signature_none_annotation.<locals>.funclikec                 S   rV  r   rW  rZ  r   r   r   rÂ   ×  r[  zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__c                 _   r\  r   rC  rÅ   r   r   r   rL  ß  r  zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__Nr]  r   r   r   r   r^  Ò  r_  r^  c                   S   r0   r   r   r   r   r   r   r#   â  r„   z?TestSignatureObject.test_signature_none_annotation.<locals>.foorü  )r`  r;   rx  r[  rd  r  r¸   rõ  )rA   r^  r#   rý  r   r   r   Útest_signature_none_annotationÑ  s   ÿz2TestSignatureObject.test_signature_none_annotationN)4r8   rG   rH   r‚  rx  r  r  r  r!  r$  r'  r,  r7  r   rÀ   rm  r   rG  rO  rP  rR  re  rf  rk  rm  rr  rt  r  r–  r™  r¥  r¿  rÅ  rÊ  rÍ  rÓ  r×  rØ  rà  rå  rç  rê  rë  rï  rô  rõ  rö  r÷  rù  rþ  r  r  r   r   r   r   rù  Ä  s‚    
0#ÿFÿ

5 Y%CQÿ
ÿ
 Sÿ
irù  c                   @   sP   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	dd„ ƒZ
dd„ ZdS )ÚTestParameterObjectc                 C   sl   t j}|  |j|j  k o|j  k o|j  k o|jk n  ¡ |  t	|jƒd¡ |  dt
|jƒv ¡ d S )NrZ  )r;   rY  r7   rZ  rã  ré  ÚKEYWORD_ONLYrq  r¸   r-  rÝ  )rA   r  r   r   r   Útest_signature_parameter_kindsì  s   ÿÿÿz2TestParameterObject.test_signature_parameter_kindsc                 C   s‚  t jddt jjd}|  |jd¡ |  |jd¡ |  |j|j¡ |  |j	t jj¡ |  
td¡ t jdddd W d   ƒ n1 sBw   Y  |  
td¡ t jdt jjd W d   ƒ n1 saw   Y  |  
td	¡ t jd t jjd W d   ƒ n1 s€w   Y  |  
td
¡ t jdt jjd W d   ƒ n1 sŸw   Y  |  
td
¡ t jdt jjd W d   ƒ n1 s¾w   Y  |  
td¡ t jddt jjd W d   ƒ n1 sÞw   Y  |  
td¡ t jddt jjd W d   ƒ n1 sþw   Y  t jddt jjd}|  
td¡ |jt jjd W d   ƒ n	1 s'w   Y  |  t|ƒ d¡¡ |  dt|ƒv ¡ d S )Nr#   r~  ©rn  rm  z)value '123' is not a valid Parameter.kindZ123znot a valid parameter namer  rp  úname must be a strzis not a valid parameter nameú$z.azcannot have default valuesr   r•   z
<Parameterz"a=42")r;   rY  rZ  r¸   r^  rn  rÒ   rû  rú  rm  rÇ  r<  rq  rC  ré  rã  r  r7   rÝ  rE  ©rA   r+   r   r   r   Útest_signature_parameter_objectô  sX   ÿþÿÿÿþÿþÿÿÿÿÿÿz3TestParameterObject.test_signature_parameter_objectc              	   C   st   t j}|d|jd}|  t|ƒt|d|jdƒ¡ |  t|ƒt|d|jddƒ¡ |  t|ƒt|j|jdƒ¡ d S )Nr#   rp  r•   rl  )r;   rY  rZ  r¸   rß  r£  r  ré  )rA   r  r#   r   r   r   Ú!test_signature_parameter_hashable  s   
ÿ
ÿz5TestParameterObject.test_signature_parameter_hashablec                 C   s¨   t j}|ddt jjd}|  ||k¡ |  ||k¡ |  |dk¡ |  |dk¡ |  |tk¡ |  |tk¡ |  ||ddt jjdk¡ |  ||ddt jjdk¡ d S )Nr#   r•   r  )r;   rY  r  r7   r@   r   )rA   r  r+   r   r   r   Ú!test_signature_parameter_equality'  s   
ÿÿz5TestParameterObject.test_signature_parameter_equalityc                 C   s”  t jddt jjd}|  || ¡ ¡ |  || ¡ ¡ |jdd}|  |jd¡ |j|jd}|  ||¡ |jdd}|  |jd¡ |  	||¡ |  
td¡ |j|jd}W d   ƒ n1 s_w   Y  |jdd d	}|  |jd ¡ |  	||¡ |jd|jd	}|  |j|j¡ |jd|jd}|  |j|j¡ |  	||¡ |  
td
¡ |j|jd}W d   ƒ n1 s¶w   Y  |j|jd}|  ||¡ d S )Nr#   r•   r  r!   rÿ  r   r
  zname is a required attribute)r^  rn  z<value <class 'inspect._empty'> is not a valid Parameter.kindrp  )r;   rY  r  rú  r  r¸   rû  rú  r^  r£  rÇ  r<  rÒ   rn  rã  rm  )rA   r+   rø  r   r   r   Ú test_signature_parameter_replace7  s@   ÿÿþÿýz4TestParameterObject.test_signature_parameter_replacec                 C   sD   |   td¡ tjd tjjd W d   ƒ d S 1 sw   Y  d S )Nr  rp  )rÇ  rC  r;   rY  rZ  r[   r   r   r   Ú(test_signature_parameter_positional_only_  s   "ÿz<TestParameterObject.test_signature_parameter_positional_onlyc                 C   st   |   td¡ tjdtjjd W d   ƒ n1 sw   Y  tjdtjjd}|  |jtjj¡ |  |jd¡ d S )NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0rp  Z	implicit0)	rÇ  r<  r;   rY  rZ  rã  r¸   rm  r^  )rA   rü  r   r   r   Ú!test_signature_parameter_implicitc  s   ÿüÿz5TestParameterObject.test_signature_parameter_implicitc                 C   sx   t jdt jjd}|  t¡ d|_W d   ƒ n1 sw   Y  |  t¡ d|_W d   ƒ d S 1 s5w   Y  d S )NrZ   rp  r   ro  )r;   rY  r  rB  rN  r#   rm  r
  r   r   r   Ú%test_signature_parameter_immutabilityp  s   ÿ"ÿz9TestParameterObject.test_signature_parameter_immutabilityN)r8   rG   rH   r  r  r  r  r  r  r   r  r  r   r   r   r   r  ë  s    *	(
r  c                   @   sŒ   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZdd„ ZdS ) ÚTestSignatureBindc                 O   s,   t  | ¡}|j|i |¤Ž}| |ji |j¤ŽS r   )r;   rx  r‰  r   rÆ   )rÊ  r   rÆ   r  r‹  r   r   r   Úcall{  s   
zTestSignatureBind.callc                 C   sÎ   dd„ }|   |  |¡d¡ |  td¡ |  |d¡ W d   ƒ n1 s$w   Y  |  td¡ | j|ddd W d   ƒ n1 sBw   Y  |  td¡ | j|dd W d   ƒ d S 1 s`w   Y  d S )	Nc                   S   r¢  rÀ  r   r   r   r   r   rV  ‚  r|   z9TestSignatureBind.test_signature_bind_empty.<locals>.testr•   útoo many positional argumentsr!   r~  rÁ  ú)got an unexpected keyword argument 'spam'©r¸   r  rÇ  rC  r   r   r   r   Útest_signature_bind_empty  s   ÿÿÿ"ýz+TestSignatureBind.test_signature_bind_emptyc                 C   sÒ   dd„ }|   |  |¡di f¡ |   |  |d¡di f¡ |   |  |dd¡di f¡ |   | j|dd	dd
dif¡ |   | j|ddd	dd
dif¡ |   | j|dddddif¡ |   | j|dddd	dd
dif¡ d S )Nc                  _   ó   | |fS r   r   r.  r   r   r   rV    rU  z7TestSignatureBind.test_signature_bind_var.<locals>.testr   r!   r  r"   rÃ  r   r  r#   r~  r  r   ©r¸   r  r   r   r   r   Útest_signature_bind_var  s    
ÿz)TestSignatureBind.test_signature_bind_varc                 C   sV  dd„ }|   |  |ddd¡d¡ |  td¡ |  |dddd¡ W d   ƒ n1 s*w   Y  |  td	¡ |  |d¡ W d   ƒ n1 sFw   Y  |  td
¡ |  |¡ W d   ƒ n1 saw   Y  ddd„}|   |  |ddd¡d¡ |   |  |dd¡d¡ ddd„}|   | j|dddd¡ |   | j|ddd¡ |   | j|ddd¡ d S )Nc                 S   r  r   r   ré  r   r   r   rV    rŒ  z=TestSignatureBind.test_signature_bind_just_args.<locals>.testr!   r"   rÎ   rE  r  r;  z missing a required argument: 'b'z missing a required argument: 'a'r~  c                 S   r  r   r   ré  r   r   r   rV  ­  rŒ  )r!   r"   r~  c                 S   r  r   r   ré  r   r   r   rV  ²  rŒ  r„  rÙ  )r~  r"   r„  r_  )r~  r"   rÎ   r~  )r!   r~  rÎ   r+  r  r   r   r   r   Útest_signature_bind_just_argsœ  s,   ÿÿþÿþ

z/TestSignatureBind.test_signature_bind_just_argsc                 C   s6   dd„ }|   |  |¡d¡ |   |  |ddd¡d¡ d S )Nc                  W   r  r   r   r  r   r   r   rV  ¹  r|   zATestSignatureBind.test_signature_bind_varargs_order.<locals>.testr   r!   r"   rÎ   rE  r  r   r   r   r   Ú!test_signature_bind_varargs_order¸  s   z3TestSignatureBind.test_signature_bind_varargs_orderc              
   C   s²   ddd„}|   |  |ddddd¡d¡ |   |  |dd¡d	¡ |   | j|ddd
d¡ |   | j|dddd	¡ |  td¡ | j|ddddd W d   ƒ d S 1 sRw   Y  d S )NrÎ   c                 W   r‚  r   r   )r   r   r   r   r   r   r   rV  À  r5  zDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testr!   r"   r;  r§   )r!   r"   rÎ   )r;  r§   )r!   r"   rÎ   r   rÚ  )r"   r!   rÎ   r   r~  z multiple values for argument 'c'r  ©rÎ   r  r   r   r   r   Ú$test_signature_bind_args_and_varargs¿  s   
ÿ"þz6TestSignatureBind.test_signature_bind_args_and_varargsc                 C   s<   dd„ }|   |  |¡i ¡ |   | j|ddddddœ¡ d S )Nc                  [   r  r   r   )rÆ   r   r   r   rV  Í  r|   z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testr   rH  ©r#   rZ   r  r   r   r   r   Útest_signature_bind_just_kwargsÌ  s
   ÿz1TestSignatureBind.test_signature_bind_just_kwargsc              
   C   sJ  ddd„}|   |  |dd¡dddi f¡ |   | j|dddddddddddœf¡ |   | j|ddddd	ddddddœf¡ |   | j|ddddd
ddddddœf¡ |   | j|dddddddddddœf¡ |   | j|ddddddddddddœf¡ |   | j|ddddddddddif¡ |   | j|dddddddi f¡ d S )NrÎ   c                 [   r‚  r   r   ræ  r   r   r   rV  Õ  r5  zCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testr!   r"   r   rH  r  )r   r   r#   rZ   )r   r   r#   rZ   )r   r#   rZ   r;  )r   r   r#   rZ   r  r#   r§   )r   r   r   r  r  r   r   r   r   Ú#test_signature_bind_args_and_kwargsÔ  s.   
ÿÿÿÿÿÿ
ÿz5TestSignatureBind.test_signature_bind_args_and_kwargsc              	   C   sö  dd„ }|   td¡ |  |d¡ W d   ƒ n1 sw   Y  |  | j|ddd¡ ddœdd„}|   td¡ |  |d¡ W d   ƒ n1 sIw   Y  dd„ }|  | j|dd	d
d¡ |  | j|d	ddd¡ |   td¡ | j|d	ddd W d   ƒ n1 s„w   Y  |   td¡ |  |dd	¡ W d   ƒ n1 s¡w   Y  |   td¡ | j|dd	d	d
 W d   ƒ n1 sÀw   Y  |   td¡ | j|dd	dd W d   ƒ n1 sßw   Y  |   td¡ |  |d¡ W d   ƒ n1 sûw   Y  dd„ }|  | j|dd	d
dd	i f¡ |  | j|dd	ddd	i f¡ |  | j|dd	dddd	ddif¡ |  | j|ddd	ddd	ddif¡ |   td¡ | j|dd	d W d   ƒ n	1 s`w   Y  |  | j|dd	ddddd	dddœf¡ d S )Nc                 S   r  r   r   r  r   r   r   rV  é  r|   z:TestSignatureBind.test_signature_bind_kwonly.<locals>.testr  r!   r  c                S   s   |S r   r   )r   r#   r   r   r   r   rV  ð  r|   z"missing a required argument: 'bar'c                S   r  r   r   rú  r   r   r   rV  ö  rU  r"   r¾  rÃ  )r   r#   r  r~  )r   r#   rZ   rH  )r   rZ   c                [   r  r   r   )r#   r   Úbinr   r   r   rV    rŒ  rú  rZ   )rZ   r#   r   z"missing a required argument: 'foo')rZ   r   )r   r"  rZ   )r"  rZ   )rÇ  rC  r  r¸   r   r   r   r   Útest_signature_bind_kwonlyè  st   ÿþÿþÿýÿþÿþÿýÿþÿÿÿþÿz,TestSignatureBind.test_signature_bind_kwonlyc                 C   s‚   ddœdd„}t  |¡}|jddddd	d
d}|  t|j ¡ ƒdddddd	d
dœff¡ |  |jddd	d
dœ¡ |  |jd¡ d S )Nr  ©r    c                _   r0   r   r   )r   r   r    r   rÆ   r   r   r   rV     r|   z=TestSignatureBind.test_signature_bind_arguments.<locals>.testr~  r€  rŒ  r”  r0  é<   )r   r   r   rÆ   ©r   r~  )r   )r€  )r   rŒ  rÆ   )r   r   rÆ   )r~  r€  )	r;   rx  r‰  r¸   rþ  Ú	argumentsÚitemsrÆ   r   ©rA   rV  r  r‹  r   r   r   Útest_signature_bind_arguments  s   
ÿÿÿz/TestSignatureBind.test_signature_bind_argumentsc              
   C   s   t j}dddœdd„}t  |¡}t t|j ¡ ƒ¡}dD ]}|| j|j	d||< q|j| 
¡ d	}||_|  | j|d
dddddd
ddddi f¡ |  |  |d
d¡d
ddddi f¡ |  | j|d
ddddd
ddddi f¡ |  td¡ | j|d
ddddd W d   ƒ n1 s‹w   Y  |  td¡ | j|d
ddd W d   ƒ n1 sªw   Y  |  td¡ | j|d
dd W d   ƒ d S 1 sÉw   Y  d S )NrÎ   r•   r0  r¾  c                [   s   | |||||fS r   r   )rè  Úb_poÚc_por#   r   rÆ   r   r   r   rV  0  r  zCTestSignatureBind.test_signature_bind_positional_only.<locals>.test)rè  r+  r,  rp  rW  r!   r"   r;  r§   é   rú  zbut was passed as a keywordr~  )r#   r   r,  zparameter is positional only)r,  )rè  r+  )rÎ   r•   )r;   rY  rx  r  r  rþ  r)   r(  r  rZ  rÿ  r\  r¸   r  rÇ  rC  )rA   r  rV  r  r   r^  Znew_sigr   r   r   Ú#test_signature_bind_positional_only-  s4   
ÿÿÿÿÿ"ÿz5TestSignatureBind.test_signature_bind_positional_onlyc                 C   sP   dd„ }t  |¡}| ddd¡}|  |jd¡ |jdddd}|  |jd¡ d S )Nc                 S   r0   r   r   )r   rA   r   r   r   r   rV  N  r|   zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testr!   r"   rÎ   rE  r¬  )r;   rx  r‰  r¸   r   r)  r   r   r   Ú!test_signature_bind_with_self_argL  s   
z3TestSignatureBind.test_signature_bind_with_self_argc                 C   s¢   dd„ }t  |¡}|  td¡ |jddd W d   ƒ n1 s!w   Y  dd„ }|  | j|ddd	d
dif¡ t  |¡}|jdd}|  |jdd
dii¡ d S )Nc                 W   r  r   r   ©r   r   r   r   r   rV  W  rU  z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testz)got an unexpected keyword argument 'args'r   r!   r0  c                  _   r  r   r   r.  r   r   r   rV  `  rU  r  r   r   rÆ   )r;   rx  rÇ  rC  r‰  r¸   r  r'  r)  r   r   r   Útest_signature_bind_vararg_nameV  s   
ÿý
z1TestSignatureBind.test_signature_bind_vararg_namec                 C   sH   dd„ }|j jd }t |i ¡}ttdƒƒ}|  |  ||¡h d£¡ d S )Nc                   S   s   dd„ t dƒD ƒS )Nc                 S   s   h | ]}|| ’qS r   r   )r  r    r   r   r   Ú	<setcomp>l  r  zWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<setcomp>r§   rT   r   r   r   r   Úmake_setk  r%  zDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setr!   r§   >   r   r!   r;  r¿   rÈ   )r]  Ú	co_constsrg   ÚFunctionTypeÚiterr$   r¸   r  )rA   r3  Zsetcomp_codeZsetcomp_funcÚiteratorr   r   r   Ú test_signature_bind_implicit_argh  s
   z2TestSignatureBind.test_signature_bind_implicit_argc                 C   sH   dd„ }t  |¡}|jddd}|  |jddi¡ |  d|j ¡ ¡ d S )Nc                [   s   | |  | ¡fS r   )r»  )r   rÆ   r   r   r   r#   t  r   zATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.fooúpos-onlyÚkeywordr¾  r   )r   r9  )r;   rx  r‰  r¸   rÆ   r˜   r'  r(  )rA   r#   r  Úresultr   r   r   Ú"test_signature_bind_posonly_kwargss  s
   
z4TestSignatureBind.test_signature_bind_posonly_kwargsN)r8   rG   rH   r‚  r  r  r  r  r  r  r   r!  r#  r*  r.  r/  r1  r   r8  r<  r   r   r   r   r  z  s$    
7


r  c                   @   r»   )ÚTestBoundArgumentsc                 C   sR   dd„ }t  |¡ d¡}|  td¡ t|ƒ W d   ƒ d S 1 s"w   Y  d S )Nc                 S   r0   r   r   r_  r   r   r   r#   €  r„   zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foor!   râ  )r;   rx  r‰  rÇ  rC  rß  ©rA   r#   r‹  r   r   r   Ú)test_signature_bound_arguments_unhashable  s
   
"ÿz<TestBoundArguments.test_signature_bound_arguments_unhashablec           	      C   sP  dd„ }t  |¡ d¡}|  ||k¡ |  ||k¡ |  |tk¡ |  |tk¡ t  |¡ d¡}|  ||k¡ |  ||k¡ t  |¡ d¡}|  ||k¡ |  ||k¡ d|jd< |  ||k¡ |  ||k¡ dd„ }t  |¡ d¡}|  ||k¡ |  ||k¡ dd„ }t  |¡}|jddd	}|jddd
}|  ||k¡ |  ||k¡ d S )Nc                 S   r0   r   r   r_  r   r   r   r#   ‡  r„   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foor!   r"   r   c                 S   r0   r   r   r~  r   r   r   r   ™  r„   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.barc                 S   r0   r   r   r   r   r   r   r#   ž  r„   r   rÚ  )r;   rx  r‰  r7   r@   r   r'  )	rA   r#   r‹  Zba2Zba3r   Zba4r  Zba1r   r   r   Ú'test_signature_bound_arguments_equality†  s2   

z:TestBoundArguments.test_signature_bound_arguments_equalityc              	   C   s˜   i dœdddddifdd„}t  |¡}|jd	d
i d}ttjd ƒD ]'}| j|d t t ||¡¡}|  	||¡ W d   ƒ q"1 sDw   Y  q"d S )Nr  r   r!   r^  r•   rH  c                [   r0   r   r   r  r   r   r   r#   ¦  r„   zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foor€  rŒ  r$  )r  )
r;   rx  r‰  r$   r  r  r  r  r  r¸   )rA   r#   r  r‹  r  Z
ba_pickledr   r   r   Ú%test_signature_bound_arguments_pickle¥  s   
þÿz8TestBoundArguments.test_signature_bound_arguments_picklec                 C   sJ   i dœdddddifdd„}t  |¡}|jd	d
i d}|  t|ƒd¡ d S )Nr  r   r!   r^  r•   rH  c                [   r0   r   r   r  r   r   r   r#   °  r„   zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foor€  rŒ  r$  z <BoundArguments \(a=20,.*\}\}\)>)r;   rx  r‰  ZassertRegexrÝ  ©rA   r#   r  r‹  r   r   r   Ú#test_signature_bound_arguments_repr¯  s   
z6TestBoundArguments.test_signature_bound_arguments_reprc              
   C   sP  di dœddd„}t  |¡}| d¡}| ¡  |  t|j ¡ ƒddd	di fd
i fg¡ |jddddd}| ¡  |  t|j ¡ ƒddddi fd
ddifg¡ dd„ }t  |¡}| d¡}| ¡  |  t|j ¡ ƒdg¡ dd„ }t  |¡}| ¡ }| ¡  |  t|j ¡ ƒg ¡ ddd„}t  |¡}| ¡ }| ¡  |  t|j ¡ ƒdg¡ d S )Nr!   r  r   c                _   r0   r   r   )r   r   r   r   r  r   r   r   r#   ¶  r„   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foor€  )r   r€  rð  )r   r   r  r~  rŒ  )ré   r&  )r   r€  )r   )rŒ  ré   c                 S   r0   r   r   r   r   r   r   r#   É  r„   c                   S   r0   r   r   r   r   r   r   r#   Ò  r„   rZ   c                 S   r0   r   r   r_  r   r   r   r#   Ù  r„   )r   rZ   r  )r   r!   rÁ  )	r;   rx  r‰  Zapply_defaultsr¸   r‹   r'  r(  Zbind_partialrB  r   r   r   Ú-test_signature_bound_arguments_apply_defaultsµ  s@   

þþ

þ


z@TestBoundArguments.test_signature_bound_arguments_apply_defaultsc                 C   s.   dd„ }t  |¡ d¡}|  t|jƒt¡ d S )Nc                 S   r0   r   r   r_  r   r   r   r#   à  r„   zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foor!   )r;   rx  r‰  rÒ   rh   r'  r–   r>  r   r   r   Ú-test_signature_bound_arguments_arguments_typeß  s   z@TestBoundArguments.test_signature_bound_arguments_arguments_typeN)	r8   rG   rH   r?  r@  rA  rC  rD  rE  r   r   r   r   r=  ~  s    
*r=  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestSignaturePrivateHelpersc                 C   s:   t j}|  |dƒd¡ |  |dƒd¡ |  |dƒd¡ d S )Nz($self)rA   z($self, obj)z($cls, /, obj)r­   )r;   Z_signature_get_bound_paramr¸   )rA   Úgetterr   r   r   Útest_signature_get_bound_paramå  s   z:TestSignaturePrivateHelpers.test_signature_get_bound_paramc                 C   s8   t  |¡\}}}|  ||¡ |  ||¡ |  ||¡ d S r   )r;   Z"_signature_strip_non_python_syntaxr¸   )rA   ÚinputZclean_signatureZself_parameterZlast_positional_onlyZcomputed_clean_signatureZcomputed_self_parameterZcomputed_last_positional_onlyr   r   r   Ú_strip_non_python_syntaxì  s   ýz4TestSignaturePrivateHelpers._strip_non_python_syntaxc                 C   st   |   dddd¡ |   dddd¡ |   ddd d¡ |   ddd d ¡ |   d	dd d ¡ |   d
d
d d ¡ |   d d d d ¡ d S )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)r   z($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ü   )rJ  r[   r   r   r   Ú&test_signature_strip_non_python_syntaxö  sT   úüüüüüüzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxN)r8   rG   rH   rH  rJ  rK  r   r   r   r   rF  ä  s    
rF  c                   @   s,   e Zd Zee ed¡dd„ ƒƒZdd„ ZdS )ÚTestSignatureDefinitionsrc  c              	   C   s(  t ƒ }h d£}||O }dh}||O }dh}||O }h d£}||O }ddh}||O }t ƒ }ttƒ}t| ¡ ƒD ]:\}	}
t|
ƒs?q6t|
tƒrM|	|vrM| |	¡ |	|v rRq6| j	|	d |  
t |
¡¡ W d   ƒ q61 skw   Y  q6|D ]}	| j	|	d |  |
j¡ W d   ƒ qs1 sŒw   Y  qsd S )N>   r•  rÒ  r“  Úslicer6  r$   ÚvarsÚanextÚround>   Ú__build_class__Ú
breakpointrE  r  Úmaxrô   Ú
__import__)rp  )r:   rN  r+  ru  r(  Úcallabler–  rh   r8  r  ÚassertIsNotNoner;   rx  r(  Ú__text_signature__)rA   Zno_signatureZneeds_groupsZ
needs_nullZneeds_semantic_updateZneeds_varargsZnot_converted_yetZtypes_with_signaturesrg  r^  rD   r   r   r   Útest_builtins_have_signatures'  s8   
ÿÿÿz6TestSignatureDefinitions.test_builtins_have_signaturesc                 C   sV   dd„ }d|_ t |¡}|  |¡ |  t|ƒd¡ d|_ t |¡}|  t|ƒd¡ d S )Nc                  _   r0   r   r   r.  r   r   r   rÊ  _  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))rW  r;   rx  rV  r¸   r-  )rA   rÊ  r  r   r   r   Ú'test_python_function_override_signature^  s   


z@TestSignatureDefinitions.test_python_function_override_signatureN)	r8   rG   rH   r   rÀ   rm  r   rX  rY  r   r   r   r   rL  #  s    ÿ4rL  c                   @   s    e Zd Zdd„ Zedd„ ƒZdS )ÚNTimesUnwrappablec                 C   s   || _ d | _d S r   )r=  Ú_next)rA   r=  r   r   r   rÂ   k  s   
zNTimesUnwrappable.__init__c                 C   s2   | j dkr	tdƒ‚| jd u rt| j d ƒ| _| jS )Nr   zUnwrapped too many timesr!   )r=  rS  r[  rZ  r[   r   r   r   r¤  o  s
   

zNTimesUnwrappable.__wrapped__N)r8   rG   rH   rÂ   rO  r¤  r   r   r   r   rZ  j  s    rZ  c                   @   r»   )Ú
TestUnwrapc                 C   s.   dd„ }t jdd|ƒ}|  t |¡|¡ d S )Nc                 S   ó   | | S r   r   r   r   r   r   rÊ  z  rU  z(TestUnwrap.test_unwrap_one.<locals>.funcr€  )r@  )rr   Ú	lru_cacherÒ   r;   Úunwrap)rA   rÊ  rî  r   r   r   Útest_unwrap_oney  s   zTestUnwrap.test_unwrap_onec                 C   sP   dd„ }|}t dƒD ]}t |¡dd„ ƒ}q
|  |j|¡ |  t |¡|¡ d S )Nc                 S   r]  r   r   r   r   r   r   rÊ  €  rU  z,TestUnwrap.test_unwrap_several.<locals>.funcr~  c                   S   r0   r   r   r   r   r   r   rî  „  r4   z/TestUnwrap.test_unwrap_several.<locals>.wrapper)r$   rr   rM  rú  r¤  rÒ   r;   r_  )rA   rÊ  rî  Ú__r   r   r   Útest_unwrap_several  s   zTestUnwrap.test_unwrap_severalc                 C   sT   dd„ }t  |¡dd„ ƒ}t  |¡dd„ ƒ}d|_tj|dd	„ d
}|  ||¡ d S )Nc                 S   r]  r   r   r   r   r   r   Úfunc1‹  rU  z#TestUnwrap.test_stop.<locals>.func1c                   S   r0   r   r   r   r   r   r   rû    r4   z#TestUnwrap.test_stop.<locals>.func2c                   S   r0   r   r   r   r   r   r   rî    r4   z%TestUnwrap.test_stop.<locals>.wrapperr!   c                 S   s
   t | dƒS )NÚ	stop_herera  rJ  r   r   r   rƒ   •  r<  z&TestUnwrap.test_stop.<locals>.<lambda>)Ústop)rr   rM  rd  r;   r_  rÒ   )rA   rc  rû  rî  Z	unwrappedr   r   r   Ú	test_stopŠ  s   

ÿzTestUnwrap.test_stopc                 C   sÊ   dd„ }||_ |  td¡ t |¡ W d   ƒ n1 sw   Y  dd„ }||_ ||_ |  td¡ t |¡ W d   ƒ n1 sBw   Y  |  td¡ t |¡ W d   ƒ d S 1 s^w   Y  d S )Nc                   S   r0   r   r   r   r   r   r   rc  ™  r„   z$TestUnwrap.test_cycle.<locals>.func1rÖ  c                   S   r0   r   r   r   r   r   r   rû  ž  r„   z$TestUnwrap.test_cycle.<locals>.func2)r¤  rÇ  r<  r;   r_  )rA   rc  rû  r   r   r   Ú
test_cycle˜  s   ÿÿ"ÿzTestUnwrap.test_cyclec                    s6   dd„ ‰ d ˆ _ G ‡ fdd„dƒ}|  t |ƒ ¡¡ d S )Nc                   S   r0   r   r   r   r   r   r   rÊ  §  r„   z(TestUnwrap.test_unhashable.<locals>.funcc                       s   e Zd ZdZ” ZdS )z%TestUnwrap.test_unhashable.<locals>.CN)r8   rG   rH   Ú__hash__r¤  r   rC  r   r   r“   ©  s    r“   )r¤  r(  r;   r_  )rA   r“   r   rC  r   Útest_unhashable¦  s   zTestUnwrap.test_unhashablec                 C   sL   t t ¡ d ƒ}|  td¡ t |¡ W d   ƒ d S 1 sw   Y  d S )Nr!   rÖ  )rZ  rd   ÚgetrecursionlimitrÇ  r<  r;   r_  )rA   rD   r   r   r   Útest_recursion_limit®  s   "ÿzTestUnwrap.test_recursion_limitN)	r8   rG   rH   r`  rb  rf  rg  ri  rk  r   r   r   r   r\  w  s    r\  c                   @   sD   e Zd Zdd„ Zdd„ Ze edu d¡dd„ ƒZd	d
„ Z	dd„ Z
dS )ÚTestMainc                 C   sV   t  d¡}tdddƒ\}}}| ¡  ¡ }|  |d d… t |¡ ¡ ¡ |  |d¡ d S )NrÀ   ú-mr;   r   ó    )Ú	importlibÚimport_moduler   Údecoderb  r¸   r;   r  )rA   ÚmoduleÚrcr2   Úerrr   r   r   r   Útest_only_source´  s   

ÿzTestMain.test_only_sourcec                 C   sH   dd„ }d|_ |  t¡ t |¡ W d   ƒ d S 1 sw   Y  d S )Nc                   S   r0   r   r   r   r   r   r   r#   ¾  r|   z)TestMain.test_custom_getattr.<locals>.foor•   )r\  rB  rC  r;   rx  r˜  r   r   r   Útest_custom_getattr½  s
   "ÿzTestMain.test_custom_getattrNz6threads required to test __qualname__ for source filesc                 C   sL   t dddƒ\}}}| ¡  ¡ }|  |d d… t t¡ ¡ ¡ |  |d¡ d S )Nrm  r;   z%concurrent.futures:ThreadPoolExecutorr   rn  )r   rq  rb  r¸   r;   r  r   )rA   rs  r2   rt  r   r   r   r   Útest_qualname_sourceÄ  s   
ÿÿzTestMain.test_qualname_sourcec                 C   s:   t  d¡}tdddƒ\}}}| ¡  ¡ }|  |dg¡ d S )NrÀ   rm  r;   rd   z#Can't get info for builtin modules.)ro  rp  r   rq  rb  r¸   )rA   rr  rr  r2   rt  r   r   r   r   Útest_builtinsÏ  s   

ÿzTestMain.test_builtinsc                 C   sx   t  d¡}t ¡ }tg |¢d‘d‘d‘d‘R Ž \}}}| ¡ }|  |j|¡ |  |j|¡ |  |j	|¡ |  
|d¡ d S )NrÀ   rm  r;   z	--detailsrn  )ro  rp  r   Z!optim_args_from_interpreter_flagsr   rq  r˜   r8   rÖ   Ú
__cached__r¸   )rA   rr  r   rs  r2   rt  Úoutputr   r   r   Útest_detailsÖ  s   
ÿÿzTestMain.test_details)r8   rG   rH   ru  rv  rÀ   rm  r   rw  rx  r{  r   r   r   r   rl  ³  s    	
ÿ
	rl  c                   @   s0   e Zd Ze d¡Ze d¡Zdd„ Zdd„ ZdS )Ú
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    c                 C   sX   t  |¡}t|dd}|  | ¡  d¡| d¡¡ W d   ƒ d S 1 s%w   Y  d S )Nrñ   rò   T)r;   r  rô   r¸   r÷   rb  )rA   r  rø   Zinspected_srcrÈ  r   r   r   ÚassertInspectEqualï  s   
þ"ÿzTestReload.assertInspectEqualc              	   C   s’   t d| jƒ9\}}t |¡}|  ||¡ t|ddd}| | j¡ W d   ƒ n1 s,w   Y  |  ||¡ W d   ƒ d S 1 sBw   Y  d S )NZ
reload_bugr  rñ   rò   )r   Ú
src_beforero  rp  r}  rô   r
  Ú	src_after)rA   r^  r  rr  rÈ  r   r   r   Útest_getsource_reload÷  s   
ÿ"ûz TestReload.test_getsource_reloadN)	r8   rG   rH   ÚtextwrapÚdedentr~  r  r}  r€  r   r   r   r   r|  ã  s
    

r|  c                   C   sB   t ttttttttt	t
ttttttttttttttttttƒ d S r   )r   ry  r	  r†  rŸ  r©  r¼   r!  r^   rR  rw  rz  r€  rÈ  r  rù  r  r  r=  rF  rL  r  r  r\  rl  r|  rì  ru  rp  r   r   r   r   Ú	test_main  s   örƒ  Ú__main__)jr+  r  ro   rr   ro  r;   ri  r:  r  Zos.pathr   rf  r  r  rd   rg   r  r¿  rÀ   Zunittest.mockrl   Úconcurrent.futuresr   ÚImportErrorZtest.supportr   r   r   r   Ztest.support.import_helperr	   Ztest.support.os_helperr
   Ztest.support.script_helperr   r   rV  r   ra   r   r%  r   r   r   r   Ztest.test_importr   rÖ   rÑ   r  r   r  rÃ   r/   r3   rý   rv  rÁ   r5   rV   rX   r\   rï  r]   r^   r¼   rð   r  r	  rp  ru  ry  r†  rŸ  r©  r  rŒ   r  r  r   r!  r  r   r  rR  rw  rz  r€  rÈ  rì  r[  rö  rY  rø  rù  r  r  r=  rF  rL  rZ  r\  rl  r|  rƒ  r8   r   r   r   r   Ú<module>   sæ    ÿ

 87 L
*l    78z I  c@          1   f?G<0

ÿ