
    :bh6                    
   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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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/Z0 d dl,m1Z1 d dl,m2Z2 d dl,m3Z3 d dl,m4Z4 e.jj                  Z6e6jo                  d      re6dd Z6 ee6      Z6d Z8 e.jr                         Z:d Z;d Z<d Z=dj}                         Z? G d dej                        ZAd ZBd ZCd ZDej                  d        ZF G d deA      ZG G d  d!eA      ZH G d" d#ej                        ZI G d$ d%      ZJ G d& d'eI      ZK G d( d)ej                        ZL G d* d+eI      ZM G d, d-eI      ZN G d. d/eI      ZO G d0 d1eI      ZP G d2 d3eI      ZQ G d4 d5eI      ZR G d6 d7eI      ZS G d8 d9eT      ZU G d: d;eT      ZVd< ZW G d= d>ej                        ZX G d? d@ej                        ZY G dA dBej                        ZZ eT       Z[ G dC dDej                        Z\ G dE dFej                        Z] G dG dHe]      Z^ G dI dJe^      Z_ G dK dLej                        Z` G dM dNej                        Za G dO dPej                        Zb e+j                          G dQ dRej                               Ze G dS dTej                        Zg G dU dVej                        Zi G dW dXej                        Zj G dY dZej                        Zk G d[ d\ej                        Zl G d] d^ej                        Zm G d_ d`ej                        Zn G da dbej                        Zo G dc dd      Zp G de dfej                        Zq G dg dhej                        Zr G di djej                        Zsetdkk(  r ej                          yy# e$ r dZY w xY w)l    Nnormcase)Unpack)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)%inspect_stringized_annotations_pep695)coc                      t        |       f|z   S Nr   )filenameargss     H/opt/python-3.12.12/usr/lib/python3.12/test/test_inspect/test_inspect.pyreviser   B   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%   H   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=   M   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_fnrF   _   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.istestn   s    3i	#I4F4F(LM__sI;'77EW888G666G777***U3Z)MN 8r   c                 <    t        j                  | t        d       y )N)modulesbyfile)not_exported)r   check__all__rQ   rW   s    r   test__all__zIsTestBase.test__all__z   s    T79KLr   N)rN   
__module____qualname__rP   rQ   	isbuiltinisclassiscodeisframerU   ismethodismoduleistracebackisgeneratorrR   iscoroutinerT   
isasyncgenrS   ismethodwrapperrO   r\   rb   r$   r   r   rH   rH   e   s    g'''..oow'9'97;K;K&&(;(;))7+F+F))7+F+F(('*D*D--/ 0J
OMr   rH   c              #   4   K   t        d      D ]  }|  y wNr/   r1   rW   r7   s     r   generator_function_examplert   }   s     1X    c                F   K   t        d      2 3 d {   }| 7 
6 y wrq   rr   rs   s     r    async_generator_function_examplerw      s!     8 a8s   !!!c                    K   ywNspamr$   ra   s    r   coroutine_function_exampler{      s	        c              #      K   d  ywry   r$   ra   s    r   gen_coroutine_function_exampler~      s     	   c                   B    e Zd 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))rt   z#async_generator_function_example(1)rw   ignorezcoroutine_function_example(1)r{   MemberDescriptorTypezdatetime.timedelta.dayszobject().__str__zobject().__eq__zobject().__repr__AnyClassr$   )#r\   rQ   re   rg   	Exception__traceback__r   rh   rk   hasattrtypesisgetsetdescriptorrV   typetb_framef_localsrU   ri   rj   isdatadescriptorrl   rR   rn   rS   warningscatch_warningssimplefilterrm   rT   ismemberdescriptordatetime	timedeltadaysro   intrW   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 $$&!!(+KK++-LMKK335QR '
 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 '&s8   "M( =AQ(	P>1CP93Q 9P>>Q QQc           	      6   t        d      }t        d      }t        d      }| j                  t	        j
                  t                     | 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	     r|   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    dfr   c                       e Zd Zd Zy)+TestPredicates.test_iscoroutine.<locals>.Clc                    K   y wr   r$   ra   s    r   __call__z4TestPredicates.test_iscoroutine.<locals>.Cl.__call__   s	     r|   NrN   rc   rd   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$   ra   s    r   r   z5TestPredicates.test_iscoroutine.<locals>.Cl2.__call__       r   N)rN   rc   rd   rQ   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)	rN   rc   rd   rQ   r   classmethodr   staticmethodr   r$   r   r   Cl3r      sD    **  + **  +r   r   )rw   r~   r{   rV   rQ   rT   	functoolspartialrm   rM   rR   rl   r   r   r   unittestmockMock	AsyncMockrS   rn   close)	rW   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 	44W=>,,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>.gen5  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)rN   rc   rd   r   r$   r   r   Futurer   >  r   r   r   c                       e Zd Zy)2TestPredicates.test_isawaitable.<locals>.NotFutureNrN   rc   rd   r$   r   r   	NotFuturer   D      r   r   c                       y r   r$   r$   r   r   r   z1TestPredicates.test_isawaitable.<locals>.<lambda>F      Dr   )rV   rQ   isawaitabler{   r~   rM   r   r   )rW   r   r   r   r   r   not_futs          r   test_isawaitablezTestPredicates.test_isawaitable4  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$   )rM   rQ   	isroutinegitarguer   custom_methodcountrz   	StupidGitabuseobject__init____str____lt__r   strr4   listr3   rV   r   ra   s    r   test_isroutinezTestPredicates.test_isroutineK  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                  t        j                  t
        j                                      G d d      }| j                  t        j                  |j                               | j                  t        j                   |       j                               | j                  t        j                  |j                               | j                  t        j                  |j                               y )Nc                       e Zd Zej                  d        Zej                  ed               Zej                  ed               Z	y)7TestPredicates.test_isroutine_singledispatch.<locals>.Ac                      y r   r$   )rW   args     r   methodz>TestPredicates.test_isroutine_singledispatch.<locals>.A.methodq  r   r   c                      y r   r$   r   r   s     r   class_methodzDTestPredicates.test_isroutine_singledispatch.<locals>.A.class_methodt  r   r   c                      y r   r$   )r   s    r   static_methodzETestPredicates.test_isroutine_singledispatch.<locals>.A.static_methodx  r   r   N)
rN   rc   rd   r   singledispatchmethodr   r   r   r   r   r$   r   r   Ar   p  sZ    ++ ,++  ,++  ,r   r   )
rM   rQ   r   r   singledispatchr   rz   r   r   r   )rW   r   s     r   test_isroutine_singledispatchz,TestPredicates.test_isroutine_singledispatchm  s    )))*B*B388*LMN	 	 	))!((34))!#**56))!//:;))!..9:r   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$   rW   attrs     r   __getattr__z>TestPredicates.test_isclass.<locals>.CustomGetattr.__getattr__      r   NrN   rc   rd   r  r$   r   r   CustomGetattrr         r   r  )r\   rQ   rf   rM   r   r   rV   )rW   r  s     r   test_isclasszTestPredicates.test_isclass  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rN   rc   rd   	__slots__r$   r   r   Cr    s    "Ir   r  r   r'   r  )r   r'   dictrQ   
getmembersassertInassertNotIn)rW   r  xmemberss       r   test_get_slot_membersz$TestPredicates.test_get_slot_members  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$   ra   s    r   r0   z@TestPredicates.test_isabstract.<locals>.AbstractClassExample.foo  r   r   NrN   rc   rd   r0   r  s   r   AbstractClassExampler    s     r   r!  	metaclassc                       e Zd Zd Zy)4TestPredicates.test_isabstract.<locals>.ClassExamplec                      y r   r$   ra   s    r   r0   z8TestPredicates.test_isabstract.<locals>.ClassExample.foo  r   r   Nr  r$   r   r   ClassExampler%    r   r   r'     )abcr  r  rM   rQ   
isabstractrV   r   )rW   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   )r3   rQ   r*  )r   isabstract_checkss    r   __init_subclass__z^TestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractChecker.__init_subclass__  s    !((););C)@Ar   N)rN   rc   rd   r1  )r0  s   r   AbstractCheckerr.    s	    Br   r2  r"  c                        e Zd ZW  d        Zy)QTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExamplec                      y r   r$   ra   s    r   r0   zUTestPredicates.test_isabstract_during_init_subclass.<locals>.AbstractClassExample.foo  r   r   Nr  r   s   r   r!  r4    s     r   r!  c                       e Zd Zd Zy)ITestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExamplec                      y r   r$   ra   s    r   r0   zMTestPredicates.test_isabstract_during_init_subclass.<locals>.ClassExample.foo  r   r   Nr  r$   r   r   r'  r7    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   ConcreteGrandchildrA    r<  r   rB  )TTF)r)  r  r  assertEqualclear)
rW   r  r2  r!  r'  r;  r?  rB  r  r0  s
           @@r   $test_isabstract_during_init_subclassz3TestPredicates.test_isabstract_during_init_subclass  s    /	B 	B	? 		/ 	 	*T5M:!	0 		 		 	*,?@r   N)rN   rc   rd   r   r   r   r   r   r  r  r+  rE  r$   r   r   r   r      s6    .Ldq(f'. 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   rW   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)r\   rQ   rk   rh   ra   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   rK     rz       eggs(b + d, c + f)
      +   r               spam(a, b, c)
      '   r   z        self.argue(a, b, c)
rJ     zinspect.stack())rM   r2   r   str   rC  modfile	positionsdis	PositionsassertIsframefrlinenor   __file__functionr  code_contextindex)rW   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.   rX  r   rY  r   rZ  r[  rK  rz   rU  rV  rW     rS  z    q = y / 0
rJ     )	rC  r2   r   trr   r_  r`  ra  rb  )rW   rk  rl  rm  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  r8   rz  z(x=11, y=14))rQ   getargvaluesr   re  rC  formatargvaluesrW   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={}))rQ   r}  r   re  f_backrC  r~  r  s        r   test_previous_framez(TestInterpreterStack.test_previous_frame  sx    '.';';CFFMM'J$guf=>#&$00wvN<	>r   N)	rN   rc   rd   r   rP  rr  rx  r  r  r$   r   r   rG  rG    s!    
/*8I)>r   rG  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)openrQ   getsourcefilefodderModulereadsource)rW   fps     r   setUpzGetSourceBase.setUp  s:    '''(9(9:WMQS'')DK NMMs   A

Ac                 x    | j                   j                  d      }dj                  ||dz
  |       |rdz   S dz   S )N
r.   r   )r  splitr4   )rW   topbottomliness       r   sourcerangezGetSourceBase.sourcerange  s?    !!$'yys1uV,-HHRHHr   c                 n    | j                  t        j                  |      | j                  ||             y r   )rC  rQ   	getsourcer  )rW   rZ   r  r  s       r   assertSourceEqualzGetSourceBase.assertSourceEqual  s-    **3/))#v6	8r   )rN   rc   rd   r  r  r  r  r$   r   r   r  r    s    L$I8r   r  c                       e Zd ZdZdddZy)SlotUserzDocstrings for __slots__measured in kilowattsmeasured in kilometers)powerdistanceN)rN   rc   rd   __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)rQ   r  r   rf   rC  r  r  r  r   r  getclasstreer   )rW   classesr   trees       r   test_getclassesz(TestRetrievingSourceCode.test_getclasses  s0   $$S'//:)3+;+;<.0E0EF,c.A.AB&6 #"7"78*C,=,=>	 ##w$?wSVw$?@!2,//&; --0E0E363F3F0H I   MMF95 22S]]4DE!..1F1F474G4G1I J 
 !..	;	 ##w$?wSVw$?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_closingrS  lobbestrz   )	rQ   r  r   rU   rC  r  rS  r  rz   )rW   	functionss     r   test_getfunctionsz*TestRetrievingSourceCode.test_getfunctionsG  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  )
rC  rQ   getdocr   r   r   r   r  r  r  ra   s    r   test_getdocz$TestRetrievingSourceCode.test_getdocN  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.)rC  rQ   r  r   r  r   contradictionra   s    r   test_getdoc_inheritedz.TestRetrievingSourceCode.test_getdoc_inherited[  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   )rQ   _finddocrC  r   r  to_bytes
from_bytesreal)rW   finddocs     r   test_finddocz%TestRetrievingSourceCode.test_finddocg  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.)rC  rQ   cleandocra   s    r   test_cleandocz&TestRetrievingSourceCode.test_cleandocp  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.pyr5   )
rC  rQ   getcommentsr   r   mod2cls160compileassertIsNoner   )rW   cos     r   test_getcommentsz)TestRetrievingSourceCode.test_getcommentst  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)
rC  rQ   	getmoduler   r   r   r   sysmodulesr_  ra   s    r   test_getmodulez'TestRetrievingSourceCode.test_getmodule~  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)rZ   	_filenames     r   _getabsfilezKTestRetrievingSourceCode.test_getmodule_file_not_found.<locals>._getabsfile  s    #J//r   zinspect.getabsfile)r   r   patchrQ   currentframer  r  getouterframes)rW   r  r  s      r   test_getmodule_file_not_foundz6TestRetrievingSourceCode.test_getmodule_file_not_found  s^    	0]]  !5{C$$&Ag//23""1% DCCs   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.'
)rQ   getframeinfor  re  rC  ri  )rW   
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   r\     3   K   L   x   )r  r   r   r   r   r  r  ra   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  r5   r.   None)rC  r   rQ   r  r   rz   r_  r   r   r  co_filename	linecachecache)rW   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   )rC  rQ   getfiler   r   rg  ra   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	TypeErrorrQ   r  r  rM   r   	exception
startswithr   s     r   test_getfile_builtin_modulez4TestRetrievingSourceCode.test_getfile_builtin_module  sL    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  rQ   r  r   rM   r   r  r   r   s     r   test_getfile_builtin_classz3TestRetrievingSourceCode.test_getfile_builtin_class  sL    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  rQ   r  absr  r   r  r   r3   )rW   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   rc   zQTestRetrievingSourceCode.test_getfile_class_without_module.<locals>.CM.__module__  s    $$r   N)rN   rc   rd   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  rQ   r  )rW   r  r  s      r   !test_getfile_class_without_modulez:TestRetrievingSourceCode.test_getfile_class_without_module  s@    	% 	%	" 	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   ra   s    r   __repr__zMTestRetrievingSourceCode.test_getfile_broken_repr.<locals>.ErrorRepr.__repr__  s    &&r   N)rN   rc   rd   r  r$   r   r   	ErrorReprr    s    'r   r  )r  r  rQ   r  )rW   r  ers      r   test_getfile_broken_reprz1TestRetrievingSourceCode.test_getfile_broken_repr  s;    	' 	' [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  rg  
__loader__r5   __dict__rC  rQ   r  r  __code__r  r  )rW   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  r0  r5   r  rQ   r  )rW   r1  nsr  r0  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 )NrZ  ru  )r  r   rS  r'  ra   s    r   test_getsource_on_code_objectz6TestRetrievingSourceCode.test_getsource_on_code_object  s    sxx00"b9r   N) rN   rc   rd   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*  r3  r5  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  )rW   codero  stderrs       r   test_getclasses_interactivez4TestGetsourceInteractive.test_getclasses_interactive  s.    & -T4DI1f;VDr   N)rN   rc   rd   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  ra   s    r   test_range_toplevel_framez;TestGettingSourceOfToplevelFrames.test_range_toplevel_frame   s!    s//D9r   c                 F    | j                  t        j                  dd        y rC  )r  r   r   ra   s    r   #test_range_traceback_toplevel_framezETestGettingSourceOfToplevelFrames.test_range_traceback_toplevel_frame  s    svvq$/r   N)rN   rc   rd   r   r  rE  rG  r$   r   r   rA  rA    s    L:0r   rA  c                   (    e Zd ZeZd Zd Zd Zd Zy)TestDecoratorsc                 F    | j                  t        j                  dd       y )Nr|     )r  r  wrappedra   s    r   test_wrapped_decoratorz%TestDecorators.test_wrapped_decorator
  s    t||R4r   c                 F    | j                  t        j                  dd       y )NrK  
   )r  r  gonera   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  ra   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  func114ra   s    r   test_decorator_with_lambdaz)TestDecorators.test_decorator_with_lambda  s    t||S#6r   N)	rN   rc   rd   r  r  rM  rQ  rU  rZ  r$   r   r   rI  rI    s    L5147r   rI  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 )Nr[  )r  r  ollra   s    r   test_oneline_lambdaz!TestOneliners.test_oneline_lambda  s    txxR0r   c                 F    | j                  t        j                  dd       y )N      )r  r  tllra   s    r   test_threeline_lambdaz#TestOneliners.test_threeline_lambda  s     	txxR0r   c                 F    | j                  t        j                  dd       y )N!   "   )r  r  tllira   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_lambda3ra   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_lambda1ra   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_lambdara   s    r   test_nested_lambdaz TestOneliners.test_nested_lambda2  s    t113<r   c                 F    | j                  t        j                  dd       y )N%   )r  r  onelinefuncra   s    r   test_onelinefunczTestOneliners.test_onelinefunc6  s    t//R8r   c                 F    | j                  t        j                  dd       y )N(   )   )r  r  manyargsra   s    r   test_manyargszTestOneliners.test_manyargs:  s     	t}}b"5r   c                 F    | j                  t        j                  dd       y )N,   -   )r  r  twolinefuncra   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'   ra   s    r   test_lambda_in_listz!TestOneliners.test_lambda_in_listF  s     	tvvay"b1r   c                 F    | j                  t        j                  dd       y )N7   )r  r  	anonymousra   s    r   test_anonymouszTestOneliners.test_anonymousK  s     	t~~r26r   N)rN   rc   rd   r  r  r_  rd  ri  rn  rq  rt  rx  r}  r  r  r  r$   r   r   r\  r\    s@    L11
