
    daf$                       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	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d dlZ	 d dlmZ d dlmZ d dlmZmZ d dl m!Z!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*m0Z0 d dl*m1Z1 e,jd                  Z3e3ji                  d      re3dd Z3 ee3      Z3d Z5 e,jl                         Z7d Z8d Z9d Z:djw                         Z< G d dejz                        Z>d Z?d Z@d ZAej                  d        ZC G d de>      ZD G d de>      ZE G d  d!ejz                        ZF G d" d#      ZG G d$ d%eF      ZH G d& d'ejz                        ZI G d( d)eF      ZJ G d* d+eF      ZK G d, d-eF      ZL G d. d/eF      ZM G d0 d1eF      ZN G d2 d3eF      ZO G d4 d5eF      ZP G d6 d7eQ      ZR G d8 d9eQ      ZSd: ZT G d; d<ejz                        ZU G d= d>ejz                        ZV G d? d@ejz                        ZW eQ       ZX G dA dBejz                        ZY G dC dDejz                        ZZ G dE dFeZ      Z[ G dG dHe[      Z\ G dI dJejz                        Z] G dK dLejz                        Z^ G dM dNejz                        Z_ e)j                          G dO dPej                               Zb G dQ dRej                        Zd G dS dTej                        Zf G dU dVejz                        Zg G dW dXejz                        Zh G dY dZejz                        Zi G d[ d\ejz                        Zj G d] d^ejz                        Zk G d_ d`ejz                        Zl G da db      Zm G dc ddejz                        Zn G de dfejz                        Zo G dg dhejz                        Zpeqdik(  r ej                          yy# e$ r dZY w xY w)j    Nnormcase)ThreadPoolExecutor)cpython_only)MISSING_C_DOCSTRINGS	ALWAYS_EQ)DirsOnSysPathready_to_import)TESTFN)assert_python_okassert_python_failure)support)inspect_fodder)inspect_fodder2)inspect_stock_annotations)inspect_stringized_annotations) inspect_stringized_annotations_2)coc                      t        |       f|z   S Nr   )filenameargss     9/root/Python-3.12.4/Lib/test/test_inspect/test_inspect.pyreviser   @   s    X 4''    c                  P    t         j                  rt        j                  d        y y r   )r   has_socket_supportasyncioset_event_loop_policy r   r   tearDownModuler#   F   s    !!%%d+ "r   c               #     K   g d} t        ddt        |       z        D ]i  }g }d}t        t        |             D ]  }|||z  z  s|j                  | |          ! ddj                  |      z   dz   }i }t	        |||       |d    k yw)	z
    Yields a whole bunch of functions with only keyword-only parameters,
    where those parameters are always in lexicographically sorted order.
    )abarr   deltaephraimmagicalyoyoz      zdef foo(*, z, z): passfooN)rangelenappendjoinexec)
parametersipbitjfn_textsymbolss          r   5signatures_with_lexicographic_keyword_only_parametersr;   K   s     
 OJ1aZ() 	s:' 	(AC1H~A'	(  $))A,.:Wgw'en	s   ABABc                      y r   r"   )throwoutthebabywith_the_	bathwaters          r   #unsorted_keyword_only_parameters_fnrD   ]   s    r   z'throw out the baby with_ the_ bathwaterc                   r   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$                  ej&                  g      Zd Zd Zy)