2
EO
=9692
7r   r\  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  ra   s    r   test_toplevel_classz%TestBlockComments.test_toplevel_classS  s    s00"c:r   c                 Z    | j                  t        j                  j                  dd       y )Nc   h   )r  r   r  r  ra   s    r   test_class_methodz#TestBlockComments.test_class_methodV  s     s0022B<r   c                 Z    | j                  t        j                  j                  dd       y )Nm   p   )r  r   r  asyncfra   s    r   test_class_async_methodz)TestBlockComments.test_class_async_methodY  s     s0077cBr   N)rN   rc   rd   r   r  r  r  r  r$   r   r   r  r  P  s    L;=Cr   r  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_commentra   s    r   test_with_commentz TestBuggyCases.test_with_comment_  s    t00"b9r   c                 L    | j                  t        j                  d   dd       y )Nr   ?   @   )r  r  multiline_sigra   s    r   test_multiline_sigz!TestBuggyCases.test_multiline_sigb  s    t11!4b"=r   c                 b    | j                  t        j                         j                  dd       y )NG   H   )r  r  func69func71ra   s    r   test_nested_classz TestBuggyCases.test_nested_classe  s     t{{}33R<r   c                 F    | j                  t        j                  dd       y )NM   )r  r  func77ra   s    r   #test_one_liner_followed_by_non_namez2TestBuggyCases.test_one_liner_followed_by_non_nameh      t{{B3r   c                 Z    | j                  t        j                  j                  dd       y )NS   )r  r  cls82func83ra   s    r   test_one_liner_dedent_non_namez-TestBuggyCases.test_one_liner_dedent_non_namek  s    tzz00"b9r   c                 F    | j                  t        j                  dd       y )NX   Z   )r  r  func88ra   s    r   &test_with_comment_instead_of_docstringz5TestBuggyCases.test_with_comment_instead_of_docstringn  r  r   c                 F    | j                  t        j                  dd       y )N_   a   )r  r  method_in_dynamic_classra   s    r   test_method_in_dynamic_classz+TestBuggyCases.test_method_in_dynamic_classq  s    t;;RDr   rg  z.pyz,unicodedata is not an external binary modulec                     | j                  t        t        j                  t               | j                  t        t        j
                  t               y r   )r  OSErrorrQ   r  unicodedata
findsourcera   s    r   test_findsource_binaryz%TestBuggyCases.test_findsource_binaryv  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_filer5   r.   )
r  r  r  rQ   r  r  r  r  r  rC  )rW   r  r  s      r   !test_findsource_code_in_linecachez0TestBuggyCases.test_findsource_code_in_linecache}  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  r5   )r  r  IOErrorrQ   r  r  )rW   fnamer  s      r    test_findsource_without_filenamez/TestBuggyCases.test_findsource_without_filename  sJ    %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(): passr5   r  r.   r/   zlineno is out of bounds)r2   rQ   r  r   r  rg  rL   rC  r'  co_firstlinenoassertRaisesRegexr  r  )rW   mod_lensrcr  r  lfuncs          r   )test_findsource_with_out_of_bounds_linenoz8TestBuggyCases.test_findsource_with_out_of_bounds_lineno  s    g'',-/1S#,,/21RAv55q7{C##G-FGt$ HGGs   B==Cc                 Z    | j                  t        j                  j                  dd       y )Nv   w   )r  r  ClassWithMethodr   ra   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func136ra   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  cls149ra   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  ra   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cls175ra   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cls185ra   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cls200ra   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cls239ra   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cls207ra   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func219ra   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)rW   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)$rN   rc   rd   r  r  r  r  r  r  r  r  r  r   r6  r   r  rg  endswithr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   is_emscriptenis_wasir(  r$   r   r   r  r  \  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  pathr4   extsepwriter
   inspect_fodder3r  superr  )rW   r  mod3	__class__s      r   r  zTestNoEOL.setUp  s    
"'',,t||-BRYY-NO),-GG12) 4<<(* ) ) ) )(s   6C%CCCc                 B    t        j                  | j                         y r   )shutilrmtreer1  ra   s    r   tearDownzTestNoEOL.tearDown  s    dll#r   c                 R    | j                  | j                  j                  dd       y )Nr.   r/   )r  r  Xra   s    r   
test_classzTestNoEOL.test_class  s     t0022Aq9r   )rN   rc   rd   r  r>  rA  __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_decoratedra   s    r   test_parens_in_decoratorz-TestComplexDecorator.test_parens_in_decorator  s     t00BBCMr   N)rN   rc   rd   r  r  rH  r$   r   r   rE  rE    s    LNr   rE  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   )RuntimeErrorrM  s    r   __set__z_BrokenDataDescriptor.__set__  s    r   c                      t        d      rL  r  rM  s    r   r  z!_BrokenDataDescriptor.__getattr__  rO  r   N)rN   rc   rd   r  rN  rR  r  r$   r   r   rJ  rJ    s    77r   rJ  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  rM  s    r   rN  z_BrokenMethodDescriptor.__get__      788r   c                      t        d      rW  r  rM  s    r   r  z#_BrokenMethodDescriptor.__getattr__  rX  r   N)rN   rc   rd   r  rN  r  r$   r   r   rU  rU    s    99r   rU  c                 X    t        j                  |       D cg c]  }|d d 	 c}S c c}w Nrt  )rQ   classify_class_attrs)r   ts     r   attrs_wo_objsr^    s-    "77<=<aAbqE<===s   'c                      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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   r   rc    r   r   r   c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNr   r$   r   r   Bre    r   r   rf  c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNr   r$   r   r   r  rh    r   r   r  c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNr   r$   r   r   Drj  	  r   r   rk  )r   rQ   getmrorC  )rW   r   rf  r  rk  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   )rQ   getfullargspecrC  )rW   routineargs_e	varargs_evarkw_e
defaults_eposonlyargs_ekwonlyargs_ekwonlydefaults_eann_er   r  r  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.   )rt  rx  ry  )rz  r   )rx  r'   r  r   r  r   r  r   rN  )rt  ru  rx  r.   r/   rt  rV  r(  )r   r  )rv  rx  ry  )	r  r  	keyworded	annotatedr   keyword_only_argall_markers all_markers_with_args_and_kwargsall_markers_with_defaultsra   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  rz  s     r   hamzETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.ham8      r   r  rz  )r   wrapsr   rz   r  r   )rW   r  s     r    test_argspec_api_ignores_wrappedz8TestClassesAndFunctions.test_argspec_api_ignores_wrapped6  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>.testA      r   rz   r6   )rQ   	ParameterPOSITIONAL_ONLY	Signature__signature__r  )rW   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>.testI      Tr   c                       y r   r$   r$   r   r   r  zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.testM      Dr   )r'   rz   returnr  )rQ   rq  rC  __annotations__annotations)rW   r  specs      r   #test_getfullargspec_signature_annosz;TestClassesAndFunctions.test_getfullargspec_signature_annosH  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 )	NrW   rZ   r4  dir_fdfollow_symlinksT)r  r  )rs  rx  ry  )r  _picklePicklerdumpioBytesIOr2  statra   s    r   #test_getfullargspec_builtin_methodsz;TestClassesAndFunctions.test_getfullargspec_builtin_methodsQ  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_defaultsrQ   rq  rC  r{  )rW   r  builtinr  s       r    test_getfullargspec_builtin_funcz8TestClassesAndFunctions.test_getfullargspec_builtin_func^  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  rQ   rq  )rW   r  r  s      r   -test_getfullargspec_builtin_func_no_signaturezETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signatureg  s:     	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=   rQ   rq  r   r|  sortedrM   rC  rF    unsorted_keyword_only_parametersrW   r  	signaturer  sorted_ls        r   8test_getfullargspec_definition_order_preserved_on_kwonlyzPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlyp  s    GIB..r2IY))*AayHOOAQ) J **+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.s~      Tr   c                      y r   r$   r   s    r   r   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.c  s    r   c                      y r   r$   ra   s    r   getpz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getp      Dr   c                      y r   r$   ra   s    r   r)  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m      r   c                      y r   r$   ra   s    r   m1z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1      $r   1N)rN   rc   rd   r  r   r   r   r  r  r8   r)  r  datablobrJ  ddrU  mdr$   r   r   r   r  |  sA    QAAA AH&(B(*Br   r   __new__static methodmissing __new__r   r   zmissing __init__r  zmissing static methodr   class methodmissing class methodr8   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$   ra   s    r   r)  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.m  r  r   N)rN   rc   rd   r)  r$   r   r   rf  r    s    r   rf  c                       e Zd Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Cc                      y r   r$   ra   s    r   r)  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.m  r  r   c                      y r   r$   ra   s    r   r   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.c  r  r   N)rN   rc   rd   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$   ra   s    r   r  z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1  r  r   N)rN   rc   rd   r  r$   r   r   rk  r    s    r   rk  )r   r^  r  )rW   r   attrsrf  r  rk  s         r   test_classify_newstylez.TestClassesAndFunctions.test_classify_newstyle{  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   rQ   r\  r^  boolr  r   )rW   r(  r  r  s       r   test_classify_builtin_typesz3TestClassesAndFunctions.test_classify_builtin_types  s     %DlD1G'4(,,W5 &
 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  rz   r8  r  rW   r(  r:  s     r   r  zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__  s    5=!w*400r   rN   rc   rd   r  rB  rC  s   @r   Metar        1 1r   r  c                   0    e Zd Zej                  d        Zy)GTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAc                      y)NrS  r$   ra   s    r   r  zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.ham      r   N)rN   rc   rd   r   DynamicClassAttributer  r$   r   r   VAr        (( )r   r  r"  r  r  rz   )r   rQ   	Attributer&  r  r\  )rW   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$   )rW   r[   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NotImplementedErrorra   s    r   __bool__zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__  s    )BD Dr   N)rN   rc   rd   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)rN   rc   rd   r  r  s   r   HasNBr    s
    Br   r  r  r  )r   rQ   r  r  r  r\  )rW   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:  rc   rN   fishr$   ra   s    r   __dir__zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__      FFr   N)rN   rc   rd   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   rQ   r  r  r\  rW   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:  rc   rN   BOOMr$   r   s    r   r  zLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__
  r  r   c                 .    |dk(  ryt         |   |      S )Nr+  r   )r8  _Meta__getattrr  s     r   r  zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__  s    &=w(..r   rN   rc   rd   r  r  rB  rC  s   @r   r  r)  	  s    G/ /r   r  c                       e Zd Zy)ETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNr   r$   r   r   r"  r0    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:  rc   rN   oner$   r   s    r   r  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__      EEr   c                 .    |dk(  ryt         |   |      S )Nr6  r.   r  r  s     r   r  z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__      %<w*400r   r.  rC  s   @r   Meta1r4        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:  rc   rN   twor$   r   s    r   r  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__  r7  r   c                 .    |dk(  ryt         |   |      S )Nr?  r/   r  r  s     r   r  z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__   r9  r   r.  rC  s   @r   Meta2r=    r;  r   rA  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:  rc   rN   three)r   r  rP   r  )r   r:  rA  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 )NrE  rt  r  r  s     r   r  z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__(  s    '>w*400r   r.  )r:  r:  rA  s   @r   Meta3rC  $  s    ?1 1r   rG  c                       e Zd Zy)TTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nr   r$   r   r   Class1rI  ,  r<  r   rJ  r"  c                       e Zd Zy)TTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nr   r$   r   r   Class2rL  .  r<  r   rM  r6  r  r.   r?  r/   rE  rt  )r   rQ   r  r\  r  )rW   rG  rJ  rM  should_find1should_find2should_find3ccasfr:  rA  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:  rN   missingr$   r   s    r   r  zSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__:      ;;r   NrN   rc   rd   r  r$   r   r   MrV  9      <r   r\  c                       e Zd Zy)KTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNr   r$   r   r   r  r_  <  r<  r   r  r"  r   rY  )r   rQ   r\  r  rW   r\  r  r'   r  s        r   (test_classify_class_attrs_with_buggy_dirz@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir8  sU    	< 	<	! 	&;;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)rN   rc   rd   rJ  r  rU  r  r$   r   r   r   re  B  s    &(B(*Br   r   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   Emptyrh  I  s    r   ri  c                 \    dt        |       v rt        | j                        ry |       S )NrN   F)r  r   rN   )r  ri  preds    r   rL  zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrappedK  s(    Q'GE1::,F Awr   r   )rk  rL  ri  s   ` @r   pred_wrapperzITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapperF  s      Nr   r  r  c                       e Zd Zy)>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNr   r$   r   r   rf  ro  Y  r<  r   rf  )r   rQ   ismethoddescriptorr   rC  r  r&  )rW   r   rm  rp  r   rf  s         r   test_getmembers_descriptorsz3TestClassesAndFunctions.test_getmembers_descriptorsA  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$   ra   s    r   r  z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fc  r   r   NrN   rc   rd   r  r$   r   r   rf  rt  b  r   r   rf  r  )r  r  rQ   r  r  ri   )rW   rf  r  s      r   test_getmembers_methodz.TestClassesAndFunctions.test_getmembers_methoda  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      } |d      }| j                  t        j                  |      dd|j                  fg       | j                  t        j                  |t        j                        d|j                  fg       y )Nc                       e Zd Zd Zd Zd Zy)FTestClassesAndFunctions.test_getmembers_custom_dir.<locals>.CorrectDirc                     || _         y r   r  r  s     r   r   zOTestClassesAndFunctions.test_getmembers_custom_dir.<locals>.CorrectDir.__init__n  s	     	r   c                      | j                   dz   S rC  r|  ra   s    r   r   zMTestClassesAndFunctions.test_getmembers_custom_dir.<locals>.CorrectDir.methodp  s    yy1}$r   c                 
    ddgS )Nr  r   r$   ra   s    r   r  zNTestClassesAndFunctions.test_getmembers_custom_dir.<locals>.CorrectDir.__dir__r  s    ))r   N)rN   rc   rd   r   r   r  r$   r   r   
CorrectDirrz  m  s    !%*r   r  r(  )r  r(  r   rC  rQ   r  r   ri   )rW   r  cds      r   test_getmembers_custom_dirz2TestClassesAndFunctions.test_getmembers_custom_dirl  s}    	* 	* ]++B/ryy!2
 	 	++B0@0@Aryy!D
 	r   c                     G d d      } |       }| j                  t        j                  |      dd|j                  fg       | j                  t        j                  |t        j                        d|j                  fg       y )Nc                       e Zd ZdZd Zd Zy)LTestClassesAndFunctions.test_getmembers_custom_broken_dir.<locals>.BrokenDirr.   c                      | j                   dz   S rC  )existingra   s    r   r   zSTestClassesAndFunctions.test_getmembers_custom_broken_dir.<locals>.BrokenDir.method  s    }}q((r   c                 
    g dS )N)r   rY  r  r$   ra   s    r   r  zTTestClassesAndFunctions.test_getmembers_custom_broken_dir.<locals>.BrokenDir.__dir__  s    88r   N)rN   rc   rd   r  r   r  r$   r   r   	BrokenDirr    s    H)9r   r  )r  r.   r   r  )rW   r  bds      r   !test_getmembers_custom_broken_dirz9TestClassesAndFunctions.test_getmembers_custom_broken_dir~  s{    	9 	9 [++B/ryy!2
 	 	++B0@0@Aryy!D
 	r   c                 r     G d d      } |       }| j                  t        j                  |      dg       y )Nc                       e Zd ZdZd Zy)TTestClassesAndFunctions.test_getmembers_custom_duplicated_dir.<locals>.DuplicatedDirr.   c                 
    ddgS )Nr  r$   ra   s    r   r  z\TestClassesAndFunctions.test_getmembers_custom_duplicated_dir.<locals>.DuplicatedDir.__dir__  s    ''r   N)rN   rc   rd   r  r  r$   r   r   DuplicatedDirr    s    D(r   r  )r  r.   )rC  rQ   r  )rW   r  r  s      r   %test_getmembers_custom_duplicated_dirz=TestClassesAndFunctions.test_getmembers_custom_duplicated_dir  s8    	( 	(
 _++B/2
 	r   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 )NrS  	scrambledr  )r   r(  r:  s     r   r  zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__  s    6>&w*400r   r  rC  s   @r   r\  r    r  r   r\  c                   0    e Zd Zej                  d        Zy)CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Ac                      yry   r$   ra   s    r   rS  zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggs  r   r   N)rN   rc   rd   r   r  rS  r$   r   r   r   r    r  r   r   r"  c                       e Zd Zd Zy)CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Bc                      y r   r$   )rW   	attributes     r   r  zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.B.__getattr__  r  r   Nr  r$   r   r   rf  r    r  r   rf  )rS  r  )rS  rz   r  )r   r  rQ   r  r  )rW   r\  r   rf  r  s        r    test_getmembers_VirtualAttributez8TestClassesAndFunctions.test_getmembers_VirtualAttribute  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  ra   s    r   r(  z>TestClassesAndFunctions.test_getmembers_static.<locals>.A.name      ))r   c                     t         r   r  ra   s    r   rS  z>TestClassesAndFunctions.test_getmembers_static.<locals>.A.eggs  r  r   N)rN   rc   rd   r  r(  r   r  rS  r$   r   r   r   r    s,    * *((* )*r   r   r(  rS  )rQ   getmembers_staticr  getattr_static)rW   r   r'   instance_membersclass_memberss        r   test_getmembers_staticz.TestClassesAndFunctions.test_getmembers_static  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 rX  r$   r   s    r   r  zITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__  rZ  r   Nr[  r$   r   r   r\  r    r]  r   r\  c                       e Zd Zy)ATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNr   r$   r   r   r  r    r<  r   r  r"  r   rY  )r   rQ   r  r  r`  s        r   test_getmembers_with_buggy_dirz6TestClassesAndFunctions.test_getmembers_with_buggy_dir  sT    	< 	<	! 	&11!454!145E* 6rb  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   r0   zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foo      tr   r  r0   r   Teval_strr  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 r[  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  rt  xxx)r   r   rC  rQ   get_annotationsr  r  r   r  rh  	function2	function3UnannotatedClassunannotated_functionassertIsNot__globals__)rW   r0   isar  rL  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 r[  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  rt  r  mytype)r   rC  rQ   r  r  rh  r  r  r  r  r   r   r   r  r  MyClassWithLocalAnnotations)rW   r  isa2r  rL  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   c                 P   t         }t        j                  |j                  d      }|j                  j                  }| j                  |d   |d          | j                  |d   j                  d   t        |d             | j                  |d   j                  d   |d          y )	NTr  r  r   rz  r.   r-   r/   )	r   rQ   r  r   __type_params__rc  rC  __args__r   )rW   ann_module695A_annotationsA_type_paramss       r   1test_pep695_generic_class_with_future_annotationszITestClassesAndFunctions.test_pep695_generic_class_with_future_annotations-  s    =//$O%77mC(-*:;s+44Q7a@P9QRmC(11!4mA6FGr   c                     t        j                  t        j                  d      }| j	                  |t
        t        t        d       y )NTr  )r  rz  r-   )rQ   r  r   rf  rC  r   r   bytes)rW   B_annotationss     r   Etest_pep695_generic_class_with_future_annotations_and_local_shadowingz]TestClassesAndFunctions.test_pep695_generic_class_with_future_annotations_and_local_shadowing5  s6    //133d
 	c%(HIr   c                     t         }t        j                  |j                  d      }| j	                  t        |j                               t        |j                  j                               y NTr  )r   rQ   r  r  rC  rP   valuesr  )rW   r  C_annotationss      r   Mtest_pep695_generic_class_with_future_annotations_name_clash_with_global_varszeTestClassesAndFunctions.test_pep695_generic_class_with_future_annotations_name_clash_with_global_vars;  sN    =//$O$$&'//0	
r   c                    t         }t        j                  |j                  d      }|j                  j                  }| j                  |j                         h d       | j                  |d   |d          | j                  |d   t        |d             | j                  |d   j                  |d	          | j                  |d
   j                  |d	          y )NTr  >   r  rz  r-   zzr  r  r   rz  r.   r-   r/   r  )
r   rQ   r  generic_functionr  rC  keysrc  r   
__origin__)rW   r  generic_func_annotationsfunc_t_paramss       r   5test_pep_695_generic_function_with_future_annotationszMTestClassesAndFunctions.test_pep_695_generic_function_with_future_annotationsC  s    =#*#:#:**T$
  &66FF$))+-L	
 	.s3]15EF1#6}Q?O8PQ.s3>>a@PQ.t4??qAQRr   c                     | j                  t        t        j                  t        j
                  d      j                               t        t        j
                  j                               y r  )rC  rP   rQ   r  r   generic_function_2r  r  ra   s    r   Qtest_pep_695_generic_function_with_future_annotations_name_clash_with_global_varsziTestClassesAndFunctions.test_pep_695_generic_function_with_future_annotations_name_clash_with_global_varsQ  sT    ''9LL! &(	 5HHXX
	
r   c                    t         }t        j                  |j                  j                  d      }|j                  j                  j
                  D ci c]  }|j                  | }}| j                  ||d   |d   d d       y c c}w )NTr  FooBar)r  rz  r  )r   rQ   r  rk  generic_methodr  rN   rC  )rW   r  generic_method_annotationsparamparamss        r   3test_pep_695_generic_method_with_future_annotationszKTestClassesAndFunctions.test_pep_695_generic_method_with_future_annotations^  s    =%,%<%<OO**T&
"
 '77GG
G NNE!G 	 
 	&-fUmtD	
	
s   Bc                    | j                  t        t        j                  t        j
                  j                  d      j                               t        t        j
                  j                  j                               y r  )	rC  rP   rQ   r  r   rk  generic_method_2r  r  ra   s    r   Otest_pep_695_generic_method_with_future_annotations_name_clash_with_global_varszgTestClassesAndFunctions.test_pep_695_generic_method_with_future_annotations_name_clash_with_global_varsl  s`    ''9;;LL! &(	 577HHXX
	
r   c                 z    | j                  t        j                  t        j                  d      dt
        i       y )NTr  r  )rC  rQ   r  r   Er   ra   s    r   Ytest_pep_695_generic_method_with_future_annotations_name_clash_with_global_and_local_varszqTestClassesAndFunctions.test_pep_695_generic_method_with_future_annotations_name_clash_with_global_and_local_varsy  s2    ##577$ #J		
r   c                    t        j                         }| j                  t        |j                  j                               t        |j                  j                               | j                  t        |j                  j                               t        |j                  j                  j                               | j                  t        |j                  j                               t        |j                  j                               | j                  t        |j                  j                               j                  |j                  j                        t                      | j                  |j                  dt        i       | j                  t        |j                  j                               t        |j                  j                               y )Nr  )r   nestedrC  rP   F_annotationsr  Fr  F_meth_annotationsr  assertNotEqualintersectionG_annotationsr   r  generic_func)rW   resultss     r   @test_pep_695_generics_with_future_annotations_nested_in_functionzXTestClassesAndFunctions.test_pep_695_generics_with_future_annotations_nested_in_function  sU   7>>@%%,,./		))*	
 	**1134		((889	
 	**1134		))*	
 	**1134AA'))B[B[\E	

 	..c
;00779:$$445	
r   ),rN   rc   rd   ro  r  r  r  r  r  r   r6  r   r  r   r  r  r  r  r  r  r  r&  r1  rS  ra  rq  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r   r   r`  r`    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`HJ
S




r   r`  c                       e Zd Zd Zy)TestFormatAnnotationc                     ddl m}m} | j                  t	        j
                  |      d       | j                  t	        j
                  |      d       y )Nr   )r~  ann1zUnion[List[str], int]z%Union[List[testModule.typing.A], int])test.typinganndata.ann_module9r~  r  rC  rQ   formatannotation)rW   r~  r  s      r   test_typing_replacementz,TestFormatAnnotation.test_typing_replacement  s=    <11#68OP11$79`ar   N)rN   rc   rd   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$   )rW   valuer   s      r   rN  zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__  s    r   r   rN   rc   rd   rN  r$   r   r   NonDataDescriptorr    s    5r   r  c                       e Zd Zd Zy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0c                      y r   r$   )rW   r(  r  s      r   rR  zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__      Dr   NrN   rc   rd   rR  r$   r   r   DataDescriptor0r    s    0r   r#  c                       e Zd Zd Zy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1c                      y r   r$   )rW   r(  s     r   
__delete__zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__      r   N)rN   rc   rd   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)rV   rQ   r   rM   )rW   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r0   Nr  r$   r   r   Slottedr0    s    Ir   r2  za slot is a data descriptor)rM   rQ   r   r0   )rW   r2  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$   ra   s    r   
a_propertyzATestIsDataDescriptor.test_property.<locals>.Propertied.a_property  r   r   N)rN   rc   rd   r  r8  r$   r   r   
Propertiedr6    s     r   r9  za property is a data descriptor)rM   rQ   r   r8  )rW   r9  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$   ra   s    r   instance_methodzATestIsDataDescriptor.test_functions.<locals>.Test.instance_method      tr   c                      y r   r$   r   s    r   r   z>TestIsDataDescriptor.test_functions.<locals>.Test.class_method  s    #'r   c                       y r   r$   r$   r   r   r   z?TestIsDataDescriptor.test_functions.<locals>.Test.static_method  s    !%r   N)rN   rc   rd   r?  r   r   r   r   r$   r   r   Testr=    s!    +' '% %r   rC  c                       y r   r$   r$   r   r   rh  z5TestIsDataDescriptor.test_functions.<locals>.function  r  r   c                       y r   r$   r$   r   r   r   z5TestIsDataDescriptor.test_functions.<locals>.<lambda>      4r   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   rV   rQ   r   r?  r   r   )rW   rC  rh  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)rN   rc   rd   r-  r3  r:  rH  r$   r   r   r  r    s    J$7;>r   r  c                   N    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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   r  z=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.g  s    i{KHr   r$   rT  r  s   ` r   r  z2TestGetClosureVars.test_name_resolution.<locals>.f  s    IHr   rT  rP  rO  rQ  r   rP  rO  rQ   ClosureVarsrC  getclosurevarsrW   r  _argnonlocal_varsglobal_varsbuiltin_varsunbound_namesrm  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   rN  rR  s    r   r  z?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.g  s     i{KHs   r$   rU  s   ` r   r  z4TestGetClosureVars.test_generator_closure.<locals>.f  s     Hr   rT  rP  rO  rQ  rV  rY  s           r   test_generator_closurez)TestGetClosureVars.test_generator_closure  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   rN  rR  s    r   r  z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.g   s    )\;Lr   r$   )rW   rT  r  s    ` r   r  z3TestGetClosureVars.test_method_closure.<locals>.C.f  s    Mr   Nrv  r$   r   r   r  rf    s    r   r  rT  rP  rO  rQ  )r   rP  rO  rQ   rW  rC  rX  r  )rW   r  rZ  r[  r\  r]  r^  rm  s           r   test_method_closurez&TestGetClosureVars.test_method_closure  sy    	 	
 x'.$k2'&&&}k'3]D//d<hGr   c                      G d d      fd}di}dt         i}dt        i}dh}t        j                  ||||      }| j	                  t        j
                  |      |       y )Nc                       e Zd Z e       Zy)DTestGetClosureVars.test_attribute_same_name_as_global_var.<locals>.CN)rN   rc   rd   r   rP  r$   r   r   r  rl    s	     (Kr   r  c                  :    t         j                  t               y r   )rO  rP  )r  s   r   r  zDTestGetClosureVars.test_attribute_same_name_as_global_var.<locals>.f  s    !---r   rP  rO  )rP  rO  rQ   rW  rC  rX  )rW   r  r[  r\  r]  r^  rm  r  s          @r   &test_attribute_same_name_as_global_varz9TestGetClosureVars.test_attribute_same_name_as_global_var  sk    	# 	#	.a$k2'&&&}k'3]D//2H=r   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   )rQ   rX  	nonlocalsr  s    r   _nonlocal_varsz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_vars  s    ))!,666r   c                       fd}|S )Nc                     | z   S r   r$   rz  r  s    r   addzFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.add  s    1ur   r$   )r  rw  s   ` r   