IsTestBasec           	         t        |      }| j                   ||      |j                  d|d       | j                  t	        |g      z
  D ]x  }|t
        j                  k(  s&|t
        j                  k(  s|t
        j                  k(  r|t
        j                  k(  rP| j                   ||      d|j                  d|d       z y )N()znot )eval
assertTrue__name__
predicatessetinspectisgeneratorfunctionisasyncgenfunctioniscoroutinefunction
isfunctionassertFalse)self	predicateexpobjothers        r   istestzIsTestBase.istestl   s    3i	#I4F4F(LM__sI;'77 	OEW888G666G777***U3Z)MN	Or   c                 <    t        j                  | t        d       y )N)modulesbyfile)not_exported)r   check__all__rO   rU   s    r   test__all__zIsTestBase.test__all__x   s    T79KLr   N)rL   
__module____qualname__rN   rO   	isbuiltinisclassiscodeisframerS   ismethodismoduleistracebackisgeneratorrP   iscoroutinerR   
isasyncgenrQ   ismethodwrapperrM   rZ   r`   r"   r   r   rF   rF   c   s    g'''..oow'9'97;K;K&&(;(;))7+F+F))7+F+F(('*D*D--/ 0J
OMr   rF   c              #   4   K   t        d      D ]  }|  y wNr-   r/   rU   r5   s     r   generator_function_examplerr   {   s     1X    c                F   K   t        d      2 3 d {   }| 7 
6 y wro   rp   rq   s     r    async_generator_function_exampleru      s&     8  a8s   !!!c                    K   ywNspamr"   r_   s    r   coroutine_function_examplery      s	        c              #      K   d  ywrw   r"   r_   s    r   gen_coroutine_function_exampler|      s     	   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestPredicatesc           	         | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  d       	 ddz   d a| j                  t        j                   d
       | j                  t        j                   d       | j                  t        j"                  d       | j                  t        j"                  d       | j                  t        j$                  d       | j                  t        j&                  d       | j                  t        j(                  d       | j                  t        j*                  d       | j                  t        j,                  d       | j                  t        j.                  d       t1        j2                         5  t1        j4                  d       | j                  t        j6                  d       | j                  t        j8                  d       d d d        t        t        d      r!| j                  t        j:                  d       n<| j                  t        j:                  t<        j>                  j@                               | j                  t        jB                  d       | j                  t        jB                  d       | j                  t        jB                  d       | j                  t        jB                  t                     | j                  t        jB                  tD                     | j                  t        jB                  t        ddi                    y # t        $ r}|j
                  a| j                  t        j                  d       | j                  t        j                  d       t        t        d      r!| j                  t        j                  d	       nE| j                  t        j                  t        t        j                        j                               Y d }~d }~ww xY w# d aw xY w# 1 sw Y   7xY w)Nzsys.exitz	[].appendzmod.spam.__code__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))rr   z#async_generator_function_example(1)ru   ignorezcoroutine_function_example(1)ry   MemberDescriptorTypezdatetime.timedelta.dayszobject().__str__zobject().__eq__zobject().__repr__AnyClassr"   )#rZ   rO   rc   re   	Exception__traceback__r   rf   ri   hasattrtypesisgetsetdescriptorrT   typetb_framef_localsrS   rg   rh   isdatadescriptorrj   rP   rl   rQ   warningscatch_warningssimplefilterrk   rR   ismemberdescriptordatetime	timedeltadaysrm   intrU   es     r   test_excluding_predicatesz(TestPredicates.test_excluding_predicates   s   G%%z2G%%{3GNN$78	aC BG&&
3G&&(=>G$$k2G$$&9:G$$e,G,,.WXG'')@AG//1MNG&&9	;G..6	8 $$& 	S!!(+KK++-LMKK335QR	S
 501KK224MNW778J8J8O8OPQG++-?@G++->?G++-@A0067005600j"b1IJKO  	YBKK7KK++T2u45G668:   !;!;D<M<V<V!WX	Y B	S 	Ss8   "M( =AQ(	P>1CP93Q 9P>>Q QQc           	         t        d      }t        d      }t        d      }| j                  t	        j
                  t                     | j                  t	        j
                  t        j                  t        j                  t                                 | j                  t	        j                  |             | j                  t	        j                  t                     | j                  t	        j                  t        j                  t        j                  t                                 | j                  t	        j                  |             d t        j                  fd       }| j                  t	        j
                  |             | j                  t	        j
                  t	        j                  fd                    G d d      }| j                  t	        j
                  |             | j                  t	        j
                   |                    | j                  t	        j
                  t	        j                   |                           G d d      }| j                  t	        j
                  |             | j                  t	        j
                   |                    | j                  t	        j
                  t	        j                   |                           G d	 d
      }| j                  t	        j
                  |j                               | j                  t	        j
                  |j                               | j                  t	        j
                  t        j                   j#                                      | j                  t	        j
                  t        j                   j%                                      | j                  t	        j
                  t                     | j                  t	        j
                  t        j                  t        j                  t                                 | j                  t	        j                  |             | j                  t	        j                  t        j                   j#                                      | j                  t	        j                  t        j                   j%                                      | j                  t	        j                  t                     | j                  t	        j                  t        j                  t        j                  t                                 | j                  t	        j                  |             | j                  t	        j&                  t        j                   j#                                      | j                  t	        j&                  t        j                   j%                                      | j                  t	        j&                  t                     | j                  t	        j&                  t                      | j                  t	        j&                  t        j                  t        j                  t                                  | j                  t	        j(                  |             |j+                          |j+                          y )Nr,   c                     K   y wr   r"   r"   r   r   _fn3z-TestPredicates.test_iscoroutine.<locals>._fn3   s	     rz   c                               S r   r"   r   s   r   fn3z,TestPredicates.test_iscoroutine.<locals>.fn3   s
    6Mr   c                               S r   r"   r   s   r   <lambda>z1TestPredicates.test_iscoroutine.<locals>.<lambda>   s	    df r   c                       e Zd Zd Zy)+TestPredicates.test_iscoroutine.<locals>.Clc                    K   y wr   r"   r_   s    r   __call__z4TestPredicates.test_iscoroutine.<locals>.Cl.__call__   s	     rz   NrL   ra   rb   r   r"   r   r   Clr          r   r   c                   0    e Zd Zej                  d        Zy),TestPredicates.test_iscoroutine.<locals>.Cl2c                      y r   r"   r_   s    r   r   z5TestPredicates.test_iscoroutine.<locals>.Cl2.__call__       r   N)rL   ra   rb   rO   markcoroutinefunctionr   r"   r   r   Cl2r      s    ** +r   r   c                   h    e Zd Zej                  ed               Zej                  ed               Zy),TestPredicates.test_iscoroutine.<locals>.Cl3c                      y r   r"   clss    r   do_something_classyz@TestPredicates.test_iscoroutine.<locals>.Cl3.do_something_classy        r   c                       y r   r"   r"   r   r   do_something_staticz@TestPredicates.test_iscoroutine.<locals>.Cl3.do_something_static  r   r   N)	rL   ra   rb   rO   r   classmethodr   staticmethodr   r"   r   r   Cl3r      sD    **  + **  +r   r   )ru   r|   ry   rT   rO   rR   	functoolspartialrk   rK   rP   rj   r   r   r   unittestmockMock	AsyncMockrQ   rl   close)	rU   async_gen_corogen_corocoror   r   r   r   r   s	           @r   test_iscoroutinezTestPredicates.test_iscoroutine   s   9!<1!4)!,''(FG	I''!!)"3"32#4 56	7 	,,X67''(FG	I''!!)"3"32#4 56	7 	++H56	 
	&	&	 
'	 	33C89''--n=	
	 	 	44R8944RT:;33))"$/
 		 	
 	44S9:44SU;<33))#%0
 			 		 	33C4K4KLM33C4K4KLM''(:(:(<=	?''(?(?(AB	D''(BC	E''!!)"3"3.#0 12	3 	++D12''(:(:(<=	?''(?(?(AB	D''(BC	E''!!)"3"3.#0 12	3 	,,T23&&x}}'9'9';<	>&&x}}'>'>'@A	C&&'AB	D&&'GH	J&&!!)"3"34#6 78	9 	**>:;

hnn&r   c                    d }| j                  t        j                   |                    t        d      }t	        d      }| j                  t        j                  |             | j                  t        j                  |              G d d      }| j                  t        j                   |                    | j                  t        j                  |              G d d      } |       }d |_        | j                  t        j                  |             |j                          |j                          y )Nc               3      K   d  y wr   r"   r"   r   r   genz,TestPredicates.test_isawaitable.<locals>.gen2  s     5r}   r,   c                       e Zd Zd Zy)/TestPredicates.test_isawaitable.<locals>.Futurec                       y r   r"   r"   r   r   	__await__z9TestPredicates.test_isawaitable.<locals>.Future.__await__<      r   N)rL   ra   rb   r   r"   r   r   Futurer   ;  r   r   r   c                       e Zd Zy)2TestPredicates.test_isawaitable.<locals>.NotFutureNrL   ra   rb   r"   r   r   	NotFuturer   A      r   r   c                       y r   r"   r"   r   r   r   z1TestPredicates.test_isawaitable.<locals>.<lambda>C      r   )rT   rO   isawaitablery   r|   rK   r   r   )rU   r   r   r   r   r   not_futs          r   test_isawaitablezTestPredicates.test_isawaitable1  s    ,,SU34)!,1!4++D12++H56	 	 	++FH56,,V45+(,,W56

hnn&r   c           	      	   | j                  t        j                  t        j                               | j                  t        j                  t
        j                               | j                  t        j                  g j                               | j                  t        j                  t
        j                               | j                  t        j                  t
        j                  j                               | j                  t        j                  t        j                               | j                  t        j                  t        j                               | j                  t        j                  t        j                               | j                  t        j                  t        j                               | j                  t        j                  t               j                               | j                  t        j                  t               j                               | j                  t        j                  t               j                               | j                  t        j                  dj                               | j                  t        j                  t         j"                               | j                  t        j                  t$        j&                               | j                  t        j                  dj"                               | j                  t        j                  g j&                               | j)                  t        j                  t                     | j)                  t        j                  t                            | j)                  t        j                  t!                            | j)                  t        j                  t
                     | j)                  t        j                  t*                     | j)                  t        j                  t                     | j)                  t        j                  t+        ddi                    y )N*    
some_classr"   )rK   rO   	isroutinegitarguer   custom_methodcountrx   	StupidGitabuseobject__init____str____lt__r   strr2   listr1   rT   r   r_   s    r   test_isroutinezTestPredicates.test_isroutineH  s   ))#))45))#*;*;<=))"((34))#((34))#--*=*=>?))&//:;))&..9:))&--89))#**56))&(*;*;<=))&(*:*:;<))&(//:;))2++67))#((34))$++67))"''23))"))45**623**6845**3512**3/0**401**3/0**4b"+EFGr   c                    | j                  t        j                  d       | j                  t        j                  t                      G d dt
              }| j                  t        j                   |                    y )Nzmod.StupidGitc                       e Zd Zd Zy)2TestPredicates.test_isclass.<locals>.CustomGetattrc                      y r   r"   )rU   attrs     r   __getattr__z>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__o      r   NrL   ra   rb   r   r"   r   r   CustomGetattrr   n      r   r   )rZ   rO   rd   rK   r   r   rT   )rU   r   s     r   test_isclasszTestPredicates.test_isclassj  sP    GOO_5-.	F 	 	9:r   c                      G d dt               } |       }d|_        t        t        j                  |            }| j                  d|       | j                  d|       y )Nc                       e Zd ZdZy)/TestPredicates.test_get_slot_members.<locals>.Cr%   bNrL   ra   rb   	__slots__r"   r   r   Cr   t  s    "Ir   r   r   r%   r   )r   r%   dictrO   
getmembersassertInassertNotIn)rU   r   xmemberss       r   test_get_slot_membersz$TestPredicates.test_get_slot_memberss  sO    	# 	#Cw))!,-c7#g&r   c                    ddl m}m  G fdd|      } G d d|      } |       }| j                  t	        j
                  |             | j                  t	        j
                  |             | j                  t	        j
                  |             | j                  t	        j
                  t                     | j                  t	        j
                  d             y )	Nr   ABCMetaabstractmethodc                        e Zd ZW  d        Zy)<TestPredicates.test_isabstract.<locals>.AbstractClassExamplec                      y r   r"   r_   s    r   r.   z@TestPredicates.test_isabstract.<locals>.AbstractClassExample.foo  r   r   NrL   ra   rb   r.   r	  s   r   AbstractClassExampler    s     r   r  	metaclassc                       e Zd Zd Zy)4TestPredicates.test_isabstract.<locals>.ClassExamplec                      y r   r"   r_   s    r   r.   z8TestPredicates.test_isabstract.<locals>.ClassExample.foo  r   r   Nr  r"   r   r   ClassExampler    r   r   r     )abcr  r	  rK   rO   
isabstractrT   r   )rU   r  r  r  r%   r	  s        @r   test_isabstractzTestPredicates.test_isabstract|  s    /	W 		/ 	 N 	**+?@A++L9:++A./++C01++A./r   c                   	 ddl m}m g 	 G 	fdd|      } G fdd|      } G d d	|      }| j                  	d
dg       	j	                           G d d|      } G d d|      } G d d|      }| j                  	g d       y )Nr   r  c                       e Zd Z fdZy)LTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractCheckerc                 N    j                  t        j                  |              y r   )r1   rO   r  )r   isabstract_checkss    r   __init_subclass__z^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__  s    !((););C)@Ar   N)rL   ra   rb   r  )r  s   r   AbstractCheckerr    s	    Br   r   r  c                        e Zd ZW  d        Zy)QTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplec                      y r   r"   r_   s    r   r.   zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.foo  r   r   Nr  r  s   r   r  r"    s     r   r  c                       e Zd Zd Zy)ITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplec                      y r   r"   r_   s    r   r.   zMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.foo  r   r   Nr  r"   r   r   r  r%    r   r   r  TFc                       e Zd Zy)JTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChildNr   r"   r   r   AbstractChildr(        r   r)  c                       e Zd Zy)OTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractGrandchildNr   r"   r   r   AbstractGrandchildr,    r*  r   r-  c                       e Zd Zy)OTestPredicates.test_isabstract_during_init_subclass.<locals>.ConcreteGrandchildNr   r"   r   r   ConcreteGrandchildr/    r*  r   r0  )TTF)r  r  r	  assertEqualclear)
rU   r  r   r  r  r)  r-  r0  r	  r  s
           @@r   $test_isabstract_during_init_subclassz3TestPredicates.test_isabstract_during_init_subclass  s    /	B 	B	? 		/ 	 	*T5M:!	0 		 		 	*,?@r   N)rL   ra   rb   r   r   r   r   r   r  r  r3  r"   r   r   r   r      s1    .Ldp(d'. HD;'0,Ar   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestInterpreterStackc                 x    t        j                  j                  | g|i | t        j	                  ddd       y )N      	   )r   TestCaser   r   r   rU   r   kwargss      r   r   zTestInterpreterStack.__init__  s0    ""49$9&9		!Qr   c                     | j                  t        j                  d       | j                  t        j                  d       y )Nzgit.ex.__traceback__zmod.fr)rZ   rO   ri   rf   r_   s    r   test_abuse_donez$TestInterpreterStack.test_abuse_done  s)    G'')?@GOOX.r   c           	          | j                  t        t        j                        dk\         t        j                  ^}}}}}t	        |dd   }| j                  |t        dddgdf       | j                  |j                  t        j                  dddd             t	        |dd   }| j                  |t        dd	d
gdf       | j                  |j                  t        j                  dddd             t	        |dd   }| j                  |t        dddgdf       | j                  |j                  t        j                  dddd             t	        |dd   }| j                  |t        dddgdf       | j                  |j                  t        j                  dddd             t        j                  d   }| j                  |j                  t        j                         | j                  |j                  d       | j                  |j                  t        j                         | j                  |j                   d       | j#                  d|j$                  d          | j                  |j&                  d       y )Nr  r,      eggsz    st = inspect.stack()
r   r9     rx       eggs(b + d, c + f)
      +   r               spam(a, b, c)
      '   r   z        self.argue(a, b, c)
r8     zinspect.stack())rK   r0   r   str   r1  modfile	positionsdis	PositionsassertIsframefrlinenor   __file__functionr  code_contextindex)rU   frame1frame2frame3frame4_	frameinforecords           r   
test_stackzTestInterpreterStack.test_stack  s    CFFq()-0VV*F12J'	r6$@#A1E	G))3==RB+GHF12J'	q&#=">B	D))3==Aq"+EFF12J'	r7%B$CQG	I))3==RR+HIF12J'	r7%D$EqI	K))3==RB+GHfllCFF++#,,7&1')<)<Q)?@q)r   c           	         | j                  t        t        j                        d       t        j                  \  }}}| j                  t	        |dd   t
        dddgdf       | j                  |j                  t        j                  dddd             | j                  t	        |dd   t
        d	d
dgdf       | j                  |j                  t        j                  d	d	dd             | j                  t	        |dd   t
        dddgdf       | j                  |j                  t        j                  dddd             y )N   r,   rF  r   rG  r   rH  rI  r9  rx   rC  rD  rE     rA  z    q = y / 0
r8     )	r1  r0   r   trr   rM  rN  rO  rP  )rU   rY  rZ  r[  s       r   
test_tracezTestInterpreterStack.test_trace  s"   SVVa("%&&,r7%B$CQG	I))3==RR+HI,q&#=">B	D))3==Aq"+EF,r6$5#6:	<))3==RB+GHr   c                 @   t        j                  t        j                        \  }}}}| j	                  |ddg       | j	                  |d        | j	                  |d        | j	                  |dddd       | j	                  t        j
                  ||||      d       y )Nr  y      )r  r6   rh  z(x=11, y=14))rO   getargvaluesr   rS  r1  formatargvaluesrU   r   varargsvarkwlocalss        r   
test_framezTestInterpreterStack.test_frame  s    '.';';CFF'C$gufSz*$'%r!<=00wvN'	)r   c                 (   t        j                  t        j                  j                        \  }}}}| j                  |g d       | j                  |d       | j                  |d       | j                  t        j                  ||||      d       y )N)r%   r   r   dr   fghz-(a=7, b=8, c=9, d=3, e=4, f=5, *g=(), **h={}))rO   rk  r   rS  f_backr1  rl  rm  s        r   test_previous_framez(TestInterpreterStack.test_previous_frame  sx    '.';';CFFMM'J$guf=>#&$00wvN<	>r   N)	rL   ra   rb   r   r>  r`  rf  rq  rx  r"   r   r   r5  r5    s!    
/*8I)>r   r5  c                   "    e Zd ZdZd Zd Zd Zy)GetSourceBaseNc                     t        t        j                  | j                        d      5 }|j	                         | _        d d d        y # 1 sw Y   y xY w)Nutf-8encoding)openrO   getsourcefilefodderModulereadsource)rU   fps     r   setUpzGetSourceBase.setUp  sB    '''(9(9:WM 	$QS'')DK	$ 	$ 	$s   A

Ac                 x    | j                   j                  d      }dj                  ||dz
  |       |rdz   S dz   S )N
r,   r   )r  splitr2   )rU   topbottomliness       r   sourcerangezGetSourceBase.sourcerange  s?    !!$'yys1uV,-HHRHHr   c                 n    | j                  t        j                  |      | j                  ||             y r   )r1  rO   	getsourcer  )rU   rX   r  r  s       r   assertSourceEqualzGetSourceBase.assertSourceEqual  s-    **3/))#v6	8r   )rL   ra   rb   r  r  r  r  r"   r   r   rz  rz    s    L$I8r   rz  c                       e Zd ZdZdddZy)SlotUserzDocstrings for __slots__measured in kilowattsmeasured in kilometers)powerdistanceN)rL   ra   rb   __doc__r   r"   r   r   r  r    s    157Ir   r  c                   n   e Zd ZeZd Zd Z ej                  e	j                  j                  dk\  d      d        Z ej                  e	j                  j                  dk\  d      d        Z ej                  ed      d        Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestRetrievingSourceCodec                    t        j                  t        t         j                        }| 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        j                  |D cg c]  }|d   	 c}      }| j	                  |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        j                  |D cg c]  }|d   	 c}d	      }| j	                  |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       y c c}w c c}w )
NFesteringGobMalodorousPervertParrotDroppingsr   TitWhichCommentsr,   r"   T)rO   r   r   rd   r1  r  r  r  r   r  getclasstreer   )rU   classesr   trees       r   test_getclassesz(TestRetrievingSourceCode.test_getclasses  s(   $$S'//:)3+;+;<.0E0EF,c.A.AB&6 #"7"78*C,=,=>	 ##w$?SV$?@!2,//&; --0E0E363F3F0H I   MMF95 22S]]4DE!..1F1F474G4G1I J 
 !..	;	 ##w$?SV$?F!2,//&;MMF95 22S]]4DE!..1F1F474G4G1I J 
 !..	;
	# %@  %@s   4I97I>c                     t        j                  t        t         j                        }| j	                  |dt        j
                  fdt        j                  fdt        j                  fdt        j                  fg       y )Nafter_closingrA  lobbestrx   )	rO   r   r   rS   r1  r  rA  r  rx   )rU   	functionss     r   test_getfunctionsz*TestRetrievingSourceCode.test_getfunctions/  s`    &&sG,>,>?	os7H7H%I&,chh%7&/%=&,chh%7%9 	:r   r-   z)Docstrings are omitted with -O2 and abovec                    | j                  t        j                  t              d       | j                  t        j                  t        j                        d       | j                  t        j                  t
        j                        d       | j                  t        j                  t        j                        d       | j                  t        j                  t        j                        d       y )NzA module docstring.A longer,

indented

docstring.$Another

docstring

containing

tabsr  r  )
r1  rO   getdocr   r   r   r   r  r  r  r_   s    r   test_getdocz$TestRetrievingSourceCode.test_getdoc6  s     	,.CD6>	@		2E	G70	2(9(9:1	3r   c                    | j                  t        j                  t        j                        d       | j                  t        j                  t        j                  j
                        d       | j                  t        j                  t        j                         j
                        d       | j                  t        j                  t        j                  j                        d       y )Nr  r  zThe automatic gainsaying.)r1  rO   r  r   r  r   contradictionr_   s    r   test_getdoc_inheritedz.TestRetrievingSourceCode.test_getdoc_inheritedC  s     	(8(89>	@(8(8(>(>?E	G(8(8(:(@(@AE	G(8(8(F(FG4	6r   ztest requires docstringsc                 p   t         j                  }| j                   |t              t        j                         | j                   |t        j
                        t        j
                  j                         | j                   |t               j
                        t        j
                  j                         | j                   |t        j                        t        j                  j                         | j                   |t        j                        t        j                  j                         y r   )rO   _finddocr1  r   r  to_bytes
from_bytesreal)rU   finddocs     r   test_finddocz%TestRetrievingSourceCode.test_finddocO  s    ""s{{3.0D0DE0#,,2F2FG0#..2H2HI*CHH,<,<=r   c                 N    | j                  t        j                  d      d       y )NzAn
    indented
    docstring.zAn
indented
docstring.)r1  rO   cleandocr_   s    r   test_cleandocz&TestRetrievingSourceCode.test_cleandocX  s!    ))*LM3	5r   c                    | j                  t        j                  t              d       | j                  t        j                  t        j                        d       | j                  t        j                  t
        j                        d       t        ddd      }| j                  t        j                  |             | j                  t        j                  t                     y )N	# line 1
z
# line 20
z# line 159
x=1z_non_existing_filename.pyr3   )
r1  rO   getcommentsr   r   mod2cls160compileassertIsNoner   )rU   cos     r   test_getcommentsz)TestRetrievingSourceCode.test_getcomments\  s    ,,S1<@,,S]];]K,,T[[9>JU7@'--b12'--d34r   c                    | j                  t        j                  t              t               | j                  t        j                  t        j                        t               | j                  t        j                  t        j                  j
                        t               | j                  t        j                  t        j                  j
                        t               | j                  t        j                  t              t        j                  d          | j                  t        j                  d t              t               y )Nbuiltins)
r1  rO   	getmoduler   r   r   r   sysmodulesrM  r_   s    r   test_getmodulez'TestRetrievingSourceCode.test_getmodulef  s    **3/5**3==93?**3==+>+>?E**3==+>+>?E**3/Z1HI**493?r   c                    d }t         j                  j                  d|      5  t        j                         }| j                  t        j                  |             t        j                  |       d d d        y # 1 sw Y   y xY w)Nc                     t        d      )Nzbad file)FileNotFoundError)rX   	_filenames     r   _getabsfilezKTestRetrievingSourceCode.test_getmodule_file_not_found.<locals>._getabsfilev  s    #J//r   zinspect.getabsfile)r   r   patchrO   currentframer  r  getouterframes)rU   r  rt  s      r   test_getmodule_file_not_foundz6TestRetrievingSourceCode.test_getmodule_file_not_foundt  sf    	0]]  !5{C 	&$$&Ag//23""1%	& 	& 	&s   AA;;Bc                     t        j                  | j                  j                  d      }| j	                  |j
                  d   d       | j	                  |j
                  d   d       y )N2   r   r  r,   z'A module docstring.'
)rO   getframeinfor  rS  r1  rW  )rU   
frame_infos     r    test_getframeinfo_get_first_linez9TestRetrievingSourceCode.test_getframeinfo_get_first_line}  sW    ))$*;*;*>*>C
003\B0035NOr   c                    | j                  t        j                  dd       | j                  t        j                  dd       | j                  t        j
                  dd       | j                  t        j                  dd       y )N   rJ     3   K   L   x   )r  r   r   r   r   r  r  r_   s    r   test_getsourcez'TestRetrievingSourceCode.test_getsource  s\    syy"b1s}}b"5s{{B3s00#s;r   c                    | j                  t        t        j                  t        j
                              t               | j                  t        t        j                  t        j                              t               d}t        d|d      }| j                  t        j                  |      d        dd d|j                  ft        j                  |j                  <   	 | j                  t        t        j                  |            |       t        j                  |j                  = y # t        j                  |j                  = w xY w)Nz2_non_existing_filename_used_for_sourcefile_test.pyr  r3   r,   None)r1  r   rO   r  r   rx   rM  r   r   r  co_filename	linecachecache)rU   fnr  s      r   test_getsourcefilez+TestRetrievingSourceCode.test_getsourcefile  s    '"7"7"ABGL'"7"7		"BCWMAUB'..r2D9+,dFBNN*K	'	0Xg&;&;B&?@"E/	/s   !.D+ +Ec                     | j                  t        j                  t        j                        t        j
                         y r   )r1  rO   getfiler   r   rU  r_   s    r   test_getfilez%TestRetrievingSourceCode.test_getfile  s#    7Fr   c                     | j                  t              5 }t        j                  t               d d d        | j                  t        j                        j                  d             y # 1 sw Y   =xY w)Nz<module)	assertRaises	TypeErrorrO   r  r  rK   r   	exception
startswithr   s     r   test_getfile_builtin_modulez4TestRetrievingSourceCode.test_getfile_builtin_module  sS    y) 	!QOOC 	!AKK(33I>?	! 	!   A,,A5c                     | j                  t              5 }t        j                  t               d d d        | j                  t        j                        j                  d             y # 1 sw Y   =xY w)Nz<class)	r  r  rO   r  r   rK   r   r  r  r   s     r   test_getfile_builtin_classz3TestRetrievingSourceCode.test_getfile_builtin_class  sS    y) 	!QOOC 	!AKK(33H=>	! 	!r  c                    | j                  t              5 }t        j                  t               d d d        | j                  dt        j                               | j                  t              5 }t        j                  t        j                         d d d        | j                  dt        j                               y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nzexpected, got)
r  r  rO   r  absr  r   r  r   r1   )rU   e_abse_appends      r   'test_getfile_builtin_function_or_methodz@TestRetrievingSourceCode.test_getfile_builtin_function_or_method  s    y) 	!UOOC 	!os5??';<y) 	)XOODKK(	)os8+=+='>?	! 	!	) 	)s   C2$CCCc                      G d dt               } G d d|      }| j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zed        Zy)FTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CMc                     t         r   AttributeErrorr   s    r   ra   zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__  s    $$r   N)rL   ra   rb   propertyr"   r   r   CMr        % %r   r  c                       e Zd Zy)ETestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CNr   r"   r   r   r   r    r*  r   r   r  )r   r  r  rO   r  )rU   r  r   s      r   !test_getfile_class_without_modulez:TestRetrievingSourceCode.test_getfile_class_without_module  sI    	% 	%	" 	y) 	OOA	 	 	s   AAc                      G d d      } |       }| j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)DTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorReprc                     t        d      )Nxyz)r   r_   s    r   __repr__zMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__  s    &&r   N)rL   ra   rb   r	  r"   r   r   	ErrorReprr    s    'r   r
  )r  r  rO   r  )rU   r
  ers      r   test_getfile_broken_reprz1TestRetrievingSourceCode.test_getfile_broken_repr  sD    	' 	' [y) 	 OOB	  	  	 s   AAc                 f   ddl m} d} ||      x}t        j                  |<   d|_        d|_        t        d|j                         | j                  t        j                  |j                  j                        d       t        j                  |= t        j                  t        ddd	             y )
Nr   )
ModuleType__inspect_dummy<string>dummyzdef x(): passza=10r   single)r   r  r  r  rU  
__loader__r3   __dict__r1  rO   r  r  __code__r  r  )rU   r  namems       r   test_getmodule_recursionz1TestRetrievingSourceCode.test_getmodule_recursion  s    $  *4 00CKK
_ajj)..qss||<jIKK'&H56r   c                     d\  t         j                  dfd	}|t         _        	 i }t        t        d      |       t	        j
                  |d          t         _        y# t         _        w xY w)z4doctest monkeypatches linecache to enable inspection)z<test>zdef x(): pass
Nc                 D    | k(  rj                  d      S  | |      S )NT)keepends)
splitlines)r   module_globalsr  getlinesr  s     r   monkeyzHTestRetrievingSourceCode.test_proceed_with_fake_filename.<locals>.monkey  s+    2~(($(77.99r   r  r  r   )r  r  r3   r  rO   r  )rU   r  nsr  r  r  s      @@@r   test_proceed_with_fake_filenamez8TestRetrievingSourceCode.test_proceed_with_fake_filename  sf    0
F%%	:
 $		*BX.3bg&!)IIs   1A* *A7c                 Z    | j                  t        j                  j                  dd       y )NrH  rc  )r  r   rA  r  r_   s    r   test_getsource_on_code_objectz6TestRetrievingSourceCode.test_getsource_on_code_object  s    sxx00"b9r   N) rL   ra   rb   r   r  r  r  r   skipIfr  flagsoptimizer  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    L&P: X__SYY''1,@B	3B	3 X__SYY''1,@B6B6 X__)+EF> G>55@&P
<
0G@
?
@ 	7*":r   r  c                       e Zd Zd Zy)TestGetsourceInteractivec                 P    d}t        d|d      \  }}}| j                  d|       y )Nzimport sys, inspect;                 assert not hasattr(sys.modules['__main__'], '__file__');                 A = type('A', (), {});                 inspect.getsource(A)z-cT)
__isolateds"   OSError: source code not available)r   r  )rU   coder]  stderrs       r   test_getclasses_interactivez4TestGetsourceInteractive.test_getclasses_interactive  s.    & -T4DI1f;VDr   N)rL   ra   rb   r-  r"   r   r   r(  r(    s    Er   r(  c                       e Zd ZeZd Zd Zy)!TestGettingSourceOfToplevelFramesc                 T    d | _         | j                  t        j                  dd        y Nr,   )maxDiffr  r   r  r_   s    r   test_range_toplevel_framez;TestGettingSourceOfToplevelFrames.test_range_toplevel_frame  s!    s//D9r   c                 F    | j                  t        j                  dd        y r1  )r  r   r   r_   s    r   #test_range_traceback_toplevel_framezETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frame  s    svvq$/r   N)rL   ra   rb   r   r  r3  r5  r"   r   r   r/  r/    s    L:0r   r/  c                   (    e Zd ZeZd Zd Zd Zd Zy)TestDecoratorsc                 F    | j                  t        j                  dd       y )Nrj     )r  r  wrappedr_   s    r   test_wrapped_decoratorz%TestDecorators.test_wrapped_decorator  s    t||R4r   c                 F    | j                  t        j                  dd       y )Nr9  
   )r  r  goner_   s    r   test_replacing_decoratorz'TestDecorators.test_replacing_decorator  s    tyy!R0r   c                 F    | j                  t        j                  dd       y )N      )r  r  r  r_   s    r   test_getsource_unwrapz$TestDecorators.test_getsource_unwrap  s    tyy#s3r   c                 F    | j                  t        j                  dd       y )Nq   s   )r  r  func114r_   s    r   test_decorator_with_lambdaz)TestDecorators.test_decorator_with_lambda  s    t||S#6r   N)	rL   ra   rb   r  r  r;  r?  rC  rH  r"   r   r   r7  r7    s    L5147r   r7  c                   R    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zy)TestOnelinersc                 F    | j                  t        j                  dd       y )NrI  )r  r  ollr_   s    r   test_oneline_lambdaz!TestOneliners.test_oneline_lambda   s    txxR0r   c                 F    | j                  t        j                  dd       y )N      )r  r  tllr_   s    r   test_threeline_lambdaz#TestOneliners.test_threeline_lambda  s     	txxR0r   c                 F    | j                  t        j                  dd       y )N!   "   )r  r  tllir_   s    r   test_twoline_indented_lambdaz*TestOneliners.test_twoline_indented_lambda	  s     	tyy"b1r   c                     | j                  t        j                  dd       | j                  t        j                  dd       | j                  t        j                  dd       y )Ni  i  i  )r  r  parenthesized_lambdaparenthesized_lambda2parenthesized_lambda3r_   s    r   #test_parenthesized_multiline_lambdaz1TestOneliners.test_parenthesized_multiline_lambda  sL     	t88#sCt993Dt993Dr   c                 F    | j                  t        j                  dd       y )Ni  i  )r  r  post_line_parenthesized_lambda1r_   s    r   #test_post_line_parenthesized_lambdaz1TestOneliners.test_post_line_parenthesized_lambda  s     	tCCS#Nr   c                 F    | j                  t        j                  dd       y )Ni#  i$  )r  r  nested_lambdar_   s    r   test_nested_lambdaz TestOneliners.test_nested_lambda  s    t113<r   c                 F    | j                  t        j                  dd       y )N%   )r  r  onelinefuncr_   s    r   test_onelinefunczTestOneliners.test_onelinefunc  s    t//R8r   c                 F    | j                  t        j                  dd       y )N(   )   )r  r  manyargsr_   s    r   test_manyargszTestOneliners.test_manyargs"  s     	t}}b"5r   c                 F    | j                  t        j                  dd       y )N,   -   )r  r  twolinefuncr_   s    r   test_twolinefunczTestOneliners.test_twolinefunc(  s     	t//R8r   c                 L    | j                  t        j                  d   dd       y )Nr,   1   )r  r  r%   r_   s    r   test_lambda_in_listz!TestOneliners.test_lambda_in_list.  s     	tvvay"b1r   c                 F    | j                  t        j                  dd       y )N7   )r  r  	anonymousr_   s    r   test_anonymouszTestOneliners.test_anonymous3  s     	t~~r26r   N)rL   ra   rb   r  r  rM  rR  rW  r\  r_  rb  rf  rk  rp  rs  rw  r"   r   r   rJ  rJ    s@    L11
2
EO
=9692
7r   rJ  c                   "    e Zd ZeZd Zd Zd Zy)TestBlockCommentsc                 F    | j                  t        j                  dd       y )N`   r   )r  r   r  r_   s    r   test_toplevel_classz%TestBlockComments.test_toplevel_class;  s    s00"c:r   c                 Z    | j                  t        j                  j                  dd       y )Nc   h   )r  r   r  rt  r_   s    r   test_class_methodz#TestBlockComments.test_class_method>  s     s0022B<r   c                 Z    | j                  t        j                  j                  dd       y )Nm   p   )r  r   r  asyncfr_   s    r   test_class_async_methodz)TestBlockComments.test_class_async_methodA  s     s0077cBr   N)rL   ra   rb   r   r  r}  r  r  r"   r   r   ry  ry  8  s    L;=Cr   ry  c                   f   e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Z ej                   eed       xs ej                   j#                  d	      d
      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ej                  e jB                  xs e jD                  d      d        Z#y)TestBuggyCasesc                 F    | j                  t        j                  dd       y )N:   ;   )r  r  with_commentr_   s    r   test_with_commentz TestBuggyCases.test_with_commentG  s    t00"b9r   c                 L    | j                  t        j                  d   dd       y )Nr   ?   @   )r  r  multiline_sigr_   s    r   test_multiline_sigz!TestBuggyCases.test_multiline_sigJ  s    t11!4b"=r   c                 b    | j                  t        j                         j                  dd       y )NG   H   )r  r  func69func71r_   s    r   test_nested_classz TestBuggyCases.test_nested_classM  s     t{{}33R<r   c                 F    | j                  t        j                  dd       y )NM   )r  r  func77r_   s    r   #test_one_liner_followed_by_non_namez2TestBuggyCases.test_one_liner_followed_by_non_nameP      t{{B3r   c                 Z    | j                  t        j                  j                  dd       y )NS   )r  r  cls82func83r_   s    r   test_one_liner_dedent_non_namez-TestBuggyCases.test_one_liner_dedent_non_nameS  s    tzz00"b9r   c                 F    | j                  t        j                  dd       y )NX   Z   )r  r  func88r_   s    r   &test_with_comment_instead_of_docstringz5TestBuggyCases.test_with_comment_instead_of_docstringV  r  r   c                 F    | j                  t        j                  dd       y )N_   a   )r  r  method_in_dynamic_classr_   s    r   test_method_in_dynamic_classz+TestBuggyCases.test_method_in_dynamic_classY  s    t;;RDr   rU  z.pyz,unicodedata is not an external binary modulec                     | j                  t        t        j                  t               | j                  t        t        j
                  t               y r   )r  OSErrorrO   r  unicodedata
findsourcer_   s    r   test_findsource_binaryz%TestBuggyCases.test_findsource_binary^  s4     	'7#4#4kB'7#5#5{Cr   c                 *   dg}t        |d   dd      }| j                  t        t        j                  |       | j                  t        t        j
                  |       dd ||j                  ft        j                  |j                  <   	 | j                  t        j                  |      |df       | j                  t        j
                  |      |d          t        j                  |j                  = y # t        j                  |j                  = w xY w)Nr  r   _dynamically_created_filer3   r,   )
r  r  r  rO   r  r  r  r  r  r1  )rU   r  r  s      r   !test_findsource_code_in_linecachez0TestBuggyCases.test_findsource_code_in_linecachee  s    U1X:FC'7#5#5r:'7#4#4b9+,dE2>>*J	'	0W//3eAY?W..r2E!H=/	/s   
AC5 5Dc                     dD ]Y  }t        d|d      }| j                  t        t        j                  |       | j                  t        t        j
                  |       [ y )N)r   r  r  r3   )r  r  IOErrorrO   r  r  )rU   fnamer  s      r    test_findsource_without_filenamez/TestBuggyCases.test_findsource_without_filenameq  sO    % 	>Ev.Bgw'9'92>gw'8'8"=	>r   c                    t        t        j                  t                    }d|z  dz   }t	        |t        j
                  d      }i i }}t        |||       |d   }| j                  |j                  j                  dd|z  z          | j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nz

zdef f(): passr3   rt  r,   r-   zlineno is out of bounds)r0   rO   r  r   r  rU  rJ   r1  r  co_firstlinenoassertRaisesRegexr  r  )rU   mod_lensrcr  ru  lfuncs          r   )test_findsource_with_out_of_bounds_linenoz8TestBuggyCases.test_findsource_with_out_of_bounds_linenow  s    g'',-/1S#,,/21RAv55q7{C##G-FG 	%t$	% 	% 	%s   B==Cc                 Z    | j                  t        j                  j                  dd       y )Nv   w   )r  r  ClassWithMethodmethodr_   s    r   test_getsource_on_methodz'TestBuggyCases.test_getsource_on_method  s     t33::CEr   c                 Z    | j                  t        j                  j                  dd       y )N      )r  r  cls135func136r_   s    r   test_nested_funczTestBuggyCases.test_nested_func  s    t{{22C=r   c                 F    | j                  t        j                  dd       y )N      )r  r  cls149r_   s    r   4test_class_definition_in_multiline_string_definitionzCTestBuggyCases.test_class_definition_in_multiline_string_definition      t{{C5r   c                 F    | j                  t        j                  dd       y )N      )r  r  r  r_   s    r   *test_class_definition_in_multiline_commentz9TestBuggyCases.test_class_definition_in_multiline_comment  r  r   c                 Z    | j                  t        j                  j                  dd       y )N      )r  r  cls173cls175r_   s    r   ,test_nested_class_definition_indented_stringz;TestBuggyCases.test_nested_class_definition_indented_string  s    t{{113<r   c                     | j                  t        j                  dd       | j                  t        j                  j                  dd       y )N         )r  r  cls183cls185r_   s    r   test_nested_class_definitionz+TestBuggyCases.test_nested_class_definition  4    t{{C5t{{113<r   c                     | j                  t        j                  dd       | j                  t        j                  j                  dd       y )N         )r  r  cls196cls200r_   s    r   test_class_decoratorz#TestBuggyCases.test_class_decorator  r  r   c                     | j                  t        j                  dd       | j                  t        j                  j                  dd       y )N         )r  r  cls238cls239r_   s    r   test_class_inside_conditionalz,TestBuggyCases.test_class_inside_conditional  r  r   c                    | j                  t        j                  dd       | j                  t        j                  j                  dd       | j                  t        j                  j                  j                  dd       | j                  t        j                  j
                  dd       | j                  t        j                  j
                  j                  dd       y )N                     )r  r  cls203cls204cls205cls207r_   s    r   test_multiple_children_classesz-TestBuggyCases.test_multiple_children_classes  s    t{{C5t{{113<t{{1188#sCt{{113<t{{1188#sCr   c                     | j                  t        j                         dd       | j                  t        j                  dd       | j                  t        j                         j	                         dd       y )N                  )r  r  func212cls213func219r_   s    r   ,test_nested_class_definition_inside_functionz;TestBuggyCases.test_nested_class_definition_inside_function  sQ    t||~sC8t{{C5t{{}446SAr   zsocket.accept is brokenc                 v   dd l }| j                  |j                  d        | j                   |j                  t        j                               dd       | j                  t
        j                  dd       | j                   |j                  t        j                         j                               dd       y )Nr                     )	r    
addCleanupr!   r  runr  func225cls226func232)rU   r    s     r   2test_nested_class_definition_inside_async_functionzATestBuggyCases.test_nested_class_definition_inside_async_function  s    
 	55t<{w{{4<<>:CEt{{C5{w{{4;;=+@+@+BCS#Nr   N)$rL   ra   rb   r  r  r  r  r  r  r  r  r  r   r$  r   r  rU  endswithr  r  r  r  r  r  r  r  r  r  r  r  r  r
  r   is_emscriptenis_wasir  r"   r   r   r  r  D  s    L:>=4:4E
 X__j99 F!,!5!5!>!>u!ECEDED
0>	%F>66====DB
 X__0!O	Or   r  c                   *     e Zd Z fdZd Zd Z xZS )	TestNoEOLc                    t         dz   | _        t        j                  | j                         t	        t        j
                  j                  | j                  dt        j                  z        dd      5 }|j                  d       d d d        t        | j                        5  dd l
}d d d        | _        t        | 5          y # 1 sw Y   AxY w# 1 sw Y   +xY w)N_dirzinspect_fodder3%spywr|  r}  zclass X:
    pass # No EOLr   )r   tempdirosmkdirr  pathr2   extsepwriter	   inspect_fodder3r  superr  )rU   rt  mod3	__class__s      r   r  zTestNoEOL.setUp  s    
"'',,t||-BRYY-NO) 	3,-GG12	3 4<<( 	+*	+ 	3 	3	+ 	+s   6C%CCCc                 B    t        j                  | j                         y r   )shutilrmtreer   r_   s    r   tearDownzTestNoEOL.tearDown  s    dll#r   c                 R    | j                  | j                  j                  dd       y )Nr,   r-   )r  r  Xr_   s    r   
test_classzTestNoEOL.test_class  s     t0022Aq9r   )rL   ra   rb   r  r-  r0  __classcell__r)  s   @r   r  r    s    	$:r   r  c                       e Zd ZeZd Zy)TestComplexDecoratorc                 R    | j                  | j                  j                  dd       y )Ni  i  )r  r  complex_decoratedr_   s    r   test_parens_in_decoratorz-TestComplexDecorator.test_parens_in_decorator  s     t00BBCMr   N)rL   ra   rb   r  r  r7  r"   r   r   r4  r4    s    LNr   r4  c                   "    e Zd ZdZd Zd Zd Zy)_BrokenDataDescriptorz2
    A broken data descriptor. See bug #1785.
    c                      t        d      Nzbroken data descriptorr  r   s    r   __get__z_BrokenDataDescriptor.__get__      566r   c                      t         r   )RuntimeErrorr<  s    r   __set__z_BrokenDataDescriptor.__set__  s    r   c                      t        d      r;  r  r<  s    r   r   z!_BrokenDataDescriptor.__getattr__  r>  r   N)rL   ra   rb   r  r=  rA  r   r"   r   r   r9  r9    s    77r   r9  c                       e Zd ZdZd Zd Zy)_BrokenMethodDescriptorz4
    A broken method descriptor. See bug #1785.
    c                      t        d      Nzbroken method descriptorr  r<  s    r   r=  z_BrokenMethodDescriptor.__get__      788r   c                      t        d      rF  r  r<  s    r   r   z#_BrokenMethodDescriptor.__getattr__  rG  r   N)rL   ra   rb   r  r=  r   r"   r   r   rD  rD    s    99r   rD  c                 X    t        j                  |       D cg c]  }|d d 	 c}S c c}w Nrb  )rO   classify_class_attrs)r   ts     r   attrs_wo_objsrM    s'    "77<=aAbqE===s   'c                   J   e Zd Zd Zdddg g di fdZd Zd Zd Zd Z e	j                  ed      d	        Ze e	j                  ed      d
               Ze e	j                  ed      d               Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestClassesAndFunctionsc                      G d dt               } G d d|      } G d d|      } G d d||      }||||t         f}t        j                  |      }| j                  ||       y )	Nc                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.ANr   r"   r   r   ArR    r   r   rS  c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNr   r"   r   r   BrU    r   r   rV  c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNr   r"   r   r   r   rX    r   r   r   c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNr   r"   r   r   DrZ    r   r   r[  )r   rO   getmror1  )rU   rS  rV  r   r[  expectedgots          r   test_newstyle_mroz)TestClassesAndFunctions.test_newstyle_mro  sR      1q!Q'nnQ3'r   Nc
                 :   t        j                  |      \  }
}}}}}}| j                  |
|       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||	       y r   )rO   getfullargspecr1  )rU   routineargs_e	varargs_evarkw_e
defaults_eposonlyargs_ekwonlyargs_ekwonlydefaults_eann_er   rn  ro  defaults
kwonlyargskwonlydefaultsanns                    r   assertFullArgSpecEqualsz/TestClassesAndFunctions.assertFullArgSpecEquals  s     ""7+ 	Hguh
NCv&),(:.\2)9:e$r   c           	         | j                  t        j                  g ddgddi       | j                  t        j                  dgdt        i       | j                  t        j
                  g dg       | j                  t        j                  g dd	d
g       | j                  t        j                  g dddd	d
g       | j                  t        j                  g ddd	d
gddd       y )Narg1arg2r,   )rd  rh  ri  )rj  arg)rh  r%   r   r   rs  r   rt  r   r<  )rd  re  rh  r,   r-   rb  rD  r  )r   rt  )rf  rh  ri  )	ro  r  	keyworded	annotatedr   keyword_only_argall_markers all_markers_with_args_and_kwargsall_markers_with_defaultsr_   s    r   test_getfullargspecz+TestClassesAndFunctions.test_getfullargspec  s    $$T^^R639(7=aj 	% 	B 	$$T^^fX,2T? 	% 	<$$T%:%:B38' 	% 	; 	$$T%5%57K36* 	% 	> 	$$T%J%J%9/5-536*	 	% 	> 	$$T%C%CEY0736*<=A6F 	% 	Hr   c                     t        j                  t        j                        d        }| j	                  |ddg       | j	                  t        j
                  |      ddg       y )Nc                      y r   r"   r  rh  s     r   hamzETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.ham       r   r  rh  )r   wrapsr   rx   ro  r   )rU   r  s     r    test_argspec_api_ignores_wrappedz8TestClassesAndFunctions.test_argspec_api_ignores_wrapped  sY    		"	 
#	 	$$S3*5$$Y%6%6s%;&)3Z	1r   c                     d }t        j                  dt         j                  j                        }t        j                  |f      |_        | j                  |dg       y )Nc                       y r   r"   r"   r   r   testzHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.test)      r   rx   r4   )rO   	ParameterPOSITIONAL_ONLY	Signature__signature__ro  )rU   r  
spam_params      r   "test_getfullargspec_signature_attrz:TestClassesAndFunctions.test_getfullargspec_signature_attr(  sL    	&&vw/@/@/P/PQ
$..:-H$$TF84r   c                     dd}t        j                  |      }| j                  |j                  |j                         d }t        j                  |      }| j                  |j                  |j                         y )Nc                      y r   r"   r%   s    r   r  zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.test1      Tr   c                       y r   r"   r"   r   r   r  zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.test5      Dr   )r%   rx   returnr  )rO   ra  r1  __annotations__annotations)rU   r  specs      r   #test_getfullargspec_signature_annosz;TestClassesAndFunctions.test_getfullargspec_signature_annos0  s`    )%%d+--t/?/?@%%d+--t/?/?@r   6Signature information for builtins requires docstringsc                 4   | j                  t        j                  j                  ddg       | j                  t        j                  t	        j
                               j                  ddg       | j                  t        j                  dgddgd dd       y )	NrU   rX   r#  dir_fdfollow_symlinksT)r  r  )rc  rh  ri  )ro  _picklePicklerdumpioBytesIOr!  statr_   s    r   #test_getfullargspec_builtin_methodsz;TestClassesAndFunctions.test_getfullargspec_builtin_methods9  s}     	$$W__%9%9FE?K$$W__RZZ\%B%G%G&RWY$$WWH#%67)-$G	 	% 	Ir   c                     dd l }|j                  }t        j                  |      }| j	                  |j
                  d   d       y )Nr   avocado)	_testcapi&docstring_with_signature_with_defaultsrO   ra  r1  rk  )rU   r  builtinr  s       r    test_getfullargspec_builtin_funcz8TestClassesAndFunctions.test_getfullargspec_builtin_funcF  s;     	BB%%g.q)95r   c                     dd l }|j                  }| j                  t              5  t	        j
                  |       d d d        y # 1 sw Y   y xY wNr   )r  docstring_no_signaturer  r  rO   ra  )rU   r  r  s      r   -test_getfullargspec_builtin_func_no_signaturezETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signatureO  sC     	22y) 	,""7+	, 	, 	,s   AAc                 Z   t               D ]Z  }t        j                  |      }t        |j                        }t        |      }| j                  |       | j                  ||       \ t        j                  t              }t        |j                        }| j                  |t               y r   )
r;   rO   ra  r   rl  sortedrK   r1  rD    unsorted_keyword_only_parametersrU   r  	signaturer  sorted_ls        r   8test_getfullargspec_definition_order_preserved_on_kwonlyzPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlyX  s    GI 	*B..r2IY))*AayHOOAQ)	* **+NO	%%&<=r   c                     G d dt               }t        |      }| j                  ddt         f|d       | j                  ddt         f|d       | j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d|z         | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d        G d d|      }t        |      }| j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d        G d d|      }t        |      }| j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d        G d  d!||      }t        |      }| j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       y )"Nc                   z    e Zd Zd Z ee      Zd Z ee      Zd Z ee      Z	d Z
d ZdZ e       Z e       Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Ac                       y r   r"   r"   r   r   sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.sf      Tr   c                      y r   r"   r   s    r   r   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ci  s    r   c                      y r   r"   r_   s    r   getpz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpl      Dr   c                      y r   r"   r_   s    r   r  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mo      r   c                      y r   r"   r_   s    r   m1z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1q      $r   1N)rL   ra   rb   r  r   r   r   r  r  r6   r  r  datablobr9  ddrD  mdr"   r   r   rS  r  d  sA    QAAA AH&(B(*Br   rS  __new__static methodmissing __new__r   r  zmissing __init__r  zmissing static methodr   class methodmissing class methodr6   r  zmissing propertyr  zmissing plain method: %rr  missing plain methodr  datazmissing datar  zmissing method descriptorr  zmissing data descriptorc                       e Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Bc                      y r   r"   r_   s    r   r  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.m  r  r   N)rL   ra   rb   r  r"   r   r   rV  r    s    r   rV  c                       e Zd Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Cc                      y r   r"   r_   s    r   r  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.m  r  r   c                      y r   r"   r_   s    r   r   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.c  r  r   N)rL   ra   rb   r  r   r"   r   r   r   r    s    r   r   c                       e Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Dc                      y r   r"   r_   s    r   r  z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1  r  r   N)rL   ra   rb   r  r"   r   r   r[  r    s    r   r[  )r   rM  r  )rU   rS  attrsrV  r   r[  s         r   test_classify_newstylez.TestClassesAndFunctions.test_classify_newstylec  s   	+ 	+( a y/6:E'	)z8V4e=OPsOQ/8OPsNA.7MNsJ*E3EFsHa(%058	:tXq)52HIz61-unEtXq)52MNtVQ'0IJ	 	 a sOQ/8OPsNA.7MNsJ*E3EFsHa(%1GHtXq)52HIz61-unEtXq)52MNtVQ'0IJ	 	
 a sOQ/8OPsHa(%1GHsJ*E3EFsHa(%1GHtXq)52HIz61-unEtXq)52MNtVQ'0IJ	1 	 a sOQ/8OPsHa(%1GHsJ*E3EFsHa(%1GHtXq)52HIz61-unEtXq)52MNtVQ'0IJr   c                    t        t              D ]8  }t        t        |      }t        |t              s$t        j                  |       : t        t              }| j                  ddt        f|d       | j                  ddt        f|d       | j                  ddt        f|d	       | j                  d
dt        f|d	       | j                  ddt        f|d	       y )Nr  r  r  r  r  r  r  r  r  __add____and__)dir__builtins__getattr
isinstancer   rO   rK  rM  boolr  r   )rU   r  r  r  s       r   test_classify_builtin_typesz3TestClassesAndFunctions.test_classify_builtin_types  s     % 	6DlD1G'4(,,W5	6
 d#y/48%'	)|^S95,	.z8S15,	.y(C0%,	.y(D15,	.r   c                 H    G d dt               } G d d|      }t        j                  dd||j                  d         }| j	                  |t        j
                  |             t        j                  dd|d      }| j	                  |t        j
                  |             y )	Nc                        e Zd Z fdZ xZS )ITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metac                 .    |dk(  ryt         |   |      S )Nr  rx   r'  r   rU   r  r)  s     r   r   zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__  s    5=!w*400r   rL   ra   rb   r   r1  r2  s   @r   Metar        1 1r   r  c                   0    e Zd Zej                  d        Zy)GTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAc                      y)NrA  r"   r_   s    r   r  zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.ham      r   N)rL   ra   rb   r   DynamicClassAttributer  r"   r   r   VAr        (( )r   r  r  r  r  rx   )r   rO   	Attributer  r  rK  )rU   r  r  should_find_dcashould_find_gas        r   #test_classify_DynamicClassAttributez;TestClassesAndFunctions.test_classify_DynamicClassAttribute  s    	14 	1
	4 	 "++E62r{{5?QRow'C'CB'GH **5&$Gng&B&B2&FGr   c                      G fddt                G fddt               }t        j                  dd||j                        }| j	                  |t        j
                  |             y )Nc                       e Zd Z fdZd Zy)DTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolc                             S r   r"   )rU   rY   NoBools     r   __eq__zKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__  s
    xr   c                     t        d      )Nz,This object does not specify a boolean valueNotImplementedErrorr_   s    r   __bool__zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__  s    )BD Dr   N)rL   ra   rb   r  r  r  s   r   r  r    s     Dr   r  c                       e Zd Z W         Zy)CTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)rL   ra   rb   r  r  s   r   HasNBr    s
    Br   r  r  r  )r   rO   r  r  r  rK  )rU   r  should_find_attrr  s      @r   test_classify_overrides_boolz4TestClassesAndFunctions.test_classify_overrides_bool  sT    	DV 	D	F 	 #,,T65%((K&(D(DU(KLr   c                      G d dt               } G d d|      }t        j                  dd|d      }| j                  |t        j                  |             y )	Nc                       e Zd ZdZd Zy)MTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Metaslapc                 
    g dS )N)r)  ra   rL   fishr"   r_   s    r   __dir__zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__      FFr   N)rL   ra   rb   r  r  r"   r   r   r  r    s    DGr   r  c                       e Zd Zy)NTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNr   r"   r   r   Classr    r*  r   r  r  r  r  r  r   rO   r  r  rK  rU   r  r  should_finds       r   'test_classify_metaclass_class_attributez?TestClassesAndFunctions.test_classify_metaclass_class_attribute  sK    	G4 	G	d 	''fEk7#?#?#FGr   c                      G d dt               } G d d|      }t        j                  dd|d      }| j                  |t        j                  |             y )	Nc                   $     e Zd Zd Z fdZ xZS )DTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Metac                 
    g dS )N)r)  ra   rL   BOOMr"   r   s    r   r  zLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__  r  r   c                 .    |dk(  ryt         |   |      S )Nr  r   )r'  _Meta__getattrr  s     r   r   zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__  s    &=w(..r   rL   ra   rb   r  r   r1  r2  s   @r   r  r    s    G/ /r   r  c                       e Zd Zy)ETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNr   r"   r   r   r  r!    r*  r   r  r  r  r  r   r  r  s       r   test_classify_VirtualAttributez6TestClassesAndFunctions.test_classify_VirtualAttribute  sI    	/4 	/	d 	''bAk7#?#?#FGr   c                   	
  G d dt               	 G d dt               
 G 	
fdd	
      } G d d		      } G d
 d||	      }t        j                  dd	d      }t        j                  dd
d      }t        j                  dd|d      }t        j                  |      }|||fD ]  }| j	                  ||        y )Nc                   $     e Zd Zd Z fdZ xZS )STestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1c                 
    g dS )N)r)  ra   rL   oner"   r   s    r   r  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__      EEr   c                 .    |dk(  ryt         |   |      S )Nr'  r,   r  r  s     r   r   z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__      %<w*400r   r  r2  s   @r   Meta1r%        F1 1r   r+  c                   $     e Zd Zd Z fdZ xZS )STestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2c                 
    g dS )N)r)  ra   rL   twor"   r   s    r   r  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__  r(  r   c                 .    |dk(  ryt         |   |      S )Nr0  r-   r  r  s     r   r   z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__  r*  r   r  r2  s   @r   Meta2r.    r,  r   r2  c                   ,     e Zd ZfdZ fdZ xZS )STestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3c           
          t        t        t        g dj                  |       z   j                  |       z                     S )N)r)  ra   rL   three)r   r  rN   r  )r   r+  r2  s    r   r  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__dir__  sC    F3'WMM#&(').s);(< $= > ? ?r   c                 .    |dk(  ryt         |   |      S )Nr6  rb  r  r  s     r   r   z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__  s    '>w*400r   r  )r)  r+  r2  s   @r   Meta3r4    s    ?1 1r   r8  c                       e Zd Zy)TTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nr   r"   r   r   Class1r:    r*  r   r;  r  c                       e Zd Zy)TTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nr   r"   r   r   Class2r=    r*  r   r>  r'  r  r,   r0  r-   r6  rb  )r   rO   r  rK  r  )rU   r8  r;  r>  should_find1should_find2should_find3ccasfr+  r2  s            @@r   ,test_classify_VirtualAttribute_multi_classeszDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes  s    	1D 	1	1D 	1	1E5 	1	u 		Vu 	 ((qA((qA((&%C**62|< 	#BMM"c"	#r   c                      G d dt               } G d d|      }t        j                  |      D cg c]  }|d   	 }}| j                  d|       y c c}w )Nc                       e Zd Zd Zy)KTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.Mc                 
    g dS N)r)  rL   missingr"   r   s    r   r  zSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__"      ;;r   NrL   ra   rb   r  r"   r   r   MrG  !      <r   rM  c                       e Zd Zy)KTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNr   r"   r   r   r   rP  $  r*  r   r   r  r   rJ  )r   rO   rK  r  rU   rM  r   r%   r  s        r   (test_classify_class_attrs_with_buggy_dirz@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir   sR    	< 	<	! 	&;;A>?!1??E* @   Ac                 F    G d dt               }d } |t        j                        } |t        j                        }| j	                  t        j
                  ||      d|j                  d   fg       | j	                  t        j
                  ||      d|j                  d   fg        G d d|      }| j	                  t        j
                  ||      d|j                  d   fg       | j	                  t        j
                  ||      d|j                  d   fg       y )Nc                   (    e Zd Z e       Z e       Zy)>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)rL   ra   rb   r9  r  rD  r  r"   r   r   rS  rV  *  s    &(B(*Br   rS  c                 4      G d dt                fd}|S )Nc                       e Zd Zy)XTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNr   r"   r   r   EmptyrY  1  s    r   rZ  c                 \    dt        |       v rt        | j                        ry |       S )NrL   F)r  r   rL   )r  rZ  preds    r   r:  zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped3  s(    Q'GE1::,F Awr   r   )r\  r:  rZ  s   ` @r   pred_wrapperzITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.  s      Nr   r  r  c                       e Zd Zy)>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNr   r"   r   r   rV  r`  A  r*  r   rV  )r   rO   ismethoddescriptorr   r1  r   r  )rU   rS  r^  ra  r   rV  s         r   test_getmembers_descriptorsz3TestClassesAndFunctions.test_getmembers_descriptors)  s   	+ 	+		 *'*D*DE'(@(@A++A/ABAJJt$%&	(++A/?@AJJt$%&	(	 	 	++A/ABAJJt$%&	(++A/?@AJJt$%&	(r   c                     G d d      }| j                  d|j                  ft        j                  |             | j	                  d|j                  ft        j                  |t        j
                                |       }| j                  d|j                  ft        j                  |             | j                  d|j                  ft        j                  |t        j
                               y )Nc                       e Zd Zd Zy)9TestClassesAndFunctions.test_getmembers_method.<locals>.Bc                      y r   r"   r_   s    r   rt  z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fK  r   r   NrL   ra   rb   rt  r"   r   r   rV  re  J  r   r   rV  rt  )r  rt  rO   r   r  rg   )rU   rV  r   s      r   test_getmembers_methodz.TestClassesAndFunctions.test_getmembers_methodI  s    	 	 	sACCj'"4"4Q"78#qssW%7%77;K;K%LMCsACCj'"4"4Q"78sACCj'"4"4Q8H8H"IJr   c                 \    G d dt               } G d d|      } G d d      }| j                  dt        j                  |             | j                  d	t        j                   |                     |       }| j                  d
|j                  ft        j                  |             y )Nc                        e Zd Z fdZ xZS )CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mc                 .    |dk(  ryt         |   |      S )NrA  	scrambledr  )r   r  r)  s     r   r   zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__V  s    6>&w*400r   r  r2  s   @r   rM  rk  U  r  r   rM  c                   0    e Zd Zej                  d        Zy)CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Ac                      yrw   r"   r_   s    r   rA  zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggs[  r  r   N)rL   ra   rb   r   r  rA  r"   r   r   rS  ro  Z  r  r   rS  r  c                       e Zd Zd Zy)CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Bc                      y r   r"   )rU   	attributes     r   r   zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.B.__getattr___  r   r   Nr   r"   r   r   rV  rr  ^  r   r   rV  )rA  rm  )rA  rx   r   )r   r  rO   r   r   )rU   rM  rS  rV  r   s        r    test_getmembers_VirtualAttributez8TestClassesAndFunctions.test_getmembers_VirtualAttributeT  s    	1 	1
	! 		 	 	+W-?-?-BC&(:(:13(?@C}amm4g6H6H6KLr   c                     G d d      } |       }t        j                  |      }t        j                  |      }| j                  dt        j                  |d      f|       | j                  dt        j                  |d      f|       | j                  dt        j                  |d      f|       | j                  dt        j                  |d      f|       y )Nc                   @    e Zd Zed        Zej                  d        Zy)9TestClassesAndFunctions.test_getmembers_static.<locals>.Ac                     t         r   r   r_   s    r   r  z>TestClassesAndFunctions.test_getmembers_static.<locals>.A.nameh      ))r   c                     t         r   r   r_   s    r   rA  z>TestClassesAndFunctions.test_getmembers_static.<locals>.A.eggsk  rz  r   N)rL   ra   rb   r  r  r   r  rA  r"   r   r   rS  rx  g  s,    * *((* )*r   rS  r  rA  )rO   getmembers_staticr  getattr_static)rU   rS  r%   instance_membersclass_memberss        r   test_getmembers_staticz.TestClassesAndFunctions.test_getmembers_staticf  s    	* 	* C"44Q711!4vw55a@ACSTvw55a@ACSTvw55a@A=Qvw55a@A=Qr   c                      G d dt               } G d d|      }t        j                  |      D cg c]  }|d   	 }}| j                  d|       y c c}w )Nc                       e Zd Zd Zy)ATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.Mc                 
    g dS rI  r"   r   s    r   r  zITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__y  rK  r   NrL  r"   r   r   rM  r  x  rN  r   rM  c                       e Zd Zy)ATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNr   r"   r   r   r   r  {  r*  r   r   r  r   rJ  )r   rO   r   r  rQ  s        r   test_getmembers_with_buggy_dirz6TestClassesAndFunctions.test_getmembers_with_buggy_dirw  sQ    	< 	<	! 	&11!45!155E* 6rS  c                    dt         dt        fd}| j                  t        j                  |      t         t        d       ddd|_        | j                  t        j                  |      ddd       | j                  t        j                  |dt                     |t        d       | j                  t        j                  |dt               	      |t        d       t        }| j                  t        j                  |      t         t        d       | j                  t        j                  |j                        t         t        d       | j                  t        j                  |j                        t         t        |j                  d
       | j                  t        j                  |j                        t         d|j                  |j                  d       | j                  t        j                  |j                        dddd       | j                  t        j                  t              i        | j                  t        j                  |j                        i        | j                  t        j                  |j                        i        | j                  t        j                  |d      t         t        d       | j                  t        j                  |j                  d      t         t        d       | j                  t        j                  |j                  d      t         t        |j                  d
       | j                  t        j                  |j                  d      t         t        |j                  |j                  d       | j                  t        j                  |j                  d      t         t        |j                  d       | j                  t        j                  t        d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |d      t         t        d       | j                  t        j                  |j                  d      t         t        d       | j                  t        j                  |j                  d      t         t        |j                  d
       | j                  t        j                  |j                  d      t         d|j                  |j                  d       | j                  t        j                  |j                  d      dddd       | j                  t        j                  t        d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        d } ||j                        }| j                   |dd      |j                  dd             | j                  |j                  |j                  j                         | j                  t        j                  |      t         t        |j                  d
       | j                  t        j                  |d      t         t        |j                  d
       | j                  t        j                  |d      t         t        |j                  d
       y )Nr%   r   c                      y r   r"   r   s     r   r.   zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foo      tr   r   r.   r   Teval_strrp  r  globalsr%   r   r  r%   r   r   r  r   MyClassr%   r   r   r  Fc                 B     t        j                          fd       }|S )Nc                 "     | dz  |dz        S rJ  r"   r%   r   r  s     r   wrapperziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper      !A#qs|#r   r   r  r  r  s   ` r   times_threezXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three  #    __R $ !$Nr   r,   r  rb  xxx)r   r   r1  rO   get_annotationsr  rp  r   r  rV  	function2	function3UnannotatedClassunannotated_functionassertIsNot__globals__)rU   r.   isar  r:  s        r   +test_get_annotations_with_stock_annotationszCTestClassesAndFunctions.test_get_annotations_with_stock_annotations  s{   ####005Ss7KL$)u5005U7OP00tFHU]`gjWkl00tVXV^ahkXlm'005Ss7KL00=Ss?ST00>cPS_b_j_j@kl00?sQV]`]h]htwtt  BA  	B00?uSX_hAij0092>001E1EFK001I1IJBO00tDCVYFZ[00tLTW^aNbc00MUX_bnqnynyOz{00NVY`cjmjuju  BE  BM  BM  QN  	O00NVY`cjmjujuPvw004H"M001E1EPTUWYZ001I1ITXY[]^00uESWZG[\00uMUX_bOcd00NVY`corozozP{|00OWZafmpmxmx  EH  EP  EP  RQ  	R00OW\choxQyz005I2N001E1EPUVXZ[001I1ITYZ\^_	 cll+C#++a*?@,,cll.F.FG0093Z]ZeZe;fg004HPSZ]ilititJuv005IQT[^jmjujuKvwr   c                 h   t         }| j                  t        j                  |      ddd       | j                  t        j                  |j                        ddd       | j                  t        j                  |j
                        dddd       | j                  t        j                  |j                        ddddd       | j                  t        j                  |j                        ddd	d
       | j                  t        j                  |j                        i        | j                  t        j                  |j                        i        | j                  t        j                  |d      t        t        d       | j                  t        j                  |j                  d      t        t        d       | j                  t        j                  |j
                  d      t        t        |j                  d       | j                  t        j                  |j                  d      t        d|j                  |j                  d       | j                  t        j                  |j                  d      dddd
       | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |d      ddd       | j                  t        j                  |j                  d      ddd       | j                  t        j                  |j
                  d      dddd       | j                  t        j                  |j                  d      ddddd       | j                  t        j                  |j                  d      ddd	d
       | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        t        }| j                  t        j                  |      i        | j                  t        j                  |d      i        | j                  t        j                  |d      i        d } ||j
                        }| j                   |dd      |j	                  dd             | j                  |j                  |j
                  j                         | j                  t        j                  |      dddd       | j                  t        j                  |d      t        t        |j                  d       | j                  t        j                  |d      dddd       | j                  t        j                  |j                        ddi       | j                  t        j                  |j                  d      dt        i       y )Nr   r   r   r  r  'str'r  'int'	'MyClass'r  Tr  Fc                 B     t        j                          fd       }|S )Nc                 "     | dz  |dz        S rJ  r"   r  s     r   r  znTestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three.<locals>.wrapper  r  r   r  r  s   ` r   r  z]TestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three  r  r   r,   r  rb  r  mytype)r   r1  rO   r  r  rV  r  r  r  r  r   r   r   r  r  MyClassWithLocalAnnotations)rU   r  isa2r  r:  s        r   0test_get_annotations_with_stringized_annotationszHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations  s   ,005U7OP00=UQV?WX00>eRWcl@mn00?uSZajv  BA  	B00?wU\cnAop001E1EFK001I1IJBO00tDCVYFZ[00tLTW^aNbc00MUX_bnqnynyOz{00NVY`elolwlw  DG  DO  DO  QP  	Q00NV[bgnwPxy001E1EPTUWYZ001I1ITXY[]^00uEUY^G_`00uMUZafOgh00NV[bgs|P}~00OW\cjqz  GP  RQ  	R00OW^els~Q  	A001E1EPUVXZ[001I1ITYZ\^_/006;00ErJ00FK	 cll+C#++a*?@,,cll.F.FG009U^g;hi004HPSZ]ilititJuv005IQV]bnwKxy 	001P1PQTWYaSbc001P1P[_`cfhkblmr   ) rL   ra   rb   r_  ro  r|  r  r  r  r   r$  r   r  r   r  r  r  r  r  r  r  r  r"  rD  rR  rb  rh  ru  r  r  r  r  r"   r   r   rO  rO    s   	( BF,0T24259*,	%H015A X__)MO	IO	I X__)MO6O 6 X__)MO,O ,	>OKb.(HMHH!#F+(@	KM$R"+1xf.nr   rO  c                       e Zd Zd Zy)TestFormatAnnotationc                     ddl m}m} | j                  t	        j
                  |      d       | j                  t	        j
                  |      d       y )Nr   )rn  ann1zUnion[List[str], int]z%Union[List[testModule.typing.A], int])test.typinganndata.ann_module9rn  r  r1  rO   formatannotation)rU   rn  r  s      r   test_typing_replacementz,TestFormatAnnotation.test_typing_replacement  s=    <11#68OP11$79`ar   N)rL   ra   rb   r  r"   r   r   r  r    s    br   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestIsDataDescriptorc                     G d d      } G d d      } G d d      } G d d      }| j                  t        j                   |             d	       | j                  t        j                   |             d
       | j                  t        j                   |             d       | j                  t        j                   |             d       y )Nc                       e Zd ZddZy)GTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptorNc                      y r   r"   )rU   valuer   s      r   r=  zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__  s    r   r   rL   ra   rb   r=  r"   r   r   NonDataDescriptorr    s    5r   r  c                       e Zd Zd Zy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0c                      y r   r"   )rU   r  r  s      r   rA  zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__  s    Dr   NrL   ra   rb   rA  r"   r   r   DataDescriptor0r    s    0r   r  c                       e Zd Zd Zy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1c                      y r   r"   )rU   r  s     r   
__delete__zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__  s    r   N)rL   ra   rb   r  r"   r   r   DataDescriptor1r    s    ,r   r  c                       e Zd ZdZy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nr  r"   r   r   DataDescriptor2r    s    Gr   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)rT   rO   r   rK   )rU   r  r  r  r  s        r   test_custom_descriptorsz,TestIsDataDescriptor.test_custom_descriptors  s    	6 	6	1 	1	- 	-	 	112C2EFH	J001BCA	C001BCD	F001BCH	Jr   c                 v     G d d      }| j                  t        j                  |j                        d       y )Nc                       e Zd ZdZy)/TestIsDataDescriptor.test_slot.<locals>.Slottedr.   Nr   r"   r   r   Slottedr     s    Ir   r  za slot is a data descriptor)rK   rO   r   r.   )rU   r  s     r   	test_slotzTestIsDataDescriptor.test_slot  s,    	 	00=5	7r   c                 v     G d d      }| j                  t        j                  |j                        d       y )Nc                       e Zd Zed        Zy)6TestIsDataDescriptor.test_property.<locals>.Propertiedc                      y r   r"   r_   s    r   
a_propertyzATestIsDataDescriptor.test_property.<locals>.Propertied.a_property  r   r   N)rL   ra   rb   r  r  r"   r   r   
Propertiedr    s     r   r  za property is a data descriptor)rK   rO   r   r  )rU   r  s     r   test_propertyz"TestIsDataDescriptor.test_property  s0    	 	 	001F1FG9	;r   c                     G d dt               }d }d }| j                  t        j                   |       j                        d       | j                  t        j                   |       j
                        d       | j                  t        j                   |       j                        d       | j                  t        j                  |      d       | j                  t        j                  |      d	       y )
Nc                   2    e Zd Zd Zed        Zed        Zy)1TestIsDataDescriptor.test_functions.<locals>.Testc                      y r   r"   r_   s    r   instance_methodzATestIsDataDescriptor.test_functions.<locals>.Test.instance_method      tr   c                      y r   r"   r   s    r   class_methodz>TestIsDataDescriptor.test_functions.<locals>.Test.class_method  s    #'r   c                       y r   r"   r"   r   r   static_methodz?TestIsDataDescriptor.test_functions.<locals>.Test.static_method  s    !%r   N)rL   ra   rb   r  r   r  r   r  r"   r   r   Testr    s!    +' '% %r   r  c                       y r   r"   r"   r   r   rV  z5TestIsDataDescriptor.test_functions.<locals>.function  r  r   c                       y r   r"   r"   r   r   r   z5TestIsDataDescriptor.test_functions.<locals>.<lambda>  r   r   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   rT   rO   r   r  r  r  )rU   r  rV  a_lambdas       r   test_functionsz#TestIsDataDescriptor.test_functions  s    	&6 	&	11$&2H2HIE	G11$&2E2EFB	D11$&2F2FGC	E11(;>	@11(;<	>r   N)rL   ra   rb   r  r  r  r  r"   r   r   r  r    s    J$7;>r   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestGetClosureVarsc                     d }t               }d|i}dt        i}dt        i}dh}t        j                  ||||      }| j                  t        j                   ||            |       y )Nc                       fd}|S )Nc                 2    t        | t        t               y r   print_global_refunbound_ref	local_refnonlocal_refs    r   ru  z=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.g)  s    i{KHr   r"   r  ru  s   ` r   rt  z2TestGetClosureVars.test_name_resolution.<locals>.f(  s    IHr   r  r  r  r  r   r  r  rO   ClosureVarsr1  getclosurevarsrU   rt  _argnonlocal_varsglobal_varsbuiltin_varsunbound_namesr]  s           r   test_name_resolutionz'TestGetClosureVars.test_name_resolution&  sn    	 x'.$k2'&&&}k'3]D//$8(Cr   c                     d }t               }d|i}dt        i}dt        i}dh}t        j                  ||||      }| j                  t        j                   ||            |       y )Nc                       fd}|S )Nc              3   B   K   t        | t        t               d  y wr   r  r  s    r   ru  z?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.g7  s     i{KHs   r"   r  s   ` r   rt  z4TestGetClosureVars.test_generator_closure.<locals>.f6  s     Hr   r  r  r  r  r  r  s           r   test_generator_closurez)TestGetClosureVars.test_generator_closure5  sn    	
 x'.$k2'&&&}k'3]D//$8(Cr   c                      G d d      }t               }d|i}dt        i}dt        i}dh}t        j                  ||||      }| j                  t        j                   |       j                  |            |       y )Nc                       e Zd Zd Zy)1TestGetClosureVars.test_method_closure.<locals>.Cc                     fd}|S )Nc                 2    t        | t        t               y r   r  r  s    r   ru  z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gG  s    )\;Lr   r"   )rU   r  ru  s    ` r   rt  z3TestGetClosureVars.test_method_closure.<locals>.C.fF  s    Mr   Nrg  r"   r   r   r   r  E  s    r   r   r  r  r  r  )r   r  r  rO   r  r1  r  rt  )rU   r   r  r  r  r  r   r]  s           r   test_method_closurez&TestGetClosureVars.test_method_closureD  sy    	 	
 x'.$k2'&&&}k'3]D//d<hGr   c                 \   	 d 	d }d }d }fd	 fd} |d      } |d      } ||d	      } j                   	|      d
di        j                   	|      d
di        j                   	|      d	|d        j                   	 d d            d
di        |       y )Nc                 @    t        j                  |       j                  S r   )rO   r  	nonlocalsrt  s    r   _nonlocal_varsz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varsU  s    ))!,666r   c                       fd}|S )Nc                     | z   S r   r"   rh  r  s    r   addzFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addY  s    1ur   r"   )r  r  s   ` r   
make_adderz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_adderX  s    Jr   c                       fdS )Nc                      |       S r   r"   )rr  rq  r  s    r   r   zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>^  s    T4 0 r   r"   )r  rq  s   ``r   curryz4TestGetClosureVars.test_nonlocal_vars.<locals>.curry]  s	    00r   c                     | |k  S r   r"   r   s     r   	less_thanz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_than`      q5Lr   c                 .      fd}|_          ||      S )Nc                        fd      S )Nc                              |       S r   r"   )r  rt  s    r   r   zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>f  s    DAaDG r   r"   )rt  les   `r   ru  z;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.ge  s    +,,r   )g_ref)r  ru  Ys   ` r   r!  z0TestGetClosureVars.test_nonlocal_vars.<locals>.Yd  s    -AGQ4Kr   c                 N    j                   |       dj                  i       y )Nrt  )r1  r   )r  r!  r  rU   s    r   check_y_combinatorzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatorj  s     ^D1C>Br   r,   r-   r  r  )rq  r  c                       fdS )Nc                     | z   S r   r"   r  s    r   r   zITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>u  s    QU r   r"   r  s   `r   r   z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>u  s    ? r   rb  )r1  )
rU   r  r  r  r#  incadd_twogreater_than_fiver!  r  s
   `       @@r   test_nonlocal_varsz%TestGetClosureVars.test_nonlocal_varsS  s    	7	
	1			C mQ-!)Q/,sAh703(;(9:"#Y7	9)BA(FGq	#	
r   c                     d }t        j                  i i i t                     }| j                  t        j                  d       |       | j                  t        j                  |      |       y )Nc                       y r   r"   r"   r   r   r.   z9TestGetClosureVars.test_getclosurevars_empty.<locals>.fooz      4r   c                       yNTr"   r"   r   r   r   z>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>|  r   r   )rO   r  rN   r1  r  )rU   r.   _emptys      r   test_getclosurevars_emptyz,TestGetClosureVars.test_getclosurevars_emptyy  sS    $$RR7//=vF//4f=r   c                      G d d      }| j                  t        t        j                  d       | j                  t        t        j                  t               | j                  t        t        j                  i        y )Nc                       e Zd Zy)7TestGetClosureVars.test_getclosurevars_error.<locals>.TNr   r"   r   r   Tr4    r   r   r5  r,   )r  r  rO   r  r   )rU   r5  s     r   test_getclosurevars_errorz,TestGetClosureVars.test_getclosurevars_error  sO    )W%;%;Q?)W%;%;TB)W%;%;R@r   c                 0    d}i }t        ||       |d   |fS )Nzdef f(): print(path)rt  )r3   )rU   r+  r   s      r   _private_globalsz#TestGetClosureVars._private_globals  s#    )T2#w{r   c                     | j                         \  }}|j                  dd        t        j                  i i dt        idh      }| j                  t        j                  |      |       y )Nr  r  r#  )r8  poprO   r  r  r1  r  rU   rt  r   r]  s       r   test_builtins_fallbackz)TestGetClosureVars.test_builtins_fallback  sY    %%'2
~t$&&r2I//2H=r   c                     | j                         \  }}ddi|d<   t        j                  i i ddidh      }| j                  t        j                  |      |       y )Nr#  r,   r  r  )r8  rO   r  r1  r  r;  s       r   test_builtins_as_dictz(TestGetClosureVars.test_builtins_as_dict  sY    %%'2$QZ>&&r2qzG9E//2H=r   c                     | j                         \  }}t        |d<   t        j                  i i dt        j                  idh      }| j                  t        j                  |      |       y )Nr  r#  r  )r8  r!  rO   r  r#  r1  r  r;  s       r   test_builtins_as_modulez*TestGetClosureVars.test_builtins_as_module  sZ    %%'2>&&r2rww/?'K//2H=r   N)rL   ra   rb   r  r  r  r*  r1  r6  r8  r<  r>  r@  r"   r   r   r  r  $  s9    DDH$L>A>>>r   r  c                   L    e Zd ZddZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zy)TestGetcallargsFunctionsNc                     t        |xs i |      }t        d|z  d |      }t        d|z  d |      }| j                  ||       y )Nr  func(%s)inspect.getcallargs(func, %s))r   rJ   r1  )rU   r  call_params_stringlocsr1r2s         r   assertEqualCallArgsz,TestGetcallargsFunctions.assertEqualCallArgs  sN    DJBT**114>14FFR r   c                    t        |xs i |      }	 t        d|z  d |       | j                  d       	 t        d|z  d |       | j                  d       | j	                  t              t                     | j                  t        |      t        |             ~~y # t        $ r}|}Y d }~}d }~ww xY w# t        $ r}|}Y d }~sd }~ww xY w)NrD  rE  zException not raisedrF  )r   rJ   failr   rQ  r   r1  r   )rU   r  call_param_stringrH  r   ex1ex2s          r   assertEqualExceptionz-TestGetcallargsFunctions.assertEqualException  s    DJBT*	.//t< II,-	.03DDd
 II,-d3ic+S3s8,  	C	  	C	s.   B! B9 !	B6*B11B69	CC		Cc                 "    d}t        ||z        S )z+Create a function that returns its locals()zlambda %s: locals())rJ   )rU   r  r+  s      r   makeCallablez%TestGetcallargsFunctions.makeCallable  s    $D9$%%r   c                    | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d	       | j                  |d
       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       y )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)rS  rK  rU   rt  s     r   
test_plainz#TestGetcallargsFunctions.test_plain  s9   h'  C(  F+  E*  J/  H-  G,  F+  I.  I.  K0  $45  N3  $67  $@A  $CD  $AB  $DE  $FGr   c                     | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       y )Nz
a, b=1, *crV  rW  2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])rY  rZ  s     r   test_varargsz%TestGetcallargsFunctions.test_varargs  ss    l+  C(  F+  I.  J/  K0  $FGr   c                 j   | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d	       | j                  |d
       y )Nza, b=1, **crX  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)rY  rZ  s     r   
test_varkwz#TestGetcallargsFunctions.test_varkw  s    m,  E*  M2  O4  $;<  $78  $;<  $KL  $IJ  $KLr   c                     | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       y )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)rY  rZ  s     r   test_varkw_onlyz(TestGetcallargsFunctions.test_varkw_only  su    e$  B'  E*  J/  $=>  $FG  $KLr   c                    | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d	       | j                  d
      }| j                  |d       | j                  |d       | j                  |d       y )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)rS  rK  rQ  rZ  s     r   test_keyword_onlyz*TestGetcallargsFunctions.test_keyword_only  s    ./  E*  J/  J/  H-!!!R(!!!S)!!!U+!!!U+k*  E*  J/  J/r   c                    | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  d	      }| j                  |d       | j                  |d       | j                  |d
       | j                  |d       | j                  |d       | j                  |d       y )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)rY  rZ  s     r   test_multiple_featuresz/TestGetcallargsFunctions.test_multiple_features  s   /0  I.  K0  $@A  $EF  $BC   %I 	J   %. 	/ 89  K0  $@A  $KL  $HI   %N 	O   %. 	/r   c                    | j                  d      }| j                  d      }| j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       ||fD ]  }| j                  |d	       | j                  |d
       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d        | j                  d      }| j                  |d       | j                  |d       | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       d }| j                  t        d       5  t	        j
                  |       d d d        d! }| j                  t        d"      5  t	        j
                  |       d d d        | j                  t        d#      5  t	        j                  d$t        j                  j                  d%&       d d d        | j                  t        d'      5  t	        j                  d(d)d%&       d d d        | j                  t        d*      5  t	        j                  d+d,-       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   y xY w).Nr   za, brU  r  r  z1,x=1rX  zb=3r]  z1, 2, 3, a=1z2, 3, 4, c=5z2, 3, 4, a=1, 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=3z1, c=3, a=2rb  z1, 2z1, 2, a=1, b=2z	*, a, b=0za=1, a=3za=1, c=3za=1, a=3, b=4za=1, b=2, a=3, b=4za=1, a=2, a=3, b=4c                      y r   r"   r  s    r   f5z0TestGetcallargsFunctions.test_errors.<locals>.f5M  s    dr   zmissing 1 required keyword-onlyc                      y r   r"   r  s      r   f6z0TestGetcallargsFunctions.test_errors.<locals>.f6T  r  r   z'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{   rD  ro  )	rS  rQ  r  r  rO   getcallargs
ValueErrorr  VAR_KEYWORD)	rU   f0f1f2rt  f3f4rk  rm  s	            r   test_errorsz$TestGetcallargsFunctions.test_errors  s   r"v&x(!!"c*!!"e,!!"g.!!"b)!!"c*!!"e,!!"e,!!"b)!!"e,R 	8A%%a3%%a8%%a8%%a)<=%%a/%%a2%%a5%%a7%%a)AB%%a2%%a8%%a5%%a7!	8$ u%!!"f-!!"&67{+!!"f-!!"&67!!"j1!!"j1!!"o6!!"&:;!!"&:; 	##I$EG 	$#	$	##I/AB 	$#	$ ##J%;< 	* e'*;*;*G*G&(*	*
 ##J$KM 	9e!R8	9 ##I#BD 	+c*	+ 	++	$ 	$	$ 	$	* 	*
	9 	9	+ 	+s<   &N8O1O OO(8OOOO%(O1r   )rL   ra   rb   rK  rQ  rS  r[  r^  r`  rc  rf  rh  r{  r"   r   r   rB  rB    s9    !&&
H.H
MM0 /0H+r   rB  c                   $     e Zd Zd Z fdZ xZS )TestGetcallargsMethodsc                 H     G d dt               }|| _         |       | _        y )Nc                       e Zd Zy))TestGetcallargsMethods.setUp.<locals>.FooNr   r"   r   r   Foor  j  r*  r   r  )r   r   inst)rU   r  s     r   r  zTestGetcallargsMethods.setUpi  s    	& 	E	r   c                     d|vsJ t         t        | 
  } |d|z         | j                  _        | j
                  j                  S )NrU   zself, )r'  r}  rS  r   r  r  )rU   r  mkr)  s      r   rS  z#TestGetcallargsMethods.makeCallableo  sC    Y&&&)4=X	12yyr   )rL   ra   rb   r  rS  r1  r2  s   @r   r}  r}  g  s       r   r}  c                   >     e Zd Z fdZd fd	Zd fd	ZddZ xZS )TestGetcallargsUnboundMethodsc                 V    t         t        |   |       | j                  j                  S r   )r'  r  rS  r   r  )rU   r  r)  s     r   rS  z*TestGetcallargsUnboundMethods.makeCallablew  s!    +T?	Jxxr   c                 F    t        t        | 
  | j                  |||       S r   )r'  r  rK  _getAssertEqualParamsrU   r  rG  rH  r)  s       r   rK  z1TestGetcallargsUnboundMethods.assertEqualCallArgs{  s-    2DM''.@$GI 	Ir   c                 F    t        t        | 
  | j                  |||       S r   )r'  r  rQ  r  r  s       r   rQ  z2TestGetcallargsUnboundMethods.assertEqualException  s-    2DN''.@$GI 	Ir   c                 T    d|vsJ t        |xs i | j                        }|d|z   |fS )Nr  )r  zinst,)r   r  )rU   r  rG  rH  s       r   r  z3TestGetcallargsUnboundMethods._getAssertEqualParams  s8    ////DJBTYY/g 22D99r   r   )rL   ra   rb   rS  rK  rQ  r  r1  r2  s   @r   r  r  u  s    II:r   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestGetattrStaticc                     G d dt               } |       }| j                  t        j                  |d      |j                         | j                  t        j                  |dd       |j                         | j                  t              5  t        j                  |d       d d d        | j                  t        j                  |dd      d       y # 1 sw Y   1xY w)Nc                       e Zd Z e       Zy)+TestGetattrStatic.test_basic.<locals>.ThingNrL   ra   rb   r   r  r"   r   r   Thingr    	    Ar   r  r  rh  rb  )r   r1  rO   r}  r  r  r  rU   r  things      r   
test_basiczTestGetattrStatic.test_basic  s    	F 	 //s;UWWE//sDA577K~. 	/""5#.	/ 	//sA>B	/ 	/s   CCc                      G d dt               } G d d|      } |       }| j                  t        j                  |d      |j                         y )Nc                       e Zd Z e       Zy)/TestGetattrStatic.test_inherited.<locals>.ThingNr  r"   r   r   r  r    r  r   r  c                       e Zd Zy)4TestGetattrStatic.test_inherited.<locals>.OtherThingNr   r"   r   r   
OtherThingr    r*  r   r  r  r   r1  rO   r}  r  )rU   r  r  	somethings       r   test_inheritedz TestGetattrStatic.test_inherited  sD    	F 		 	 L	//	3?Ir   c                      G d dt               } |d      }| j                  t        j                  |d      d       |`| j                  t        j                  |d      d       y )Nc                       e Zd ZdZd Zy)3TestGetattrStatic.test_instance_attr.<locals>.Thingr-   c                     || _         y r   r&  rU   r  s     r   r   z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__  s	    r   N)rL   ra   rb   r  r   r"   r   r   r  r    s    Ar   r  rb  r  r-   r  r  s      r   test_instance_attrz$TestGetattrStatic.test_instance_attr  sX    	F 	 a//s;Q?G//s;Q?r   c                      G d dt               } |       }| j                  t        j                  |d      |j                         y )Nc                       e Zd Zed        Zy).TestGetattrStatic.test_property.<locals>.Thingc                     t        d      NzI'm pretending not to existr  r_   s    r   r  z0TestGetattrStatic.test_property.<locals>.Thing.x  s    $%BCCr   N)rL   ra   rb   r  r  r"   r   r   r  r    s    D Dr   r  r  r  r  s      r   r  zTestGetattrStatic.test_property  s:    	DF 	D //s;UWWEr   c                      G d dt               } |        G fddt               } |       }| j                  t        j                  |d             y )Nc                       e Zd Zd Zy)KTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorc                      t        d      r  r  )r]  s    r   r=  zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__  s    $%BCCr   Nr  r"   r   r   
descriptorr    s    Dr   r  c                       e Zd ZW  Zy)FTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingNrL   ra   rb   r  )descs   r   r  r    s    Ar   r  r  )r   r1  rO   r}  )rU   r  r  r  r  s       @r   %test_descriptor_raises_AttributeErrorz7TestGetattrStatic.test_descriptor_raises_AttributeError  sJ    	D 	D |	F 	//s;TBr   c                      G d dt               }| j                  t        j                  |d      |j                         y )Nc                       e Zd Z e       Zy)4TestGetattrStatic.test_classAttribute.<locals>.ThingNr  r"   r   r   r  r    r  r   r  r  r  rU   r  s     r   test_classAttributez%TestGetattrStatic.test_classAttribute  s1    	F 	 	//s;UWWEr   c                      G d dt               }| j                  t        j                  |d      |j                  d          y )Nc                   >    e Zd Zej                  d        Z e       Zy);TestGetattrStatic.test_classVirtualAttribute.<locals>.Thingc                     | j                   S r   )_xr_   s    r   r  z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.x  s    wwr   N)rL   ra   rb   r   r  r  r   r  r"   r   r   r  r    s!    (( )Br   r  r  )r   r1  rO   r}  r  r  s     r   test_classVirtualAttributez,TestGetattrStatic.test_classVirtualAttribute  s6    	F 	 	//s;U^^C=PQr   c                      G d dt               } G d d|      }| j                  t        j                  |d      |j                         y )Nc                       e Zd Z e       Zy)>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNr  r"   r   r   r  r    r  r   r  c                       e Zd Zy)CTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNr   r"   r   r   r  r    r*  r   r  r  r  rU   r  r  s      r   test_inherited_classattributez/TestGetattrStatic.test_inherited_classattribute  s=    	F 		 	 	//
C@%''Jr   c                 @    G d dt               } |       }| j                  t        j                  |d      |j                         | j                  t        j                  |d      d       |`| j                  t        j                  |d      |j                         y )Nc                       e Zd ZdZdgZd Zy)+TestGetattrStatic.test_slots.<locals>.Thingr&   r  c                     d| _         y Nr.   r&  r_   s    r   r   z4TestGetattrStatic.test_slots.<locals>.Thing.__init__  	    r   N)rL   ra   rb   rh  r   r   r"   r   r   r  r    s    AIr   r  r  rh  r&   r  r  s      r   
test_slotszTestGetattrStatic.test_slots  s{    	F 	
 //s;UWWE//s;UCG//s;UWWEr   c                 v    G d dt               } G d dt        |      }| j                  t        j                  |d      d        G d d	|      } G d
 dt        |      }| j                  t        j                  |d      d        G d d|      }| j                  t        j                  |d      d       y )Nc                       e Zd ZdZy).TestGetattrStatic.test_metaclass.<locals>.metar.   N)rL   ra   rb   r   r"   r   r   metar    s    Dr   r  c                       e Zd Zy)/TestGetattrStatic.test_metaclass.<locals>.ThingNr   r"   r   r   r  r    r*  r   r  r  r   r.   c                       e Zd Zy)-TestGetattrStatic.test_metaclass.<locals>.subNr   r"   r   r   subr    r*  r   r  c                       e Zd ZdZy)4TestGetattrStatic.test_metaclass.<locals>.OtherThingrb  Nr  r"   r   r   r  r        Ar   r  c                       e Zd Zy)9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNr   r"   r   r   OtherOtherThingr    r*  r   r  r  rb  r   r   r1  rO   r}  )rU   r  r  r  r  r  s         r   test_metaclassz TestGetattrStatic.test_metaclass  s    	4 		Fd 	//v>F	$ 		3 	//
FCUK	j 	 	//EqIr   c                     | j                  t        j                  ddd       d        | j                  t        j                  dd      d        y )Nr,   r.   lower)r1  rO   r}  assertNotEqualr_   s    r   test_no_dict_no_slotsz'TestGetattrStatic.test_no_dict_no_slots  s>    //5$?FG225'BDIr   c                     t        t        d      5 }| j                  t        j                  |d      t        |      j                         d d d        y # 1 sw Y   y xY w)Nr|  r}  r  )r  rU  r1  rO   r}  r   r  )rU   handles     r   %test_no_dict_no_slots_instance_memberz7TestGetattrStatic.test_no_dict_no_slots_instance_member  sN    (W- 	XW33FFCT&\EVEVW	X 	X 	Xs   :AAc                      G d dt               } G d d|      }| j                  t        j                   |       d      |j                         y )Nc                       e Zd ZdgZd Zy)5TestGetattrStatic.test_inherited_slots.<locals>.Thingr  c                     d| _         y r  r&  r_   s    r   r   z>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__  r  r   N)rL   ra   rb   r   r   r"   r   r   r  r    s    Ir   r  c                       e Zd Zy):TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNr   r"   r   r   r  r    r*  r   r  r  r  r  s      r   test_inherited_slotsz&TestGetattrStatic.test_inherited_slots  s?    	F 	
	 	 	//
cBEGGLr   c                     G d dt                G fddt               } |       }d|j                  d<   | j                  t        j                  |d      d       d _        | j                  t        j                  |d      |j                  d          `d _        | j                  t        j                  |d      |j                  d          y )	Nc                       e Zd Zd Zy)5TestGetattrStatic.test_descriptor.<locals>.descriptorc                      yrJ  r"   rU   instanceowners      r   r=  z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__
      r   Nr  r"   r   r   r  r  	      r   r  c                       e Zd Z W         Zy).TestGetattrStatic.test_descriptor.<locals>.FooNrL   ra   rb   rs  r  s   r   r  r    
    Ar   r  r,   rs  c                      y r   r"   )r  r5   vs      r   r   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>  r   r   c                      y r   r"   )r  r5   r   s      r   r   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>  r   r   )r   r  r1  rO   r}  rA  r  )rU   r  r.   r  s      @r   test_descriptorz!TestGetattrStatic.test_descriptor  s    	 		& 	 e S//S91= 2
//S93<<;LM 4
//S93<<;LMr   c                      G d dt                G fddt              } G d dt         |      }| j                  t        j                  |d      |j
                  d          y )	Nc                       e Zd Zd Zy)DTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorc                      yrJ  r"   r  s      r   r=  zLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__   r  r   Nr  r"   r   r   r  r    r  r   r  c                       e Zd Z W         Zy)>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNr  r  s   r   r  r  "  r  r   r  c                       e Zd Zy)?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNr   r"   r   r   r  r  $  r*  r   r  r  rs  )r   r   r1  rO   r}  r  )rU   r  r  r  s      @r   test_metaclass_with_descriptorz0TestGetattrStatic.test_metaclass_with_descriptor  sO    	 		4 		Fd 	//s;T]]3=OPr   c                     G d dt               } G d d|      } |       }| j                  t        j                  |d      d       | j	                  |j
                         | j                  t        j                  |d      d       y )Nc                       e Zd ZdZy)6TestGetattrStatic.test_class_as_property.<locals>.Baserb  Nr  r"   r   r   Baser  *      Cr   r  c                        e Zd ZdZed        Zy);TestGetattrStatic.test_class_as_property.<locals>.SomethingFc                     d| _         t        S r/  )executedr   r_   s    r   r)  zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__/  s     $r   N)rL   ra   rb   r  r  r)  r"   r   r   	Somethingr  -  s    H r   r  r.   rb  )r   r1  rO   r}  rT   r  )rU   r  r  r  s       r   test_class_as_propertyz(TestGetattrStatic.test_class_as_property)  sq    	6 		 	 ;//%@!D**+//	5A1Er   c                      G d dt               } G d dt              } G d d||      }| j                  t        j                   |       d      d	       | j                  t        j                  |d      d	       y )
Nc                       e Zd Zed        Zy)4TestGetattrStatic.test_mro_as_property.<locals>.Metac                     t         fS r   r]  r_   s    r   __mro__z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__;  s
    y r   N)rL   ra   rb   r  r  r"   r   r   r  r  :  s    ! !r   r  c                       e Zd ZdZy)4TestGetattrStatic.test_mro_as_property.<locals>.Baserb  Nr  r"   r   r   r  r  ?  r  r   r  c                       e Zd Zy)9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNr   r"   r   r   r  r  B  r*  r   r  r  r.   rb  r  )rU   r  r  r  s       r   test_mro_as_propertyz&TestGetattrStatic.test_mro_as_property9  sf    	!4 	!
	6 		 	 	//	UCQG//	5A1Er   c                    | d_          G fddt              } |       }d|_        | j                  t	        j
                  |d      d       | j                  j                           G d d|      } |       }d	|_        | j                  t	        j
                  |d      d       | j                  j                          y )
NFc                   &    e Zd ZdZe fd       Zy)4TestGetattrStatic.test_dict_as_property.<locals>.Foorb  c                     d_         i S r/  calledrU   r  s    r   r  z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__N      "	r   NrL   ra   rb   r%   r  r  r  s   r   r  r   L      A r   r  rD  r%   rb  c                       e Zd Zy)4TestGetattrStatic.test_dict_as_property.<locals>.BarNr   r"   r   r   Barr*  X  r   r   r+  r  )r#  r   r%   r1  rO   r}  rT   )rU   r  r.   r+  r&   r  s        @r   test_dict_as_propertyz'TestGetattrStatic.test_dict_as_propertyH  s    	$ 	 e//S91=%#e//S91=%r   c                 Z   | d_          G fddt              } G d dt              } G d d|      } |       }| j                  t        j                  |d      d	       |f|_        | j                  t        j                  |d      d
       | j                  j                          y )NFc                   &    e Zd ZdZe fd       Zy)/TestGetattrStatic.test_mutated_mro.<locals>.Foorb  c                     d_         i S r/  r"  r$  s    r   r  z8TestGetattrStatic.test_mutated_mro.<locals>.Foo.__dict__e  r%  r   Nr&  r'  s   r   r  r/  c  r(  r   r  c                       e Zd ZdZy)/TestGetattrStatic.test_mutated_mro.<locals>.BarrD  NrL   ra   rb   r%   r"   r   r   r+  r2  j  r  r   r+  c                       e Zd Zy)/TestGetattrStatic.test_mutated_mro.<locals>.BazNr   r"   r   r   Bazr5  m  r   r   r6  r%   rD  rb  )r#  r   r1  rO   r}  	__bases__rT   )rU   r  r+  r6  bazr  s        @r   test_mutated_mroz"TestGetattrStatic.test_mutated_mro_  s    	$ 		$ 	 	#e//S91=//S91=%r   c                     | d_          G fddt              } G d dt              } |       } |       |_        | j	                  t        j                  |d      d       | j                  j                          y )NFc                   $     e Zd Zd fd	Z xZS )9TestGetattrStatic.test_custom_object_dict.<locals>.Customc                 4    d_         t        | 	  ||       y r/  )r#  r'  get)rU   keyrp  r)  r  s      r   r>  z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getz  s    "C)r   r   )rL   ra   rb   r>  r1  )r)  r  s   @r   Customr<  y  s    * *r   r@  c                       e Zd ZdZy)6TestGetattrStatic.test_custom_object_dict.<locals>.Foorb  Nr3  r"   r   r   r  rB  ~  r  r   r  r%   rb  )r#  r   r   r  r1  rO   r}  rT   )rU   r@  r  r.   r  s       @r   test_custom_object_dictz)TestGetattrStatic.test_custom_object_dictu  sf    	*T 	*
	& 	ex//S91=%r   c                      G d dt               } G d d|      } |       }| j                  t        j                  |d      d       | j	                  |j
                         y )Nc                       e Zd Zed        Zy)?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.Metac                     d| _         y r/  )r  r_   s    r   r  zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__  s	     $r   NrL   ra   rb   r  r  r"   r   r   r  rF    r   r   r  c                       e Zd ZdZd Zy)@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFc                     d| _         y Nr   rx   r_   s    r   r   zITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__  s	    	r   N)rL   ra   rb   r  r   r"   r   r   r  rJ    s    Hr   r  r  rx   r   )r   r1  rO   r}  rT   r  )rU   r  r  r  s       r   test_metaclass_dict_as_propertyz1TestGetattrStatic.test_metaclass_dict_as_property  sR    	%4 	%
	d 	 7//&A2F(r   c                 n    t               }| j                  t        j                  t        d|      |       y )Nversion)r   r  rO   r}  r  )rU   sentinels     r   test_modulezTestGetattrStatic.test_module  s+    8//YI!	#r   c                     G d dt               } G d dt         |      } G d d|      }| j                  t              5  t        j                  |d       d d d        | j                  |j                         y # 1 sw Y   %xY w)	Nc                       e Zd Zed        Zy)WTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetac                 (    d| _         t        d      S )NTr   rM  )r  r   r_   s    r   r  z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__  s     $}$r   NrH  r"   r   r   MetaMetarU    s    % %r   rW  c                       e Zd ZdZy)STestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rL   ra   rb   r  r"   r   r   r  rY    s    Hr   r  r  c                       e Zd Zy)TTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.ThingNr   r"   r   r   r  r[    r*  r   r  rx   )r   r  r  rO   r}  rT   r  )rU   rW  r  r  s       r   3test_metaclass_with_metaclass_with_dict_as_propertyzETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property  so    	%t 	%	48 		d 	 ~. 	2""5&1	2(	2 	2s   A==Bc                     | d_          G fdd      }| j                  t              5  t        j                   |       d       d d d        | j                  j                          y # 1 sw Y   %xY w)NFc                       e Zd Z fdZy)6TestGetattrStatic.test_custom___getattr__.<locals>.Fooc                     d_         i S r/  r"  rU   r   r  s     r   r   zBTestGetattrStatic.test_custom___getattr__.<locals>.Foo.__getattr__      "	r   Nr   r'  s   r   r  r_        r   r  whateverr#  r  r  rO   r}  rT   rU   r  r  s     @r   test_custom___getattr__z)TestGetattrStatic.test_custom___getattr__  sd    	 	
 ~. 	6""35*5	6 	%	6 	6   A,,A5c                     | d_          G fdd      }| j                  t              5  t        j                   |       d       d d d        | j                  j                          y # 1 sw Y   %xY w)NFc                       e Zd Z fdZy);TestGetattrStatic.test_custom___getattribute__.<locals>.Fooc                     d_         i S r/  r"  ra  s     r   __getattribute__zLTestGetattrStatic.test_custom___getattribute__.<locals>.Foo.__getattribute__  rb  r   N)rL   ra   rb   rm  r'  s   r   r  rk    rc  r   r  really_could_be_anythingre  rf  s     @r   test_custom___getattribute__z.TestGetattrStatic.test_custom___getattribute__  si    	 	
 ~. 	F""35*DE	F 	%	F 	Frh  c                      G d d      } |       |_         t        j                  |      }t        j                  |j                   dd       ~t        j                          | j                   |              y )Nc                       e Zd Zy)KTestGetattrStatic.test_cache_does_not_cause_classes_to_persist.<locals>.FooNr   r"   r   r   r  rr    r   r   r  rd  
irrelevant)r  weakrefrefrO   r}  gccollectr  )rU   r  weakref_to_classs      r   ,test_cache_does_not_cause_classes_to_persistz>TestGetattrStatic.test_cache_does_not_cause_classes_to_persist  sU     	u";;s+s||ZF


*,-r   N)rL   ra   rb   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r9  rC  rN  rR  r\  rg  ro  ry  r"   r   r   r  r    s    
CJ@FCFRKFJ$JX
MN,QF F&.&,& ) #
)"&&.r   r  c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)TestGetGeneratorStatec                 "    d } |       | _         y )Nc               3   4   K   t        d      D ]  } |   y wNr  rp   numbers    r   number_generatorz5TestGetGeneratorState.setUp.<locals>.number_generator  s     ( rs   )	generator)rU   r  s     r   r  zTestGetGeneratorState.setUp  s    	 *+r   c                 @    t        j                  | j                        S r   )rO   getgeneratorstater  r_   s    r   _generatorstatez%TestGetGeneratorState._generatorstate      ((88r   c                 `    | j                  | j                         t        j                         y r   )r1  r  rO   GEN_CREATEDr_   s    r   test_createdz"TestGetGeneratorState.test_created  s!    --/1D1DEr   c                     t        | j                         | j                  | j                         t        j
                         y r   )nextr  r1  r  rO   GEN_SUSPENDEDr_   s    r   test_suspendedz$TestGetGeneratorState.test_suspended  s-    T^^--/1F1FGr   c                     | j                   D ]  } | j                  | j                         t        j                         y r   )r  r1  r  rO   
GEN_CLOSEDrq   s     r   test_closed_after_exhaustionz2TestGetGeneratorState.test_closed_after_exhaustion  s7     	A	--/1C1CDr   c                     | j                  t              5  | j                  j                  t               d d d        | j	                  | j                         t        j                         y # 1 sw Y   8xY wr   )r  r@  r  r=   r1  r  rO   r  r_   s    r   %test_closed_after_immediate_exceptionz;TestGetGeneratorState.test_closed_after_immediate_exception  sV    |, 	/NN  .	/--/1C1CD	/ 	/    A--A6c                     | j                   j                          | j                  | j                         t        j
                         y r   )r  r   r1  r  rO   r  r_   s    r   test_closed_after_closez-TestGetGeneratorState.test_closed_after_close  s1    --/1C1CDr   c                 |      fd} |        _         t         j                          t         j                          y )Nc               3      K   t        d      D ]b  } j                  j                         t        j                         |  j                  j                         t        j                         d y wr~  )r/   r1  r  rO   GEN_RUNNINGr  rU   s    r   running_check_generatorzCTestGetGeneratorState.test_running.<locals>.running_check_generator  s_     ( N  !5!5!79L9LM  !5!5!79L9LMNs   A2A5)r  r  )rU   r  s   ` r   test_runningz"TestGetGeneratorState.test_running  s-    
	N
 12T^^T^^r   c                     dj                         }|D ]H  }t        t        |      }| j                  |t	        |             | j                  |t        |             J y )Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDr  r  rO   r  reprr   rU   namesr  states       r   test_easy_debuggingz)TestGetGeneratorState.test_easy_debugging	  sO    BHHJ 	,DGT*EMM$U,MM$E
+	,r   c           	      @   d
d} |g d      }| j                  t        j                  |      d g dd       t        |       | j                  t        j                  |      d g dddd       t        |       | j                  t        j                  |      d g dddd       t        |       | j                  t        j                  |      d g ddddd	       	 t        |       | j                  t        j                  |      i        y # t        $ r Y 1w xY w)Nc              3   4   K   d}| D ]  }|dk(  rd}|  y wNru  rb  rH  r"   lstr%   r   r  r   s        r   eachz;TestGetGeneratorState.test_getgeneratorlocals.<locals>.each	  s+     A 6Ars   ru  r%   r  r,   r%   r  r  r   r-   rb  rH  r%   r  r  r   r   r   r1  rO   getgeneratorlocalsr  StopIterationrU   r  numberss      r   test_getgeneratorlocalsz-TestGetGeneratorState.test_getgeneratorlocals	  s   	 y/33G<#I6	8W33G<#IA(*	+ 	W33G<#IA(*	+ 	W33G<#IA(r3	4	M 	33G<bA  		s    D 	DDc                     d } |       }| j                  t        j                  |      i        	 t        |       | j                  t        j                  |      i        y # t        $ r Y 1w xY w)Nc               3      K   d y wr1  r"   r"   r   r   	yield_onezFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one-	  s     Gr}   r  rU   r  r'  s      r   test_getgeneratorlocals_emptyz3TestGetGeneratorState.test_getgeneratorlocals_empty,	  sf    	k33C8"=	I 	33C8"=  		s   A" "	A.-A.c                 6   | j                  t        t        j                  d       | j                  t        t        j                  d        | j                  t        t        j                  t               | j                  t        t        j                  d       y )Nr,   c                      yr/  r"   r&  s    r   r   zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>9	  r   r   r-   rb  )r  r  rO   r  rN   r_   s    r   test_getgeneratorlocals_errorz3TestGetGeneratorState.test_getgeneratorlocals_error7	  sb    )W%?%?C)W%?%?P)W%?%?E)W%?%?Gr   N)rL   ra   rb   r  r  r  r  r  r  r  r  r  r  r  r  r"   r   r   r{  r{    sE    ,9FHE
E
E ,B:	>Hr   r{  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestGetCoroutineStatec                 T    t         j                  d        fd} |       | _        y )Nc               3   4   K   t        d      D ]  } |   y wr~  rp   r  s    r   number_coroutinez5TestGetCoroutineState.setUp.<locals>.number_coroutineA	  s     ( rs   c                  0   K             d {    y 7 wr   r"   )r  s   r   	coroutinez.TestGetCoroutineState.setUp.<locals>.coroutineE	  s     "$$$s   )r   r  )rU   r  r  s     @r   r  zTestGetCoroutineState.setUp@	  s'    		 
		%"r   c                 8    | j                   j                          y r   )r  r   r_   s    r   r-  zTestGetCoroutineState.tearDownI	  s    r   c                 @    t        j                  | j                        S r   )rO   getcoroutinestater  r_   s    r   _coroutinestatez%TestGetCoroutineState._coroutinestateL	  r  r   c                 `    | j                  | j                         t        j                         y r   )r1  r  rO   CORO_CREATEDr_   s    r   r  z"TestGetCoroutineState.test_createdO	  s!    --/1E1EFr   c                     | j                   j                  d        | j                  | j                         t        j
                         y r   )r  sendr1  r  rO   CORO_SUSPENDEDr_   s    r   r  z$TestGetCoroutineState.test_suspendedR	  s3    D!--/1G1GHr   c                     	 	 | j                   j                  d        # t        $ r Y nw xY w| j                  | j	                         t
        j                         y r   )r  r  r  r1  r  rO   CORO_CLOSEDr_   s    r   r  z2TestGetCoroutineState.test_closed_after_exhaustionV	  sV    ##D)  !  	--/1D1DEs    	++c                     | j                  t              5  | j                  j                  t               d d d        | j	                  | j                         t        j                         y # 1 sw Y   8xY wr   )r  r@  r  r=   r1  r  rO   r  r_   s    r   r  z;TestGetCoroutineState.test_closed_after_immediate_exception_	  sV    |, 	/NN  .	/--/1D1DE	/ 	/r  c                     | j                   j                          | j                  | j                         t        j
                         y r   )r  r   r1  r  rO   r  r_   s    r   r  z-TestGetCoroutineState.test_closed_after_closed	  s1    --/1D1DEr   c                     dj                         }|D ]H  }t        t        |      }| j                  |t	        |             | j                  |t        |             J y )Nz4CORO_CREATED CORO_RUNNING CORO_SUSPENDED CORO_CLOSEDr  r  s       r   r  z)TestGetCoroutineState.test_easy_debuggingh	  O    FLLN 	,DGT*EMM$U,MM$E
+	,r   c                    t         j                  d                dfd	} |       }| j                  t        j                  |      d d       |j                  d        | j                  t        j                  |      d dd       y )Nc               3      K   d  y wr   r"   r"   r   r   gencoroz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroq	  s	     r}   c                 *   K   d} d {    y 7 wrw   r"   )r%   r   r  s     r   r  z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.funcv	  s     AMMs   )r%   r  rx   )r%   r  r   r   )r   r  r1  rO   getcoroutinelocalsr  )rU   r  r   r  s      @r   test_getcoroutinelocalsz-TestGetCoroutineState.test_getcoroutinelocalsp	  s    		 
	 )	 v33D9#8	:		$33D9#fE	Gr   N)rL   ra   rb   r  r-  r  r  r  r  r  r  r  r  r"   r   r   r  r  >	  s:    %9GIFF
F,Gr   r  c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)TestGetAsyncGenStatec                 "    d } |       | _         y )Nc                 6   K   t        d      D ]  } |  	 y wr~  rp   r  s    r   number_asyncgenz3TestGetAsyncGenState.setUp.<locals>.number_asyncgen	  s     (    )asyncgen)rU   r  s     r   r  zTestGetAsyncGenState.setUp	  s    	 ()r   c                 T   K   | j                   j                          d {    y 7 wr   )r  acloser_   s    r   asyncTearDownz"TestGetAsyncGenState.asyncTearDown	  s     mm""$$$s   (&(c                 @    t        j                  | j                        S r   )rO   getasyncgenstater  r_   s    r   _asyncgenstatez#TestGetAsyncGenState._asyncgenstate	  s    ''66r   c                 `    | j                  | j                         t        j                         y r   )r1  r  rO   AGEN_CREATEDr_   s    r   r  z!TestGetAsyncGenState.test_created	  s!    ,,.0D0DEr   c                    K   t        | j                         d {   }| j                  | j                         t        j
                         | j                  |d       y 7 Ewr  )anextr  r1  r  rO   AGEN_SUSPENDEDrU   r  s     r   r  z#TestGetAsyncGenState.test_suspended	  sK     DMM**,,.0F0FG" +s   A#A!AA#c                 @  K   d}| j                  t              5  |dz
  x}r%t        | j                         d {    |dz
  x}r%d d d        | j	                  |d       | j	                  | j                         t        j                         y 7 U# 1 sw Y   LxY ww)Nr7  r,   )r  StopAsyncIterationr  r  r1  r  rO   AGEN_CLOSED)rU   	countdowns     r   r  z1TestGetAsyncGenState.test_closed_after_exhaustion	  s     	12 	+(1},),DMM***  )1},),	+ 	A&,,.0C0CD +	+ 	+s-   B BBBA	BBBBc                   K   | j                  t              5  | j                  j                  t               d {    d d d        | j	                  | j                         t        j                         y 7 ;# 1 sw Y   :xY wwr   )r  r@  r  athrowr1  r  rO   r  r_   s    r   r  z:TestGetAsyncGenState.test_closed_after_immediate_exception	  se     |, 	5--&&|444	5,,.0C0CD 5	5 	5s,   B#A9A7A9 7B7A99B>Bc                 d   K    fd} |        _         t         j                          d {     j                   j                         t        j
                         t         j                          d {     j                   j                         t        j
                         y 7 ~7 5w)Nc                    K   t        d      D ]c  } j                  j                         t        j                         |  j                  j                         t        j                         e y wr~  )r/   r1  r  rO   AGEN_RUNNINGr  s    r   running_check_asyncgenzATestGetAsyncGenState.test_running.<locals>.running_check_asyncgen	  s_     ( N  !4!4!68L8LM  !4!4!68L8LMNs   A3A6)r  r  r1  r  rO   r  )rU   r  s   ` r   r  z!TestGetAsyncGenState.test_running	  s     	N
 /0DMM""",,.0F0FGDMM""",,.0F0FG	 	# 	#s"   *B0B,A
B08B.94B0.B0c                     dj                         }|D ]H  }t        t        |      }| j                  |t	        |             | j                  |t        |             J y )Nz4AGEN_CREATED AGEN_RUNNING AGEN_SUSPENDED AGEN_CLOSEDr  r  s       r   r  z(TestGetAsyncGenState.test_easy_debugging	  r  r   c           	        K   d
d} |g d      }| j                  t        j                  |      d g dd       t        |       d {    | j                  t        j                  |      d g dddd       t        |       d {    | j                  t        j                  |      d g dddd       t        |       d {    | j                  t        j                  |      d g ddddd	       | j	                  t
              5  t        |       d {    d d d        | j                  t        j                  |      i        y 7 7 7 7 9# 1 sw Y   8xY ww)Nc                6   K   d}| D ]  }|dk(  rd}|  y wr  r"   r  s        r   r  z9TestGetAsyncGenState.test_getasyncgenlocals.<locals>.each	  s+     A 6Ar  ru  r  r,   r  r-   rb  rH  r  r   r1  rO   getasyncgenlocalsr  r  r  r  s      r   test_getasyncgenlocalsz+TestGetAsyncGenState.test_getasyncgenlocals	  sI    	 y/227;#I6	8Gn227;#IA(*	+ Gn227;#IA(*	+ Gn227;#IA(r3	4 12 	!.  	!227;R@ 	 	 	
 !	! 	!sa   AE%	E
>E%E	>E%EAE%EEE"/E%E%E%EE"E%c                   K   d } |       }| j                  t        j                  |      i        t        |       d {    | j                  t        j                  |      i        | j	                  t
              5  t        |       d {    d d d        | j                  t        j                  |      i        y 7 7 4# 1 sw Y   3xY ww)Nc                    K   d y wr1  r"   r"   r   r   r  zDTestGetAsyncGenState.test_getasyncgenlocals_empty.<locals>.yield_one	  s     Gs   	r  r  s      r   test_getasyncgenlocals_emptyz1TestGetAsyncGenState.test_getasyncgenlocals_empty	  s     	k2237<Cj2237<12 	*	2237<	 	 	 	s;   >C C>C?CCC/CCC
Cc                 6   | j                  t        t        j                  d       | j                  t        t        j                  d        | j                  t        t        j                  t               | j                  t        t        j                  d       y )Nr,   c                      yr/  r"   r&  s    r   r   zCTestGetAsyncGenState.test_getasyncgenlocals_error.<locals>.<lambda>	  r   r   r  )r  r  rO   r  rN   r_   s    r   test_getasyncgenlocals_errorz1TestGetAsyncGenState.test_getasyncgenlocals_error	  sb    )W%>%>B)W%>%>O)W%>%>D)W%>%>Fr   N)rL   ra   rb   r  r  r  r  r  r  r  r  r  r  r  r  r"   r   r   r  r  	  sD    *%7F#
EE
H,A6	=Gr   r  c                       e Zd Zy)MySignatureNr   r"   r   r   r  r  	       	r   r  c                       e Zd Zy)MyParameterNr   r"   r   r   r  r  	  r  r   r  c                      e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Ze ej                  ed
      d               Ze ej                  ed
      d               Zed        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z# ej                  ed
      d        Z$ ej                  ed
      d        Z%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d& Z,d' Z-d( Z.d) Z/d* Z0d+ Z1d, Z2 ej                  ed
      d-        Z3 ej                  ed
      d.        Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:d5 Z;d6 Z<d7 Z=y8)9TestSignatureObjectc                     t        j                  | fi |}t        d |j                  j	                         D              |j
                  |j                  u rdfS |j
                  fS )Nc              3     K   | ]}  }|j                   |j                  |j                  u rd n|j                  |j                  |j                  u rd n|j                  t	        |j
                        j                         f  yw).N)r  rp  empty
annotationr   ro  r  ).0params     r   	<genexpr>z0TestSignatureObject.signature.<locals>.<genexpr>	  sn      J
 ). zz$}};$//5;;>=B=M=M5::,,.	0 Js   BB.)rO   r  tupler4   valuesreturn_annotationr	  )r  kwsigs      r   r  zTestSignatureObject.signature	  sw    ++ J
 251F1F1HJ J --:I 	I 251F1FI 	Ir   c                    t         j                  }t         j                  }| j                  t	         |             d       | j                  t         |       j                        d       dddd}t        j                  |      }| j                  t        |      j                  d             | j                  dt        |      v        dd}t        j                  |      }| j                  t        |      j                  d             | j                  d	t        |      v        |j                  d
   }|j                  d   }|j                  d   }	|j                  d   }
|j                  d   }|j                  d   }|j                  d   }|j                  d   } |||	|||f        |||	||f        ||||f        ||||f        ||||f        |||f        |||||f        |||f        ||||f        ||||f       | j                  t        d      5   ||	||||f       d d d        | j                  t        d      5   ||||	||f       d d d        | j                  t        d      5   ||||	||f       d d d        | j                  t        d      5   |||	|||f       d d d        |j                  d      }| j                  t        d      5   |||	|||f       d d d        | j                  t        d      5   |||f       d d d        | j                  t        d      5   |||	f       d d d        | j                  t        d      5   ||||	f       d d d        | j                  t        d      5   |||
|	f       d d d        | j                  t        d      5   ||
|	f       d d d        y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   ^xY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N()zmappingproxy(OrderedDict())r=  )kodc                    y r   r"   )popkpkdkor  r   r<  s          r   r  z7TestSignatureObject.test_signature_object.<locals>.test	
  r  r   z
<Signaturez
(po, /, pkc                     y r   r"   )pods    r   test2z8TestSignatureObject.test_signature_object.<locals>.test2
  r  r   z(pod=42, /)r  r  r  r  r   r  r  r<  zwrong parameter orderr  zduplicate parameter namezfollows default argument)d   )r   )rO   r  r  r1  r   r  r4   r  rK   r  r  rt  replace)rU   SPr  r  r  sig2r  r  r  r  r   r  r  r<  kwargs2s                   r   test_signature_objectz)TestSignatureObject.test_signature_object
  s"   QS4(acnn-/LM	B 	 %S	,,\:;S	12	   'T
--l;<d34^^D!ooe$^^D!nnU#~~f%^^D!nnU#)	2r4V
$%	2r2s
	2sB-	2sC.	3C.	3*	3c6
"# 	
3)	3F
	4b/##J0GH 	*r2tR()	* ##J0GH 	*r4R()	* ##J0GH 	*tRR()	* ##J0GH 	*r2tVR()	* ..f.-##J0JK 	+r2tWb)*	+ ##J0JK 	sBiL	 ##J0JK 	sBiL	 ##J0JK 	r3m	 ##J0JK 	r3m	 ##J0JK 	sBiL	 	9	* 	*	* 	*	* 	*	* 	*	+ 	+	 		 		 		 		 	sx   (OO O*,O7*PP?P(P)P5<QOO'*O47PPPP&)P25P>Q
c                    i ddddddifd}t        j                  |d      }t        j                  |      }t	        t
        j                  dz         D ]Y  }| j                  |d	
      5  t        j                  t        j                  ||            }| j                  ||       d d d        [ t        j                  |      }t        dt        j                  j                        }t        j                  |j                   |      }t#               j%                  |j'                         |j(                        }| j+                  t-        |t"                     | j+                  t-        |j                   d   t                     t	        t
        j                  dz         D ]  }| j                  |d
      5  t        j                  t        j                  ||            }| j                  ||       | j+                  t-        |t"                     | j+                  t-        |j                   d   t                     d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r,   r  r   r  c                     y r   r"   r%   r   r   r  s       r   r.   z=TestSignatureObject.test_signature_object_pickle.<locals>.fooO
      dr   r  F)
pickle_versubclassr+   )r  ro  )r4   r  T)r   r   rO   r  r/   pickleHIGHEST_PROTOCOLsubTestloadsdumpsr1  r  r  r  collectionsOrderedDictr4   r  r   r  r  rK   r  )	rU   r.   foo_partialr  versig_pickledmyparammyparamsmysigs	            r   test_signature_object_picklez0TestSignatureObject.test_signature_object_pickleN
  s   :1:2e*:''q1,00145 	3Cu= 3$ll6<<S+AB  k23 3	3 $3W->->-N-NO**3>>WE%%1B8;8M8M & O
5+67
5#3#3C#8+FG00145 	9Ct< 9$ll6<<s+CD  4
; DE
;+A+A#+F+6!8 9	9 9	93 39 9s   ,<I=BII	I%	c                    d }t        j                  |      }| j                  t              5  d|_        d d d        | j                  t
              5  d |j                  d<   d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)Nc                      y r   r"   r  s    r   r  z=TestSignatureObject.test_signature_immutability.<locals>.testk
  r  r   r&   r%   )rO   r  r  r  r.   r  r4   rU   r  r  s      r   test_signature_immutabilityz/TestSignatureObject.test_signature_immutabilityj
  sy    	%~. 	CG	 y) 	'"&CNN3	' 	'	 		' 	's   A,A8,A58Bc                 L    d }| j                  | j                  |      d       y )Nc                       y r   r"   r"   r   r   r  z9TestSignatureObject.test_signature_on_noarg.<locals>.testv
  r  r   r"   .r1  r  r$  s     r   test_signature_on_noargz+TestSignatureObject.test_signature_on_noargu
  s     	-y9r   c                 N    dd}| j                  | j                  |      d       y )Nc                      y r   r"   r   s     r   r  z9TestSignatureObject.test_signature_on_wargs.<locals>.test{
  r  r   ))r%   ..positional_or_keyword)r   .r.   rG  rq  )r   r.   r  rq  rB  r$  s     r   test_signature_on_wargsz+TestSignatureObject.test_signature_on_wargsz
  s%    	-	 r   c                     dt         dt        dt        fd}| j                  | j	                  |      ddt         dfddt        dfft        f       y )Nr%   r   r  c                      y r   r"   r   s     r   r  z;TestSignatureObject.test_signature_on_wkwonly.<locals>.test
  r  r   .keyword_only)floatr   r   r1  r  r$  s     r   test_signature_on_wkwonlyz-TestSignatureObject.test_signature_on_wkwonly
  sZ    	e 	s 	s 	-e^<c>:< 	!r   c                     dddddddddd	t         fd
}| j                  | j                  |      dddddd	dt         dffdf       y )Nrq  )r  r   r.   r   r&   rx   r8  r<  c                     y r   r"   )r%   r   rx   r  r   r<  s         r   r  z@TestSignatureObject.test_signature_on_complex_args.<locals>.test
  r  r   rF  )r   r=  r.   rG  )r   .r&   var_positional)rx   .r8  rK  )r  rq  .rK  .var_keywordr=  )r   r1  r  r$  s     r   test_signature_on_complex_argsz2TestSignatureObject.test_signature_on_complex_args
  sn    	S 	e 	e 	% 	3 	-CDA?<$c3>@ 	 r   c                 
   d d  G fdd      }| j                  | j                        d       | j                  | j                        d       | j                  | j                  |j                        d       | j                  | j                  |j                        d       | j                  | j                  |j                        d       | j                  | j                  |j
                        d       y )Nc                       y r   r"   r<  s    r   test_args_onlyzGTestSignatureObject.test_signature_without_self.<locals>.test_args_only
  r  r   c                       y r   r"   r   r<  s     r   test_args_kwargs_onlyzNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_only
  r  r   c                       e Zd Zed        Zed        Z ej                  ed      Z	 ej                  W d      Z
 ej                  ed      Z ej                  W  d      Zy):TestSignatureObject.test_signature_without_self.<locals>.Ac                       y r   r"   r<  s    r   test_classmethodzKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethod
  r   r   c                       y r   r"   r<  s    r   test_staticmethodzLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethod
  r   r   r,   N)rL   ra   rb   r   r]  r   r_  r   partialmethodrw  rx  ry  rz  )rY  rV  s   r   rS  r[  
  s~        )((*:Q?B(((.1=B(((*;a@B(((*?CBr   rS  )r   ..rP  .)rb  r<  ..rQ  .)r1  r  rw  rx  ry  rz  )rU   rS  rY  rV  s     @@r   test_signature_without_selfz/TestSignatureObject.test_signature_without_self
  s    			D 	D 	7G	I(=>F	G 	-G	I-G	I-G	I-G	Hr   r  c                    	 dd l } fd} fd} ||j                        		fd} j                   |d      d        j                   |d      d        j                   |d	      d
        j                   |d      d        j                   |d      d         j                   |d      d        j                   |d      d        j                   |d      d        j                   |d      t        j                          j                   |d      t        j                  dz
          |t
                |t        j                  j                         t        j                  t        j                               } ||j                          |t        j                          |dj                          |t        j                          |i j                          |t        j                           |t"        j$                          |dj$                          |t&        j                           G d d      } j                    |       d      t"                j                    |       ddi       j(                  d        j+                  t,        d      5   | |              d d d         |t        j.                          |t0        j2                          ||j4                         t6        j8                  } ||      } j                  t;        |j<                        ddg       y # 1 sw Y   xY w)Nr   c                    t        j                  |       }j                  t        |t         j                               j                  t        |j                  j                               d   j                  d       |S )zAUse this to test unbound methods (things that should have a self)r   rU   )
rO   r  rK   r  r  r1  r   r4   r  r  r   r  rU   s     r   test_unbound_methodzKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_method
  sa    ))!,IOOJy'2C2CDET)"6"6"="="?@CHH&Qr   c                    t        j                  |       }j                  t        |t         j                               |j
                  r@j                  t        |j
                  j                               d   j                  d       |S )zRUse this to test bound methods or normal callables (things that don't expect self)r   rU   )
rO   r  rK   r  r  r4   r  r   r  r  rh  s     r   test_callablezETestSignatureObject.test_signature_on_builtins.<locals>.test_callable
  sk    ))!,IOOJy'2C2CDE####D)=)=)D)D)F$G$J$O$OQWXr   c                 6    j                   |    j                  S r   )r4   rp  )r  r  s    r   r6   z9TestSignatureObject.test_signature_on_builtins.<locals>.p
  s    I006>>>r   r  r  r   s   bytesrs  gQ	@r5   #   nrL  Trt  Flocalrb  r  rW   r,   s   abcc                       e Zd ZeZy)DTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rL   ra   rb   r   r   r"   r   r   ThisWorksNowrq  
  s    Hr   rr  rS  r"   zno signature foundrU   buffer)r  r  r1  r  maxsizer   r  r  r  r  StringIObytes	maketransr   fromkeysr   r   r   r  minrL   r  rt  __delitem__r  r  #docstring_with_signature_but_no_doc	bytearray__release_buffer__r   r4   )
rU   r  ri  rk  r6   rs  rr  r  r  r  s
   `        @r   test_signature_on_builtinsz.TestSignatureObject.test_signature_on_builtins
  s|    			 ")"R"RS	>3+3*3&3$3&3&3'7Q'53;;/53;;?3f 	GOO001OOBKKM*aff 	eoo&f&&' 	dmm$bkk" 	DMM*CKK(qkk" 	cll#	 	 	*C0R4==sC##J0DE 	*,.)	* 	D,,-H//0 	iCCD --!&)cnn-/AB	* 	*s   *L>>Mc                 2   dd l }|j                  }d } ||      }| j                  t        j                  |      t        j                  |             dt
        fd}| j                  t        j                  |d      t        j                  |             y )Nr   c                 P     t        j                         dt        f fd       }|S )Nr  c                       | i |S r   r"   r   r<  r  s     r   r  z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper      T,V,,r   r   r  r   r  r  s   ` r   	decoratorzKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator  *    __T"-C - #-Nr   r  c                       y r   r"   rX  s     r   wrapper_likezNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_like  s    $r   Ffollow_wrapped)r  r  r1  rO   r  r   )rU   r  r  r  decorated_funcr  s         r   $test_signature_on_decorated_builtinsz8TestSignatureObject.test_signature_on_decorated_builtins
  s     	??	 #4**40 **>:	< 	7S6**>:?A **<8	:r   c                 (   dd l }| j                  t        d      5  t        j                  |j
                         d d d        | j                  t        d      5  t        j                  t               d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nr   zno signature found for builtin)r  r  rt  rO   r  r  r   )rU   r  s     r   'test_signature_on_builtins_no_signaturez;TestSignatureObject.test_signature_on_builtins_no_signature!  s    ##J$DF 	@i>>?	@ ##J$DF 	#c"	# 	#		@ 	@	# 	#s    A<B<BBc                     | j                  t        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nis not a callable objectr   )r  r  rO   r  r_   s    r   test_signature_on_non_functionz2TestSignatureObject.test_signature_on_non_function,  s6    ##I/IJ 	"b!	" 	" 	"s   6?c                    ddd} G d d      }t         j                  j                  |      }t         j                  j                   ||            }| j                  ||       t        j                   ||            }| j                  ||        ||      }|`| j                  | j	                  |      d       t         j                  fd}t        j                  j                  d|      5   ||      }| j                  t        j                  |             d|_        | j                  t        j                  |             | j                  t        j                  |      |       d d d        y # 1 sw Y   y xY w)	NTkwonlyc                     y r   r"   r%   r   r  	kwonlyreqr   r<  s         r   r  zITestSignatureObject.test_signature_from_functionlike_object.<locals>.func1  r  r   c                       e Zd Zd Zd Zy)MTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclikec                     |j                   | _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        || _        y r   rL   r  r  __defaults____kwdefaults__r  rU   r  s     r   r   zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__9  I     $ $'+';';$$($5$5!&*&9&9# 	r   c                 &     | j                   |i |S r   rD  r;  s      r   r   zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__A       tyy$1&11r   NrL   ra   rb   r   r   r"   r   r   funcliker  4      
!2r   r  rc  c                 .    t        | d      ry |       S )N_builtinmockTr   )rX   _orig_isdescs    r   _isdesczLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdescX  s    sN+$$r   zinspect.ismethoddescriptor)rO   r  from_callabler1  r  r  ra  r   r   r  rT   r  rK   )	rU   r  r  sig_funcsig_funclikeflr  builtin_funcr  s	           @r   'test_signature_from_functionlike_objectz;TestSignatureObject.test_signature_from_functionlike_object0  sG   $( 		2 	2  $$2248((66x~Fx0(($8x0
 d^O+ 	! 11	%
 ]]  !=wG 	H#D>LW77EF(,L%OOG66|DEW..|<hG	H 	H 	Hs   5A=E;;Fc                     ddd G fdd      }| j                  t        t        j                  |            d       y )NTr  c                     y r   r"   r  s         r   r  zCTestSignatureObject.test_signature_functionlike_class.<locals>.funci  r  r   c                       e Zd Zd ZW  j                   Z W  j                  ZW  j
                  ZW  j                  ZW  j                  Zy)GTestSignatureObject.test_signature_functionlike_class.<locals>.funclikec                      y r   r"   )rU   markers     r   r   zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__m  r   r   N)rL   ra   rb   r   r  r  r  r  rD  s   r   r  r  l  s=     }}H}}H"22O,,L!00Nr   r  z(marker))r1  r   rO   r  )rU   r  r  s     @r   !test_signature_functionlike_classz5TestSignatureObject.test_signature_functionlike_classe  s9     %) 		1 	1 	W..x89:Fr   c                     G d d      }| j                  | j                   |       j                        dt        f       | j                  | j                   |       j                        d       | j                  | j                  |      d       | j                  t        d      5  | j                   |              d d d        y # 1 sw Y   y xY w)Nc                   ,    e Zd Zd ZddefdZd Zd Zy):TestSignatureObject.test_signature_on_method.<locals>.Testc                       y r   r"   r<  s    r   r   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__z  r   r   r  c                      y r   r"   rU   rq  rr  s      r   r  z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1|  r   r   c                       y r   r"   r<  s    r   m2z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2~  r   r   c                      y r   r"   r  s    r   r   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__  r   r   Nr,   )rL   ra   rb   r   r   r  r  r   r"   r   r   r  r  y  s    # r   r  rq  ..rG  )rr  r,   .rG  ra  zinvalid method signature)r1  r  r  r   r  r  rt  )rU   r  s     r   test_signature_on_methodz,TestSignatureObject.test_signature_on_methodx  s    	 	 			2F	 
 			2	  	-	  ##J0JK 	#NN46"	# 	# 	#s   (CCc                      G d d      }t        j                   |       j                        d        }| j                  | j	                  |      dt
        f       y )Nc                       e Zd ZddefdZy)ETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr  c                      y r   r"   r  s      r   r  zHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1  r   r   Nr  )rL   ra   rb   r   r  r"   r   r   r  r    s    # r   r  c                       y r   r"   rX  s     r   m1dzDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1d  r  r   r  )r   r  r  r1  r  r   )rU   r  r  s      r   #test_signature_wrapped_bound_methodz7TestSignatureObject.test_signature_wrapped_bound_method  sV    	 	 
	#	 
$	,F	 r   c                      G d d      } |       j                   }| j                  | j                  |      d       |j                   }| j                  | j                  |      d       y )Nc                   "    e Zd Zeddd       Zy)?TestSignatureObject.test_signature_on_classmethod.<locals>.Testr,   )rr  c                     y r   r"   )r   rq  rr  s      r   r.   zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.foo  r   r   N)rL   ra   rb   r   r.   r"   r   r   r  r    s    '(  r   r  ))r  )rr  r,   .rK  .r.   r1  r  rU   r  meths      r   test_signature_on_classmethodz1TestSignatureObject.test_signature_on_classmethod  `    	 	
 vzz-	 
 xx-	 r   c                      G d d      } |       j                   }| j                  | j                  |      d       |j                   }| j                  | j                  |      d       y )Nc                       e Zd Zed        Zy)@TestSignatureObject.test_signature_on_staticmethod.<locals>.Testc                     y r   r"   )r   rs  s     r   r.   zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.foo  r   r   N)rL   ra   rb   r   r.   r"   r   r   r  r    s     r   r  )))r   ..rG  )rs  ..rK  .r  r  s      r   test_signature_on_staticmethodz2TestSignatureObject.test_signature_on_staticmethod  r  r   c                    ddl m} d }| j                  | j                   ||            d       | j	                  t
        d      5  t        j                   ||d             d d d        | j	                  t
        d      5  t        j                   ||d             d d d        d }| j                  | j                   ||            d	       | j                  | j                   ||d            d
       | j                  | j                   ||dd            d       | j                  | j                   ||dd            d       | j                  | j                   ||ddd            d       | j                  | j                   ||d            d       d }| j                  | j                   ||d            d       | j                  | j                   ||d            d       | j                  | j                   ||ddd            d       | j                  | j                   ||dddd            d       | j                  | j                   ||ddddd            d       | j                  | j                   ||d            d       | j                  | j                   ||dd            d       dt        ddfd }t        j                  |      x}|_        | j                  | j                   | ||d                  d!dd"t        d#ffdf       | j                  | j                   | ||d      d            dd"t        d#ffdf       d$ } | ||d%      d&      }| j                  | j                  |      d'       | j                   |       d&       d( } | ||dd&      d)      }| j                  | j                  |      d*       | j                   |d%      d+       d, } | ||d&d&-      d%d).      }| j                  | j                  |      d/       t        j                  |      j                  d0d12      }| j                   ||j                  i |j                  d3       dBd4} ||d5      }t        j                  |      j                  d1      }| j                   ||j                  i |j                  d6       t        j                  |      j                  d1d7      }| j                   ||j                  i |j                  d8       t        j                  |      j                  d1d7      }| j                   ||j                  i |j                  d8       t        j                  |      j                  d7      }| j                   ||j                  i |j                  d9        ||d%d&      }t        j                  |      j                  d7      }| j                   ||j                  i |j                  d:       d; }t        j                  |      }| j                  t        |      d<       | j                  | j                   ||d            d=       | j                  | j                   ||dd            d>       | j                  | j                   ||ddd            d?       | j                  | j                   ||ddd            d@       | j                  | j                   ||dd            dA       y # 1 sw Y   xY w# 1 sw Y   xY w)CNr   )r   c                       y r   r"   r"   r   r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   rA  has incorrect argumentsr,   r  c                     y r   r"   rt  s       r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   ))rF  r   ..rG  r   ..rK  rs  ..rK  .))r  r  r  .r-   r'  ))r  r   r-   .rK  r  .)r   r   ))rF  r   r,   .rK  r  r  .))r  r  r  .))r%   r,   .rK  r   ..rK  r  r  .c                     y r   r"   )r%   r   r   r<  s       r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   ))rb  r  rd  .))r  r  rd  .rb  Tr'  )r  r   ))rb  r   r   .rK  rd  .r   ))rF  rb  r  rd  .)r   r  r   r  r   c                      y r   r"   r  s      r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test+  r  r   r  .rG  c                     | S r   r"   r  s    r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.foo9  s    Hr   r=     )))r%   r  .rK  .c                     | ||fS r   r"   r  s      r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.fooC      a7Nr   rP  )))r   rP  .rK  r  .)r,   rP  r=  c                    | |||fS r   r"   rt  s       r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.fooM  s    aA:r   )rs  r   )r   rs  ))rF  )r   r=  .rK  )r   r  .rK  )rs  rP  .rK  .   ri  r   )r  ri  r  rP  c                     | ||fS r   r"   r  s      r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.fooZ  r  r   rd  )ri  r-   rd  rH  )ri  rH  rd  )r,   rH  rd  )rH  r=  r  c                     y r   r"   )r%   r   r   rs  r<  s        r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.fooo  r  r   z(a, b, /, c, d, **kwargs)))r   ..positional_onlyr   ..rG  rs  ..rG  rd  .))r  r  rd  .))r  rd  .))r   rb  .rK  r  rd  .))r  r  r  rd  .ru  )r   r   r1  r  r  rt  rO   r   r  bindr   r<  r   )rU   r   r  r  r.   _foobas          r   test_signature_on_partialz-TestSignatureObject.test_signature_on_partial  s   %	 	6	B##J0IJ 	0gdA./	0 ##J0IJ 	2gda01	2	 	6	  	a(89	  	a1(=>	  	Q(?@	  	a1(BC	  	(:;	 	 	a(89	  	(:;	  	aA(>?	  	aAD(IJ	  	aAA(KL	  	(:;	  	(BC	 	 	 	 $+#4#4T#::d a0@(ABCc+BCE	
 	a0@!(DEc+BCE		wsb)R0-	 
 	$	wsA,3-	  	[1	wsbB/2<-	  t$))C2)6rww4"))46GH	sb!t$))B)/rww4"))4kBt$))"b1rww4"))4lCt$))")3rww4"))4lCt$))B)/rww4"))4kBtrR(t$))"-rww4"))4lC	$S#>?Q8	 	Q(:;	 	Q1(=>	
 	QQ(?@	 	Q!(<=	A	0 	0	2 	2s   ]]]]c                    ddl m  G fdd      }| j                  t        d      5  t	        j
                  |j                         d d d         G fdd      }| j                  | j                  |j                  d      d	       | j                  | j                   |       j                  d      d
        G fdd      }| j                  | j                  |j                  d      d       y # 1 sw Y   xY w)Nr   r`  c                   &    e Zd Zd Z W  e      Zy)ATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamc                       y r   r"   r"   r   r   r  zFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.test  r   r   NrL   ra   rb   r  r  r  s   r   Spamr    s    %Cr   r   r  c                   ,    e Zd ZddZ W  ed      Zy)r  c                     y r   r"   )itr%   r   s      r   r  zFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.test  r   r   r,   r'  N)r  rx   r  r  s   r   r   zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spam  s    *Cr   Fr  )))r  ..rG  rF  r   r,   .rK  rx   ))rF  r  rx   c                   *    e Zd ZddZ W  ed      Zy)r  c                      y r   r"   r  s     r   r  zFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.test  r   r   r,   N)rU   anno)rL   ra   rb   r  ru  r  s   r   r   zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spam  s     dA&Ar   )))rU   .r  rG  .)	r   r`  r  rt  rO   r  r  r1  ru  )rU   r   r`  s     @r   test_signature_on_partialmethodz3TestSignatureObject.test_signature_on_partialmethod  s    +	& 	&
 ##J0IJ 	(dhh'	(	+ 	+
 	5A"	# 	

UC"	#
	' 	' 	?	 3	( 	(s    C77D c                 t    d }d|_         | j                  t        t        j                  |            d       y )Nc                      y r   r"   r  s    r   r.   zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foo  r  r   rx   z(a))_partialmethodr1  r   rO   r  rU   r.   s     r   $test_signature_on_fake_partialmethodz8TestSignatureObject.test_signature_on_fake_partialmethod  s-    #W..s34e<r   c                    d  G fdd      }  |       j                         }| j                  | j                  |j                         d       | j                  | j                   |       j                         d       | j                  | j                  |j                   d      d       | j                  | j                  |      d       d	  G fd
d      }| j                  | j                  |j                        d       | j                  | j                   |       j                        d       d }|j                  |_        | j                  | j                  |      d       y )Nc                 P     t        j                         dt        f fd       }|S )Nr  c                       | i |S r   r"   r  s     r   r  zSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper  r  r   r  r  s   ` r   r  zBTestSignatureObject.test_signature_on_decorated.<locals>.decorator  r  r   c                        e Zd ZW  d        Zy)<TestSignatureObject.test_signature_on_decorated.<locals>.Fooc                      y r   r"   rU   r%   r   s      r   r&   z@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.bar  r   r   N)rL   ra   rb   r&   r  s   r   r  r         r   r  ))rU   ..rG  rF  r  .))rF  r  .Fr  rc  c                      t        j                         dt        f fd       }t        j                         }t        |j                  j                               dd  }|j                  |      |_	        |S )Nr  c                       dg| i |S rL  r"   r  s     r   r  zSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper  s    B0000r   r,   r  )
r   r  r   rO   r  r  r4   r  r   r  )r  r  r  
new_paramss   `   r   r  zBTestSignatureObject.test_signature_on_decorated.<locals>.decorator  sk    __T"1C 1 #1##D)Cs~~4467;J$'KK:K$FG!Nr   c                        e Zd ZW  d        Zy)r  c                      y r   r"   r  s      r   r   zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__  r   r   Nr   r  s   r   r  z<TestSignatureObject.test_signature_on_decorated.<locals>.Foo  r  r   )r  .c                       y r   r"   r"   r   r   wrapped_foo_callzITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call  r  r   )r&   r1  r  r   __wrapped__)rU   r  r&   r  r  s       @r   test_signature_on_decoratedz/TestSignatureObject.test_signature_on_decorated  s>   		 	
 		"0	  			2	 
 	F	  	,	 		 	
 	5	 
 	7	 
	'*||$(89	 r   c                 <    G d d      }| j                  | j                  |      d        G d dt              } G d d|      }| j                  | j                  |      d       | j                  d      5   G d	 dt              } G d
 d|      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d dt              } G d d|      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d d       G fddt              } G d d|      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d dt              } G d d|      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d dt              } G d d|      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d dt              } G d d|      }| j                   |ddg      d        | j	                  t
              5  | j                  | j                  |      | j                  d!j                               d d d        d d d        | j                  d"      5   G d# dt              } G d$ d|      }| j                   |d%      d&       | j                   |d%d'      d       | j	                  t
              5  | j                  | j                  |      | j                  d(j                               d d d        d d d         G d) dt              } G d* d|      }| j                  | j                  |      d+       | j                  | j                  |      d,        G d- d.t              } G d/ dt        |      } G d0 d|      }| j                  | j                  |      d,       | j                  | j                  |      d1       | j                  | j                  |      d+        G d2 dt              } G d3 d|      }| j                  | j                  |      d4       y # 1 sw Y   \xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   :xY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w)5Nc                       e Zd Zd Zy)6TestSignatureObject.test_signature_on_class.<locals>.Cc                      y r   r"   rU   r%   s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   NrL   ra   rb   r   r"   r   r   r   r$    r   r   r   )rF  .c                       e Zd Zd Zy)7TestSignatureObject.test_signature_on_class.<locals>.CMc                      y r   r"   r   r%   s     r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__  r   r   Nr   r"   r   r   r  r*    r   r   r  c                       e Zd Zd Zy)r$  c                      y r   r"   rU   r   s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C  r   r   r  r   c                       e Zd Zed        Zy)r*  c                     |S r   r"   r,  s     r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__      Hr   NrL   ra   rb   r   r   r"   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM       r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__      r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C      r   r,   r   c                       e Zd Zed        Zy)r*  c                     | S r   r"   r  s    r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__call__)  r2  r   NrL   ra   rb   r   r   r"   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM(       r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__-  r7  r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C,  r8  r   
MethodTypec                       e Zd Zd Zy)6TestSignatureObject.test_signature_on_class.<locals>.Ac                     |S r   r"   r&  s     r   callz;TestSignatureObject.test_signature_on_class.<locals>.A.call7      Hr   NrL   ra   rb   rC  r"   r   r   rS  rA  6      r   rS  c                   2    e Zd Z W         j                  Zy)r*  NrL   ra   rb   rC  r   rS  s   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM9      388r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__<  r7  r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C;  r8  r   r   c                   4    e Zd Z ej                  d d      Zy)r*  c                 
    | |fS r   r"   r  r%   s     r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.<lambda>F  
    1a& r   r-   NrL   ra   rb   r   r   r   r"   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CME      ,9,,-@!Dr   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__H  r7  r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.CG  r8  r   r-   r,   r`  c                   4    e Zd Z ej                  d d      Zy)r*  c                 
    ||fS r   r"   rU   r  r%   s      r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.<lambda>R  
    q!f r   r-   NrL   ra   rb   r   r`  r   r"   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CMQ      29223LaPr   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__T  r7  r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.CS  r8  r   BuiltinMethodTypec                   $    e Zd Zdj                  Zy)r*  :NrL   ra   rb   r2   r   r"   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM]      88r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__`  r7  r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C_  r8  r   r%   bca:bcr   MethodWrapperTypec                   $    e Zd Zdj                  Zy)r*  r-   NrL   ra   rb   __pow__r   r"   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CMi      ;;r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__l  r7  r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.Ck  r8  r   rb  r8  r7  r   c                   $     e Zd Zdd fd
Z xZS )r*  r,   r  c                (    t         |   | |||      S r   r'  r  mclsr  basesdctr.   r)  s        r   r  z?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__v      wtT5#>>r   rL   ra   rb   r  r1  r2  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CMu      78 ? ?r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__y  r   r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.Cx  r   r   r  ))r  ..rG  rs  ..rG  rt  ..rG  )r.   r,   .rK  .c                   *     e Zd Zdd fd
Zd Z xZS )8TestSignatureObject.test_signature_on_class.<locals>.CMMr,   r  c                (    t         |   | |||      S r   rp  rq  s        r   r  z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__  ru  r   c                     t        |||      S r   )r   )r   nmbsdts       r   r   zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__  s    BB''r   )rL   ra   rb   r  r   r1  r2  s   @r   CMMr~    s    78 ?(r   r  c                   $     e Zd Zdd fd
Z xZS )r*  r-   r&   c                (    t         |   | |||      S r   rp  )rr  r  rs  rt  r&   r)  s        r   r  z?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__  ru  r   rv  r2  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM  rw  r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C  r   r   )))r  ..rG  )r  ..rG  )r  ..rG  .c                   $     e Zd Zdd fd
Z xZS )r*  r-   r  c                &    t         |   |||      S r   r'  r   )r   r  rs  rt  r&   r)  s        r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__  s    w'eS99r   rL   ra   rb   r   r1  r2  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM  s    78 : :r   c                       e Zd Zd Zy)r$  c                      y r   r"   r/  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   Nr'  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C  r   r   ))rz  r{  r|  )r&   r-   .rK  .)r1  r  r   r/  r  AssertionErrorr2   rj  )rU   r   r  r  rS  s       @r   test_signature_on_classz+TestSignatureObject.test_signature_on_class  s   	 	 	*	 	 		" 	 	*	  \\-( 	"T b  QqT1%T^^A.!"	" \\.) 	"T b  QqT1%T^^A.!"	" \\,' 	" $T $b  QqT1%T^^A.!"	" \\)$ 
	"ET Eb  QqT6*T^^A.!"
	" \\/* 
	"QT Qb  QqT6*T^^A.!"
	" \\-. 
	M$T $b  QT{^V4"">2 M  !2DNN2774KLM
	M \\-. 	Q'T 'b  QqT1%Qq!Wa("">2 Q  !2DNNA;;4OPQ	Q	? 	?	" 	 	*	  	+	 	($ 	(
	? 	?	" 	 	,	  	+	  	*	 	: 	:	" 	 	+	 e	" 	"	" 	"	" 	"
	" 
	"
	" 
	"*M M
	M 
	M,Q Q	Q 	Qs   :AT)(AT6A!UAU>AU,AU77;U*2U7A"V5;V0V)T36U UUU'*U4	/U77VV		VVc                 6    G d d      } |d       | j                  | j                  |      d       | j                  d      5   G d d      } |d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      } |d       | j                  | j                  |      d       d d d        | j                  d	      5   G d
 d       G fdd      } |d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      } |d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      }| j                   |d      j                  d       | j                  | j                  |      d       d d d        y # 1 sw Y   exY w# 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)@TestSignatureObject.test_signature_on_class_with_init.<locals>.Cc                      y r   r"   r/  s     r   r   zITestSignatureObject.test_signature_on_class_with_init.<locals>.C.__init__  r   r   Nr'  r"   r   r   r   r    r   r   r   r,   r  r   c                       e Zd Zed        Zy)r  c                      y r   r"   )r   r   s     r   r   zITestSignatureObject.test_signature_on_class_with_init.<locals>.C.__init__      r   N)rL   ra   rb   r   r   r"   r   r   r   z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C       r   r   c                       e Zd Zed        Zy)r  c                      y r   r"   r  s    r   r   zITestSignatureObject.test_signature_on_class_with_init.<locals>.C.__init__  r  r   N)rL   ra   rb   r   r   r"   r   r   r   z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C       r   r?  c                       e Zd Zd Zy)@TestSignatureObject.test_signature_on_class_with_init.<locals>.Ac                      y r   r"   r&  s     r   rC  zETestSignatureObject.test_signature_on_class_with_init.<locals>.A.call  r7  r   NrE  r"   r   r   rS  r    r8  r   rS  c                   2    e Zd Z W         j                  Zy)r  N)rL   ra   rb   rC  r   rI  s   r   r   z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C  rJ  r   r(  r   c                   4    e Zd Z ej                  d d      Zy)r  c                      y r   r"   rO  s     r   r   zITestSignatureObject.test_signature_on_class_with_init.<locals>.C.<lambda>  r   r   r-   N)rL   ra   rb   r   r   r   r"   r   r   r   z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C  s    ,9,,->Br   r`  c                   8    e Zd Zd Z ej
                  ed      Zy)r  c                     ||f| _         y r   r  rX  s      r   _initzFTestSignatureObject.test_signature_on_class_with_init.<locals>.C._init  s    VDFr   r-   N)rL   ra   rb   r  r   r`  r   r"   r   r   r   z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C  s    $29225!<r   rU  )r1  r  r/  r%   rU   r   rS  s     @r   !test_signature_on_class_with_initz5TestSignatureObject.test_signature_on_class_with_init  s   	 	 	
!*	 \\-( 		" 
 aDT^^A.!"		" \\.) 		" 
 aDT^^A.!"		" \\,' 
	" $ $ aDT^^A.!"
	" \\)$ 	"C C aDT^^A.!"	" \\/* 		"= =
 QqTVVV,T^^A.!"		" 		"W		" 		"		" 		"
	" 
	"	" 	"		" 		"s>   4G4G* A G794HAHG'*G47H HHc                    | j                  d      5   G d d      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d	 d      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d
      5   G d d       G fdd      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      }| j                   |d      d       | j                  | j                  |      d       d d d        | j                  d      5   G d d      }| j                   |       d       | j                  t        | j                  |       d d d        | j                  d      5   G d d      }| j                   |       |t
        z         | j                  t        | j                  |       d d d        | j                  d      5   G d d      }| j                   ||      d       | j                  | j                  |      | j                  |j                               d d d        | j                  d      5   G d d      }| j                   |t
              |t
        z         | j                  t        | j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   y xY w)NFunctionTypec                       e Zd Zd Zy)?TestSignatureObject.test_signature_on_class_with_new.<locals>.Cc                     |S r   r"   r,  s     r   r  zGTestSignatureObject.test_signature_on_class_with_new.<locals>.C.__new__  rD  r   NrL   ra   rb   r  r"   r   r   r   r    rF  r   r   r,   r(  r   c                       e Zd Zed        Zy)r  c                     |S r   r"   )r   cls2r%   s      r   r  zGTestSignatureObject.test_signature_on_class_with_new.<locals>.C.__new__  r2  r   N)rL   ra   rb   r   r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  r4  r   r   c                       e Zd Zed        Zy)r  c                     |S r   r"   r,  s     r   r  zGTestSignatureObject.test_signature_on_class_with_new.<locals>.C.__new__
  r2  r   N)rL   ra   rb   r   r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C	  r<  r   r?  c                       e Zd Zd Zy)?TestSignatureObject.test_signature_on_class_with_new.<locals>.Ac                     |S r   r"   )rU   r   r%   s      r   rC  zDTestSignatureObject.test_signature_on_class_with_new.<locals>.A.call  rD  r   NrE  r"   r   r   rS  r    rF  r   rS  c                   2    e Zd Z W         j                  Zyr  N)rL   ra   rb   rC  r  rI  s   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  s    #((r   r   c                   4    e Zd Z ej                  d d      Zy)r  c                 
    | |fS r   r"   )r  r   r%   s      r   r   zHTestSignatureObject.test_signature_on_class_with_new.<locals>.C.<lambda>!  s
    q!f r   r-   N)rL   ra   rb   r   r   r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C   s    +)++,DaHr   rU  r`  c                   4    e Zd Z ej                  d d      Zy)r  c                 
    ||fS r   r"   )r   r  r%   s      r   r   zHTestSignatureObject.test_signature_on_class_with_new.<locals>.C.<lambda>*  s
    QF r   r-   N)rL   ra   rb   r   r`  r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C)  s    1)112JANr   r^  c                   $    e Zd Zej                  Zyr  )rL   ra   rb   r   __subclasscheck__r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C2  s    //r   Frg  c                   D    e Zd Zej                  j                  ee      Zyr  )rL   ra   rb   r   __or__r=  r   r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C;  s    ++--c48r   MethodDescriptorTypec                   *    e Zd Zej                  d   Zy)r  r  N)rL   ra   rb   r   r  r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.CF  s    --(;<r   TWrapperDescriptorTypec                   $    e Zd Zej                  Zyr  )rL   ra   rb   r   r  r  r"   r   r   r   z?TestSignatureObject.test_signature_on_class_with_new.<locals>.CM  s    ++r   )r/  r1  r  r  rt  r   r  r  s     @r    test_signature_on_class_with_newz4TestSignatureObject.test_signature_on_class_with_new  s   \\.) 	"  QqT1%T^^A.!"	" \\-( 		" 
 QqT1%T^^A.!"		" \\.) 		" 
 QqT1%T^^A.!"		" \\,' 
	" # # QqT1%T^^A.!"
	" \\)$ 	"I I QqT6*T^^A.!"	" \\/* 	"O O QqT6*T^^A.!"	" \\-. 	=0 0 QS%( j$..!<	= \\-. 	=9 9 QS!c'* j$..!<	= \\01 	U= = QqT4(T^^A.q?R?R0ST	U \\12 	=& & QsVQW- j$..!<	= 	=s	" 	"		" 		"		" 		"
	" 
	"	" 	"	" 	"	= 	=	= 	=	U 	U	= 	=s   AO0AO'AO4*APAP0APAP()A
P5AQAQO$'O14O>PPP%(P25P?QQc                      G d d      } G d d|      } G d d|      } G d d|      }| j                  | j                  |      d	       | j                  | j                  |      d
       | j                  | j                  |      d       y )Nc                       e Zd ZddZy)9TestSignatureObject.test_signature_on_subclass.<locals>.Ac                 ,    t         j                  |       S r   r   r  )r   r%   r   r<  s       r   r  zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__W      ~~c**r   Nr  r  r"   r   r   rS  r  V      +r   rS  c                       e Zd Zd Zy)9TestSignatureObject.test_signature_on_subclass.<locals>.Bc                      y r   r"   r/  s     r   r   zBTestSignatureObject.test_signature_on_subclass.<locals>.B.__init__Z  r   r   Nr'  r"   r   r   rV  r  Y  r   r   rV  c                       e Zd ZddZy)9TestSignatureObject.test_signature_on_subclass.<locals>.Cc                 ,    t         j                  |       S r   r  )r   r%   r   r   r<  s        r   r  zATestSignatureObject.test_signature_on_subclass.<locals>.C.__new__]  r  r   Nr,   r-   r  r"   r   r   r   r  \  r  r   r   c                       e Zd Zy)9TestSignatureObject.test_signature_on_subclass.<locals>.DNr   r"   r   r   r[  r  _  r*  r   r[  r  ))r%   r,   .rG  r   r-   .rG  rb  rd  .))r  rb  rd  .rB  )rU   rS  rV  r   r[  s        r   test_signature_on_subclassz.TestSignatureObject.test_signature_on_subclassU  s    	+ 	+	 		+ 	+	 	 	*	  	*	  	*	 r   c                     ddl m}m}  |d      } G d d||         }| j                  | j	                  |      ddt
        dffd f       y )	Nr   )GenericTypeVarr5  c                       e Zd ZdeddfdZy)ATestSignatureObject.test_signature_on_generic_subclass.<locals>.Ar%   r  Nc                     y r   r"   r&  s     r   r   zJTestSignatureObject.test_signature_on_generic_subclass.<locals>.A.__init__w  r   r   )rL   ra   rb   r   r   r"   r   r   rS  r  v  s    S T r   rS  r%   .rK  )typingr  r  r1  r  r   )rU   r  r  r5  rS  s        r   "test_signature_on_generic_subclassz6TestSignatureObject.test_signature_on_generic_subclassq  sP    +CL	
 	 	*c>:< 	!r   c                     G d d      }| j                  t        t        j                  |            d        G d d|      }| j                  t        t        j                  |            d        G d dt              } G d d|      }| j                   |dd	i       j
                  d       | j                  t        d
      5  | j                  t        j                  |      d        d d d        | j                   |dd	i       j
                  d       | j                  t        d
      5  | j                  t        j                  |      d        d d d        y # 1 sw Y   rxY w# 1 sw Y   y xY w)Nc                       e Zd ZyCTestSignatureObject.test_signature_on_class_without_init.<locals>.CNr   r"   r   r   r   r    r   r   r   r  c                       e Zd ZyCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNr   r"   r   r   r[  r    r   r   r[  c                       e Zd Zyr  r   r"   r   r   r   zCTestSignatureObject.test_signature_on_class_without_init.<locals>.C  r   r   c                       e Zd Zyr  r   r"   r   r   r[  zCTestSignatureObject.test_signature_on_class_without_init.<locals>.D  r   r   rS  r"   zcallable.*is not supported)r1  r   rO   r  r   rL   r  rt  )rU   r   r[  s      r   $test_signature_on_class_without_initz8TestSignatureObject.test_signature_on_class_without_init~  s&    	W..q12D9W..q12D9 	3B00#6##J0LM 	9W..q148	93B00#6##J0LM 	9W..q148	9 	9	9 	9	9 	9s   &E.&E)E&)E2c                    d}| j                  t        t        j                  t        j
                              |        G d dt        j
                        } G d d      } G d d||      }| j                  t        t        j                  |            |       | j                  t        t        j                  |            |        G d d	|      }| j                  t        t        j                  |            d
        G d dt              } G d d||      }| j                  t        t        j                  |            d       y )Nz=(file, protocol=None, fix_imports=True, buffer_callback=None)c                       e Zd Zy)>TestSignatureObject.test_signature_on_builtin_class.<locals>.PNr   r"   r   r   r"  r    r   r   r"  c                       e Zd Zy)GTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNr   r"   r   r   
EmptyTraitr    r   r   r  c                       e Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nr   r"   r   r   P2r    r   r   r  c                       e Zd Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3c                      y r   r"   )rU   rx   s     r   r   zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__  r   r   Nr'  r"   r   r   P3r    r   r   r  z(spam)c                       e Zd Zd Zy)BTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPc                      y r   r"   )r   r.   r&   s      r   r   zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__  r   r   Nr   r"   r   r   MetaPr    r   r   r  c                       e Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr   r"   r   r   P4r    r*  r   r  r  z
(foo, bar))r1  r   rO   r  r  r  r   )rU   r]  r"  r  r  r  r  r  s           r   test_signature_on_builtin_classz3TestSignatureObject.test_signature_on_builtin_class  s    ,W..w?@(K&&%Q%W..q12H=W..r23X>	 	 	W..r23X>	D 		u 	W..r23\Br   c                 ~    G d d      }| j                  | j                   |             d        G d d      }| j                  t        d      5  t	        j                   |              d d d         G d d||      }| j                  | j                   |             d       | j                  d	      5   G d
 d      }| j                  | j                   |             d       d d d        | j                  d      5   G d d      }| j                  | j                   |             d       d d d        | j                  d      5   G d d       G fdd      }| j                    |       d      d       | j                  | j                   |             d       d d d        | j                  d      5   G d d      }| j                    |       d      d       | j                  | j                   |             d       d d d        | j                  d      5   G d d      }| j                    |       d      d       | j                  | j                   |             d       d d d        | j                  d      5   G d d      }| j                    |       ddg      d       | j                  | j                   |             | j                  dj                               d d d        | j                  d      5   G d d      }| j                    |       d       d!       | j                  | j                   |             | j                  d"j                               d d d        | j                  d#      5   G d$ dt              }  |       dd%gd       }| j                  |d d d&       | j                  t        |      |       | j                  | j                   |             | j                  t        j                               d d d        | j                  d'      5   G d( dt              }| j                    |d)      ddg      d       | j                  | j                   |             | j                  dj                               d d d        | j                  d*      5   G d+ dt              }| j                    |d%      d       d!       | j                  | j                   |             | j                  d"j                               d d d        | j                  d,      5   G d- d      } |       }d. |_        | j                   |d      d       | j                  | j                  |      d       d d d        y # 1 sw Y   :xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   (xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   xY w# 1 sw Y   y xY w)/Nc                       e Zd Zd Zy)CTestSignatureObject.test_signature_on_callable_objects.<locals>.Fooc                      y r   r"   r&  s     r   r   zLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__  r   r   Nr   r"   r   r   r  r	    r   r   r  r(  c                       e Zd Zy)DTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNr   r"   r   r   r   r	    r*  r   r   r  c                       e Zd Zy)CTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNr   r"   r   r   r+  r	    r*  r   r+  r   c                       e Zd Zed        Zy)ATestSignatureObject.test_signature_on_callable_objects.<locals>.Cc                      y r   r"   r,  s     r   r   zJTestSignatureObject.test_signature_on_callable_objects.<locals>.C.__call__  r  r   Nr3  r"   r   r   r   r	    r  r   r   r   c                       e Zd Zed        Zy)r	  c                      y r   r"   r  s    r   r   zJTestSignatureObject.test_signature_on_callable_objects.<locals>.C.__call__  r  r   Nr;  r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   r?  c                       e Zd Zd Zy)ATestSignatureObject.test_signature_on_callable_objects.<locals>.Ac                     |S r   r"   r&  s     r   rC  zFTestSignatureObject.test_signature_on_callable_objects.<locals>.A.call  rD  r   NrE  r"   r   r   rS  r	    rF  r   rS  c                   2    e Zd Z W         j                  Zyr	  NrH  rI  s   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  rJ  r   r,   r   c                   4    e Zd Z ej                  d d      Zy)r	  c                 
    | |fS r   r"   rO  s     r   r   zJTestSignatureObject.test_signature_on_callable_objects.<locals>.C.<lambda>  rP  r   r-   NrQ  r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  rR  r   rU  r`  c                   4    e Zd Z ej                  d d      Zy)r	  c                 
    ||fS r   r"   rX  s      r   r   zJTestSignatureObject.test_signature_on_callable_objects.<locals>.C.<lambda>  rY  r   r-   NrZ  r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r[  r   r^  c                   $    e Zd Zdj                  Zy)r	  r`  Nra  r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  rb  r   r%   re  rf  r   rg  c                   $    e Zd Zdj                  Zy)r	  r-   Nri  r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  rk  r   rb  r8  r   ClassMethodDescriptorTypec                   *    e Zd Zej                  d   Zy)r	  rx  N)rL   ra   rb   r   r  r   r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  s    ==4r   r-   r  r  c                   $    e Zd Zej                  Zyr	  )rL   ra   rb   r   r2   r   r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C
  rb  r   r`  r  c                   $    e Zd Zej                  Zyr	  )rL   ra   rb   r   rj  r   r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  s    ;;r   r   c                       e Zd ZdZy)r	  r   Nr   r"   r   r   r   zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  s    &	r   c                     | S r   r"   r  s    r   r   zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>  s    1 r   )r1  r  r  r  rO   r/  r2   rj  r   r   rx  r   r   r   )rU   r  r   r+  r   resr   rS  s          @r   "test_signature_on_callable_objectsz6TestSignatureObject.test_signature_on_callable_objects  so   	 	 	.	 	 	##I/IJ 	&df%	&	$ 	 	.	  \\-( 	" 
 T^^AC0!"	" \\.) 	" 
 T^^AC0!"	" \\,' 
	" $ $ SQSVQ'T^^AC0!"
	" \\)$ 	"E E SQSVV,T^^AC0!"	" \\/* 	"Q Q SQSVV,T^^AC0!"	" \\-. 	K$ $ SQS#t-v6T^^AC0$..2IJ	K \\-. 	O' ' SQSVQ'T^^AC0$..!2MN	O \\56 	Q5D 5 !#q!fa.CSaA,/T#Y*T^^AC0$..2OP	Q \\01 	K$C $ VQsVS$K0&9T^^AC0$..2IJ	K \\12 	O'C ' TQqT!Wa(T^^AC0$..!2MN	O \\01 	"' 'A$AJQqT1%T^^A.!"	" 	"C	& 	&	" 	"	" 	"
	" 
	"	" 	"	" 	"	K 	K	O 	O	Q 	Q	K 	K	O 	O	" 	"s   V%81V21V?AW?AW&AW&A)W3A'X BX;A/XA-X'	AX3%V/2V<?W	WW#&W03W= X
XX$'X03X<c                     G d d      } |       }d |_         | j                  | j                  |      d        |       }||_         | j                  t        d      5  | j                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)>TestSignatureObject.test_signature_on_wrapper.<locals>.Wrapperc                      y r   r"   r/  s     r   r   zGTestSignatureObject.test_signature_on_wrapper.<locals>.Wrapper.__call__#  r   r   Nr   r"   r   r   Wrapperr!	  "  r   r   r#	  c                      y r   r"   r  s    r   r   z?TestSignatureObject.test_signature_on_wrapper.<locals>.<lambda>&  r   r   r(  wrapper loop)r   r1  r  r  rt  )rU   r#	  r  s      r   test_signature_on_wrapperz-TestSignatureObject.test_signature_on_wrapper!  s}    	 	 ),0	  )%##J? 	$NN7#	$ 	$ 	$s   A::Bc                 J    | j                  | j                  dd      d       y )Nc                     | S r   r"   r  s    r   r   z?TestSignatureObject.test_signature_on_lambdas.<locals>.<lambda>1  s    a r   )))r%   r=  .rG  .rR  rB  r_   s    r   test_signature_on_lambdasz-TestSignatureObject.test_signature_on_lambdas0  s     9	 r   c           	      j   t         j                  j                         t         j                  j                         t         j                  j	                         fD ]K  }| j                  |      5  | j                  t        t        j                  |            d       d d d        M y # 1 sw Y   XxY w)Nr   z(*args, **kwargs))
r   r   r   r   	MagicMockr/  r1  r   rO   r  rU   r   s     r   test_signature_on_mocksz+TestSignatureObject.test_signature_on_mocks5  s     MM MM##%MM##%
 	TD
 4( T  W%6%6t%<!=?RST T	T
T Ts   //B))B2	c                 R   t         j                  j                         t         j                  j                         fD ]P  }| j	                  |      5  | j                  t              5  t        j                  |       d d d        d d d        R y # 1 sw Y   xY w# 1 sw Y   ixY w)Nr+	  )	r   r   NonCallableMockNonCallableMagicMockr/  r  r  rO   r  r-	  s     r   #test_signature_on_noncallable_mocksz7TestSignatureObject.test_signature_on_noncallable_mocks?  s    MM))+MM..0
 	,D 4( ,&&y1 ,%%d+,, ,		,
, ,, ,s$   B(B>BBBB&	c                    dt         dt        fd}| j                  t        j                  |      dk(         | j                  t        j                  |      dk7         | j                  t        j                  |      t        k(         | j                  t        j                  |      t        k7         dt         dt        fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         dt         fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dddt         dt        fd	}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt        fd
}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         dt        fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         dt        fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   d }d }| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   ddd}ddd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   ddd}ddd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   d }ddd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dddt         fd}dddt         fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   y )Nr   r  c                     y r   r"   r   s     r   r.   z8TestSignatureObject.test_signature_equality.<locals>.fooI  r  r   r   c                     y r   r"   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.barO  r  r   c                     y r   r"   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.barU  r  r   c                     y r   r"   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar[  s    dr   r  c                     y r   r"   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bara  s    $r   c                     y r   r"   r%   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.barg      4r   c                      y r   r"   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.barm      Dr   c                      y r   r"   r   r%   s     r   rx   z9TestSignatureObject.test_signature_equality.<locals>.spamr  r  r   c                      y r   r"   r  s      r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foox      Tr   c                      y r   r"   r   r   r%   s      r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bary  rA	  r   r,   r  c                      y r   r"   r  s      r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  r  r   c                      y r   r"   rC	  s      r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r  r   c                     y r   r"   posr%   r   r   s       r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  r=	  r   c                     y r   r"   rH	  r   r   r%   s       r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r=	  r   c                     y r   r"   rG	  s       r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  s    $r   c                     y r   r"   rJ	  s       r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r=	  r   r<  c                     y r   r"   )rH	  r%   r   r   r   r<  s         r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo      tr   c                     y r   r"   )rH	  r   r   r%   r   r<  s         r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  rN	  r   )
r   rL  rT   rO   r  rK   r   r1  hashr  )rU   r.   r&   rx   s       r   test_signature_equalityz+TestSignatureObject.test_signature_equalityH  sX   +++**3/256))#."45))#.);<**3/9<=+++))#.'2C2CC2HHI**3/73D3DS3IIJ""3'($w/@/@/E*F	H 	*))**3/73D3DS3IIJ))#.'2C2CC2HHI""3'($w/@/@/E*F	H 	#"**3/73D3DS3IIJ))#.'2C2CC2HHI""3'($w/@/@/E*F	H ..5.**3/73D3DS3IIJ))#.'2C2CC2HHI""3'($w/@/@/E*F	H 	(E'**3/73D3DS3IIJ))#.'2C2CC2HHI""3'($w/@/@/E*F	H 	)S(U(**3/73D3DS3IIJ))#.'2C2CC2HHI""3'($w/@/@/E*F	H)3)e)**40G4E4Ec4JJK))$/73D3DS3IIJ""4()40A0A#0F+G	I 	"!))#.'2C2CC2HHI**3/73D3DS3IIJ""3'($w/@/@/E*F	H ##))#.'2C2CC2HHI**3/73D3DS3IIJ""3'($w/@/@/E*F	H ( !())#.'2C2CC2HHI**3/73D3DS3IIJ""3'($w/@/@/E*F	H 	' !(**3/73D3DS3IIJ))#.'2C2CC2HHI""3'($w/@/@/E*F	H !;;$&;;))#.'2C2CC2HHI**3/73D3DS3IIJ""3'($w/@/@/E*F	Hr   c                 
   t         j                  }t         j                  }d }t        j                  |      } | |d|j                        g      }| j                  t        |      t        |             | j                  t        |      t        |j                  d                   dd}| j                  t        |      t        t        j                  |                   i fd}| j                  t        d	      5  t        t        j                  |             d d d        di fd
}| j                  t        d	      5  t        t        j                  |             d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)Nc                      y r   r"   r  s    r   r.   z8TestSignatureObject.test_signature_hashable.<locals>.foo  r  r   r%   r  rx   r  r  c                      y r   r"   r  s    r   r&   z8TestSignatureObject.test_signature_hashable.<locals>.bar  r  r   c                      y r   r"   r  s    r   r.   z8TestSignatureObject.test_signature_hashable.<locals>.foo      tr   unhashable typec                      y r   r"   r  s    r   r.   z8TestSignatureObject.test_signature_hashable.<locals>.foo  r  r   )r  r,   )rO   r  r  r  POSITIONAL_OR_KEYWORDr1  rP	  r  r   r  r  )rU   r!  r"  r.   foo_sig
manual_sigr&   s          r   test_signature_hashablez+TestSignatureObject.test_signature_hashable  s9   ##C(1S!*A*A#B"CD
gZ(89DM !3!3f!3!MN	P 	DM40A0A#0F+GH##I/@A 	)""3'(	) 	b##I/@A 	)""3'(	) 	)		) 	)	) 	)s   E-E9-E69Fc                    dd ddt         ddfd}| j                  t        t        j                  |            d       dd ddt         ddfd}| j                  t        t        j                  |            d       d	 }| j                  t        t        j                  |            d
       dt
        t           dt        t        t        f   fd}| j                  t        t        j                  |            d       ddlm	} dt
        t           d|t        t        f   fd}| j                  t        t        j                  |            d       y )Nr'  r%   r  r   c                     y r   r"   r%   r   r   r<  s       r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z*(a: int = 1, *, b, c=None, **kwargs) -> 42c                     y r   r"   )r%   r   r   r   r<  s        r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z.(a: int = 1, *args, b, c=None, **kwargs) -> 42c                       y r   r"   r"   r   r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   r  c                      y r   r"   r  s    r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z#(a: list[str]) -> tuple[str, float]r   )Tuplec                      y r   r"   r  s    r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z#(a: list[str]) -> Tuple[str, float]r  )
r   r1  r   rO   r  r   r  rL  r  rd	  )rU   r.   rd	  s      r   test_signature_strz&TestSignatureObject.test_signature_str  s0   	 	# 	B 	W..s34E	G	T 	# 	 	W..s34I	K	W..s34d;	49 	sEz!2 	W..s34>	@ 	!	49 	sEz!2 	W..s34>	@r   c                 &   t         j                  }t         j                  }d }| j                  t	        t        j
                  |            d       | j                  t	         | |d|j                        g            d       | j                  t	         | |d|j                         |d|j                        g            d       | j                  t	         | |d|j                         |d|j                        g            d       y )	Nc               
    | |fS r   r"   )a_por   r<  s      r   r  zDTestSignatureObject.test_signature_str_positional_only.<locals>.test      <r   z(a_po, /, *, b, **kwargs)r.   r  z(foo, /)r&   z(foo, /, **bar)z(foo, /, *bar))	rO   r  r  r1  r   r  r  ru  VAR_POSITIONAL)rU   r"  r!  r  s       r   "test_signature_str_positional_onlyz6TestSignatureObject.test_signature_str_positional_only  s    	  	W..t454	6 	Q1UA4E4E+F*GHI#	% 	Q !%):): ; !% 7+9 : ; +	,
 	Q !%):): ; !%)9)9 :+< = > *	+r   c                    dd}t        j                  |      }|j                  d       }| j                  |j                  d        |j                  |j
                        }| j                  |j                  |j
                         |j                  d      }| j                  |j                  d       | j                  |t        j                  |             y )Nr   c                       y r   r"   r"   r   r   r  z=TestSignatureObject.test_signature_replace_anno.<locals>.test  r  r   rT	  )r  r   )rO   r  r   rQ  r  r	  r1  r=  s      r   test_signature_replace_annoz/TestSignatureObject.test_signature_replace_anno  s    	 %kkDk1c++T2kkCIIk6c++SYY7kkBk/..3g//56r   c                     d }t        j                  dt         j                  j                        }t        j                  |f      x}|_        | j                  |t        j                  |             y )Nc                       y r   r"   r"   r   r   r  z9TestSignatureObject.test_signature_replaced.<locals>.test  r  r   rx   r  )rO   r  r  r  r  r1  r  )rU   r  r  r  s       r   test_signature_replacedz+TestSignatureObject.test_signature_replaced  s\    	 &&vw/@/@/P/PQ
#*#4#4#NNd g//56r   c                     G d d      } G d d|      }| j                  | j                  |j                        d       | j                  | j                  |j                        | j                  |j                               y )Nc                       e Zd ZdddddZy)FTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamrb  )	_Spam__p2c                     y r   r"   )rU   	_Spam__p1rv	  s      r   r.   zJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.foo  r   r   N)r-   )rx	  r,   rv	  r-   r  r"   r   r   r   ru	    s    a r   r   c                       e Zd Zy)ETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNr   r"   r   r   Hamrz	    r*  r   r{	  ))r  )rx	  r-   r,   rG  )rv	  rb  r-   rK  .)r1  r  r.   )rU   r   r{	  s      r   $test_signature_on_mangled_parametersz8TestSignatureObject.test_signature_on_mangled_parameters  sk    	 		$ 	 	1	  	10	2r   c                      G d dt         j                        }dd}|j                  |      }| j                  ||       y )Nc                       e Zd Zy)PTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureNr   r"   r   r   r  r	  
  r   r   r  c                     y r   r"   r   s     r   r.   zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo  r  r   r   r,   rO   r  r  assertIsInstancerU   r  r.   r[	  s       r   'test_signature_from_callable_python_objz;TestSignatureObject.test_signature_from_callable_python_obj	  s3    2'++2 ++C0g{3r   c                      G d dt         j                        } G d d      }|j                  |      }| j                  ||       y )Nc                       e Zd Zy)KTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureNr   r"   r   r   r  r	    r   r   r  c                       e Zd Zy)CTestSignatureObject.test_signature_from_callable_class.<locals>.fooNr   r"   r   r   r.   r	    r   r   r.   r	  r	  s       r   "test_signature_from_callable_classz6TestSignatureObject.test_signature_from_callable_class  s7     	3'++2++C0g{3r   c                      G d dt         j                        }|j                  t        j                        }| j                  ||       y )Nc                       e Zd Zy)QTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureNr   r"   r   r   r  r	    r   r   r  )rO   r  r  r  r  r	  )rU   r  r  s      r   (test_signature_from_callable_builtin_objz<TestSignatureObject.test_signature_from_callable_builtin_obj  s6     	3'++2''8c;/r   c                 Z   t               D ]Z  }t        j                  |      }t        |j                        }t        |      }| j                  |       | j                  ||       \ t        j                  t              }t        |j                        }| j                  |t               y r   )
r;   rO   r  r   r4   r  rK   r1  rD   r  r  s        r   3test_signature_definition_order_preserved_on_kwonlyzGTestSignatureObject.test_signature_definition_order_preserved_on_kwonly  s    GI 	*B))"-IY))*AayHOOAQ)	* %%&IJ	%%&<=r   c                     t        j                  d       j                  }t        j                  d       j                  }| j                  ||       y )Nc                      y r   r"   r  s     r   r   zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>+  r   r   c                      y r   r"   r  s     r   r   zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>,  r   r   )rO   r  r4   r  )rU   p1p2s      r   #test_signater_parameters_is_orderedz7TestSignatureObject.test_signater_parameters_is_ordered*  s@    01<<01<<B#r   c                 l    G d d      }d|dt         fd}d|dddt         fd}t        j                  t        j                  j                  fD ]U  }| j                  |	      5   ||      }| j                  |j                  t                | j                  |j                  d   j                  |        ||t               
      }| j                  |j                  t                | j                  |j                  d   j                  |        ||dt         it                     }| j                  |j                  t                | j                  |j                  d   j                  |       | j                  |j                  d   j                  d       d d d        X y # 1 sw Y   dxY w)Nc                       e Zd Zy)QTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.FooNr   r"   r   r   r  r	  0  r   r   r  r.   r  c                      y r   r"   r  s    r   r  zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func1  r;	  r   r&   r+  c                      y r   r"   r.   r&   s     r   func2zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func22  s    r   signature_func)rp  )r  rp  )r   rO   r  r  r  r/  r1  r  r4   r
  rp  )rU   r  r  r	  r	  sig1r#  sig3s           r   0test_signature_annotations_with_local_namespaceszDTestSignatureObject.test_signature_annotations_with_local_namespaces/  se   'c'c'4s4434&00'2C2C2Q2QR 	KN~> K%d+  !7!7=  !7!B!BCH%d68<  !7!7=  !7!B!BCH%eeS\&(S  !7!7=  !7!B!BCH  !7!B!BEJK K	KK Ks   %D8F))F3	c                 v   t         }t        j                  }t        j                  }t        j                  j                  }t        j
                  t        j                  j                  fD ]  }| j                  |      5  | j                   ||j                         | |d|       |d|      f             | j                   ||j                         |d |d|d       |d|d      f	             | j                   ||j                         |d |d|d       |d|d
       |d|d      f	             | j                   ||j                         | |d|d       |d|d
       |d|d      f             t        s'| j                   ||j                         |              | j                   ||j                         | |d|       |d|       |d|      f             | j                   ||j                  d       | |d|       |d|      f             | j                   ||j                  d       ||j                   |d|t                |d|t"              f	             | j                   ||j                  d       ||j                   |d|t                |d|d       |d||j                        f	             | j                   ||j                  d       | |d|d       |d|d       |d|d      f             t$        t&        d}t(        t*        d}| j-                  t.              5   ||j                  d|       d d d        | j                   ||j                  d|       |t*         |d|t                |d|t(              f	             | j                   ||j                  d||       |t*         |d|t$               |d|t(              f	             d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr	  r%   r   r  r  r   r
  r   )r  r4   r  r   r  r  Tr  )r   r   )r   r  r  r  )r  r  rp  )r   rO   r  r  rZ	  r  r  r/  r1  r  rV  r  r  r   r  r  r   r   rL  complexr  r   r  	NameError)rU   r  r  parPORKr	  globalnslocalnss           r   test_signature_eval_strz+TestSignatureObject.test_signature_eval_strC  s   ,  66&00'2C2C2Q2QR c	N~> b  "3;;/TNTN$   "3<<0*3Te<Te<$   "3==1*3Te<Tg>Ti@$   "3==1Tg>Tg>TkB$ ,$$^C4H4H%I35Q  0H0H!ITNTNTN$   "3;;>TNTN$   "3<<$?*-++Tc:Tc:$   "3==4@*-++Tc:Te<TckkB$   "3==4@Te<Te<Ti@$ $)9"'D9&&y1 R"3<<$QR   "3<<$wO*.Tc:Te<$   "3<<$Y`a*.Te<Te<$wb bc	`R R_b bs&   KP.P"3B#P."P+'P..P8	c                     G d d      }d } ||      }d |_         t        j                  t        j                  j                  fD ]G  }| j                  |      5  | j                   ||      t        j                                d d d        I | j                  t        j                  |      i        y # 1 sw Y   yxY w)Nc                       e Zd Zd Zd Zy)DTestSignatureObject.test_signature_none_annotation.<locals>.funclikec                     |j                   | _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        || _        y r   r  r  s     r   r   zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__  r  r   c                 &     | j                   |i |S r   rD  r;  s      r   r   zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__  r  r   Nr  r"   r   r   r  r	    r  r   r  c                       y r   r"   r"   r   r   r.   z?TestSignatureObject.test_signature_none_annotation.<locals>.foo  r-  r   r	  )r  rO   r  r  r  r/  r1  r  )rU   r  r.   r	  s       r   test_signature_none_annotationz2TestSignatureObject.test_signature_none_annotation  s    	2 	2  	sm"&00'2C2C2Q2QR 	KN~> K  !4g6G6G6IJK K	K 	005r:K Ks   +B77C 	c                 h    d | _          G d d      }| j                  | j                  |      d       y )Nc                       e Zd ZdZy)4TestSignatureObject.test_signature_as_str.<locals>.S(a, b=2)N)rL   ra   rb   r  r"   r   r   r!  r	    s    &Mr   r!  )rF  r  .)r2  r1  r  rU   r!  s     r   test_signature_as_strz)TestSignatureObject.test_signature_as_str  s3    	' 	' 	*	 r   c                      G d d      }| j                  | j                  |      d        G d d      }| j                  | j                  |      d       y )Nc                       e Zd Zed        Zy)9TestSignatureObject.test_signature_as_callable.<locals>.Sc                      yNr	  r"   r   s    r   r  zGTestSignatureObject.test_signature_as_callable.<locals>.S.__signature__      !r   N)rL   ra   rb   r   r  r"   r   r   r!  r	    s    " "r   r!  r	  c                       e Zd Zed        Zy)r	  c                       yr	  r"   r"   r   r   r  zGTestSignatureObject.test_signature_as_callable.<locals>.S.__signature__  r	  r   N)rL   ra   rb   r   r  r"   r   r   r!  z9TestSignatureObject.test_signature_as_callable.<locals>.S  s    " "r   rB  r	  s     r   test_signature_as_callablez.TestSignatureObject.test_signature_as_callable  sV    	" 	"
 	*	 
	" 	"
 	*	 r   c                      G d d      } G d d|      } G d d|      }| j                  t        j                  |      t        j                  |             y )Nc                   $     e Zd Z fdZd Z xZS )@TestSignatureObject.test_signature_on_derived_classes.<locals>.Bc                 "    t         |   |       S r   rp  )rU   r   r<  r)  s      r   r  zHTestSignatureObject.test_signature_on_derived_classes.<locals>.B.__new__  s    wt,,r   c                     || _         y r   )r  r  s     r   r   zITestSignatureObject.test_signature_on_derived_classes.<locals>.B.__init__  s	    "
r   )rL   ra   rb   r  r   r1  r2  s   @r   rV  r	    s    -#r   rV  c                        e Zd Z fdZ xZS )ATestSignatureObject.test_signature_on_derived_classes.<locals>.D1c                 $    t         |   |       y r   r  )rU   r  r)  s     r   r   zJTestSignatureObject.test_signature_on_derived_classes.<locals>.D1.__init__  s     'r   r  r2  s   @r   D1r	    s    ( (r   r	  c                       e Zd Zy)ATestSignatureObject.test_signature_on_derived_classes.<locals>.D2Nr   r"   r   r   D2r	    r*  r   r	  )r1  rO   r  )rU   rV  r	  r	  s       r   !test_signature_on_derived_classesz5TestSignatureObject.test_signature_on_derived_classes  sL    	# 	#	( 	(	 	 	**2.0A0A"0EFr   c                 d     G d d      }| j                  | j                   |             d       y )Nc                       e Zd Zd Zd Zy)STestSignatureObject.test_signature_on_non_comparable.<locals>.NoncomparableCallablec                      y r   r"   r&  s     r   r   z\TestSignatureObject.test_signature_on_non_comparable.<locals>.NoncomparableCallable.__call__  r   r   c                     ddz   y )Nr,   r   r"   )rU   rY   s     r   r  zZTestSignatureObject.test_signature_on_non_comparable.<locals>.NoncomparableCallable.__eq__  s	    !r   N)rL   ra   rb   r   r  r"   r   r   NoncomparableCallabler	    s    r   r	  r(  rB  )rU   r	  s     r    test_signature_on_non_comparablez4TestSignatureObject.test_signature_on_non_comparable  s0    	 	
 	(=(?@	 r   N)>rL   ra   rb   r   r  r%  r:  r>  rC  rH  rM  rS  re  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.	  r2	  rQ	  r]	  rf	  rl	  ro	  rr	  r|	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r"   r   r   r  r  	  s-   	I 	IJX98	':
 !
 "HF X__)MOLCO LC\ X__)MO:O :( # #"3HjG&#6  $ $M^# J=
E Pk Z>"@a=F 8! X__)MO9O9$ X__)MOCOC.t"l$ 
T,QHf)0@4+.772 4 X__)MO4O4 X__)MO0O0
	>$
K(hT;2  ,G$ r   r  c                   F    e Zd Zd Zd Zd Zd Zd Zd Ze	d        Z
d Zy	)
TestParameterObjectc                 |   t         j                  }| j                  |j                  |j                  cxk  xr3 |j
                  cxk  xr! |j                  cxk  xr |j                  k  nc        | j                  t        |j                        d       | j                  dt        |j                        v        y )Nr  )rO   r  rK   r  rZ	  rk	  KEYWORD_ONLYru  r1  r   r  )rU   r"  s     r   test_signature_parameter_kindsz2TestParameterObject.test_signature_parameter_kinds  s    ))A,C,C J((J+,>>J<=MMJ 	K 	Q../1BC)T!2C2C-DDEr   c                    t        j                  ddt         j                  j                        }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  t         j                  j                         | j                  t        d      5  t        j                  ddd       d d d        | j                  t        d      5  t        j                  dt         j                  j                         d d d        | j                  t        d      5  t        j                  d	t         j                  j                         d d d        | j                  t        d
      5  t        j                  d t         j                  j                         d d d        | j                  t        d      5  t        j                  dt         j                  j                         d d d        | j                  t        d      5  t        j                  dt         j                  j                         d d d        | j                  t        d      5  t        j                  ddt         j                  j                         d d d        | j                  t        d      5  t        j                  ddt         j                  j                         d d d        t        j                  ddt         j                  j                        }| j                  t        d      5  |j!                  t         j                  j                         d d d        | j#                  t%        |      j'                  d             | j#                  dt%        |      v        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   $xY w# 1 sw Y   xY w)Nr.   r=  rp  ro  z)value '123' is not a valid Parameter.kind123znot a valid parameter namer  rr  fromname must be a strzis not a valid parameter name$z.azcannot have default valuesr%   r   z
<Parameterz"a=42")rO   r  r  r1  r  rp  rQ  r
  r	  ro  r  rt  ru  r  rk	  rZ	  r   rK   r  r  rU   r6   s     r   test_signature_parameter_objectz3TestParameterObject.test_signature_parameter_object  se   eR#*#4#4#D#DF'B'allAGG,!2!2!B!BC##J 1A B 	=eRe<	= ##J0LM 	Gc(9(9(E(EF	G ##J0LM 	Jf7+<+<+H+HI	J ##I/CD 	Hd):):)F)FG	H ##J$CE 	Gc(9(9(E(EF	G ##J$CE 	Hd):):)F)FG	H ##J0LM 	Bc2#*#4#4#@#@B	B ##J0LM 	Ec2#*#4#4#C#CE	E c2#*#4#4#J#JL##J0LM 	=II7,,;;I<	= 	Q**<89DG+,G	= 	=	G 	G	J 	J	H 	H	G 	G	H 	H	B 	B	E 	E	= 	=sl   O0O*0O7,0P:0P0P1P+%1P8$+QO'*O47PPPP(+P58QQc           
         t         j                  } |d|j                        }| j                  t	        |      t	         |d|j                                     | j                  t	        |      t	         |d|j                  d                   | j                  t	        |      t	        |j                  |j                                     y )Nr.   rr  r   rn  )rO   r  r  r1  rP	  r  r   rk	  )rU   r"  r.   s      r   !test_signature_parameter_hashablez5TestParameterObject.test_signature_parameter_hashable9  s    A--.cD5q7H7H)I$JKDItAe!:K:K68-: (; 	<DI !2B2B!CD	Fr   c                 >   t         j                  } |ddt         j                  j                        }| j                  ||k(         | j	                  ||k7         | j	                  |dk(         | j                  |dk7         | j                  |t
        k(         | j	                  |t
        k7         | j                  | |ddt         j                  j                        k(         | j	                  | |ddt         j                  j                        k7         y )Nr.   r   r	  )rO   r  r	  rK   rT   r   )rU   r"  r6   s      r   !test_signature_parameter_equalityz5TestParameterObject.test_signature_parameter_equalityB  s    eRg&7&7&D&DEQa b!R Y'i(Qub$+$5$5$B$BD D 	Ear%,%6%6%C%CE E 	Fr   c                 H   t        j                  ddt         j                  j                        }| j                  ||j	                                | j                  ||j	                                |j	                  d      }| j                  |j                  d       |j	                  |j                        }| j                  ||       |j	                  d      }| j                  |j                  d       | j                  ||       | j                  t        d      5  |j	                  |j                        }d d d        |j	                  dd 	      }| j                  |j                  d        | j                  ||       |j	                  d|j                  	      }| j                  |j                  |j                         |j	                  d|j                        }| j                  |j                  |j                         | j                  ||       | j                  t        d
      5  |j	                  |j                        }d d d        |j	                  |j                        }| j                  ||       y # 1 sw Y   MxY w# 1 sw Y   ExY w)Nr.   r   r	  r,   r	  r&   r  zname is a required attribute)r  rp  z<value <class 'inspect._empty'> is not a valid Parameter.kindrr  )rO   r  r	  r  r   r1  r
  r	  r  r  r  rt  rQ  rp  rZ	  ro  )rU   r6   r	  s      r    test_signature_parameter_replacez4TestParameterObject.test_signature_parameter_replaceR  s   eR#*#4#4#A#AC 	AIIK(AIIK(YY!Y$*ZZ288Z,BZZUZ#%(B"##J$BD 	+*B	+ ZZUDZ1bjj$'B"ZZUBHHZ5bjj"((+ ZZ)A)AZB"":":;B"##J%DE 	+ *B	+
 ZZR__Z-Q-	+ 	+ 	+ 	+s   #J7JJJ!c                     | j                  t        d      5  t        j                  d t        j                  j                         d d d        y # 1 sw Y   y xY w)Nr	  rr  )r  r  rO   r  r  r_   s    r   (test_signature_parameter_positional_onlyz<TestParameterObject.test_signature_parameter_positional_onlyz  sH    ##I/CD 	Ld):):)J)JK	L 	L 	Ls   0AAc                    | j                  t        d      5  t        j                  dt        j                  j                         d d d        t        j                  dt        j                  j
                        }| j                  |j                  t        j                  j                         | j                  |j                  d       y # 1 sw Y   xY w)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0rr  	implicit0)	r  rt  rO   r  r  rZ	  r1  ro  r  )rU   r  s     r   !test_signature_parameter_implicitz5TestParameterObject.test_signature_parameter_implicit~  s    ##J%:; 	L d):):)J)JK		L !!w((>>@W%6%6%F%FG[1	L 	Ls   0CCc                 &   t        j                  dt         j                  j                        }| j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        y # 1 sw Y   /xY w# 1 sw Y   y xY w)Nrx   rr  r&   rq  )rO   r  r	  r  r  r.   ro  r	  s     r   %test_signature_parameter_immutabilityz9TestParameterObject.test_signature_parameter_immutability  s{    f7+<+<+I+IJ~. 	AE	 ~. 	AF	 		 		 	s   A;*B;BBN)rL   ra   rb   r	  r	  r	  r	  r	  r	  r   r	  r	  r"   r   r   r	  r	    s?    F+-ZFF & PL 
2 
2r   r	  c                   z    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zed        Zd Zy)TestSignatureBindc                     t        j                  |       } |j                  |i |} | |j                  i |j                  S r   )rO   r  r  r   r<  )r  r   r<  r  r  s        r   rC  zTestSignatureBind.call  s?    %SXXt&v&RWW*		**r   c                    d }| j                  | j                  |      d       | j                  t        d      5  | j                  |d       d d d        | j                  t        d      5  | j                  |dd       d d d        | j                  t        d      5  | j                  |d       d d d        y # 1 sw Y   oxY w# 1 sw Y   HxY w# 1 sw Y   y xY w)Nc                       yrL  r"   r"   r   r   r  z9TestSignatureBind.test_signature_bind_empty.<locals>.test  s    r   r   too many positional argumentsr,   r=  rM  )got an unexpected keyword argument 'spam'r1  rC  r  r  r$  s     r   test_signature_bind_emptyz+TestSignatureBind.test_signature_bind_empty  s    	 	4"-##I/NO 	IIdA	##I/NO 	(IIdABI'	(##BD 	$ IIdI#	$ 	$		 		( 	(	$ 	$s#   B<,CC<CCCc                     d }| j                  | j                  |      di f       | j                  | j                  |d      di f       | j                  | j                  |dd      di f       | j                  | j                  |d      dd	dif       | j                  | j                  |dd      dd	dif       | j                  | j                  |d
      ddd
if       | j                  | j                  |ddd      dd	dif       y )Nc                  
    | |fS r   r"   rX  s     r   r  z7TestSignatureBind.test_signature_bind_var.<locals>.test  rj	  r   r"   r,   r  r-   r  r&   r  r.   r=  r<  r   r1  rC  r$  s     r   test_signature_bind_varz)TestSignatureBind.test_signature_bind_var  s   	  	42r(34+dBZ84A.=4U3b5%.5IJ46u~8NO4b1B3EF4A59 5%.1	3r   c                 :   d }| j                  | j                  |ddd      d       | j                  t        d      5  | j                  |dddd       d d d        | j                  t        d      5  | j                  |d       d d d        | j                  t        d	      5  | j                  |       d d d        dd}| j                  | j                  |ddd      d       | j                  | j                  |dd      d       dd}| j                  | j                  |d
d      d       | j                  | j                  |d
      d       | j                  | j                  |d
      d       y # 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                     | ||fS r   r"   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test  r  r   r,   r-   rb  ru  r	  rD  z missing a required argument: 'b'z missing a required argument: 'a'r=  c                     | ||fS r   r"   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test  r  r   )r,   r-   r=  c                     | ||fS r   r"   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test  r  r   rd  r:	  )r=  r-   rd  r  )r=  r-   rb  r  )r,   r=  rb  rR  r	  r$  s     r   test_signature_bind_just_argsz/TestSignatureBind.test_signature_bind_just_args  sp   	 	4Aq19=##I/NO 	(IIdAq!Q'	( ##I$FH 	IIdA	 ##I$FH 	IIdO		4Aq19=4A.
;	424kB42.
;42.
;)	( 	(	 		 	s#   E72F#F7FFFc                     d }| j                  | j                  |      d       | j                  | j                  |ddd      d       y )Nc                      | S r   r"   r<  s    r   r  zATestSignatureBind.test_signature_bind_varargs_order.<locals>.test  s    Kr   r"   r,   r-   rb  ru  r	  r$  s     r   !test_signature_bind_varargs_orderz3TestSignatureBind.test_signature_bind_varargs_order  s@    	 	4"-4Aq19=r   c           
         dd}| j                  | j                  |ddddd      d       | j                  | j                  |dd      d       | j                  | j                  |dd	      d
       | j                  | j                  |dd      d       | j                  t        d      5  | j                  |dddd       d d d        y # 1 sw Y   y xY w)Nrb  c                     | |||fS r   r"   )r%   r   r   r   s       r   r  zDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.test  s    aD= r   r,   r-   rD  r  )r,   r-   rb  )rD  r  )r,   r-   rb  r"   r?	  )r-   r,   rb  r"   r  z multiple values for argument 'c'r'  rb  r	  r$  s     r   $test_signature_bind_args_and_varargsz6TestSignatureBind.test_signature_bind_args_and_varargs  s    	! 	4Aq!Q79JK4A.>412MB4a0-@##I%GI 	*IIdAq!qI)	* 	* 	*s   ,CCc                     d }| j                  | j                  |      i        | j                  | j                  |dd      ddd       y )Nc                      | S r   r"   )r<  s    r   r  z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.test  s    Mr   r&   r  r.   rx   r	  r$  s     r   test_signature_bind_just_kwargsz1TestSignatureBind.test_signature_bind_just_kwargs  sH    	 	4"-4U?!&6	8r   c           
         dd}| j                  | j                  |dd      dddi f       | j                  | j                  |dddd      ddddddf       | j                  | j                  |dddd      ddddddf       | j                  | j                  |dddd	      ddddddf       | j                  | j                  |dddd
      ddddddf       | j                  | j                  |ddddd      ddddddf       | j                  | j                  |dddd      dddddif       | j                  | j                  |ddd      dddi f       y )Nrb  c                     | |||fS r   r"   r`	  s       r   r  zCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.test  s    aF?"r   r,   r-   r&   r  r
  )r   r%   r.   rx   )r%   r   r.   rx   )r   r.   rx   rD  )r   r   r.   rx   r  r.   r  )r   r%   r   r	
  r	  r$  s     r   #test_signature_bind_args_and_kwargsz5TestSignatureBind.test_signature_bind_args_and_kwargs  s   	# 	4A.Aq">4A5uEQ5%#@A	C41u5IQ5%#@A	C41u5IQ5%#@A	C4aUGQ5%#@A	C4a1%eLQ5%#@A	C4Aqe<QE5>2	441Q7Q2	(r   c           	         d }| j                  t        d      5  | j                  |d       d d d        | j                  | j                  |d      d       ddd}| j                  t        d      5  | j                  |d       d d d        d }| j                  | j                  |dd	      d
       | j                  | j                  |dd      d
       | j                  t        d      5  | j                  |ddd       d d d        | j                  t        d      5  | j                  |dd       d d d        | j                  t        d      5  | j                  |ddd	       d d d        | j                  t        d      5  | j                  |ddd       d d d        | j                  t        d      5  | j                  |d       d d d        d }| j                  | j                  |dd	      ddi f       | j                  | j                  |dd      ddi f       | j                  | j                  |ddd      ddddif       | j                  | j                  |ddd      ddddif       | j                  t        d      5  | j                  |dd       d d d        | j                  | j                  |dddd      dddddf       y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   xY w)Nc                     | S r   r"   r  s    r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test      Jr   r	  r,   r  c                    |S r   r"   )r%   r.   r&   s      r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test  r
  r   z"missing a required argument: 'bar'c                
    | |fS r   r"   r	  s     r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test  s    8Or   r-   r  r  )r&   r.   r	  r=  )r&   r.   rx   r  )r&   rx   z/missing a required keyword-only argument: 'bar'c                    | ||fS r   r"   )r.   r&   bins      r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test-  s    S= r   r	  rx   )rx   r.   r&   z"missing a required argument: 'foo')rx   r&   )r&   r
  rx   )r
  rx   )r  r  rC  r1  r$  s     r   test_signature_bind_kwonlyz,TestSignatureBind.test_signature_bind_kwonly  s4   	##I%DF 	IIdA	 	4Q/3 	##I%IK 	IIdA		42F;4QA6?##BD 	3 IIdqrI2	3
 ##I%DF 	"IIdAq!	" ##I%DF 	)IIdAqaI(	) ##BD 	2 IIdA15I1	2
 ##I&78 	 IIdA	
	!42Q2J?4QA6Ar
C4>Q0	24eBQ0	2##I$HJ 	/IIdAI.	/ 	4qrBQ2 67	9e	 		 		3 	3
	" 	"	) 	)	2 	2
	 		/ 	/s_   K4K+0K8$LL
L>L,L9K(+K58LLLL),L69Mc                 \   ddd}t        j                  |      }|j                  dddddd	
      }| j                  t	        |j
                  j                               ddddddd	dff       | j                  |j                  dddd	d
       | j                  |j                  d       y )Nr  r+   c                     y r   r"   )r%   r   r+   r   r<  s        r   r  z=TestSignatureBind.test_signature_bind_arguments.<locals>.test<  r  r   r=  r  rP  rh  r  <   )r   r   r   r<  r%   r=  )r   )r  )r   rP  r<  )r   r   r<  )r=  r  )	rO   r  r  r1  r  	argumentsitemsr<  r   rU   r  r  r  s       r   test_signature_bind_argumentsz/TestSignatureBind.test_signature_bind_arguments;  s     # 	%XXb"br"X= 	r||1134#_i#2rR%HIK	L 	!B"E	G(+r   c                    dddd}| j                  | j                  |dddd	d
      dddd	d
i f       | j                  | j                  |dd      dddddi f       | j                  | j                  |dddd	      ddddd	i f       | j                  | j                  |dddd	d      ddddd	ddif       | j                  | j                  |dddddd	      ddddd	ddif       | j                  | j                  |ddddd	d      ddddd	ddif       | j                  | j                  |ddd      dddddddif       | j                  t        d      5  | j                  |dd       d d d        dd}| j                  t        d      5  | j                  |dd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nrb  r   r  r  c                   | |||||fS r   r"   )ri	  b_poc_por.   r&   r<  s         r   r  zCTestSignatureBind.test_signature_bind_positional_only.<locals>.testJ  s    tS#v55r   r,   r-   rD  r     r	  r=  )r.   r&   r&
  r&
  rP     )r&
  r.   r&   )r&
  z'missing 2 required positional arguments)ri	  r%
  c                
    | |fS r   r"   r&
  d_pos     r   without_var_kwargszQTestSignatureBind.test_signature_bind_positional_only.<locals>.without_var_kwargse  s    :r   zCpositional-only arguments passed as keyword arguments: 'c_po, d_po'rT  rm  r*
  )rb  r   )rb  rD  r	  )rU   r  r,
  s      r   #test_signature_bind_positional_onlyz5TestSignatureBind.test_signature_bind_positional_onlyI  s   	6r 	6 	4Aq!;Q1a,	. 	4A.Q2r2.	0 	4A1!<Q1a,	. 	4A1!"EQ1a&"6	8 	4ArqIQAq62,7	9 	4ArqabIQAq62,7	9 	4AA6Q2rFA;7	9 ##I/XY 	,IIdI+	,	 ##Q
 	< II(rI;		< 	<	, 	,	< 	<s   F1F=1F:=Gc                     d }t        j                  |      }|j                  ddd      }| j                  |j                  d       |j                  ddd      }| j                  |j                  d       y )Nc                      y r   r"   )r%   rU   r   s      r   r  zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.testp  r  r   r,   r-   rb  ru  r/  )rO   r  r  r1  r   r!
  s       r   !test_signature_bind_with_self_argz3TestSignatureBind.test_signature_bind_with_self_argn  se    	%XXaA),XXaa1X%),r   c                    d }t        j                  |      }| j                  t        d      5  |j	                  dd       d d d        d }| j                  | j                  |d      dd	dif       t        j                  |      }|j	                  d      }| j                  |j                  d
d	dii       y # 1 sw Y   {xY w)Nc                 
    | |fS r   r"   r%   r   s     r   r  z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testy  s    d7Nr   z)got an unexpected keyword argument 'args'r   r,   r3
  c                  
    | |fS r   r"   rX  s     r   r  z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.test  rj	  r   r<  r"   r   r<  )rO   r  r  r  r  r1  rC  r
  r!
  s       r   test_signature_bind_vararg_namez1TestSignatureBind.test_signature_bind_vararg_namex  s    	%##BD 	" HHqqH!	"
	 4a02{2CD%XX1X61+'>?	" 	"s   B==Cc                     d }|j                   j                  d   }t        j                  |i       }t	        t        d            }| j                  t        | j                  ||            h d       y )Nc                  8    t        d t        d      D              S )Nc              3   &   K   | ]	  }||z    y wr   r"   )r  r+   s     r   r  zWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<genexpr>  s     /q1u/s   r  )rN   r/   r"   r   r   make_setzDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set  s    /eAh///r   r,   r  >   r   r,   rD  r9  r@  )	r  	co_constsr   r  iterr/   r1  rN   rC  )rU   r9
  gencomp_codegencomp_funciterators        r    test_signature_bind_implicit_argz2TestSignatureBind.test_signature_bind_implicit_arg  s]    	0((2215)),;a>TYY|X>?AQRr   c                     d }t        j                  |      }|j                  dd      }| j                  |j                  ddi       | j                  d|j                  j                                y )Nc                (    | |j                  |       fS r   )r>  )r&   r<  s     r   r.   zATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo  s    

3''r   pos-onlykeywordr  r&   )r&   rB
  )rO   r  r  r1  r<  r  r
  r 
  )rU   r.   r  results       r   "test_signature_bind_posonly_kwargsz4TestSignatureBind.test_signature_bind_posonly_kwargs  sb    	( $*)4	(:;)6+;+;+A+A+CDr   N)rL   ra   rb   r   rC  r	  r	  r
  r
  r

  r
  r
  r
  r"
  r-
  r0
  r5
  r   r?
  rE
  r"   r   r   r	  r	    so    + +
$3<8>*8((69p,#<J-@$ S SEr   r	  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestBoundArgumentsc                     d }t        j                  |      j                  d      }| j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nc                      y r   r"   r  s    r   r.   zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foo  r  r   r,   rX	  )rO   r  r  r  r  rP	  rU   r.   r  s      r   )test_signature_bound_arguments_unhashablez<TestBoundArguments.test_signature_bound_arguments_unhashable  sM    s#((+##I/@A 	H	 	 	s   AAc                 
   d }t        j                  |      j                  d      }| j                  ||k(         | j	                  ||k7         | j                  |t
        k(         | j	                  |t
        k7         t        j                  |      j                  d      }| j                  ||k(         | j	                  ||k7         t        j                  |      j                  d      }| j	                  ||k(         | j                  ||k7         d|j                  d<   | j                  ||k(         | j	                  ||k7         d }t        j                  |      j                  d      }| j	                  ||k(         | j                  ||k7         d }t        j                  |      }|j                  dd      }|j                  dd      }| j                  ||k(         | j	                  ||k7         y )	Nc                      y r   r"   r  s    r   r.   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foo  r  r   r,   r-   r%   c                      y r   r"   r  s    r   r&   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.bar  r  r   c                      y r   r"   r   s     r   r.   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foo  r  r   r   r?	  )rO   r  r  rK   rT   r   r
  )	rU   r.   r  ba2ba3r&   ba4r  ba1s	            r   'test_signature_bound_arguments_equalityz:TestBoundArguments.test_signature_bound_arguments_equality  s   s#((+b!r"i(y)$))!,c	"s#$))!,s#c	"cc	"s#$))!,s#c	"$hhah hhah s
#$r   c                 v   i ddddddifd}t        j                  |      }|j                  dd	i 
      }t        t        j
                  dz         D ]X  }| j                  |      5  t	        j                  t	        j                  ||            }| j                  ||       d d d        Z y # 1 sw Y   exY w)Nr'  r   r,   r  r   r  c                     y r   r"   r)  s       r   r.   zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foo  r*  r   r  rP  r
  )r+  )
rO   r  r  r/   r-  r.  r/  r0  r1  r1  )rU   r.   r  r  r5  
ba_pickleds         r   %test_signature_bound_arguments_picklez8TestBoundArguments.test_signature_bound_arguments_pickle  s    :1:2e*:$XXb"X#00145 	1C- 1#\\&,,r3*?@
  Z01 1	11 1s   (<B//B8	c                     i ddddddifd}t        j                  |      }|j                  dd	i 
      }| j                  t	        |      d       y )Nr'  r   r,   r  r   r  c                     y r   r"   r)  s       r   r.   zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foo  r*  r   r  rP  r
  z <BoundArguments \(a=20,.*\}\}\)>)rO   r  r  assertRegexr  rU   r.   r  r  s       r   #test_signature_bound_arguments_reprz6TestBoundArguments.test_signature_bound_arguments_repr  sO    :1:2e*:$XXb"X#b#FGr   c           
      H   di ddd}t        j                  |      }|j                  d      }|j                          | j	                  t        |j                  j                               ddddi fd	i fg       |j                  d
ddd      }|j                          | j	                  t        |j                  j                               ddddi fd	ddifg       d }t        j                  |      }|j                  d      }|j                          | j	                  t        |j                  j                               dg       d }t        j                  |      }|j                         }|j                          | j	                  t        |j                  j                               g        dd}t        j                  |      }|j                         }|j                          | j	                  t        |j                  j                               dg       y )Nr,   r'  r   c                     y r   r"   )r%   r   r   r   r  s        r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  s    dr   r  )r%   r  r	  )r   r"   r  r=  rP  )rs  r
  )r   r  )r   )rP  rs  c                      y r   r"   r   s     r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  rW	  r   c                       y r   r"   r"   r   r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  r-  r   c                      y r   r"   r  s    r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  s    4r   )r%   rx   r  )r   r,   rM  )	rO   r  r  apply_defaultsr1  r   r
  r 
  bind_partialr\
  s       r   -test_signature_bound_arguments_apply_defaultsz@TestBoundArguments.test_signature_bound_arguments_apply_defaults  s   222$XXb\
##%&,b	D":F	H XXb"bAX&
##%&	?S"Is1gO	Q 	$b!
##%&K	
 	$XXZ
bll0023R8 	 $XXZ
bll0023m_Er   c                     d }t        j                  |      j                  d      }| j                  t	        |j
                        t               y )Nc                      y r   r"   r  s    r   r.   zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foo  r  r   r,   )rO   r  r  rQ  r   r
  r   rJ
  s      r   -test_signature_bound_arguments_arguments_typez@TestBoundArguments.test_signature_bound_arguments_arguments_type  s7    s#((+d2<<($/r   N)	rL   ra   rb   rK
  rT
  rX
  r]
  re
  rh
  r"   r   r   rG
  rG
    s#    %>1H(FT0r   rG
  c                       e Zd Zd Zd Zy)TestSignaturePrivateHelpersc                 |    t        j                  |      \  }}| j                  ||       | j                  ||       y r   )rO   "_signature_strip_non_python_syntaxr1  )rU   inputclean_signatureself_parametercomputed_clean_signaturecomputed_self_parameters         r   _strip_non_python_syntaxz4TestSignaturePrivateHelpers._strip_non_python_syntax  s?     66u=	$ #1?C0.Ar   c                    | j                  ddd       | j                  ddd       | j                  ddd        | j                  ddd        | j                  ddd        | j                  d	d	d        | j                  d d d        y )
NzZ($module, /, path, mode, *, dir_fd=None, effective_ids=False,
       follow_symlinks=True)zR(module, /, path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)r   z($module, word, salt, /)z(module, word, salt, /)z(x, y=None, z=None, /)z(x, y=None, z=None)z!(x,
    y=None,
      z = None  )r   )rr
  r_   s    r   &test_signature_strip_non_python_syntaxzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntax  s    %%E=	 	%%&%	
 	%%$$	
 	%%!!	
 	%%1!	
 	%%	
 	%%	r   N)rL   ra   rb   rr
  rt
  r"   r   r   rj
  rj
    s    B$r   rj
  c                   r    e Zd Ze ej
                  ed      d               Zd Ze	j                  d        Zy)TestSignatureDefinitionsr  c                 Z   t               }h d}||z  }dh}||z  }h d}||z  }h d}t        t              }t        |j	                               D ]z  \  }}t        |      st        |t              r||vr|j                  |       ||v r<| j                  |      5  | j                  t        j                  |             d d d        | ||z
  |z
  D ];  }| j                  |      5  | j                  ||   j                         d d d        = y # 1 sw Y   xY w# 1 sw Y   TxY w)N>   r  r;
  r  varsr/   slicer  r  >   maxry  
breakpoint__build_class__>	   r   rL  r  r   r	  r  reversed	enumerate
memoryview)r  )rN   rx
  r  r  r 
  callabler  r   r  r/  assertIsNotNonerO   r  r  __text_signature__)	rU   no_signatureneeds_groups
needs_nullneeds_varargstypes_with_signaturesr   r  rX   s	            r   test_builtins_have_signaturesz6TestSignatureDefinitions.test_builtins_have_signatures9  s>    u0$Y

"G%!

 (^
+ 	=ID#C=#t$$6K*K  &$d+ =$$W%6%6s%;<= =	=  !:-< 	?Dd+ ?!!"T("="=>? ?	?= =? ?s   %D+D!D	!D*	c                    d }d|_         t        j                  |      }| j                  |       | j	                  t        |      d       d|_         t        j                  |      }| j	                  t        |      d       d|_         t        j                  |      }| j	                  t        |      d       d|_         t        j                  |      }| j	                  t        |      d	       d
|_         | j                  t              5  t        j                  |       d d d        d|_         | j                  t              5  t        j                  |       d d d        d|_         | j                  t              5  t        j                  |       d d d        y # 1 sw Y   ~xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)Nc                       y r   r"   rX  s     r   r  zNTestSignatureDefinitions.test_python_function_override_signature.<locals>.funcl  r  r   z(($self, a, b=1, *args, c, d=2, **kwargs)z*(self, /, a, b=1, *args, c, d=2, **kwargs)z+($self, a, b=1, /, *args, c, d=2, **kwargs)z*(self, a, b=1, /, *args, c, d=2, **kwargs)z"(self, a=1+2, b=4-3, c=1 | 3 | 16)z(self, a=3, b=1, c=19)z(self, a=1,
b=2,


   c=3)z(self, a=1, b=2, c=3)z(self, x=does_not_exist)z(self, x=sys, y=inspect)z(self, 123))r
  rO   r  r
  r1  r   r  rt  )rU   r  r  s      r   'test_python_function_override_signaturez@TestSignatureDefinitions.test_python_function_override_signaturek  sy   	"L%S!S#OP"O%S#OP"F%S#;<"B%S#:;"<z* 	$d#	$"<z* 	$d#	$"/z* 	$d#	$ 	$	$ 	$	$ 	$	$ 	$s$   F F,F8 F),F58Gc                     ddl m}  G d d|      }|j                  }| j                  |d       t	        j
                  |      }| j                  t        |      d       y )Nr   )BufferedReaderc                       e Zd ZdZy)VTestSignatureDefinitions.test_base_class_have_text_signature.<locals>.MyBufferedReaderzbuffer reader class.N)rL   ra   rb   r  r"   r   r   MyBufferedReaderr
    s    &r   r
  z&(raw, buffer_size=DEFAULT_BUFFER_SIZE)z(raw, buffer_size=8192))test.typinganndata.ann_module7r
  r
  r1  rO   r  r   )rU   r
  r
  text_signaturer  s        r   #test_base_class_have_text_signaturez<TestSignatureDefinitions.test_base_class_have_text_signature  sX     	B	'~ 	' (::)QR 01S#<=r   N)rL   ra   rb   r   r   r$  r   r
  r
  r   requires_docstringsr
  r"   r   r   rv
  rv
  5  sQ     X__)MO-?O -?^$<   	> !	>r   rv
  c                   "    e Zd Zd Zed        Zy)NTimesUnwrappablec                      || _         d | _        y r   )rn  _next)rU   rn  s     r   r   zNTimesUnwrappable.__init__  s    
r   c                     | j                   dk  rt        d      | j                  t        | j                   dz
        | _        | j                  S )Nr   zUnwrapped too many timesr,   )rn  r   r
  r
  r_   s    r   r   zNTimesUnwrappable.__wrapped__  sA    66Q;677::*466A:6DJzzr   N)rL   ra   rb   r   r  r   r"   r   r   r
  r
    s      r   r
  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	
TestUnwrapc                     d } t        j                  d      |      }| j                  t        j                  |      |       y )Nc                     | |z   S r   r"   r   s     r   r  z(TestUnwrap.test_unwrap_one.<locals>.func  r  r   r  )rt  )r   	lru_cacherQ  rO   unwrap)rU   r  r  s      r   test_unwrap_onezTestUnwrap.test_unwrap_one  s5    	1)%%b1$7gnnW-t4r   c                     d }|}t        d      D ]  }t        j                  |      d        } | j                  |j                  |       | j                  t        j                  |      |       y )Nc                     | |z   S r   r"   r   s     r   r  z,TestUnwrap.test_unwrap_several.<locals>.func  r  r   r=  c                       y r   r"   r"   r   r   r  z/TestUnwrap.test_unwrap_several.<locals>.wrapper  r   r   )r/   r   r  r  r   rQ  rO   r
  )rU   r  r  __s       r   test_unwrap_severalzTestUnwrap.test_unwrap_several  si    	) 	B__W% &	 	,,d3gnnW-t4r   c                     d }t        j                  |      d        }t        j                  |      d        }d|_        t        j                  |d       }| j                  ||       y )Nc                     | |z   S r   r"   r   s     r   func1z#TestUnwrap.test_stop.<locals>.func1  r  r   c                       y r   r"   r"   r   r   r	  z#TestUnwrap.test_stop.<locals>.func2  r  r   c                       y r   r"   r"   r   r   r  z%TestUnwrap.test_stop.<locals>.wrapper  r  r   r,   c                     t        | d      S )N	stop_herer  r  s    r   r   z&TestUnwrap.test_stop.<locals>.<lambda>  s    71k3J r   )stop)r   r  r
  rO   r
  rQ  )rU   r
  r	  r  	unwrappeds        r   	test_stopzTestUnwrap.test_stop  sf    				 
 				 
 	NN7)JM	i'r   c                    d }||_         | j                  t        d      5  t        j                  |       d d d        d }||_         ||_         | j                  t        d      5  t        j                  |       d d d        | j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   y xY w)Nc                       y r   r"   r"   r   r   r
  z$TestUnwrap.test_cycle.<locals>.func1  r  r   r%	  c                       y r   r"   r"   r   r   r	  z$TestUnwrap.test_cycle.<locals>.func2  r  r   )r   r  rt  rO   r
  )rU   r
  r	  s      r   
test_cyclezTestUnwrap.test_cycle  s    !##J? 	"NN5!	" 	!!##J? 	"NN5!	"##J? 	"NN5!	" 	"	" 	"	" 	"	" 	"s#   B9&CC9CCCc                     d d _          G fdd      }| j                  t        j                   |                    y )Nc                       y r   r"   r"   r   r   r  z(TestUnwrap.test_unhashable.<locals>.func  r  r   c                       e Zd ZdZW  Zy)%TestUnwrap.test_unhashable.<locals>.CN)rL   ra   rb   __hash__r   rD  s   r   r   r
    s    HKr   r   )r   r  rO   r
  )rU   r   r  s     @r   test_unhashablezTestUnwrap.test_unhashable  s3    	 	 	'..-.r   c                     t        t        j                         dz         }| j                  t        d      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr,   r%	  )r
  r  getrecursionlimitr  rt  rO   r
  )rU   rX   s     r   test_recursion_limitzTestUnwrap.test_recursion_limit  sK     5 5 7! ;<##J? 	 NN3	  	  	 s   AAc                    | j                  t        j                  t              t               | j                  t        j                  t              t               | j                  t        j                  t
              t
               | j                  t        j                  t	        t
                    t
               | j                  t        j                  t        t                    t               y r   )rQ  rO   r
  r
  r   r   r_   s    r   test_wrapped_descriptorz"TestUnwrap.test_wrapped_descriptor  s    gnn%679JKgnn\2LAgnn[1;?gnn\+%>?Mgnn[%>?Nr   N)
rL   ra   rb   r
  r
  r
  r
  r
  r
  r
  r"   r   r   r
  r
    s&    5	5("/ 
Or   r
  c                   Z    e Zd Zd Zd Z ej                  edu d      d        Zd Z	d Z
y)TestMainc                    t        j                  d      }t        ddd      \  }}}|j                         j	                         }| j                  |d d t        j                  |      j	                                | j                  |d       y )Nr   -mrO   r   r   )	importlibimport_moduler   decoder  r1  rO   r  )rU   modulercr>   errr  s         r   test_only_sourcezTestMain.test_only_source  sw    ((4'i(24C

'')sW%6%6v%>%I%I%KLc"r   c                     d }d|_         | j                  t              5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r"   r"   r   r   r.   z)TestMain.test_custom_getattr.<locals>.foo  r  r   r   )r  r  r  rO   r  r  s     r   test_custom_getattrzTestMain.test_custom_getattr  s@    	y) 	#c"	# 	# 	#s	   ?ANz6threads required to test __qualname__ for source filesc                     t        ddd      \  }}}|j                         j                         }| j                  |d d t	        j
                  t              j                                | j                  |d       y )Nr
  rO   z%concurrent.futures:ThreadPoolExecutorr   r   )r   r
  r  r1  rO   r  r   )rU   r
  r>   r
  r  s        r   test_qualname_sourcezTestMain.test_qualname_source  so     (i%LNC

'')s **+=>IIK	Mc"r   c                     t        ddd      \  }}}|j                         j                         }| j                  |dg       y )Nr
  rO   r  z#Can't get info for builtin modules.)r   r
  r  r1  )rU   r]  r>   r
  r  s        r   test_builtinszTestMain.test_builtins  sA    +D),133

'')!F GHr   c                 T   t        j                  d      }t        j                         }t	        g |dddd \  }}}|j                         }| j                  |j                  j                  |       | j                  |j                  |       | j                  |j                  j                  |       | j                  |j                  |       | j                  |j                  j                  |       | j                  |j                  |       | j                  |d       y )Nr   r
  rO   z	--detailsr   )r
  r
  r   !optim_args_from_interpreter_flagsr   r
  r  __spec__r  rL   originrU  cached
__cached__r1  )rU   r
  r   r
  r>   r
  outputs          r   test_detailszTestMain.test_details	  s    ((488:' A At AY A(2A4?ACfoo**F3foov.foo,,f5foov.foo,,f5f''0c"r   )rL   ra   rb   r
  r
  r   r$  r   r
  r
  r
  r"   r   r   r
  r
    sC    ## X__'4/DF#F#I#r   r
  c                   `    e Zd Z ej                  d      Z ej                  d      Zd Zd Zy)
TestReloadz def foo():
    print("Bla")
    z#def foo():
    print("Oh no!")
    c                     t        j                  |      }t        |d      5 }| j                  |j	                         j                  d      |j                  d             d d d        y # 1 sw Y   y xY w)Nr|  r}  T)rO   r  r  r1  r  r  )rU   r#  r  inspected_srcr  s        r   assertInspectEqualzTestReload.assertInspectEqual%  sc    ))&1$) 	S
%%d+((.	 	 	s   ?A++A4c                 N   t        d| j                        5 \  }}t        j                  |      }| j	                  ||       t        |dd      5 }|j                  | j                         d d d        | j	                  ||       d d d        y # 1 sw Y   $xY w# 1 sw Y   y xY w)N
reload_bugr  r|  r}  )r
   
src_beforer
  r
  r
  r  r%  	src_after)rU   r  r#  r
  r  s        r   test_getsource_reloadz TestReload.test_getsource_reload-  s    \4??; 	2|d,,T2F##D&1dC'2 *c		$..)*##D&1	2 	2* *	2 	2s#   9BB,BB	BB$N)	rL   ra   rb   textwrapdedentr
  r
  r
  r
  r"   r   r   r
  r
    s8      " 	J
   ! 	I
2r   r
  __main__)sr    r  r2  r   r   rv  r
  rO   r  r  r!  rO  os.pathr   r  r-  r+  r  r   r
  r  r   unittest.mockr   rt  concurrent.futuresr   ImportErrortest.supportr   r   r   test.support.import_helperr	   r
   test.support.os_helperr   test.support.script_helperr   r   r  r   test.test_inspectr   r   r   r  r   r   r   rU  rM  r  r   r   r   r#   r;   rD   r  r  r:  rF   rr   ru   ry   r  r|   r   r5  rz  r  r  r(  r/  r7  rJ  ry  r  r  r4  r   r9  rD  rM  rO  r  r  r  r  rB  r}  r  r  r{  r  requires_working_socketIsolatedAsyncioTestCaser  r  r  r  r  r  r	  r	  rG
  rj
  rv
  r
  r
  r
  r
  rL   mainr"   r   r   <module>r
     s        	   	  	 
     
       5 & 8 E ) N  3 5 7 < > ,,
JcrlG 7
( cmmo,
$	 $M#R#R#T  M"" M0  ]AZ ]A@	B>: B>H8H%% 8 7 7
T:} T:l	Ex00 	E0 07] 787M 87t
C 
CnO] nO`: :&N= N7F 79f 9>vnh// vnrb8,, b5>8,, 5>p hw>** w>tG+x00 G+R 5  :$: :(K.)) K.\
dHH-- dHNAGH-- AGH !  "cG8;; cG #cGL	'## 	
	'## 	K (++ K \8O(++ OdHE)) HEVd0** d0L-("3"3 -^^>x00 ^>B AO"" AOH/#x   /#d2"" 2< zHMMO w`  s   $O+ +O65O6