make_adderz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_adder  s    Jr   c                       fdS )Nc                      |       S r   r$   )r  r  r  s    r   r   zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>$  s    T4 0r   r$   )r  r  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  r  s    r   r   zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>,  s    DAaDGr   r$   )r  les   `r   r  z;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g+  s    +,,r   )g_ref)r  r  Ys   ` r   r  z0TestGetClosureVars.test_nonlocal_vars.<locals>.Y*  s    -AGQ4Kr   c                 N    j                   |       dj                  i       y )Nr  )rC  r  )r  r  rs  rW   s    r   check_y_combinatorzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinator0  s     ^D1C>Br   r.   r/   r(  r  )r  r  c                       fdS )Nc                     | z   S r   r$   rv  s    r   r   zITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>;  s	    QUr   r$   r  s   `r   r   z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>;  s    ?r   rt  )rC  )
rW   rx  r{  r}  r  incadd_twogreater_than_fiver  rs  s
   `       @@r   test_nonlocal_varsz%TestGetClosureVars.test_nonlocal_vars  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   r0   z9TestGetClosureVars.test_getclosurevars_empty.<locals>.foo@      4r   c                       yNTr$   r$   r   r   r   z>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>B  s    r   )rQ   rW  rP   rC  rX  )rW   r0   _emptys      r   test_getclosurevars_emptyz,TestGetClosureVars.test_getclosurevars_empty?  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   Tr  F  r   r   r  r.   )r  r  rQ   rX  r   )rW   r  s     r   test_getclosurevars_errorz,TestGetClosureVars.test_getclosurevars_errorE  sO    )W%;%;Q?)W%;%;TB)W%;%;R@r   c                 0    d}i }t        ||       |d   |fS )Nzdef f(): print(path)r  )r5   )rW   r=  r2  s      r   _private_globalsz#TestGetClosureVars._private_globalsK  s#    )T2#w{r   c                     | j                         \  }}|j                  dd        t        j                  i i dt        idh      }| j                  t        j                  |      |       y )Nr  rO  r4  )r  poprQ   rW  rO  rC  rX  rW   r  r2  rm  s       r   test_builtins_fallbackz)TestGetClosureVars.test_builtins_fallbackQ  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 )Nr4  r.   r  rO  )r  rQ   rW  rC  rX  r  s       r   test_builtins_as_dictz(TestGetClosureVars.test_builtins_as_dictW  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  r4  rO  )r  r2  rQ   rW  r4  rC  rX  r  s       r   test_builtins_as_modulez*TestGetClosureVars.test_builtins_as_module]  sZ    %%'2>&&r2rww/?'K//2H=r   N)rN   rc   rd   r_  rc  ri  rn  r  r  r  r  r  r  r  r$   r   r   rJ  rJ    s>    DDH>$L>A>>>r   rJ  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  rL   rC  )rW   r  call_params_stringlocsr1r2s         r   assertEqualCallArgsz,TestGetcallargsFunctions.assertEqualCallArgsf  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)Nr  r  zException not raisedr  )r  rL   failr   rc  r   rC  r   )rW   r  call_param_stringr  r   ex1ex2s          r   assertEqualExceptionz-TestGetcallargsFunctions.assertEqualExceptionm  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())rL   )rW   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)r  r  rW   r  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, *cr  r  2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])r  r  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, **cr  z2, b=3, c=4zb=3, a=2, c=4zc=4, **{"a":2, "b":3}z2, c=4, **{"b":3}zb=2, **{"a":3, "c":4}z%**collections.UserDict(a=2, b=3, c=4)z#2, c=4, **collections.UserDict(b=3)z%b=2, **collections.UserDict(a=3, c=4)r  r  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)r  r  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)r  r  r  r  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)r  r  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, br  r  r  z1,x=1r  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=2r  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>.f5  s    dr   zmissing 1 required keyword-onlyc                      y r   r$   r  s      r   f6z0TestGetcallargsFunctions.test_errors.<locals>.f6  r  r   z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesr0   r   kinddefaultz%value 5 is not a valid Parameter.kindr(   r(  zname must be a str, not a int{   rV  r  )	r  r  r  r  rQ   getcallargs
ValueErrorr  VAR_KEYWORD)	rW   f0f1f2r  f3f4r  r  s	            r   test_errorsz$TestGetcallargsFunctions.test_errors  s   r"v&x(!!"c*!!"e,!!"g.!!"b)!!"c*!!"e,!!"e,!!"b)!!"e,RA%%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! $ u%!!"f-!!"&67{+!!"f-!!"&67!!"j1!!"j1!!"o6!!"&:;!!"&:; 	##I$EG#G	##I/AB# C ##J%;< e'*;*;*G*G&(*<
 ##J$KMe!R8M ##I#BDc*D D+G G CB< <
M MD Ds<   &N8O1O OO(8OOOO%(O1r   )rN   rc   rd   r  r  r  r  r  r  r  r  r  r  r$   r   r   r  r  d  s9    !&&
H.H
MM0 /0H+r   r  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   r  r  0  r<  r   r  )r   r   inst)rW   r  s     r   r  zTestGetcallargsMethods.setUp/  s    	& 	E	r   c                     t         t        | 
  } |d|z         | j                  _        | j
                  j                  S )Nzself, )r8  r  r  r   r   r  )rW   r  mkr:  s      r   r  z#TestGetcallargsMethods.makeCallable5  s5    )4=X	12yyr   )rN   rc   rd   r  r  rB  rC  s   @r   r  r  -  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   )r8  r  r  r   r   )rW   r  r:  s     r   r  z*TestGetcallargsUnboundMethods.makeCallable=  s!    +T?	Jxxr   c                 F    t        t        | 
  | j                  |||       S r   )r8  r  r  _getAssertEqualParamsrW   r  r  r  r:  s       r   r  z1TestGetcallargsUnboundMethods.assertEqualCallArgsA  s-    2DM''.@$GI 	Ir   c                 F    t        t        | 
  | j                  |||       S r   )r8  r  r  r  r  s       r   r  z2TestGetcallargsUnboundMethods.assertEqualExceptionE  s-    2DN''.@$GI 	Ir   c                 H    t        |xs i | j                        }|d|z   |fS )N)r  zinst,)r  r  )rW   r  r  r  s       r   r  z3TestGetcallargsUnboundMethods._getAssertEqualParamsI  s)    DJBTYY/g 22D99r   r   )rN   rc   rd   r  r  r  r  rB  rC  s   @r   r  r  ;  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rN   rc   rd   r   r  r$   r   r   Thingr  R  	    Ar   r  r  rz  rt  )r   rC  rQ   r  r  r  r  rW   r  things      r   
test_basiczTestGetattrStatic.test_basicQ  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   rC  rQ   r  r  )rW   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  rW   r  s     r   r   z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__i  s	    r   N)rN   rc   rd   r  r   r$   r   r   r  r  g  s    Ar   r  rt  r  r/   r   r  s      r   test_instance_attrz$TestGetattrStatic.test_instance_attrf  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  ra   s    r   r  z0TestGetattrStatic.test_property.<locals>.Thing.xr  s    $%BCCr   N)rN   rc   rd   r  r  r$   r   r   r  r  q  s    D Dr   r  r  r   r  s      r   r:  zTestGetattrStatic.test_propertyp  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  )ro  s    r   rN  zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__z  s    $%BCCr   Nr  r$   r   r   
descriptorr  y  s    Dr   r  c                       e Zd ZW  Zy)FTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingNrN   rc   rd   r  )descs   r   r  r  }  s    Ar   r  r  )r   rC  rQ   r  )rW   r  r  r  r  s       @r   %test_descriptor_raises_AttributeErrorz7TestGetattrStatic.test_descriptor_raises_AttributeErrorx  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   rW   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   )_xra   s    r   r  z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.x  s    wwr   N)rN   rc   rd   r   r  r  r   r!  r$   r   r   r  r    s!    (( )Br   r  r  )r   rC  rQ   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   rW   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 Nr0   r  ra   s    r   r   z4TestGetattrStatic.test_slots.<locals>.Thing.__init__  	    r   N)rN   rc   rd   rz  r  r   r$   r   r   r  r,    s    AIr   r  r  rz  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>.metar0   N)rN   rc   rd   r  r$   r   r   metar3    s    Dr   r4  c                       e Zd Zy)/TestGetattrStatic.test_metaclass.<locals>.ThingNr   r$   r   r   r  r6    r<  r   r  r"  r  r0   c                       e Zd Zy)-TestGetattrStatic.test_metaclass.<locals>.subNr   r$   r   r   subr8    r<  r   r9  c                       e Zd ZdZy)4TestGetattrStatic.test_metaclass.<locals>.OtherThingrt  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  rt  r   r   rC  rQ   r  )rW   r4  r  r9  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.   r0   lower)rC  rQ   r  r  ra   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  rg  rC  rQ   r  r   r(  )rW   handles     r   %test_no_dict_no_slots_instance_memberz7TestGetattrStatic.test_no_dict_no_slots_instance_member  sA    (W-W33FFCT&\EVEVW .--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  ra   s    r   r   z>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__  r/  r   N)rN   rc   rd   r  r   r$   r   r   r  rJ    s    Ir   r  c                       e Zd Zy):TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNr   r$   r   r   r  rM    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r[  r$   rW   instanceowners      r   rN  z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__      r   Nr  r$   r   r   r  rQ        r   r  c                       e Zd Z W         Zy).TestGetattrStatic.test_descriptor.<locals>.FooNrN   rc   rd   r  r  s   r   r  rY    
    Ar   r  r.   r  c                      y r   r$   )r  r7   vs      r   r   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>  s    Tr   c                      y r   r$   )r  r7   r   s      r   r   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>      r   )r   r&  rC  rQ   r  rR  r'  )rW   r  r0   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r[  r$   rS  s      r   rN  zLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__  rV  r   Nr  r$   r   r   r  rd    rW  r   r  c                       e Zd Z W         Zy)>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNrZ  r[  s   r   r4  rg    r\  r   r4  c                       e Zd Zy)?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNr   r$   r   r   r  ri    r<  r   r  r"  r  )r   r   rC  rQ   r  r&  )rW   r4  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>.Basert  Nr  r$   r   r   Baserm        Cr   rn  c                        e Zd ZdZed        Zy);TestGetattrStatic.test_class_as_property.<locals>.SomethingFc                     d| _         t        S r  )executedr   ra   s    r   r:  zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__  s     $r   N)rN   rc   rd   rs  r  r:  r$   r   r   	Somethingrq    s    H r   rt  r0   rt  )r   rC  rQ   r  rV   rs  )rW   rn  rt  rT  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   rl  ra   s    r   __mro__z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__	  s
    y r   N)rN   rc   rd   r  rz  r$   r   r   r  rx   	  s    ! !r   r  c                       e Zd ZdZy)4TestGetattrStatic.test_mro_as_property.<locals>.Basert  Nr  r$   r   r   rn  r|  	  ro  r   rn  c                       e Zd Zy)9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNr   r$   r   r   rt  r~  	  r<  r   rt  r"  r0   rt  r@  )rW   r  rn  rt  s       r   test_mro_as_propertyz&TestGetattrStatic.test_mro_as_property  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>.Foort  c                     d_         i S r  calledrW   r  s    r   r&  z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__	      "	r   NrN   rc   rd   r'   r  r&  r  s   r   r  r  	      A r   r  rV  r'   rt  c                       e Zd Zy)4TestGetattrStatic.test_dict_as_property.<locals>.BarNr   r$   r   r   r  r  	  r   r   r  r(  )r  r  r'   rC  rQ   r  rV   )rW   r  r0   r  r(   r  s        @r   test_dict_as_propertyz'TestGetattrStatic.test_dict_as_property	  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>.Foort  c                     d_         i S r  r  r  s    r   r&  z8TestGetattrStatic.test_mutated_mro.<locals>.Foo.__dict__+	  r  r   Nr  r  s   r   r  r  )	  r  r   r  c                       e Zd ZdZy)/TestGetattrStatic.test_mutated_mro.<locals>.BarrV  NrN   rc   rd   r'   r$   r   r   r  r  0	  r<  r   r  c                       e Zd Zy)/TestGetattrStatic.test_mutated_mro.<locals>.BazNr   r$   r   r   Bazr  3	  r   r   r  r'   rV  rt  )r  r  rC  rQ   r  	__bases__rV   )rW   r  r  r  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  r8  get)rW   keyr  r:  r  s      r   r  z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.get@	  s    "C)r   r   )rN   rc   rd   r  rB  )r:  r  s   @r   Customr  ?	  s    * *r   r  c                       e Zd ZdZy)6TestGetattrStatic.test_custom_object_dict.<locals>.Foort  Nr  r$   r   r   r  r  D	  r<  r   r  r'   rt  )r  r  r   r&  rC  rQ   r  rV   )rW   r  r  r0   r  s       @r   test_custom_object_dictz)TestGetattrStatic.test_custom_object_dict;	  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  )rs  ra   s    r   r&  zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__M	  s	     $r   NrN   rc   rd   r  r&  r$   r   r   r  r  L	  r  r   r  c                       e Zd ZdZd Zy)@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFc                     d| _         y Nr   rz   ra   s    r   r   zITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__T	  s	    	r   N)rN   rc   rd   rs  r   r$   r   r   r  r  Q	  s    Hr   r  r"  rz   r   )r   rC  rQ   r  rV   rs  )rW   r  r  rT  s       r   test_metaclass_dict_as_propertyz1TestGetattrStatic.test_metaclass_dict_as_propertyK	  sR    	%4 	%
	d 	 7//&A2F(r   c                 n    t               }| j                  t        j                  t        d|      |       y )Nversion)r   r  rQ   r  r  )rW   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   r  )rs  r  ra   s    r   r&  z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__b	  s     $}$r   Nr  r$   r   r   MetaMetar  a	  s    % %r   r  c                       e Zd ZdZy)STestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rN   rc   rd   rs  r$   r   r   r  r  g	  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  j	  r<  r   r  rz   )r   r  r  rQ   r  rV   rs  )rW   r  r  r  s       r   3test_metaclass_with_metaclass_with_dict_as_propertyzETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property`	  sh    	%t 	%	48 		d 	 ~.""5&1 /( /.s   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  rW   r  r  s     r   r  zBTestGetattrStatic.test_custom___getattr__.<locals>.Foo.__getattr__v	      "	r   Nr  r  s   r   r  r  u	      r   r  whateverr  r  r  rQ   r  rV   rW   r  r  s     @r   test_custom___getattr__z)TestGetattrStatic.test_custom___getattr__q	  s]    	 	
 ~.""35*5 / 	% /.   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  r  s     r   __getattribute__zLTestGetattrStatic.test_custom___getattribute__.<locals>.Foo.__getattribute__	  r  r   N)rN   rc   rd   r  r  s   r   r  r  	  r  r   r  really_could_be_anythingr  r  s     @r   test_custom___getattribute__z.TestGetattrStatic.test_custom___getattribute__	  s^    	 	
 ~.""35*DE / 	% /.r  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  r  	  r   r   r  r  
irrelevant)rT  weakrefrefrQ   r  gccollectr  )rW   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)rN   rc   rd   r  r  r  r:  r  r  r"  r)  r0  rA  rD  rG  rN  ra  rj  ru  r  r  r  r  r  r  r  r  r  r  r$   r   r   r  r  O  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(  rr   numbers    r   number_generatorz5TestGetGeneratorState.setUp.<locals>.number_generator	  s     ( #ru   )	generator)rW   r  s     r   r  zTestGetGeneratorState.setUp	  s    	 *+r   c                 @    t        j                  | j                        S r   )rQ   getgeneratorstater  ra   s    r   _generatorstatez%TestGetGeneratorState._generatorstate	      ((88r   c                 `    | j                  | j                         t        j                         y r   )rC  r  rQ   GEN_CREATEDra   s    r   test_createdz"TestGetGeneratorState.test_created	  s!    --/1D1DEr   c                     t        | j                         | j                  | j                         t        j
                         y r   )nextr  rC  r  rQ   GEN_SUSPENDEDra   s    r   test_suspendedz$TestGetGeneratorState.test_suspended	  s-    T^^--/1F1FGr   c                     | j                   D ]  } | j                  | j                         t        j                         y r   )r  rC  r  rQ   
GEN_CLOSEDrs   s     r   test_closed_after_exhaustionz2TestGetGeneratorState.test_closed_after_exhaustion	  s2    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  rQ  r  r?   rC  r  rQ   r  ra   s    r   %test_closed_after_immediate_exceptionz;TestGetGeneratorState.test_closed_after_immediate_exception	  sO    |,NN  . ---/1C1CD -,    A--A6c                     | j                   j                          | j                  | j                         t        j
                         y r   )r  r   rC  r  rQ   r  ra   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  )r1   rC  r  rQ   GEN_RUNNINGr  rW   s    r   running_check_generatorzCTestGetGeneratorState.test_running.<locals>.running_check_generator	  sX     (  !5!5!79L9LM  !5!5!79L9LM #s   A2A5)r  r  )rW   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  rQ   r  reprr   rW   namesr(  states       r   test_easy_debuggingz)TestGetGeneratorState.test_easy_debugging	  sJ    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Nr  rt  rZ  r$   lstr'   r  r^  r   s        r   eachz;TestGetGeneratorState.test_getgeneratorlocals.<locals>.each	  s&     A6A ru   r  r'   r  r.   r'   r  r^  r  r/   rt  rZ  r'   r  r^  r  r   r   rC  rQ   getgeneratorlocalsr  StopIterationrW   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rC  r$   r$   r   r   	yield_onezFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one	  s     Gr   r  rW   r  r6  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>	  s    4r   r/   rt  )r  r  rQ   r  rP   ra   s    r   test_getgeneratorlocals_errorz3TestGetGeneratorState.test_getgeneratorlocals_error	  sb    )W%?%?C)W%?%?P)W%?%?E)W%?%?Gr   N)rN   rc   rd   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  rr   r  s    r   number_coroutinez5TestGetCoroutineState.setUp.<locals>.number_coroutine
  s     ( #ru   c                  0   K             d {    y 7 wr   r$   )r   s   r   	coroutinez.TestGetCoroutineState.setUp.<locals>.coroutine
  s     "$$$s   )r   r"  )rW   r"  r   s     @r   r  zTestGetCoroutineState.setUp
  s'    		 
		%"r   c                 8    | j                   j                          y r   )r"  r   ra   s    r   r>  zTestGetCoroutineState.tearDown
  s    r   c                 @    t        j                  | j                        S r   )rQ   getcoroutinestater"  ra   s    r   _coroutinestatez%TestGetCoroutineState._coroutinestate
  r  r   c                 `    | j                  | j                         t        j                         y r   )rC  r&  rQ   CORO_CREATEDra   s    r   r  z"TestGetCoroutineState.test_created
  s!    --/1E1EFr   c                     | j                   j                  d        | j                  | j                         t        j
                         y r   )r"  sendrC  r&  rQ   CORO_SUSPENDEDra   s    r   r  z$TestGetCoroutineState.test_suspended
  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  rC  r&  rQ   CORO_CLOSEDra   s    r   r  z2TestGetCoroutineState.test_closed_after_exhaustion
  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  rQ  r"  r?   rC  r&  rQ   r-  ra   s    r   r  z;TestGetCoroutineState.test_closed_after_immediate_exception%
  sO    |,NN  . ---/1D1DE -,r  c                     | j                   j                          | j                  | j                         t        j
                         y r   )r"  r   rC  r&  rQ   r-  ra   s    r   r  z-TestGetCoroutineState.test_closed_after_close*
  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_debugging.
  J    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>.gencoro7
  s	     r   c                 *   K   d} d {    y 7 wry   r$   )r'   r  r4  s     r   r  z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.func<
  s     AMMs   )r'   r4  rz   )r'   r4  r  r   )r   r"  rC  rQ   getcoroutinelocalsr*  )rW   r  r   r4  s      @r   test_getcoroutinelocalsz-TestGetCoroutineState.test_getcoroutinelocals6
  s    		 
	 )	 v33D9#8	:		$33D9#fE	Gr   N)rN   rc   rd   r  r>  r&  r  r  r  r  r  r  r7  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  rr   r  s    r   number_asyncgenz3TestGetAsyncGenState.setUp.<locals>.number_asyncgenL
  s     ( #   )asyncgen)rW   r<  s     r   r  zTestGetAsyncGenState.setUpK
  s    	 ()r   c                 T   K   | j                   j                          d {    y 7 wr   )r>  aclosera   s    r   asyncTearDownz"TestGetAsyncGenState.asyncTearDownQ
  s     mm""$$$s   (&(c                 @    t        j                  | j                        S r   )rQ   getasyncgenstater>  ra   s    r   _asyncgenstatez#TestGetAsyncGenState._asyncgenstateT
  s    ''66r   c                 `    | j                  | j                         t        j                         y r   )rC  rD  rQ   AGEN_CREATEDra   s    r   r  z!TestGetAsyncGenState.test_createdW
  s!    ,,.0D0DEr   c                    K   t        | j                         d {   }| j                  | j                         t        j
                         | j                  |d       y 7 Ewr  )anextr>  rC  rD  rQ   AGEN_SUSPENDEDrW   r  s     r   r  z#TestGetAsyncGenState.test_suspendedZ
  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)NrI  r.   )r  StopAsyncIterationrH  r>  rC  rD  rQ   AGEN_CLOSED)rW   	countdowns     r   r  z1TestGetAsyncGenState.test_closed_after_exhaustion_
  s     	12(1},),DMM***  )1},), 3 	A&,,.0C0CD + 32s-   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  rQ  r>  athrowrC  rD  rQ   rM  ra   s    r   r  z:TestGetAsyncGenState.test_closed_after_immediate_exceptiong
  s^     |,--&&|444 -,,.0C0CD 5 -,s,   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  )r1   rC  rD  rQ   AGEN_RUNNINGr  s    r   running_check_asyncgenzATestGetAsyncGenState.test_running.<locals>.running_check_asyncgenm
  sX     (  !4!4!68L8LM  !4!4!68L8LM #s   A3A6)r>  rH  rC  rD  rQ   rI  )rW   rT  s   ` r   r  z!TestGetAsyncGenState.test_runningl
  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_debuggingz
  r1  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=  r  r
  r.   r  r/   rt  rZ  r  r   rC  rQ   getasyncgenlocalsrH  r  rL  r  s      r   test_getasyncgenlocalsz+TestGetAsyncGenState.test_getasyncgenlocals
  sB    	 y/227;#I6	8Gn227;#IA(*	+ Gn227;#IA(*	+ Gn227;#IA(r3	4 12.   3227;R@ 	 	 	
 ! 32sa   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rC  r$   r$   r   r   r  zDTestGetAsyncGenState.test_getasyncgenlocals_empty.<locals>.yield_one
  s     Gs   	rX  r  s      r   test_getasyncgenlocals_emptyz1TestGetAsyncGenState.test_getasyncgenlocals_empty
  s     	k2237<Cj2237<12* 32237<	 	  32s;   >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>
  s    $r   r  )r  r  rQ   rY  rP   ra   s    r   test_getasyncgenlocals_errorz1TestGetAsyncGenState.test_getasyncgenlocals_error
  sb    )W%>%>B)W%>%>O)W%>%>D)W%>%>Fr   N)rN   rc   rd   r  rA  rD  r  r  r  r  r  r  rZ  r]  r`  r$   r   r   r9  r9  H
  sD    *%7F#
EE
H,A6	=Gr   r9  c                       e Zd Zy)MySignatureNr   r$   r   r   rb  rb  
       	r   rb  c                       e Zd Zy)MyParameterNr   r$   r   r   re  re  
  rc  r   re  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(  r  empty
annotationr   r  rC  ).0r  s     r   	<genexpr>z0TestSignatureObject.signature.<locals>.<genexpr>
  sq      J
 2I zz$}};$//5;;>=B=M=M5::,,.	0
 2Is   BB.)rQ   r  tupler6   r  return_annotationrj  )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())rO  )kodc                    y r   r$   )popkpkdkort  r   rN  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, /)rv  r{  rw  rx  r   ry  rt  rN  zwrong parameter orderr(  zduplicate parameter namezfollows default argument)d   )r   )rQ   r  r  rC  r   r  r6   r  rM   r   r  r  replace)rW   SPr  rq  r|  sig2rv  r{  rw  rx  r   ry  rt  rN  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() I ##J0GHr4R() I ##J0GHtRR() I ##J0GHr2tVR() I ..f.-##J0JKr2tWb)* L ##J0JKsBiL L ##J0JKsBiL L ##J0JKr3m L ##J0JKr3m L ##J0JKsBiL LK9 IH IH IH IH LK LK LK LK LK LKsx   (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   rp  s       r   r0   z=TestSignatureObject.test_signature_object_pickle.<locals>.foo      dr   r  F)
pickle_versubclassr-   )r(  r  )r6   ro  T)r   r   rQ   r  r1   pickleHIGHEST_PROTOCOLsubTestloadsdumpsrC  re  r  r  collectionsOrderedDictr6   rb  r  r  ro  rM   r  )	rW   r0   foo_partialrq  versig_pickledmyparammyparamsmysigs	            r   test_signature_object_picklez0TestSignatureObject.test_signature_object_pickle  s   :1:2e*:''q1,00145Cu=$ll6<<S+AB  k2 >= 6 $3W->->-N-NO**3>>WE%%1B8;8M8M & O
5+67
5#3#3C#8+FG00145Ct<$ll6<<s+CD  4
; DE
;+A+A#+F+6!8 9	 =< 6 >= =<s   ,<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>.test1  r  r   r(   r'   )rQ   r  r  r  r0   r  r6   rW   r  rq  s      r   test_signature_immutabilityz/TestSignatureObject.test_signature_immutability0  si    	%~.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>.test<  r  r   r$   .rC  r  r  s     r   test_signature_on_noargz+TestSignatureObject.test_signature_on_noarg;  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>.testA  r  r   ))r'   ..positional_or_keyword)r  .r0   r  r  )r  r0   r  r  r  r  s     r   test_signature_on_wargsz+TestSignatureObject.test_signature_on_wargs@  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>.testI  r  r   .keyword_only)floatr   r   rC  r  r  s     r   test_signature_on_wkwonlyz-TestSignatureObject.test_signature_on_wkwonlyH  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 )Nr  )r  r  r0   r   r(   rz   r  rN  c                     y r   r$   )r'   r  rz   r  r   rN  s         r   r  z@TestSignatureObject.test_signature_on_complex_args.<locals>.testQ  r  r   r  )r  rO  r0   r  )r   .r(   var_positional)rz   .r  r  )r  r  .r  .var_keywordrO  )r   rC  r  r  s     r   test_signature_on_complex_argsz2TestSignatureObject.test_signature_on_complex_argsP  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$   rM  s    r   test_args_onlyzGTestSignatureObject.test_signature_without_self.<locals>.test_args_only]  r  r   c                       y r   r$   r   rN  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$   rM  s    r   test_classmethodzKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethodd  r   r   c                       y r   r$   rM  s    r   test_staticmethodzLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethodh  r   r   r.   N)rN   rc   rd   r   r  r   r  r   partialmethodr  r  r  r  )r  r  s   r   r   r  c  s~        )((*:Q?B(((.1=B(((*;a@B(((*?CBr   r   )r   ..r  .)r  rN  ..r  .)rC  r  r  r  r  r  )rW   r   r  r  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   rW   )
rQ   r  rM   r  r  rC  r   r6   r  r(  r   r  rW   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   rW   )
rQ   r  rM   r  r  r6   r  r   r  r(  r  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   )r6   r  )r(  r  s    r   r8   z9TestSignatureObject.test_signature_on_builtins.<locals>.p  s    I006>>>r   r  r  r  s   bytesr  gQ	@r7   #   nr]  Tr  Flocalrt  r  rY   r.   s   abcc                       e Zd ZeZy)DTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rN   rc   rd   r   r   r$   r   r   ThisWorksNowr    s    Hr   r  r   r$   zno signature foundrW   buffer)r  r  rC  r  maxsizer   r  r  r  r  StringIOr  	maketransr  fromkeysr   r   r   r  minrN   r  r  __delitem__r  r'  #docstring_with_signature_but_no_doc	bytearray__release_buffer__r   r6   )
rW   r  r  r  r8   r  r  r   rq  r  s
   `        @r   test_signature_on_builtinsz.TestSignatureObject.test_signature_on_builtins  sw    			 ")"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,.) F 	D,,-H//0 	iCCD --!&)cnn-/AB FEs   *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   rN  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$   r  s     r   wrapper_likezNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_like  s    $r   Ffollow_wrapped)r  r  rC  rQ   r  r   )rW   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  r  rQ   r  r  r   )rW   r  s     r   'test_signature_on_builtins_no_signaturez;TestSignatureObject.test_signature_on_builtins_no_signature  s}    ##J$DFi>>?F ##J$DFc"F F	F FF F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  rQ   r  ra   s    r   test_signature_on_non_functionz2TestSignatureObject.test_signature_on_non_function  s.    ##I/IJb! KJJs   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   rN  s         r   r  zITestSignatureObject.test_signature_from_functionlike_object.<locals>.func  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   rN   r'  r  __defaults____kwdefaults__r  rW   r  s     r   r   zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__init__  I     $ $'+';';$$($5$5!&*&9&9# 	r   c                 &     | j                   |i |S r   r  rM  s      r   r   zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__       tyy$1&11r   NrN   rc   rd   r   r   r$   r   r   funcliker        
!2r   r  r  c                 .    t        | d      ry |       S )N_builtinmockTr   )rZ   _orig_isdescs    r   _isdesczLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesc  s    sN+$$r   zinspect.ismethoddescriptor)rQ   r  from_callablerC  r  r  rp  r   r   r  rV   r  rM   )	rW   r  r  sig_funcsig_funclikeflr  builtin_funcr  s	           @r   'test_signature_from_functionlike_objectz;TestSignatureObject.test_signature_from_functionlike_object  s;   $( 		2 	2  $$2248((66x~Fx0(($8x0
 d^O+ 	! 11	%
 ]]  !=wG#D>LW77EF(,L%OOG66|DEW..|<hG HGGs   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>.func/  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$   )rW   markers     r   r   zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__3  r   r   N)rN   rc   rd   r   r'  r  r  r  r  s   r   r  r  2  s=     }}H}}H"22O,,L!00Nr   r  z(marker))rC  r   rQ   r  )rW   r  r  s     @r   !test_signature_functionlike_classz5TestSignatureObject.test_signature_functionlike_class+  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$   rM  s    r   r   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__@  r   r   r  c                      y r   r$   rW   r  r  s      r   r  z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1B  r   r   c                       y r   r$   rM  s    r   m2z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2D  r   r   c                      y r   r$   r  s    r   r   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__F  r   r   Nr.   )rN   rc   rd   r   r   r  r  r   r$   r   r   rC  r  ?  s    # r   rC  r  ..r  )r  r.   .r  r  zinvalid method signature)rC  r  r  r   r  r  r  )rW   rC  s     r   test_signature_on_methodz,TestSignatureObject.test_signature_on_method>  s    	 	 			2F	 
 			2	  	-	  ##J0JKNN46" LKKs   (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  )rN   rc   rd   r   r  r$   r   r   rC  r%  [  s    # r   rC  c                       y r   r$   r  s     r   m1dzDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1d^  r  r   r   )r   r  r  rC  r  r   )rW   rC  r(  s      r   #test_signature_wrapped_bound_methodz7TestSignatureObject.test_signature_wrapped_bound_methodY  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.   )r  c                     y r   r$   )r   r  r  s      r   r0   zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.fooh  r   r   N)rN   rc   rd   r   r0   r$   r   r   rC  r,  g  s    '(  r   rC  ))r!  )r  r.   .r  .r0   rC  r  rW   rC  meths      r   test_signature_on_classmethodz1TestSignatureObject.test_signature_on_classmethodf  `    	 	
 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   s     r   r0   zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.fooz  r   r   N)rN   rc   rd   r   r0   r$   r   r   rC  r5  y  s     r   rC  )))r   ..r  )r   ..r  .r.  r/  s      r   test_signature_on_staticmethodz2TestSignatureObject.test_signature_on_staticmethodx  r2  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   r  has incorrect argumentsr.   r  c                     y r   r$   r  s       r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   ))r  r  ..r  r   ..r  r  ..r  .))r<  r=  r>  .r/   r  ))r<  r   r/   .r  r>  .)r  r   ))r  r  r.   .r  r?  r>  .))r@  r?  r>  .))r'   r.   .r  r  ..r  r=  r>  .c                     y r   r$   )r'   r  r   rN  s       r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   ))r  rB  r  .))rA  rB  r  .rt  Tr  )r  r  ))r  r  r   .r  r  .r  ))r  r  rD  r  .)r  r  r   r  r   c                      y r   r$   r  s      r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   r<  .r  c                     | S r   r$   r  s    r   r0   z:TestSignatureObject.test_signature_on_partial.<locals>.foo  s    Hr   rO     )))r'   rH  .r  .c                     | ||fS r   r$   r  s      r   r0   z:TestSignatureObject.test_signature_on_partial.<locals>.foo	      a7Nr   rb  )))r  rb  .r  r=  .)r.   rb  rO  c                    | |||fS r   r$   r  s       r   r0   z:TestSignatureObject.test_signature_on_partial.<locals>.foo  s    aA:r   )r  r   )r  r  ))r  )r  rO  .r  )r   rH  .r  )r  rb  .r  .   r{  r  )rL  r{  rH  rb  c                     | ||fS r   r$   r  s      r   r0   z:TestSignatureObject.test_signature_on_partial.<locals>.foo   rJ  r   rv  )r{  r/   rv  rZ  )r{  rZ  rv  )r.   rZ  rv  )rZ  rO  rH  c                     y r   r$   )r'   r  r   r  rN  s        r   r0   z:TestSignatureObject.test_signature_on_partial.<locals>.foo5  r  r   z(a, b, /, c, d, **kwargs)))r  ..positional_onlyr   ..r  r  ..r  r  .))rQ  rR  r  .))rR  r  .))r   rt  .r  r>  r  .))rO  rS  r>  r  .r  )r   r   rC  r  r  r  rQ   r   r  bindr   rN  r   )rW   r   r  rq  r0   _foobas          r   test_signature_on_partialz-TestSignatureObject.test_signature_on_partial  s   %	 	6	B##J0IJgdA./ K ##J0IJgda01 K	 	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 KJ KJs   ]]]]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rN   rc   rd   r  r  rY  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.teste  r   r   r.   r  N)r  rz   r]  rY  s   r   r^  zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamd  s    *Cr   Fr  )))ra  ..r  r  r   r.   .r  rz   ))r  rb  rz   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.testu  r   r   r.   N)rW   anno)rN   rc   rd   r  r  rY  s   r   r^  zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spamt  s     dA&Ar   )))rW   .re  r  .)	r   r  r  r  rQ   r  r  rC  r  )rW   r^  r  s     @r   test_signature_on_partialmethodz3TestSignatureObject.test_signature_on_partialmethodY  s    +	& 	&
 ##J0IJdhh' K	+ 	+
 	5A"	# 	

UC"	#
	' 	' 	?	 3 KJs    C77D c                 t    d }d|_         | j                  t        t        j                  |            d       y )Nc                      y r   r$   r  s    r   r0   zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foo  r  r   rz   z(a))_partialmethodrC  r   rQ   r  rW   r0   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$   rW   r'   r  s      r   r(   z@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.bar  r   r   N)rN   rc   rd   r(   r  s   r   r  rp         r   r  ))rW   ..r  r  r<  .))r  r<  .Fr  r  c                      t        j                         dt        f fd       }t        j                         }t        |j                  j                               dd  }|j                  |      |_	        |S )Nr  c                       dg| i |S r  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   rQ   r  rn  r6   r  r  r  )r  r  rq  
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)rp  c                      y r   r$   rr  s      r   r   zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__  r   r   Nr   rs  s   r   r  z<TestSignatureObject.test_signature_on_decorated.<locals>.Foo  rt  r   )r<  .c                       y r   r$   r$   r   r   wrapped_foo_callzITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call  r  r   )r(   rC  r  r   __wrapped__)rW   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$   rW   r'   s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   NrN   rc   rd   r   r$   r   r   r  r    r   r   r  )r  .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$   rW   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rN   rc   rd   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__  r  r   NrN   rc   rd   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  r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.C  r  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.call      Hr   NrN   rc   rd   r  r$   r   r   r   r        r   r   c                   2    e Zd Z W         j                  Zy)r  NrN   rc   rd   r  r   r   s   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM      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__  r  r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.C  r  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>      1a&r   r/   NrN   rc   rd   r   r   r   r$   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM      ,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__  r  r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.C  r  r   r/   r.   r  c                   4    e Zd Z ej                  d d      Zy)r  c                 
    ||fS r   r$   rW   r  r'   s      r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.<lambda>      q!fr   r/   NrN   rc   rd   r   r  r   r$   r   r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM      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__  r  r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.C  r  r   BuiltinMethodTypec                   $    e Zd Zdj                  Zy)r  :NrN   rc   rd   r4   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__&  r  r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.C%  r  r   r'   bca:bcr   MethodWrapperTypec                   $    e Zd Zdj                  Zy)r  r/   NrN   rc   rd   __pow__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__2  r  r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.C1  r  r   rt  rJ  rI  r   c                   $     e Zd Zdd fd
Z xZS )r  r.   r1  c                (    t         |   | |||      S r   r8  r  mclsr(  basesdctr0   r:  s        r   r  z?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__<      wtT5#>>r   rN   rc   rd   r  rB  rC  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM;      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   r{  ))r(  ..r  r  ..r  r  ..r  )r0   r.   .r  .c                   *     e Zd Zdd fd
Zd Z xZS )8TestSignatureObject.test_signature_on_class.<locals>.CMMr.   r1  c                (    t         |   | |||      S r   r  r  s        r   r  z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__N  r  r   c                     t        |||      S r   )r   )r   nmbsdts       r   r   zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__P  s    BB''r   )rN   rc   rd   r  r   rB  rC  s   @r   CMMr  M  s    78 ?(r   r  c                   $     e Zd Zdd fd
Z xZS )r  r/   r(   c                (    t         |   | |||      S r   r  )r  r(  r  r  r(   r:  s        r   r  z?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__S  r  r   r  rC  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CMR  r  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__V  r   r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.CU  r   r   )))r  ..r  )r  ..r  )r  ..r  .c                   $     e Zd Zdd fd
Z xZS )r  r/   r  c                &    t         |   |||      S r   r8  r   )r   r(  r  r  r(   r:  s        r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__k  s    w'eS99r   rN   rc   rd   r   rB  rC  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CMj  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__n  r   r   Nr  r$   r   r   r  z6TestSignatureObject.test_signature_on_class.<locals>.Cm  r   r   ))r  r  r  )r(   r/   .r  .)rC  r  r   r  r  AssertionErrorr4   r  )rW   r  r  r  r   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.!" + \\-.$T $b  QT{^V4"">2  !2DNN2774KL 3 / \\-.'T 'b  QqT1%Qq!Wa("">2  !2DNNA;;4OP 3 /	? 	?	" 	 	*	  	+	 	($ 	(
	? 	?	" 	 	,	  	+	  	*	 	: 	:	" 	 	+	 e )( *) (' %$ +** 32 /., 32 /.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__z  r   r   Nr  r$   r   r   r  r  y  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)rN   rc   rd   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$   rE  s    r   r   zITestSignatureObject.test_signature_on_class_with_init.<locals>.C.__init__  r  r   N)rN   rc   rd   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   r  zETestSignatureObject.test_signature_on_class_with_init.<locals>.A.call  r  r   Nr  r$   r   r   r   r    r  r   r   c                   2    e Zd Z W         j                  Zy)r  N)rN   rc   rd   r  r   r  s   r   r  z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C  r  r   r  r   c                   4    e Zd Z ej                  d d      Zy)r  c                      y r   r$   r  s     r   r   zITestSignatureObject.test_signature_on_class_with_init.<locals>.C.<lambda>  s    $r   r/   N)rN   rc   rd   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  r  s      r   _initzFTestSignatureObject.test_signature_on_class_with_init.<locals>.C._init  s    VDFr   r/   N)rN   rc   rd   r	  r   r  r   r$   r   r   r  z@TestSignatureObject.test_signature_on_class_with_init.<locals>.C  s    $29225!<r   r  )rC  r  r  r'   rW   r  r   s     @r   !test_signature_on_class_with_initz5TestSignatureObject.test_signature_on_class_with_initx  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__  r  r   NrN   rc   rd   r  r$   r   r   r  r		    r  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__  r  r   N)rN   rc   rd   r   r  r$   r   r   r  z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  r  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__  r  r   N)rN   rc   rd   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$   )rW   r   r'   s      r   r  zDTestSignatureObject.test_signature_on_class_with_new.<locals>.A.call  r  r   Nr  r$   r   r   r   r	    r  r   r   c                   2    e Zd Z W         j                  Zyr		  N)rN   rc   rd   r  r  r  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!fr   r/   N)rN   rc   rd   r   r   r  r$   r   r   r  z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  s    +)++,DaHr   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Fr   r/   N)rN   rc   rd   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	  )rN   rc   rd   r   __subclasscheck__r  r$   r   r   r  z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  s    //r   Fr  c                   D    e Zd Zej                  j                  ee      Zyr	  )rN   rc   rd   r   __or__rN  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)rN   rc   rd   r   r&  r  r$   r   r   r  z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  s    --(;<r   TWrapperDescriptorTypec                   $    e Zd Zej                  Zyr	  )rN   rc   rd   r   r	  r  r$   r   r   r  z?TestSignatureObject.test_signature_on_class_with_new.<locals>.C  s    ++r   )r  rC  r  r  r  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= = QqT4(T^^A.q?R?R0ST 2 \\12& & QsVQW- j$..!< 32s *) )( *) (' %$ +* /. /. 21 32s   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   rN  s       r   r  zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__      ~~c**r   Nr  r	  r$   r   r   r   r%	        +r   r   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__   r   r   Nr  r$   r   r   rf  r+	    r   r   rf  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   rN  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   rk  r2	  %  r<  r   rk  r{  ))r'   r.   .r  r  r/   .r  r  r  .))r3	  r  r  .r  )rW   r   rf  r  rk  s        r   test_signature_on_subclassz.TestSignatureObject.test_signature_on_subclass  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TypeVarr  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__=  r   r   )rN   rc   rd   r   r   r$   r   r   r   r:	  <  s    S T r   r   r'   .r  )typingr7	  r8	  rC  r  r   )rW   r7	  r8	  r  r   s        r   "test_signature_on_generic_subclassz6TestSignatureObject.test_signature_on_generic_subclass7  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  rA	  H  r   r   r  rs  c                       e Zd ZyCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNr   r$   r   r   rk  rD	  J  r   r   rk  c                       e Zd Zyr@	  r   r$   r   r   r  zCTestSignatureObject.test_signature_on_class_without_init.<locals>.CN  r   r   c                       e Zd ZyrC	  r   r$   r   r   rk  zCTestSignatureObject.test_signature_on_class_without_init.<locals>.DO  r   r   r   r$   zcallable.*is not supported)rC  r   rQ   r  r   rN   r  r  )rW   r  rk  s      r   $test_signature_on_class_without_initz8TestSignatureObject.test_signature_on_class_without_initD  s    	W..q12D9W..q12D9 	3B00#6##J0LMW..q148 N3B00#6##J0LMW..q148 NM NM NMs   &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  rJ	  _  r   r   r  c                       e Zd Zy)GTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNr   r$   r   r   
EmptyTraitrL	  `  r   r   rM	  c                       e Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nr   r$   r   r   P2rO	  a  r   r   rP	  c                       e Zd Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3c                      y r   r$   )rW   rz   s     r   r   zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__f  r   r   Nr  r$   r   r   P3rR	  e  r   r   rT	  z(spam)c                       e Zd Zd Zy)BTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPc                      y r   r$   )r   r0   r(   s      r   r   zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__k  r   r   Nr   r$   r   r   MetaPrV	  j  r   r   rX	  c                       e Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr   r$   r   r   P4rZ	  m  r<  r   r[	  r"  z
(foo, bar))rC  r   rQ   r  r  r  r   )rW   rm  r  rM	  rP	  rT	  rX	  r[	  s           r   test_signature_on_builtin_classz3TestSignatureObject.test_signature_on_builtin_classX  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__s  r   r   Nr   r$   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^  rb	  z  r<  r   r^  r  c                       e Zd Zy)CTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNr   r$   r   r   r  rd	    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   Nr  r$   r   r   r  rf	    r  r   r  r   c                       e Zd Zed        Zy)rf	  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   r  zFTestSignatureObject.test_signature_on_callable_objects.<locals>.A.call  r  r   Nr  r$   r   r   r   rk	    r  r   r   c                   2    e Zd Z W         j                  Zyrf	  Nr  r  s   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   r.   r   c                   4    e Zd Z ej                  d d      Zy)rf	  c                 
    | |fS r   r$   r  s     r   r   zJTestSignatureObject.test_signature_on_callable_objects.<locals>.C.<lambda>  r  r   r/   Nr  r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   r  r  c                   4    e Zd Z ej                  d d      Zy)rf	  c                 
    ||fS r   r$   r  s      r   r   zJTestSignatureObject.test_signature_on_callable_objects.<locals>.C.<lambda>  r  r   r/   Nr  r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   r  c                   $    e Zd Zdj                  Zy)rf	  r  Nr  r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   r'   r  r  r   r  c                   $    e Zd Zdj                  Zy)rf	  r/   Nr  r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   rt  rJ  r   ClassMethodDescriptorTypec                   *    e Zd Zej                  d   Zy)rf	  r  N)rN   rc   rd   r  r&  r   r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  s    ==4r   r/   r0	  r	  c                   $    e Zd Zej                  Zyrn	  )rN   rc   rd   r   r4   r   r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  r  r   r  r 	  c                   $    e Zd Zej                  Zyrn	  )rN   rc   rd   r   r  r   r$   r   r   r  zATestSignatureObject.test_signature_on_callable_objects.<locals>.C  s    ;;r   r   c                       e Zd ZdZy)rf	  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    1r   )rC  r  r  r  rQ   r  r4   r  r  r   r  r   r   r   )rW   r  r^  r  r  resr   r   s          @r   "test_signature_on_callable_objectsz6TestSignatureObject.test_signature_on_callable_objectsq  s   	 	 	.	 	 	##I/IJdf% K	$ 	 	.	  \\-( 
 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!" + \\-.$ $ SQS#t-v6T^^AC0$..2IJ / \\-.' ' SQSVQ'T^^AC0$..!2MN / \\565D 5 !#q!fa.CSaA,/T#Y*T^^AC0$..2OP 7 \\01$C $ VQsVS$K0&9T^^AC0$..2IJ 2 \\12'C ' TQqT!Wa(T^^AC0$..!2MN 3 \\01' 'A$AJQqT1%T^^A.!" 21C KJ )( *) (' %$ +* /. /. 76 21 32 21s   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~  rC  r  r  r  )rW   r	  r  s      r   test_signature_on_wrapperz-TestSignatureObject.test_signature_on_wrapper  su    	 	 ),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>  s    ar   )))r'   rO  .r  .r  r  ra   s    r   test_signature_on_lambdasz-TestSignatureObject.test_signature_on_lambdas  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  rC  r   rQ   r  rW   r   s     r   test_signature_on_mocksz+TestSignatureObject.test_signature_on_mocks  s     MM MM##%MM##%
D
 4(  W%6%6t%<!=?RS )(

 )(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  rQ   r  r	  s     r   #test_signature_on_noncallable_mocksz7TestSignatureObject.test_signature_on_noncallable_mocks  sy    MM))+MM..0
D 4(&&y1%%d+ 2 )(	

 21 )(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   r0   z8TestSignatureObject.test_signature_equality.<locals>.foo  r@  r   r   c                     y r   r$   r  s     r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar  r@  r   c                     y r   r$   r  s     r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar  r  r   c                     y r   r$   r  s     r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar!  s    dr   rE  c                     y r   r$   r  s     r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar'  s    $r   c                     y r   r$   r'   r   s     r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar-      4r   c                      y r   r$   r  s     r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar3  r   r   c                      y r   r$   r  r'   s     r   rz   z9TestSignatureObject.test_signature_equality.<locals>.spam8  r  r   c                      y r   r$   r  s      r   r0   z8TestSignatureObject.test_signature_equality.<locals>.foo>      Tr   c                      y r   r$   r   r  r'   s      r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar?  r	  r   r.   r  c                      y r   r$   r  s      r   r0   z8TestSignatureObject.test_signature_equality.<locals>.fooE  r  r   c                      y r   r$   r	  s      r   r(   z8TestSignatureObject.test_signature_equality.<locals>.barF  r  r   c                     y r   r$   posr'   r  r   s       r   r0   z8TestSignatureObject.test_signature_equality.<locals>.fooL  r   r   c                     y r   r$   r	  r   r  r'   s       r   r(   z8TestSignatureObject.test_signature_equality.<locals>.barM  r   r   c                     y r   r$   r	  s       r   r0   z8TestSignatureObject.test_signature_equality.<locals>.fooS  s    $r   c                     y r   r$   r	  s       r   r(   z8TestSignatureObject.test_signature_equality.<locals>.barT  r   r   rN  c                     y r   r$   )r	  r'   r  r   r   rN  s         r   r0   z8TestSignatureObject.test_signature_equality.<locals>.fooZ      tr   c                     y r   r$   )r	  r   r  r'   r   rN  s         r   r(   z8TestSignatureObject.test_signature_equality.<locals>.bar[  r	  r   )
r   r  rV   rQ   r  rM   r	   rC  hashr  )rW   r0   r(   rz   s       r   test_signature_equalityz+TestSignatureObject.test_signature_equality  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   r0   z8TestSignatureObject.test_signature_hashable.<locals>.fooe  r  r   r'   r  rz   ro  r  c                      y r   r$   r  s    r   r(   z8TestSignatureObject.test_signature_hashable.<locals>.barn  r  r   c                      y r   r$   r  s    r   r0   z8TestSignatureObject.test_signature_hashable.<locals>.fooq      tr   unhashable typec                      y r   r$   r  s    r   r0   z8TestSignatureObject.test_signature_hashable.<locals>.foou  r  r   )r  r.   )rQ   r  r  r  POSITIONAL_OR_KEYWORDrC  r	  r  r  r  r  )rW   r  r  r0   foo_sig
manual_sigr(   s          r   test_signature_hashablez+TestSignatureObject.test_signature_hashablea  s-   ##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 	b##I/@A""3'( BA	 BA BAs   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   rN  s       r   r0   z3TestSignatureObject.test_signature_str.<locals>.fooz  r  r   z*(a: int = 1, *, b, c=None, **kwargs) -> 42c                     y r   r$   )r'   r  r   r   rN  s        r   r0   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z.(a: int = 1, *args, b, c=None, **kwargs) -> 42c                       y r   r$   r$   r   r   r0   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   rs  c                      y r   r$   r  s    r   r0   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z#(a: list[str]) -> tuple[str, float]r   )Tuplec                      y r   r$   r  s    r   r0   z3TestSignatureObject.test_signature_str.<locals>.foo  r  r   z#(a: list[str]) -> Tuple[str, float]r  )
r   rC  r   rQ   r  r   rn  r  r<	  r	  )rW   r0   r	  s      r   test_signature_strz&TestSignatureObject.test_signature_stry  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  rN  s      r   r  zDTestSignatureObject.test_signature_str_positional_only.<locals>.test      <r   z(a_po, /, *, b, **kwargs)r0   r  z(foo, /)r(   z(foo, /, **bar)z(foo, /, *bar))	rQ   r  r  rC  r   r  r  r  VAR_POSITIONAL)rW   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   r	  )r  r   )rQ   r  r  rc  ro  rj  rC  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   rz   r  )rQ   r  r  r  r  rC  r  )rW   r  r  rq  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>.Spamrt  )	_Spam__p2c                     y r   r$   )rW   	_Spam__p1r	  s      r   r0   zJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.foo  r   r   N)r/   )r	  r.   r	  r/   r  r$   r   r   r^  r	    s    a r   r^  c                       e Zd Zy)ETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNr   r$   r   r   Hamr	    r<  r   r	  ))ru  )r	  r/   r.   r  )r	  rt  r/   r  .)rC  r  r0   )rW   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   rb  r	    r   r   rb  c                     y r   r$   r  s     r   r0   zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo  r  r   r  r.   rQ   r  r	  assertIsInstancerW   rb  r0   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   rb  r	    r   r   rb  c                       e Zd Zy)CTestSignatureObject.test_signature_from_callable_class.<locals>.fooNr   r$   r   r   r0   r	    r   r   r0   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   rb  r	    r   r   rb  )rQ   r  r	  r  r  r	  )rW   rb  rq  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=   rQ   r  r   r6   r  rM   rC  rF   r  r  s        r   3test_signature_definition_order_preserved_on_kwonlyzGTestSignatureObject.test_signature_definition_order_preserved_on_kwonly  s    GIB))"-IY))*AayHOOAQ) J %%&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$   rv  s     r   r   zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>  r!  r   )rQ   r  r6   r  )rW   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	    r   r   r  r0   r  c                      y r   r$   r1  s    r   r  zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func  r	  r   r(   r  c                      y r   r$   r0   r(   s     r   func2zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func2  r`  r   signature_func)r  )r  r  )r   rQ   r  r  r	  r  rC  ro  r6   rk  r  )rW   r  r  r	  r	  sig1r  sig3s           r   0test_signature_annotations_with_local_namespaceszDTestSignatureObject.test_signature_annotations_with_local_namespaces  sO   'c'c'4s4434&00'2C2C2Q2QRN~>%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 ?> S>>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   rk  r   )ro  r6   r  r   r  r  Tr  )r   r   )r   r  r  r  )r  r  r  )r   rQ   r  r  r	  r  r	  r  rC  r  rh  r  r  r   r  r  r   r   r  complexrn  r  r  	NameError)rW   r  rq  parPORKr	  globalnslocalnss           r   test_signature_eval_strz+TestSignatureObject.test_signature_eval_str	  s   ,  66&00'2C2C2Q2QRN~>  "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"3<<$Q 2   "3<<$wO*.Tc:Te<$   "3<<$Y`a*.Te<Te<$w ?> S` 21_ ?>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__y  r  r   c                 &     | j                   |i |S r   r  rM  s      r   r   zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__  r   r   Nr  r$   r   r   r  r
  t  r  r   r  c                       y r   r$   r$   r   r   r0   z?TestSignatureObject.test_signature_none_annotation.<locals>.foo  r  r   r	  )r  rQ   r  r  r	  r  rC  r  )rW   r  r0   r	  s       r   test_signature_none_annotationz2TestSignatureObject.test_signature_none_annotations  s    	2 	2  	sm"&00'2C2C2Q2QRN~>  !4g6G6G6IJ ?> S 	005r: ?>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)rN   rc   rd   r  r$   r   r   r  r
    s    &Mr   r  )r  r4	  .)rD  rC  r  rW   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)rN   rc   rd   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)rN   rc   rd   r   r  r$   r   r   r  z9TestSignatureObject.test_signature_as_callable.<locals>.S  s    " "r   r  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   r  )rW   r   rN  r:  s      r   r  zHTestSignatureObject.test_signature_on_derived_classes.<locals>.B.__new__  s    wt,,r   c                     || _         y r   )r  rJ  s     r   r   zITestSignatureObject.test_signature_on_derived_classes.<locals>.B.__init__  s	    "
r   )rN   rc   rd   r  r   rB  rC  s   @r   rf  r#
    s    -#r   rf  c                        e Zd Z fdZ xZS )ATestSignatureObject.test_signature_on_derived_classes.<locals>.D1c                 $    t         |   |       y r   r  )rW   r  r:  s     r   r   zJTestSignatureObject.test_signature_on_derived_classes.<locals>.D1.__init__  s     'r   r  rC  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,
  )rC  rQ   r  )rW   rf  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$   )rW   r[   s     r   r  zZTestSignatureObject.test_signature_on_non_comparable.<locals>.NoncomparableCallable.__eq__  s	    !r   N)rN   rc   rd   r   r  r$   r   r   NoncomparableCallabler0
    s    r   r3
  r  r  )rW   r3
  s     r    test_signature_on_non_comparablez4TestSignatureObject.test_signature_on_non_comparable  s0    	 	
 	(=(?@	 r   N)>rN   rc   rd   r   r  r  r  r  r  r  r  r  r  r   r   r6  r   r  r  r  r  r  r  r"  r)  r1  r7  rW  rf  rk  r  r  r	  r"	  r5	  r=	  rG	  r\	  r|	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r 
  r	
  r
  r
  r 
  r-
  r4
  r$   r   r   rg  rg  
  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   rg  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  )rQ   r  rM   r  r	  r	  KEYWORD_ONLYr  rC  r   r  )rW   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)Nr0   rO  r  r  z)value '123' is not a valid Parameter.kind123znot a valid parameter namer  r  fromname must be a strzis not a valid parameter name$z.azcannot have default valuesr'   r   z
<Parameterz"a=42")rQ   r  r  rC  r(  r  rc  rk  rj  r  r  r  r  r  r	  r	  r  rM   r  r   rW   r8   s     r   test_signature_parameter_objectz3TestParameterObject.test_signature_parameter_object  s%   eR#*#4#4#D#DF'B'allAGG,!2!2!B!BC##J 1A BeRe<B ##J0LMc(9(9(E(EF N ##J0LMf7+<+<+H+HI N ##I/CDd):):)F)FG E ##J$CEc(9(9(E(EFE ##J$CEd):):)F)FGE ##J0LMc2#*#4#4#@#@B N ##J0LMc2#*#4#4#C#CE N c2#*#4#4#J#JL##J0LMII7,,;;I< N 	Q**<89DG+,GB B NM NM EDE EE E NM NM NMsl   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 )Nr0   r  r   r  )rQ   r  r  rC  r	  r  r  r	  )rW   r  r0   s      r   !test_signature_parameter_hashablez5TestParameterObject.test_signature_parameter_hashable  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 )Nr0   r   r;
  )rQ   r  r8
  rM   rV   r	   )rW   r  r8   s      r   !test_signature_parameter_equalityz5TestParameterObject.test_signature_parameter_equality  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)Nr0   r   r;
  r.   r
  r(   r}  zname is a required attribute)r(  r  z<value <class 'inspect._empty'> is not a valid Parameter.kindr  )rQ   r  r8
  r  r  rC  rk  rj  r(  r  r  r  rc  r  r	  r  )rW   r8   r	  s      r    test_signature_parameter_replacez4TestParameterObject.test_signature_parameter_replace  s   eR#*#4#4#A#AC 	AIIK(AIIK(YY!Y$*ZZ288Z,BZZUZ#%(B"##J$BD*BD ZZUDZ1bjj$'B"ZZUBHHZ5bjj"((+ ZZ)A)AZB"":":;B"##J%DE *BE
 ZZR__Z-Q-D D E E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>
  r  )r  r  rQ   r  r  ra   s    r   (test_signature_parameter_positional_onlyz<TestParameterObject.test_signature_parameter_positional_only@  s<    ##I/CDd):):)J)JK EDDs   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.0r  	implicit0)	r  r  rQ   r  r  r	  rC  r  r(  )rW   r  s     r   !test_signature_parameter_implicitz5TestParameterObject.test_signature_parameter_implicitD  s    ##J%:; d):):)J)JK	; !!w((>>@W%6%6%F%FG[1; ;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)Nrz   r  r(   r  )rQ   r  r8
  r  r  r0   r  r@
  s     r   %test_signature_parameter_immutabilityz9TestParameterObject.test_signature_parameter_immutabilityQ  sk    f7+<+<+I+IJ~.AE / ~.AF /. /. /.s   A;*B;BBN)rN   rc   rd   r9
  rA
  rC
  rE
  rG
  rI
  r   rL
  rN
  r$   r   r   r6
  r6
    s?    F+-ZFF & PL 
2 
2r   r6
  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 # t
        $ r}t        |d }~ww xY wr   )rQ   r  rT  r   rN  r  r  )r  r   rN  rq  rV  r   s         r   r  zTestSignatureBind.call\  s\    %SXXt&v&	(.BII.. 	( a'	(s   A 	AAA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r  r$   r$   r   r   r  z9TestSignatureBind.test_signature_bind_empty.<locals>.testg  s    r   r   too many positional argumentsr.   rO  r  )got an unexpected keyword argument 'spam'rC  r  r  r  r  s     r   test_signature_bind_emptyz+TestSignatureBind.test_signature_bind_emptyf  s    	 	4"-##I/NOIIdA P##I/NOIIdABI' P##BD IIdI#D D	 POOOD D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$   r  s     r   r  z7TestSignatureBind.test_signature_bind_var.<locals>.testu  r	  r   r$   r.   r  r/   r0	  r(   r1  r0   rO  rM  r   rC  r  r  s     r   test_signature_bind_varz)TestSignatureBind.test_signature_bind_vart  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  rJ  r   r.   r/   rt  r  rT
  rV  z missing a required argument: 'b'z missing a required argument: 'a'rO  c                     | ||fS r   r$   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test  rJ  r   )r.   r/   rO  c                     | ||fS r   r$   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test  rJ  r   rv  r	  )rO  r/   rv  r  )rO  r/   rt  rE  )r.   rO  rt  r  rV
  r  s     r   test_signature_bind_just_argsz/TestSignatureBind.test_signature_bind_just_args  sg   	 	4Aq19=##I/NOIIdAq!Q' P ##I$FHIIdAH ##I$FHIIdOH	4Aq19=4A.
;	424kB42.
;42.
;) POH HH H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$   rM  s    r   r  zATestSignatureBind.test_signature_bind_varargs_order.<locals>.test  s    Kr   r$   r.   r/   rt  r  rZ
  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)Nrt  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/   rV  r(  )r.   r/   rt  )rV  r(  )r.   r/   rt  r$   r	  )r/   r.   rt  r$   rE  z multiple values for argument 'c'r  rt  rV
  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)I I Is   ,CCc                     d }| j                  | j                  |      i        | j                  | j                  |dd      ddd       y )Nc                      | S r   r$   )rN  s    r   r  z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.test  s    Mr   r(   r  r0   rz   rZ
  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 )Nrt  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  rj
  )r  r'   r0   rz   )r'   r  r0   rz   )r  r0   rz   rV  )r  r   r0   rz   r1  r0   r(  )r   r'   r  rf
  rZ
  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$   r1  s    r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test      Jr   rT
  r.   r1  c                    |S r   r$   )r'   r0   r(   s      r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test  rq
  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  r0	  )r(   r0   rU
  rO  )r(   r0   rz   r  )r(   rz   z/missing a required keyword-only argument: 'bar'c                    | ||fS r   r$   )r0   r(   bins      r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test  s    S= r   r	  rz   )rz   r0   r(   z"missing a required argument: 'foo')rz   r(   )r(   ru
  rz   )ru
  rz   )r  r  r  rC  r  s     r   test_signature_bind_kwonlyz,TestSignatureBind.test_signature_bind_kwonly  s!   	##I%DFIIdAF 	4Q/3 	##I%IKIIdAK	42F;4QA6?##BD IIdqrI2D
 ##I%DFIIdAq!F ##I%DFIIdAqaI(F ##BD IIdA15I1D
 ##I&78 IIdA8
	!42Q2J?4QA6Ar
C4>Q0	24eBQ0	2##I$HJIIdAI.J 	4qrBQ2 67	9eF FK KD D
F FF FD D
8 8J J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   rN  s        r   r  z=TestSignatureBind.test_signature_bind_arguments.<locals>.test  r  r   rO  rH  rb  rz  r  <   )r  r   r   rN  r'   rO  )r   )rH  )r  rb  rN  )r   r   rN  )rO  rH  )	rQ   r  rT  rC  rn  	argumentsitemsrN  r   rW   r  rq  rV  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)Nrt  r   r  r  c                   | |||||fS r   r$   )r	  b_poc_por0   r(   rN  s         r   r  zCTestSignatureBind.test_signature_bind_positional_only.<locals>.test  s    tS#v55r   r.   r/   rV  r(     r	  rO  )r0   r(   r
  r
  rb     )r
  r0   r(   )r
  z3missing a required positional-only argument: 'a_po')r	  r
  c                
    | |fS r   r$   r
  d_pos     r   without_var_kwargszQTestSignatureBind.test_signature_bind_positional_only.<locals>.without_var_kwargs/  s    :r   zCpositional-only arguments passed as keyword arguments: 'c_po, d_po'rf  r  r
  )rt  r   )rt  rV  rV
  )rW   r  r
  s      r   #test_signature_bind_positional_onlyz5TestSignatureBind.test_signature_bind_positional_only  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/deIIdI+ f	 ##Q
 II(rI;	
 
 fe
 
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'   rW   r  s      r   r  zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.test:  r  r   r.   r/   rt  r  r  )rQ   r  rT  rC  r   r~
  s       r   !test_signature_bind_with_self_argz3TestSignatureBind.test_signature_bind_with_self_arg8  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>.testC  s    d7Nr   z)got an unexpected keyword argument 'args'r   r.   r
  c                  
    | |fS r   r$   r  s     r   r  z?TestSignatureBind.test_signature_bind_vararg_name.<locals>.testL  r	  r   rM  r$   r   rN  )rQ   r  r  r  rT  rC  r  r|
  r~
  s       r   test_signature_bind_vararg_namez1TestSignatureBind.test_signature_bind_vararg_nameB  s    	%##BD HHqqH!D
	 4a02{2CD%XX1X61+'>?D D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$   )rl  r-   s     r   rm  zWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<genexpr>X  s     /hq1uhs   r(  )rP   r1   r$   r   r   make_setzDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_setW  s    /eAh///r   r.   r(  >   r   r.   rV  rK  rR  )	r'  	co_constsr   r	  iterr1   rC  rP   r  )rW   r
  gencomp_codegencomp_funciterators        r    test_signature_bind_implicit_argz2TestSignatureBind.test_signature_bind_implicit_argT  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(   rN  s     r   r0   zATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo`  s    

3''r   pos-onlykeywordr  r(   )r(   r
  )rQ   r  rT  rC  rN  r  r|
  r}
  )rW   r0   rq  results       r   "test_signature_bind_posonly_kwargsz4TestSignatureBind.test_signature_bind_posonly_kwargs_  sb    	( $*)4	(:;)6+;+;+A+A+CDr   N)rN   rc   rd   r   r  rW
  r[
  r`
  rc
  rg
  rk
  rn
  rv
  r
  r
  r
  r
  r   r
  r
  r$   r   r   rP
  rP
  [  so    ( ($3<8>*8((69p,#<J-@$ S SEr   rP
  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   r0   zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.fool  r  r   r.   r	  )rQ   r  rT  r  r  r	  rW   r0   rV  s      r   )test_signature_bound_arguments_unhashablez<TestBoundArguments.test_signature_bound_arguments_unhashablek  sE    s#((+##I/@AH BAAs   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   r0   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foos  r  r   r.   r/   r'   c                      y r   r$   rE  s    r   r(   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.bar  r  r   c                      y r   r$   r  s     r   r0   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foo  r  r   r  r	  )rQ   r  rT  rM   rV   r	   r|
  )	rW   r0   rV  ba2ba3r(   ba4rq  ba1s	            r   'test_signature_bound_arguments_equalityz:TestBoundArguments.test_signature_bound_arguments_equalityr  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   r0   zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foo  r  r   rH  rb  rx
  )r  )
rQ   r  rT  r1   r  r  r  r  r  rC  )rW   r0   rq  rV  r  
ba_pickleds         r   %test_signature_bound_arguments_picklez8TestBoundArguments.test_signature_bound_arguments_pickle  s    :1:2e*:$XXb"X#00145C-#\\&,,r3*?@
  Z0 .- 6--s   (<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   r0   zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foo  r  r   rH  rb  rx
  z <BoundArguments \(a=20,.*\}\}\)>)rQ   r  rT  assertRegexr  rW   r0   rq  rV  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   rp  s        r   r0   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  s    dr   rH  )r'   rH  r	  )r   r$   rp  rO  rb  )r  r{
  )r  rH  )r   )rb  r  c                      y r   r$   r  s     r   r0   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  r	  r   c                       y r   r$   r$   r   r   r0   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  r  r   c                      y r   r$   r  s    r   r0   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo  rF  r   )r'   rz   r  )r   r.   r  )	rQ   r  rT  apply_defaultsrC  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   r0   zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foo  r  r   r.   )rQ   r  rT  rc  r   r|
  r  r
  s      r   -test_signature_bound_arguments_arguments_typez@TestBoundArguments.test_signature_bound_arguments_arguments_type  s7    s#((+d2<<($/r   N)	rN   rc   rd   r
  r
  r
  r
  r
  r
  r$   r   r   r
  r
  j  s#    %>1H(FT0r   r
  c                       e Zd Zd Zd Zy)TestSignaturePrivateHelpersc                 |    t        j                  |      \  }}| j                  ||       | j                  ||       y r   )rQ   "_signature_strip_non_python_syntaxrC  )rW   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   )r
  ra   s    r   &test_signature_strip_non_python_syntaxzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntax  s    %%E=	 	%%&%	
 	%%$$	
 	%%!!	
 	%%1!	
 	%%	
 	%%	r   N)rN   rc   rd   r
  r
  r$   r   r   r
  r
    s    B$r   r
  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  varsr1   slicer  rH  >   maxr  
breakpoint__build_class__>	   r   r  rn  r   r
  r  reversed	enumerate
memoryview)r  )rP   r
  r  r  r}
  callabler  r   rw  r  assertIsNotNonerQ   r  r  __text_signature__)	rW   no_signatureneeds_groups
needs_nullneeds_varargstypes_with_signaturesr2  r(  rZ   s	            r   test_builtins_have_signaturesz6TestSignatureDefinitions.test_builtins_have_signatures  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$   r  s     r   r  zNTestSignatureDefinitions.test_python_function_override_signature.<locals>.func6  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
  rQ   r  r
  rC  r   r  r  )rW   r  rq  s      r   'test_python_function_override_signaturez@TestSignatureDefinitions.test_python_function_override_signature5  sb   	"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)rN   rc   rd   r  r$   r   r   MyBufferedReaderr
  W  s    &r   r
  z&(raw, buffer_size=DEFAULT_BUFFER_SIZE)z(raw, buffer_size=8192))test.typinganndata.ann_module7r
  r
  rC  rQ   r  r   )rW   r
  r
  text_signaturerq  s        r   #test_base_class_have_text_signaturez<TestSignatureDefinitions.test_base_class_have_text_signatureS  sX     	B	'~ 	' (::)QR 01S#<=r   N)rN   rc   rd   r   r   r6  r   r
  r
  r   requires_docstringsr
  r$   r   r   r
  r
    sQ     X__)MO-?O -?^$<   	> !	>r   r
  c                   "    e Zd Zd Zed        Zy)NTimesUnwrappablec                      || _         d | _        y r   )r  _next)rW   r  s     r   r   zNTimesUnwrappable.__init__a  s    
r   c                     | j                   dk  rt        d      | j                  t        | j                   dz
        | _        | j                  S )Nr   zUnwrapped too many timesr.   )r  r   r
  r
  ra   s    r   r~  zNTimesUnwrappable.__wrapped__e  sA    66Q;677::*466A:6DJzzr   N)rN   rc   rd   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>.funcp  r~  r   rH  )r  )r   	lru_cacherc  rQ   unwrap)rW   r  r  s      r   test_unwrap_onezTestUnwrap.test_unwrap_oneo  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>.funcv  r~  r   rO  c                       y r   r$   r$   r   r   r  z/TestUnwrap.test_unwrap_several.<locals>.wrapperz  r   r   )r1   r   r  r  r~  rc  rQ   r
  )rW   r  r  __s       r   test_unwrap_severalzTestUnwrap.test_unwrap_severalu  sd    	)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  rr  s    r   r   z&TestUnwrap.test_stop.<locals>.<lambda>  s    71k3Jr   )stop)r   r  r	  rQ   r
  rc  )rW   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  r  rQ   r
  )rW   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)rN   rc   rd   __hash__r~  r  s   r   r  r    s    HKr   r  )r~  r  rQ   r
  )rW   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  r  rQ   r
  )rW   rZ   s     r   test_recursion_limitzTestUnwrap.test_recursion_limit  sC     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   )rc  rQ   r
  r
  r   r   ra   s    r   test_wrapped_descriptorz"TestUnwrap.test_wrapped_descriptor  s    gnn%679JKgnn\2LAgnn[1;?gnn\+%>?Mgnn[%>?Nr   N)
rN   rc   rd   r
  r  r  r  r  r  r  r$   r   r   r
  r
  m  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   -mrQ   r   r   )	importlibimport_moduler   decoder.  rC  rQ   r  )rW   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   r0   z)TestMain.test_custom_getattr.<locals>.foo  r  r   r   )r  r  r  rQ   r  rj  s     r   test_custom_getattrzTestMain.test_custom_getattr  s7    	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  rQ   z%concurrent.futures:ThreadPoolExecutorr   r   )r   r"  r.  rC  rQ   r  r   )rW   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  rQ   r  z#Can't get info for builtin modules.)r   r"  r.  rC  )rW   ro  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  rQ   z	--detailsr   )r   r!  r   !optim_args_from_interpreter_flagsr   r"  r  __spec__r(  rN   originrg  cached
__cached__rC  )rW   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   )rN   rc   rd   r&  r)  r   r6  r   r+  r-  r5  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)rQ   r  r  rC  r  r.  )rW   r4  r  inspected_srcr  s        r   assertInspectEqualzTestReload.assertInspectEqual  sZ    ))&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_bugr0  r  r  )r   
src_beforer   r!  r:  r  r6  	src_after)rW   r(  r4  r#  r  s        r   test_getsource_reloadz TestReload.test_getsource_reload  s    \4??;|d,,T2F##D&1dC'2c		$..) 3##D&1 <; 32 <;s#   9BB,BB	BB$N)	rN   rc   rd   textwrapdedentr=  r>  r:  r?  r$   r   r   r7  r7    s8      " 	J
   ! 	I
2r   r7  __main__)vr"   r  r  r   r   r  r   rQ   r  r  r2  ra  os.pathr   r  r  r<  r  r   r@  r<	  r   r  r   unittest.mockr   r  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   r   rg  r_  r)  r   r   r   r%   r=   rF   r  r  rL  rH   rt   rw   r{   r"  r~   r   rG  r  r  r  r:  rA  rI  r\  r  r  r-  rE  r   rJ  rU  r^  r`  r  r  rP  rJ  r  r  r  r  r  r  requires_working_socketIsolatedAsyncioTestCaser9  r  rb  r  re  rg  r6
  rP
  r
  r
  r
  r
  r
  r  r7  rN   mainr$   r   r   <module>rO     s        	   	  	 
     
        5 & 8 E ) N  3 5 7 < > C ,,
JcrlG 7
( cmmo,
$	 $M#R#R#T  M"" M0  sAZ sAl	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>W

h// W

tb8,, b5>8,, 5>p hD>** D>N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LE)) LE^d0** d0L-("3"3 -^^>x00 ^>B AO"" AOH/#x   /#d2"" 2< zHMMO Ig  s   *O7 7PP