
    z%iL                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ	 d dlmZ d dlmZ d dlmZmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$ d d	l%m&Z' d d
l%m(Z) d dl%m*Z* d dl%m+Z+ d dl%m,Z, d dl%m-Z- d dl.m/Z/ e'j`                  Z1e1je                  d      re1dd Z1 ee1      Z1d Z3 e'jh                         Z5d Z6d Z7d Z8djs                         Z: G d dejv                        Z<d Z=d Z>d Z?ej                  d        ZA G d de<      ZB G d d e<      ZC G d! d"ejv                        ZD G d# d$      ZE G d% d&eD      ZF G d' d(ejv                        ZG G d) d*eD      ZH G d+ d,eD      ZI G d- d.eD      ZJ G d/ d0eD      ZK G d1 d2eD      ZL G d3 d4eD      ZM G d5 d6eD      ZN G d7 d8eO      ZP G d9 d:eO      ZQd; ZR G d< d=ejv                        ZS G d> d?ejv                        ZT G d@ dAejv                        ZU eO       ZV G dB dCejv                        ZW G dD dEejv                        ZX G dF dGeX      ZY G dH dIeY      ZZ G dJ dKejv                        Z[ G dL dMejv                        Z\ G dN dOejv                        Z] e*j                          G dP dQej                               Z` G dR dSej                        Zb G dT dUej                        Zd G dV dWejv                        Ze G dX dYejv                        Zf G dZ d[ejv                        Zg G d\ d]ejv                        Zh G d^ d_ejv                        Zi G d` daejv                        Zj G db dc      Zk G dd deejv                        Zl G df dgejv                        Zm G dh diejv                        Zneodjk(  r ej                          yy# e$ r dZY w xY w)k    Nnormcase)ThreadPoolExecutor)cpython_only)MISSING_C_DOCSTRINGS	ALWAYS_EQ)DirsOnSysPath)TESTFN)assert_python_okassert_python_failure)inspect_fodder)inspect_fodder2)support)inspect_stock_annotations)inspect_stringized_annotations) inspect_stringized_annotations_2)_ready_to_import)coc                      t        |       f|z   S Nr   )filenameargss     E/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_inspect.pyreviser   ?   s    X 4''    c                  P    t         j                  rt        j                  d        y y r   )r   has_socket_supportasyncioset_event_loop_policy r   r   tearDownModuler#   E   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)N)abarr   deltaephraimmagicalyoyoz      zdef foo(*, z, z): passfoo)rangelenappendjoinexec)
parametersipbitjfn_textsymbolss          r   5signatures_with_lexicographic_keyword_only_parametersr;   J   s      OJ1aZ() 	s:' 	(AC1H~A'	(  $))A,.:Wgw'en	s   ABABc                      y r   r"   )throwoutthebabywith_the_	bathwaters          r   #unsorted_keyword_only_parameters_fnrD   \   s    r   z'throw out the baby with_ the_ bathwaterc                   r   e Zd Z eej
                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                   ej"                  ej$                  ej&                  g      Zd Zd Zy)
IsTestBasec           	         t        |      }| j                   ||      |j                  d|d       | j                  t	        |g      z
  D ]x  }|t
        j                  k(  s&|t
        j                  k(  s|t
        j                  k(  r|t
        j                  k(  rP| j                   ||      d|j                  d|d       z y )N()znot )eval
assertTrue__name__
predicatessetinspectisgeneratorfunctionisasyncgenfunctioniscoroutinefunction
isfunctionassertFalse)self	predicateexpobjothers        r   istestzIsTestBase.istestk   s    3i	#I4F4F(LM__sI;'77 	OEW888G666G777***U3Z)MN	Or   c                 <    t        j                  | t        d       y )N)modulesbyfile)not_exported)r   check__all__rO   rU   s    r   test__all__zIsTestBase.test__all__w   s    T79KLr   N)rL   
__module____qualname__rN   rO   	isbuiltinisclassiscodeisframerS   ismethodismoduleistracebackisgeneratorrP   iscoroutinerR   
isasyncgenrQ   ismethodwrapperrM   rZ   r`   r"   r   r   rF   rF   b   s    g'''..oow'9'97;K;K&&(;(;))7+F+F))7+F+F(('*D*D--/ 0J
OMr   rF   c              #   4   K   t        d      D ]  }|  y wNr-   r/   rU   r5   s     r   generator_function_examplerr   z   s     1X    c                F   K   t        d      2 3 d {   }| 7 
6 y wro   rp   rq   s     r    async_generator_function_exampleru   ~   s&     8  a8s   !!!c                    K   ywNspamr"   r_   s    r   coroutine_function_examplery      s	        c              #      K   d  ywrw   r"   r_   s    r   gen_coroutine_function_exampler|      s     	   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestPredicatesc           	         | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  d       	 ddz   d a| j                  t        j                   d
       | j                  t        j                   d       | j                  t        j"                  d       | j                  t        j"                  d       | j                  t        j$                  d       | j                  t        j&                  d       | j                  t        j(                  d       | j                  t        j*                  d       | j                  t        j,                  d       | j                  t        j.                  d       t1        j2                         5  t1        j4                  d       | j                  t        j6                  d       | j                  t        j8                  d       d d d        t        t        d      r!| j                  t        j:                  d       n<| j                  t        j:                  t<        j>                  j@                               | j                  t        jB                  d       | j                  t        jB                  d       | j                  t        jB                  d       | j                  t        jB                  t                     | j                  t        jB                  tD                     | j                  t        jB                  t        ddi                    y # t        $ r}|j
                  a| j                  t        j                  d       | j                  t        j                  d       t        t        d      r!| j                  t        j                  d	       nE| j                  t        j                  t        t        j                        j                               Y d }~d }~ww xY w# d aw xY w# 1 sw Y   7xY w)Nzsys.exitz	[].appendzmod.spam.__code__r,   r   ztb.tb_frametbGetSetDescriptorTypeztype(tb.tb_frame).f_localszmod.spamzmod.StupidGit.abusez	git.arguezmod.custom_methodmodz'collections.defaultdict.default_factoryz(x for x in range(2))rr   z#async_generator_function_example(1)ru   ignorezcoroutine_function_example(1)ry   MemberDescriptorTypezdatetime.timedelta.dayszobject().__str__zobject().__eq__zobject().__repr__AnyClassr"   )#rZ   rO   rc   re   	Exception__traceback__r   rf   ri   hasattrtypesisgetsetdescriptorrT   typetb_framef_localsrS   rg   rh   isdatadescriptorrj   rP   rl   rQ   warningscatch_warningssimplefilterrk   rR   ismemberdescriptordatetime	timedeltadaysrm   intrU   es     r   test_excluding_predicatesz(TestPredicates.test_excluding_predicates   s   G%%z2G%%{3GNN$78	aC BG&&
3G&&(=>G$$k2G$$&9:G$$e,G,,.WXG'')@AG//1MNG&&9	;G..6	8 $$& 	S!!(+KK++-LMKK335QR	S
 501KK224MNW778J8J8O8OPQG++-?@G++->?G++-@A0067005600j"b1IJKO  	YBKK7KK++T2u45G668:   !;!;D<M<V<V!WX	Y B	S 	Ss8   "M( =AQ(	P>1CP93Q 9P>>Q QQc           	         t        d      }t        d      }t        d      }| j                  t	        j
                  t                     | j                  t	        j
                  t        j                  t        j                  t                                 | j                  t	        j                  |             | j                  t	        j                  t                     | j                  t	        j                  t        j                  t        j                  t                                 | j                  t	        j                  |             d t        j                  fd       }| j                  t	        j
                  |             | j                  t	        j
                  t	        j                  fd                    G d d      }| j                  t	        j
                  |             | j                  t	        j
                   |                    | j                  t	        j
                  t	        j                   |                           G d d      }| j                  t	        j
                  |             | j                  t	        j
                   |                    | j                  t	        j
                  t	        j                   |                           G d	 d
      }| j                  t	        j
                  |j                               | j                  t	        j
                  |j                               | j                  t	        j
                  t        j                   j#                                      | j                  t	        j
                  t        j                   j%                                      | j                  t	        j
                  t                     | j                  t	        j
                  t        j                  t        j                  t                                 | j                  t	        j                  |             | j                  t	        j                  t        j                   j#                                      | j                  t	        j                  t        j                   j%                                      | j                  t	        j                  t                     | j                  t	        j                  t        j                  t        j                  t                                 | j                  t	        j                  |             | j                  t	        j&                  t        j                   j#                                      | j                  t	        j&                  t        j                   j%                                      | j                  t	        j&                  t                     | j                  t	        j&                  t                      | j                  t	        j&                  t        j                  t        j                  t                                  | j                  t	        j(                  |             |j+                          |j+                          y )Nr,   c                     K   y wr   r"   r"   r   r   _fn3z-TestPredicates.test_iscoroutine.<locals>._fn3   s	     rz   c                               S r   r"   r   s   r   fn3z,TestPredicates.test_iscoroutine.<locals>.fn3   s
    6Mr   c                               S r   r"   r   s   r   <lambda>z1TestPredicates.test_iscoroutine.<locals>.<lambda>   s	    df r   c                       e Zd Zd Zy)+TestPredicates.test_iscoroutine.<locals>.Clc                    K   y wr   r"   r_   s    r   __call__z4TestPredicates.test_iscoroutine.<locals>.Cl.__call__   s	     rz   NrL   ra   rb   r   r"   r   r   Clr          r   r   c                   0    e Zd Zej                  d        Zy),TestPredicates.test_iscoroutine.<locals>.Cl2c                      y r   r"   r_   s    r   r   z5TestPredicates.test_iscoroutine.<locals>.Cl2.__call__       r   N)rL   ra   rb   rO   markcoroutinefunctionr   r"   r   r   Cl2r      s    ** +r   r   c                   h    e Zd Zej                  ed               Zej                  ed               Zy),TestPredicates.test_iscoroutine.<locals>.Cl3c                      y r   r"   clss    r   do_something_classyz@TestPredicates.test_iscoroutine.<locals>.Cl3.do_something_classy        r   c                       y r   r"   r"   r   r   do_something_staticz@TestPredicates.test_iscoroutine.<locals>.Cl3.do_something_static   r   r   N)	rL   ra   rb   rO   r   classmethodr   staticmethodr   r"   r   r   Cl3r      sD    **  + **  +r   r   )ru   r|   ry   rT   rO   rR   	functoolspartialrk   rK   rP   rj   r   r   r   unittestmockMock	AsyncMockrQ   rl   close)	rU   async_gen_corogen_corocoror   r   r   r   r   s	           @r   test_iscoroutinezTestPredicates.test_iscoroutine   s   9!<1!4)!,''(FG	I''!!)"3"32#4 56	7 	,,X67''(FG	I''!!)"3"32#4 56	7 	++H56	 
	&	&	 
'	 	33C89''--n=	
	 	 	44R8944RT:;33))"$/
 		 	
 	44S9:44SU;<33))#%0
 			 		 	33C4K4KLM33C4K4KLM''(:(:(<=	?''(?(?(AB	D''(BC	E''!!)"3"3.#0 12	3 	++D12''(:(:(<=	?''(?(?(AB	D''(BC	E''!!)"3"3.#0 12	3 	,,T23&&x}}'9'9';<	>&&x}}'>'>'@A	C&&'AB	D&&'GH	J&&!!)"3"34#6 78	9 	**>:;

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

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

indented

docstring.$Another

docstring

containing

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

zdef f(): passr3   rt  r,   r-   zlineno is out of bounds)r0   rO   r  r   r  rU  rJ   r1  r  co_firstlinenoassertRaisesRegexr  r  )rU   mod_lensrcr  ru  lfuncs          r   )test_findsource_with_out_of_bounds_linenoz8TestBuggyCases.test_findsource_with_out_of_bounds_linenov  s    g'',-/1S#,,/21RAv55q7{C##G-FG 	%t$	% 	% 	%s   B==Cc                 Z    | j                  t        j                  j                  dd       y )Nv   w   )r  r  ClassWithMethodmethodr_   s    r   test_getsource_on_methodz'TestBuggyCases.test_getsource_on_method  s     t33::CEr   c                 Z    | j                  t        j                  j                  dd       y )N      )r  r  cls135func136r_   s    r   test_nested_funczTestBuggyCases.test_nested_func  s    t{{22C=r   c                 F    | j                  t        j                  dd       y )N      )r  r  cls149r_   s    r   4test_class_definition_in_multiline_string_definitionzCTestBuggyCases.test_class_definition_in_multiline_string_definition      t{{C5r   c                 F    | j                  t        j                  dd       y )N      )r  r  r  r_   s    r   *test_class_definition_in_multiline_commentz9TestBuggyCases.test_class_definition_in_multiline_comment  r  r   c                 Z    | j                  t        j                  j                  dd       y )N      )r  r  cls173cls175r_   s    r   ,test_nested_class_definition_indented_stringz;TestBuggyCases.test_nested_class_definition_indented_string  s    t{{113<r   c                     | j                  t        j                  dd       | j                  t        j                  j                  dd       y )N         )r  r  cls183cls185r_   s    r   test_nested_class_definitionz+TestBuggyCases.test_nested_class_definition  4    t{{C5t{{113<r   c                     | j                  t        j                  dd       | j                  t        j                  j                  dd       y )N         )r  r  cls196cls200r_   s    r   test_class_decoratorz#TestBuggyCases.test_class_decorator  r  r   c                     | j                  t        j                  dd       | j                  t        j                  j                  dd       y )N         )r  r  cls238cls239r_   s    r   test_class_inside_conditionalz,TestBuggyCases.test_class_inside_conditional  r  r   c                    | j                  t        j                  dd       | j                  t        j                  j                  dd       | j                  t        j                  j                  j                  dd       | j                  t        j                  j
                  dd       | j                  t        j                  j
                  j                  dd       y )N                     )r  r  cls203cls204cls205cls207r_   s    r   test_multiple_children_classesz-TestBuggyCases.test_multiple_children_classes  s    t{{C5t{{113<t{{1188#sCt{{113<t{{1188#sCr   c                     | j                  t        j                         dd       | j                  t        j                  dd       | j                  t        j                         j	                         dd       y )N                  )r  r  func212cls213func219r_   s    r   ,test_nested_class_definition_inside_functionz;TestBuggyCases.test_nested_class_definition_inside_function  sQ    t||~sC8t{{C5t{{}446SAr   zsocket.accept is brokenc                 v   dd l }| j                  |j                  d        | j                   |j                  t        j                               dd       | j                  t
        j                  dd       | j                   |j                  t        j                         j                               dd       y )Nr                     )	r    
addCleanupr!   r  runr  func225cls226func232)rU   r    s     r   2test_nested_class_definition_inside_async_functionzATestBuggyCases.test_nested_class_definition_inside_async_function  s    
 	55t<{w{{4<<>:CEt{{C5{w{{4;;=+@+@+BCS#Nr   N)$rL   ra   rb   r  r  r  r  r  r  r  r  r  r   r$  r   r  rU  endswithr  r  r  r  r  r  r  r  r  r  r  r  r  r
  r   is_emscriptenis_wasir  r"   r   r   r  r  C  s    L:>=4:4E
 X__j99 F!,!5!5!>!>u!ECEDED
0>	%F>66====DB
 X__0!O	Or   r  c                   *     e Zd Z fdZd Zd Z xZS )	TestNoEOLc                    t         dz   | _        t        j                  | j                         t	        t        j
                  j                  | j                  dt        j                  z        dd      5 }|j                  d       d d d        t        | j                        5  dd l
}d d d        | _        t        | 5          y # 1 sw Y   AxY w# 1 sw Y   +xY w)N_dirzinspect_fodder3%spywr|  r}  zclass X:
    pass # No EOLr   )r
   tempdirosmkdirr  pathr2   extsepwriter	   inspect_fodder3r  superr  )rU   rt  mod3	__class__s      r   r  zTestNoEOL.setUp  s    
"'',,t||-BRYY-NO) 	3,-GG12	3 4<<( 	+*	+ 	3 	3	+ 	+s   6C%CCCc                 B    t        j                  | j                         y r   )shutilrmtreer   r_   s    r   tearDownzTestNoEOL.tearDown  s    dll#r   c                 R    | j                  | j                  j                  dd       y )Nr,   r-   )r  r  Xr_   s    r   
test_classzTestNoEOL.test_class  s     t0022Aq9r   )rL   ra   rb   r  r-  r0  __classcell__r)  s   @r   r  r    s    	$:r   r  c                       e Zd ZeZd Zy)TestComplexDecoratorc                 R    | j                  | j                  j                  dd       y )Ni  i  )r  r  complex_decoratedr_   s    r   test_parens_in_decoratorz-TestComplexDecorator.test_parens_in_decorator  s     t00BBCMr   N)rL   ra   rb   r  r  r7  r"   r   r   r4  r4    s    LNr   r4  c                        e Zd Z	 d Zd Zd Zy)_BrokenDataDescriptorc                      t        d      Nzbroken data descriptorr  r   s    r   __get__z_BrokenDataDescriptor.__get__      566r   c                      t         r   )RuntimeErrorr<  s    r   __set__z_BrokenDataDescriptor.__set__  s    r   c                      t        d      r;  r  r<  s    r   r   z!_BrokenDataDescriptor.__getattr__  r>  r   N)rL   ra   rb   r=  rA  r   r"   r   r   r9  r9    s    77r   r9  c                       e Zd Z	 d Zd Zy)_BrokenMethodDescriptorc                      t        d      Nzbroken method descriptorr  r<  s    r   r=  z_BrokenMethodDescriptor.__get__      788r   c                      t        d      rF  r  r<  s    r   r   z#_BrokenMethodDescriptor.__getattr__  rG  r   N)rL   ra   rb   r=  r   r"   r   r   rD  rD    s    99r   rD  c                 X    t        j                  |       D cg c]  }|d d 	 c}S c c}w Nrb  )rO   classify_class_attrs)r   ts     r   attrs_wo_objsrM    s'    "77<=aAbqE===s   'c                   J   e Zd Zd Zdddg g di fdZd Zd Zd Zd Z e	j                  ed      d	        Ze e	j                  ed      d
               Ze e	j                  ed      d               Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestClassesAndFunctionsc                      G d dt               } G d d|      } G d d|      } G d d||      }||||t         f}t        j                  |      }| j                  ||       y )	Nc                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.ANr   r"   r   r   ArR    r   r   rS  c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.BNr   r"   r   r   BrU    r   r   rV  c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.CNr   r"   r   r   r   rX    r   r   r   c                       e Zd Zy)4TestClassesAndFunctions.test_newstyle_mro.<locals>.DNr   r"   r   r   DrZ    r   r   r[  )r   rO   getmror1  )rU   rS  rV  r   r[  expectedgots          r   test_newstyle_mroz)TestClassesAndFunctions.test_newstyle_mro  sR      1q!Q'nnQ3'r   Nc
                 :   t        j                  |      \  }
}}}}}}| j                  |
|       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||	       y r   )rO   getfullargspecr1  )rU   routineargs_e	varargs_evarkw_e
defaults_eposonlyargs_ekwonlyargs_ekwonlydefaults_eann_er   rn  ro  defaults
kwonlyargskwonlydefaultsanns                    r   assertFullArgSpecEqualsz/TestClassesAndFunctions.assertFullArgSpecEquals  s     ""7+ 	Hguh
NCv&),(:.\2)9:e$r   c           	         | j                  t        j                  g ddgddi       | j                  t        j                  dgdt        i       | j                  t        j
                  g dg       | j                  t        j                  g dd	d
g       | j                  t        j                  g dddd	d
g       | j                  t        j                  g ddd	d
gddd       y )Narg1arg2r,   )rd  rh  ri  )rj  arg)rh  r%   r   r   rs  r   rt  r   r<  )rd  re  rh  r,   r-   rb  rD  r  )r   rt  )rf  rh  ri  )	ro  r  	keyworded	annotatedr   keyword_only_argall_markers all_markers_with_args_and_kwargsall_markers_with_defaultsr_   s    r   test_getfullargspecz+TestClassesAndFunctions.test_getfullargspec  s    $$T^^R639(7=aj 	% 	B 	$$T^^fX,2T? 	% 	<$$T%:%:B38' 	% 	; 	$$T%5%57K36* 	% 	> 	$$T%J%J%9/5-536*	 	% 	> 	$$T%C%CEY0736*<=A6F 	% 	Hr   c                     t        j                  t        j                        d        }| j	                  |ddg       | j	                  t        j
                  |      ddg       y )Nc                      y r   r"   r  rh  s     r   hamzETestClassesAndFunctions.test_argspec_api_ignores_wrapped.<locals>.ham      r   r  rh  )r   wrapsr   rx   ro  r   )rU   r  s     r    test_argspec_api_ignores_wrappedz8TestClassesAndFunctions.test_argspec_api_ignores_wrapped  sY    		"	 
#	 	$$S3*5$$Y%6%6s%;&)3Z	1r   c                     d }t        j                  dt         j                  j                        }t        j                  |f      |_        | j                  |dg       y )Nc                       y r   r"   r"   r   r   testzHTestClassesAndFunctions.test_getfullargspec_signature_attr.<locals>.test(      r   rx   r4   )rO   	ParameterPOSITIONAL_ONLY	Signature__signature__ro  )rU   r  
spam_params      r   "test_getfullargspec_signature_attrz:TestClassesAndFunctions.test_getfullargspec_signature_attr'  sL    	&&vw/@/@/P/PQ
$..:-H$$TF84r   c                     dd}t        j                  |      }| j                  |j                  |j                         d }t        j                  |      }| j                  |j                  |j                         y )Nc                      y r   r"   r%   s    r   r  zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.test0  r   r   c                       y r   r"   r"   r   r   r  zITestClassesAndFunctions.test_getfullargspec_signature_annos.<locals>.test4  r   r   )r%   rx   returnr  )rO   ra  r1  __annotations__annotations)rU   r  specs      r   #test_getfullargspec_signature_annosz;TestClassesAndFunctions.test_getfullargspec_signature_annos/  s`    )%%d+--t/?/?@%%d+--t/?/?@r   6Signature information for builtins requires docstringsc                 4   | j                  t        j                  j                  ddg       | j                  t        j                  t	        j
                               j                  ddg       | j                  t        j                  dgddgd dd       y )	NrU   rX   r#  dir_fdfollow_symlinksT)r  r  )rc  rh  ri  )ro  _picklePicklerdumpioBytesIOr!  statr_   s    r   #test_getfullargspec_builtin_methodsz;TestClassesAndFunctions.test_getfullargspec_builtin_methods8  s}     	$$W__%9%9FE?K$$W__RZZ\%B%G%G&RWY$$WWH#%67)-$G	 	% 	Ir   c                     dd l }|j                  }t        j                  |      }| j	                  |j
                  d   d       y )Nr   avocado)	_testcapi&docstring_with_signature_with_defaultsrO   ra  r1  rk  )rU   r  builtinr  s       r    test_getfullargspec_builtin_funcz8TestClassesAndFunctions.test_getfullargspec_builtin_funcE  s;     	BB%%g.q)95r   c                     dd l }|j                  }| j                  t              5  t	        j
                  |       d d d        y # 1 sw Y   y xY wNr   )r  docstring_no_signaturer  r  rO   ra  )rU   r  r  s      r   -test_getfullargspec_builtin_func_no_signaturezETestClassesAndFunctions.test_getfullargspec_builtin_func_no_signatureN  sC     	22y) 	,""7+	, 	, 	,s   AAc                 Z   t               D ]Z  }t        j                  |      }t        |j                        }t        |      }| j                  |       | j                  ||       \ t        j                  t              }t        |j                        }| j                  |t               y r   )
r;   rO   ra  r   rl  sortedrK   r1  rD    unsorted_keyword_only_parametersrU   r  	signaturer  sorted_ls        r   8test_getfullargspec_definition_order_preserved_on_kwonlyzPTestClassesAndFunctions.test_getfullargspec_definition_order_preserved_on_kwonlyW  s    GI 	*B..r2IY))*AayHOOAQ)	* **+NO	%%&<=r   c                     G d dt               }t        |      }| j                  ddt         f|d       | j                  ddt         f|d       | j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d|z         | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d        G d d|      }t        |      }| j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d        G d d|      }t        |      }| j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d        G d  d!||      }t        |      }| j                  d	d|f|d
       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       | j                  dd|f|d       y )"Nc                   z    e Zd Zd Z ee      Zd Z ee      Zd Z ee      Z	d Z
d ZdZ e       Z e       Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Ac                       y r   r"   r"   r   r   sz;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.se  r   r   c                      y r   r"   r   s    r   r   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.ch  r   r   c                      y r   r"   r_   s    r   getpz>TestClassesAndFunctions.test_classify_newstyle.<locals>.A.getpk  r   r   c                      y r   r"   r_   s    r   r  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.A.mn  r   r   c                      y r   r"   r_   s    r   m1z<TestClassesAndFunctions.test_classify_newstyle.<locals>.A.m1p  r   r   1N)rL   ra   rb   r  r   r   r   r  r  r6   r  r  datablobr9  ddrD  mdr"   r   r   rS  r  c  sA    QAAA AH&(B(*Br   rS  __new__static methodmissing __new__r   r  zmissing __init__r  zmissing static methodr   class methodmissing class methodr6   r  zmissing propertyr  zmissing plain method: %rr  missing plain methodr  datazmissing datar  zmissing method descriptorr  zmissing data descriptorc                       e Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Bc                      y r   r"   r_   s    r   r  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.B.m  r   r   N)rL   ra   rb   r  r"   r   r   rV  r    s    r   rV  c                       e Zd Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Cc                      y r   r"   r_   s    r   r  z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.m  r   r   c                      y r   r"   r_   s    r   r   z;TestClassesAndFunctions.test_classify_newstyle.<locals>.C.c  r   r   N)rL   ra   rb   r  r   r"   r   r   r   r    s    r   r   c                       e Zd Zd Zy)9TestClassesAndFunctions.test_classify_newstyle.<locals>.Dc                      y r   r"   r_   s    r   r  z<TestClassesAndFunctions.test_classify_newstyle.<locals>.D.m1  r   r   N)rL   ra   rb   r  r"   r   r   r[  r    s    r   r[  )r   rM  r  )rU   rS  attrsrV  r   r[  s         r   test_classify_newstylez.TestClassesAndFunctions.test_classify_newstyleb  s   	+ 	+( a y/6:E'	)z8V4e=OPsOQ/8OPsNA.7MNsJ*E3EFsHa(%058	:tXq)52HIz61-unEtXq)52MNtVQ'0IJ	 	 a sOQ/8OPsNA.7MNsJ*E3EFsHa(%1GHtXq)52HIz61-unEtXq)52MNtVQ'0IJ	 	
 a sOQ/8OPsHa(%1GHsJ*E3EFsHa(%1GHtXq)52HIz61-unEtXq)52MNtVQ'0IJ	1 	 a sOQ/8OPsHa(%1GHsJ*E3EFsHa(%1GHtXq)52HIz61-unEtXq)52MNtVQ'0IJr   c                    t        t              D ]8  }t        t        |      }t        |t              s$t        j                  |       : t        t              }| j                  ddt        f|d       | j                  ddt        f|d       | j                  ddt        f|d	       | j                  d
dt        f|d	       | j                  ddt        f|d	       y )Nr  r  r  r  r  r  r  r  r  __add____and__)dir__builtins__getattr
isinstancer   rO   rK  rM  boolr  r   )rU   r  r  r  s       r   test_classify_builtin_typesz3TestClassesAndFunctions.test_classify_builtin_types  s     % 	6DlD1G'4(,,W5	6
 d#y/48%'	)|^S95,	.z8S15,	.y(C0%,	.y(D15,	.r   c                 H    G d dt               } G d d|      }t        j                  dd||j                  d         }| j	                  |t        j
                  |             t        j                  dd|d      }| j	                  |t        j
                  |             y )	Nc                        e Zd Z fdZ xZS )ITestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Metac                 .    |dk(  ryt         |   |      S )Nr  rx   r'  r   rU   r  r)  s     r   r   zUTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.Meta.__getattr__  s    5=!w*400r   rL   ra   rb   r   r1  r2  s   @r   Metar        1 1r   r  c                   0    e Zd Zej                  d        Zy)GTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VAc                      y)NrA  r"   r_   s    r   r  zKTestClassesAndFunctions.test_classify_DynamicClassAttribute.<locals>.VA.ham      r   N)rL   ra   rb   r   DynamicClassAttributer  r"   r   r   VAr        (( )r   r  r  r  r  rx   )r   rO   	Attributer  r  rK  )rU   r  r  should_find_dcashould_find_gas        r   #test_classify_DynamicClassAttributez;TestClassesAndFunctions.test_classify_DynamicClassAttribute  s    	14 	1
	4 	 "++E62r{{5?QRow'C'CB'GH **5&$Gng&B&B2&FGr   c                      G fddt                G fddt               }t        j                  dd||j                        }| j	                  |t        j
                  |             y )Nc                       e Zd Z fdZd Zy)DTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBoolc                             S r   r"   )rU   rY   NoBools     r   __eq__zKTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__eq__  s
    xr   c                     t        d      )Nz,This object does not specify a boolean valueNotImplementedErrorr_   s    r   __bool__zMTestClassesAndFunctions.test_classify_overrides_bool.<locals>.NoBool.__bool__  s    )BD Dr   N)rL   ra   rb   r  r  r  s   r   r  r    s     Dr   r  c                       e Zd Z W         Zy)CTestClassesAndFunctions.test_classify_overrides_bool.<locals>.HasNBN)rL   ra   rb   r  r  s   r   HasNBr    s
    Br   r   r  r  )r   rO   r  r  r  rK  )rU   r   should_find_attrr  s      @r   test_classify_overrides_boolz4TestClassesAndFunctions.test_classify_overrides_bool  sT    	DV 	D	F 	 #,,T65%((K&(D(DU(KLr   c                      G d dt               } G d d|      }t        j                  dd|d      }| j                  |t        j                  |             y )	Nc                       e Zd ZdZd Zy)MTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Metaslapc                 
    g dS )N)r)  ra   rL   fishr"   r_   s    r   __dir__zUTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.Meta.__dir__      FFr   N)rL   ra   rb   r  r	  r"   r   r   r  r    s    DGr   r  c                       e Zd Zy)NTestClassesAndFunctions.test_classify_metaclass_class_attribute.<locals>.ClassNr   r"   r   r   Classr    r*  r   r  r  r  r  r  r   rO   r  r  rK  rU   r  r  should_finds       r   'test_classify_metaclass_class_attributez?TestClassesAndFunctions.test_classify_metaclass_class_attribute  sK    	G4 	G	d 	''fEk7#?#?#FGr   c                      G d dt               } G d d|      }t        j                  dd|d      }| j                  |t        j                  |             y )	Nc                   $     e Zd Zd Z fdZ xZS )DTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Metac                 
    g dS )N)r)  ra   rL   BOOMr"   r   s    r   r	  zLTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__dir__  r
  r   c                 .    |dk(  ryt         |   |      S )Nr  r   )r'  _Meta__getattrr  s     r   r   zPTestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.Meta.__getattr__  s    &=w(..r   rL   ra   rb   r	  r   r1  r2  s   @r   r  r    s    G/ /r   r  c                       e Zd Zy)ETestClassesAndFunctions.test_classify_VirtualAttribute.<locals>.ClassNr   r"   r   r   r  r    r*  r   r  r  r  r  r   r  r  s       r   test_classify_VirtualAttributez6TestClassesAndFunctions.test_classify_VirtualAttribute  sI    	/4 	/	d 	''bAk7#?#?#FGr   c                   	
  G d dt               	 G d dt               
 G 	
fdd	
      } G d d		      } G d
 d||	      }t        j                  dd	d      }t        j                  dd
d      }t        j                  dd|d      }t        j                  |      }|||fD ]  }| j	                  ||        y )Nc                   $     e Zd Zd Z fdZ xZS )STestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1c                 
    g dS )N)r)  ra   rL   oner"   r   s    r   r	  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__dir__      EEr   c                 .    |dk(  ryt         |   |      S )Nr!  r,   r  r  s     r   r   z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta1.__getattr__       %<w*400r   r  r2  s   @r   Meta1r        F1 1r   r%  c                   $     e Zd Zd Z fdZ xZS )STestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2c                 
    g dS )N)r)  ra   rL   twor"   r   s    r   r	  z[TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__dir__  r"  r   c                 .    |dk(  ryt         |   |      S )Nr*  r-   r  r  s     r   r   z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta2.__getattr__  r$  r   r  r2  s   @r   Meta2r(    r&  r   r,  c                   ,     e Zd ZfdZ fdZ xZS )STestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3c           
          t        t        t        g dj                  |       z   j                  |       z                     S )N)r)  ra   rL   three)r   r  rN   r	  )r   r%  r,  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 )Nr0  rb  r  r  s     r   r   z_TestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Meta3.__getattr__  s    '>w*400r   r  )r)  r%  r,  s   @r   Meta3r.    s    ?1 1r   r2  c                       e Zd Zy)TTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class1Nr   r"   r   r   Class1r4    r*  r   r5  r  c                       e Zd Zy)TTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes.<locals>.Class2Nr   r"   r   r   Class2r7    r*  r   r8  r!  r  r,   r*  r-   r0  rb  )r   rO   r  rK  r  )rU   r2  r5  r8  should_find1should_find2should_find3ccasfr%  r,  s            @@r   ,test_classify_VirtualAttribute_multi_classeszDTestClassesAndFunctions.test_classify_VirtualAttribute_multi_classes  s    	1D 	1	1D 	1	1E5 	1	u 		Vu 	 ((qA((qA((&%C**62|< 	#BMM"c"	#r   c                      G d dt               } G d d|      }t        j                  |      D cg c]  }|d   	 }}| j                  d|       y c c}w )Nc                       e Zd Zd Zy)KTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.Mc                 
    g dS N)r)  rL   missingr"   r   s    r   r	  zSTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.M.__dir__!      ;;r   NrL   ra   rb   r	  r"   r   r   MrA         <r   rG  c                       e Zd Zy)KTestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir.<locals>.CNr   r"   r   r   r   rJ  #  r*  r   r   r  r   rD  )r   rO   rK  r  rU   rG  r   r%   r  s        r   (test_classify_class_attrs_with_buggy_dirz@TestClassesAndFunctions.test_classify_class_attrs_with_buggy_dir  sR    	< 	<	! 	&;;A>?!1??E* @   Ac                 F    G d dt               }d } |t        j                        } |t        j                        }| j	                  t        j
                  ||      d|j                  d   fg       | j	                  t        j
                  ||      d|j                  d   fg        G d d|      }| j	                  t        j
                  ||      d|j                  d   fg       | j	                  t        j
                  ||      d|j                  d   fg       y )Nc                   (    e Zd Z e       Z e       Zy)>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.AN)rL   ra   rb   r9  r  rD  r  r"   r   r   rS  rP  )  s    &(B(*Br   rS  c                 4      G d dt                fd}|S )Nc                       e Zd Zy)XTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.EmptyNr   r"   r   r   EmptyrS  0  s    r   rT  c                 \    dt        |       v rt        | j                        ry |       S )NrL   F)r  r   rL   )r  rT  preds    r   r:  zZTestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper.<locals>.wrapped2  s(    Q'GE1::,F Awr   r   )rV  r:  rT  s   ` @r   pred_wrapperzITestClassesAndFunctions.test_getmembers_descriptors.<locals>.pred_wrapper-  s      Nr   r  r  c                       e Zd Zy)>TestClassesAndFunctions.test_getmembers_descriptors.<locals>.BNr   r"   r   r   rV  rZ  @  r*  r   rV  )r   rO   ismethoddescriptorr   r1  r   r  )rU   rS  rX  r[  r   rV  s         r   test_getmembers_descriptorsz3TestClassesAndFunctions.test_getmembers_descriptors(  s   	+ 	+		 *'*D*DE'(@(@A++A/ABAJJt$%&	(++A/?@AJJt$%&	(	 	 	++A/ABAJJt$%&	(++A/?@AJJt$%&	(r   c                     G d d      }| j                  d|j                  ft        j                  |             | j	                  d|j                  ft        j                  |t        j
                                |       }| j                  d|j                  ft        j                  |             | j                  d|j                  ft        j                  |t        j
                               y )Nc                       e Zd Zd Zy)9TestClassesAndFunctions.test_getmembers_method.<locals>.Bc                      y r   r"   r_   s    r   rt  z;TestClassesAndFunctions.test_getmembers_method.<locals>.B.fJ  r   r   NrL   ra   rb   rt  r"   r   r   rV  r_  I  r   r   rV  rt  )r  rt  rO   r   r  rg   )rU   rV  r   s      r   test_getmembers_methodz.TestClassesAndFunctions.test_getmembers_methodH  s    	 	 	sACCj'"4"4Q"78#qssW%7%77;K;K%LMCsACCj'"4"4Q"78sACCj'"4"4Q8H8H"IJr   c                 \    G d dt               } G d d|      } G d d      }| j                  dt        j                  |             | j                  d	t        j                   |                     |       }| j                  d
|j                  ft        j                  |             y )Nc                        e Zd Z fdZ xZS )CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Mc                 .    |dk(  ryt         |   |      S )NrA  	scrambledr  )r   r  r)  s     r   r   zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.M.__getattr__U  s    6>&w*400r   r  r2  s   @r   rG  re  T  r  r   rG  c                   0    e Zd Zej                  d        Zy)CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Ac                      yrw   r"   r_   s    r   rA  zHTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.A.eggsZ  r  r   N)rL   ra   rb   r   r  rA  r"   r   r   rS  ri  Y  r  r   rS  r  c                       e Zd Zd Zy)CTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.Bc                      y r   r"   )rU   	attributes     r   r   zOTestClassesAndFunctions.test_getmembers_VirtualAttribute.<locals>.B.__getattr__^  r   r   Nr   r"   r   r   rV  rl  ]  r   r   rV  )rA  rg  )rA  rx   r   )r   r  rO   r   r   )rU   rG  rS  rV  r   s        r    test_getmembers_VirtualAttributez8TestClassesAndFunctions.test_getmembers_VirtualAttributeS  s    	1 	1
	! 		 	 	+W-?-?-BC&(:(:13(?@C}amm4g6H6H6KLr   c                     G d d      } |       }t        j                  |      }t        j                  |      }| j                  dt        j                  |d      f|       | j                  dt        j                  |d      f|       | j                  dt        j                  |d      f|       | j                  dt        j                  |d      f|       y )Nc                   @    e Zd Zed        Zej                  d        Zy)9TestClassesAndFunctions.test_getmembers_static.<locals>.Ac                     t         r   r  r_   s    r   r  z>TestClassesAndFunctions.test_getmembers_static.<locals>.A.nameg      ))r   c                     t         r   r  r_   s    r   rA  z>TestClassesAndFunctions.test_getmembers_static.<locals>.A.eggsj  rt  r   N)rL   ra   rb   r  r  r   r  rA  r"   r   r   rS  rr  f  s,    * *((* )*r   rS  r  rA  )rO   getmembers_staticr  getattr_static)rU   rS  r%   instance_membersclass_memberss        r   test_getmembers_staticz.TestClassesAndFunctions.test_getmembers_statice  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 rC  r"   r   s    r   r	  zITestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.M.__dir__x  rE  r   NrF  r"   r   r   rG  r}  w  rH  r   rG  c                       e Zd Zy)ATestClassesAndFunctions.test_getmembers_with_buggy_dir.<locals>.CNr   r"   r   r   r   r  z  r*  r   r   r  r   rD  )r   rO   r   r  rK  s        r   test_getmembers_with_buggy_dirz6TestClassesAndFunctions.test_getmembers_with_buggy_dirv  sQ    	< 	<	! 	&11!45!155E* 6rM  c                    dt         dt        fd}| j                  t        j                  |      t         t        d       ddd|_        | j                  t        j                  |      ddd       | j                  t        j                  |dt                     |t        d       | j                  t        j                  |dt               	      |t        d       t        }| j                  t        j                  |      t         t        d       | j                  t        j                  |j                        t         t        d       | j                  t        j                  |j                        t         t        |j                  d
       | j                  t        j                  |j                        t         d|j                  |j                  d       | j                  t        j                  |j                        dddd       | j                  t        j                  t              i        | j                  t        j                  |j                        i        | j                  t        j                  |j                        i        | j                  t        j                  |d      t         t        d       | j                  t        j                  |j                  d      t         t        d       | j                  t        j                  |j                  d      t         t        |j                  d
       | j                  t        j                  |j                  d      t         t        |j                  |j                  d       | j                  t        j                  |j                  d      t         t        |j                  d       | j                  t        j                  t        d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |d      t         t        d       | j                  t        j                  |j                  d      t         t        d       | j                  t        j                  |j                  d      t         t        |j                  d
       | j                  t        j                  |j                  d      t         d|j                  |j                  d       | j                  t        j                  |j                  d      dddd       | j                  t        j                  t        d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        d } ||j                        }| j                   |dd      |j                  dd             | j                  |j                  |j                  j                         | j                  t        j                  |      t         t        |j                  d
       | j                  t        j                  |d      t         t        |j                  d
       | j                  t        j                  |d      t         t        |j                  d
       y )Nr%   r   c                      y r   r"   r   s     r   r.   zPTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.foo  r   r   r   r.   r   Teval_strrp  r  globalsr%   r   r  r%   r   r   r  r   MyClassr%   r   r   r  Fc                 B     t        j                          fd       }|S )Nc                 "     | dz  |dz        S rJ  r"   r%   r   r  s     r   wrapperziTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three.<locals>.wrapper      !A#qs|#r   r   r  r  r  s   ` r   times_threezXTestClassesAndFunctions.test_get_annotations_with_stock_annotations.<locals>.times_three  #    __R $ !$Nr   r,   r  rb  xxx)r   r   r1  rO   get_annotationsr  rp  r   r  rV  	function2	function3UnannotatedClassunannotated_functionassertIsNot__globals__)rU   r.   isar  r:  s        r   +test_get_annotations_with_stock_annotationszCTestClassesAndFunctions.test_get_annotations_with_stock_annotations  s{   ####005Ss7KL$)u5005U7OP00tFHU]`gjWkl00tVXV^ahkXlm'005Ss7KL00=Ss?ST00>cPS_b_j_j@kl00?sQV]`]h]htwtt  BA  	B00?uSX_hAij0092>001E1EFK001I1IJBO00tDCVYFZ[00tLTW^aNbc00MUX_bnqnynyOz{00NVY`cjmjuju  BE  BM  BM  QN  	O00NVY`cjmjujuPvw004H"M001E1EPTUWYZ001I1ITXY[]^00uESWZG[\00uMUX_bOcd00NVY`corozozP{|00OWZafmpmxmx  EH  EP  EP  RQ  	R00OW\choxQyz005I2N001E1EPUVXZ[001I1ITYZ\^_	 cll+C#++a*?@,,cll.F.FG0093Z]ZeZe;fg004HPSZ]ilititJuv005IQT[^jmjujuKvwr   c                 h   t         }| j                  t        j                  |      ddd       | j                  t        j                  |j                        ddd       | j                  t        j                  |j
                        dddd       | j                  t        j                  |j                        ddddd       | j                  t        j                  |j                        ddd	d
       | j                  t        j                  |j                        i        | j                  t        j                  |j                        i        | j                  t        j                  |d      t        t        d       | j                  t        j                  |j                  d      t        t        d       | j                  t        j                  |j
                  d      t        t        |j                  d       | j                  t        j                  |j                  d      t        d|j                  |j                  d       | j                  t        j                  |j                  d      dddd
       | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        | j                  t        j                  |d      ddd       | j                  t        j                  |j                  d      ddd       | j                  t        j                  |j
                  d      dddd       | j                  t        j                  |j                  d      ddddd       | j                  t        j                  |j                  d      ddd	d
       | j                  t        j                  |j                  d      i        | j                  t        j                  |j                  d      i        t        }| j                  t        j                  |      i        | j                  t        j                  |d      i        | j                  t        j                  |d      i        d } ||j
                        }| j                   |dd      |j	                  dd             | j                  |j                  |j
                  j                         | j                  t        j                  |      dddd       | j                  t        j                  |d      t        t        |j                  d       | j                  t        j                  |d      dddd       | j                  t        j                  |j                        ddi       | j                  t        j                  |j                  d      dt        i       y )Nr   r   r   r  r  'str'r  'int'	'MyClass'r  Tr  Fc                 B     t        j                          fd       }|S )Nc                 "     | dz  |dz        S rJ  r"   r  s     r   r  znTestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three.<locals>.wrapper  r  r   r  r  s   ` r   r  z]TestClassesAndFunctions.test_get_annotations_with_stringized_annotations.<locals>.times_three  r  r   r,   r  rb  r  mytype)r   r1  rO   r  r  rV  r  r  r  r  r   r   r   r  r  MyClassWithLocalAnnotations)rU   r  isa2r  r:  s        r   0test_get_annotations_with_stringized_annotationszHTestClassesAndFunctions.test_get_annotations_with_stringized_annotations  s   ,005U7OP00=UQV?WX00>eRWcl@mn00?uSZajv  BA  	B00?wU\cnAop001E1EFK001I1IJBO00tDCVYFZ[00tLTW^aNbc00MUX_bnqnynyOz{00NVY`elolwlw  DG  DO  DO  QP  	Q00NV[bgnwPxy001E1EPTUWYZ001I1ITXY[]^00uEUY^G_`00uMUZafOgh00NV[bgs|P}~00OW\cjqz  GP  RQ  	R00OW^els~Q  	A001E1EPUVXZ[001I1ITYZ\^_/006;00ErJ00FK	 cll+C#++a*?@,,cll.F.FG009U^g;hi004HPSZ]ilititJuv005IQV]bnwKxy 	001P1PQTWYaSbc001P1P[_`cfhkblmr   ) rL   ra   rb   r_  ro  r|  r  r  r  r   r$  r   r  r   r  r  r  r  r  r  r  r  r  r>  rL  r\  rb  ro  rz  r  r  r  r"   r   r   rO  rO    s   	( BF,0T24259*,	%H015A X__)MO	IO	I X__)MO6O 6 X__)MO,O ,	>OKb.(HMHH!#F+(@	KM$R"+1xf.nr   rO  c                       e Zd Zd Zy)TestFormatAnnotationc                     ddl m}m} | j                  t	        j
                  |      d       | j                  t	        j
                  |      d       y )Nr   )rn  ann1zUnion[List[str], int]z%Union[List[testModule.typing.A], int])test.typinganndata.ann_module9rn  r  r1  rO   formatannotation)rU   rn  r  s      r   test_typing_replacementz,TestFormatAnnotation.test_typing_replacement  s=    <11#68OP11$79`ar   N)rL   ra   rb   r  r"   r   r   r  r    s    br   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestIsDataDescriptorc                     G d d      } G d d      } G d d      } G d d      }| j                  t        j                   |             d	       | j                  t        j                   |             d
       | j                  t        j                   |             d       | j                  t        j                   |             d       y )Nc                       e Zd ZddZy)GTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptorNc                      y r   r"   )rU   valuer   s      r   r=  zOTestIsDataDescriptor.test_custom_descriptors.<locals>.NonDataDescriptor.__get__  r   r   r   rL   ra   rb   r=  r"   r   r   NonDataDescriptorr    s    5r   r  c                       e Zd Zd Zy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0c                      y r   r"   )rU   r  r  s      r   rA  zMTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor0.__set__  r   r   NrL   ra   rb   rA  r"   r   r   DataDescriptor0r    s    0r   r  c                       e Zd Zd Zy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1c                      y r   r"   )rU   r  s     r   
__delete__zPTestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor1.__delete__  r   r   N)rL   ra   rb   r  r"   r   r   DataDescriptor1r    s    ,r   r  c                       e Zd ZdZy)ETestIsDataDescriptor.test_custom_descriptors.<locals>.DataDescriptor2Nr  r"   r   r   DataDescriptor2r    s    Gr   r  z-class with only __get__ not a data descriptorz'class with __set__ is a data descriptorz*class with __delete__ is a data descriptorz.class with __set__ = None is a data descriptor)rT   rO   r   rK   )rU   r  r  r  r  s        r   test_custom_descriptorsz,TestIsDataDescriptor.test_custom_descriptors  s    	6 	6	1 	1	- 	-	 	112C2EFH	J001BCA	C001BCD	F001BCH	Jr   c                 v     G d d      }| j                  t        j                  |j                        d       y )Nc                       e Zd ZdZy)/TestIsDataDescriptor.test_slot.<locals>.Slottedr.   Nr   r"   r   r   Slottedr    s    Ir   r  za slot is a data descriptor)rK   rO   r   r.   )rU   r  s     r   	test_slotzTestIsDataDescriptor.test_slot  s,    	 	00=5	7r   c                 v     G d d      }| j                  t        j                  |j                        d       y )Nc                       e Zd Zed        Zy)6TestIsDataDescriptor.test_property.<locals>.Propertiedc                      y r   r"   r_   s    r   
a_propertyzATestIsDataDescriptor.test_property.<locals>.Propertied.a_property  r   r   N)rL   ra   rb   r  r  r"   r   r   
Propertiedr    s     r   r  za property is a data descriptor)rK   rO   r   r  )rU   r  s     r   test_propertyz"TestIsDataDescriptor.test_property  s0    	 	 	001F1FG9	;r   c                     G d dt               }d }d }| j                  t        j                   |       j                        d       | j                  t        j                   |       j
                        d       | j                  t        j                   |       j                        d       | j                  t        j                  |      d       | j                  t        j                  |      d	       y )
Nc                   2    e Zd Zd Zed        Zed        Zy)1TestIsDataDescriptor.test_functions.<locals>.Testc                      y r   r"   r_   s    r   instance_methodzATestIsDataDescriptor.test_functions.<locals>.Test.instance_method  r   r   c                      y r   r"   r   s    r   class_methodz>TestIsDataDescriptor.test_functions.<locals>.Test.class_method  s    #'r   c                       y r   r"   r"   r   r   static_methodz?TestIsDataDescriptor.test_functions.<locals>.Test.static_method  s    !%r   N)rL   ra   rb   r  r   r  r   r  r"   r   r   Testr    s!    +' '% %r   r  c                       y r   r"   r"   r   r   rV  z5TestIsDataDescriptor.test_functions.<locals>.function  r  r   c                       y r   r"   r"   r   r   r   z5TestIsDataDescriptor.test_functions.<locals>.<lambda>  r   r   z*a instance method is not a data descriptorz'a class method is not a data descriptorz(a static method is not a data descriptorz#a function is not a data descriptorz!a lambda is not a data descriptor)r   rT   rO   r   r  r  r  )rU   r  rV  a_lambdas       r   test_functionsz#TestIsDataDescriptor.test_functions  s    	&6 	&	11$&2H2HIE	G11$&2E2EFB	D11$&2F2FGC	E11(;>	@11(;<	>r   N)rL   ra   rb   r  r  r  r  r"   r   r   r  r    s    J$7;>r   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestGetClosureVarsc                     d }t               }d|i}dt        i}dt        i}dh}t        j                  ||||      }| j                  t        j                   ||            |       y )Nc                       fd}|S )Nc                 2    t        | t        t               y r   print_global_refunbound_ref	local_refnonlocal_refs    r   ru  z=TestGetClosureVars.test_name_resolution.<locals>.f.<locals>.g(  s    i{KHr   r"   r  ru  s   ` r   rt  z2TestGetClosureVars.test_name_resolution.<locals>.f'  s    IHr   r  r  r  r  r   r  r  rO   ClosureVarsr1  getclosurevarsrU   rt  _argnonlocal_varsglobal_varsbuiltin_varsunbound_namesr]  s           r   test_name_resolutionz'TestGetClosureVars.test_name_resolution%  sn    	 x'.$k2'&&&}k'3]D//$8(Cr   c                     d }t               }d|i}dt        i}dt        i}dh}t        j                  ||||      }| j                  t        j                   ||            |       y )Nc                       fd}|S )Nc              3   B   K   t        | t        t               d  y wr   r  r  s    r   ru  z?TestGetClosureVars.test_generator_closure.<locals>.f.<locals>.g6  s     i{KHs   r"   r  s   ` r   rt  z4TestGetClosureVars.test_generator_closure.<locals>.f5  s     Hr   r  r  r  r  r  r  s           r   test_generator_closurez)TestGetClosureVars.test_generator_closure4  sn    	
 x'.$k2'&&&}k'3]D//$8(Cr   c                      G d d      }t               }d|i}dt        i}dt        i}dh}t        j                  ||||      }| j                  t        j                   |       j                  |            |       y )Nc                       e Zd Zd Zy)1TestGetClosureVars.test_method_closure.<locals>.Cc                     fd}|S )Nc                 2    t        | t        t               y r   r  r  s    r   ru  z>TestGetClosureVars.test_method_closure.<locals>.C.f.<locals>.gF  s    )\;Lr   r"   )rU   r  ru  s    ` r   rt  z3TestGetClosureVars.test_method_closure.<locals>.C.fE  s    Mr   Nra  r"   r   r   r   r   D  s    r   r   r  r  r  r  )r   r  r  rO   r  r1  r  rt  )rU   r   r  r  r  r  r  r]  s           r   test_method_closurez&TestGetClosureVars.test_method_closureC  sy    	 	
 x'.$k2'&&&}k'3]D//d<hGr   c                 \   	 d 	d }d }d }fd	 fd} |d      } |d      } ||d	      } j                   	|      d
di        j                   	|      d
di        j                   	|      d	|d        j                   	 d d            d
di        |       y )Nc                 @    t        j                  |       j                  S r   )rO   r  	nonlocalsrt  s    r   _nonlocal_varsz=TestGetClosureVars.test_nonlocal_vars.<locals>._nonlocal_varsT  s    ))!,666r   c                       fd}|S )Nc                     | z   S r   r"   rh  r  s    r   addzFTestGetClosureVars.test_nonlocal_vars.<locals>.make_adder.<locals>.addX  s    1ur   r"   )r  r  s   ` r   
make_adderz9TestGetClosureVars.test_nonlocal_vars.<locals>.make_adderW  s    Jr   c                       fdS )Nc                      |       S r   r"   )rr  rq  r  s    r   r   zFTestGetClosureVars.test_nonlocal_vars.<locals>.curry.<locals>.<lambda>]  s    T4 0 r   r"   )r  rq  s   ``r   curryz4TestGetClosureVars.test_nonlocal_vars.<locals>.curry\  s	    00r   c                     | |k  S r   r"   r   s     r   	less_thanz8TestGetClosureVars.test_nonlocal_vars.<locals>.less_than_      q5Lr   c                 .      fd}|_          ||      S )Nc                        fd      S )Nc                              |       S r   r"   )r  rt  s    r   r   zMTestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.g.<locals>.<lambda>e  s    DAaDG r   r"   )rt  les   `r   ru  z;TestGetClosureVars.test_nonlocal_vars.<locals>.Y.<locals>.gd  s    +,,r   )g_ref)r  ru  Ys   ` r   r  z0TestGetClosureVars.test_nonlocal_vars.<locals>.Yc  s    -AGQ4Kr   c                 N    j                   |       dj                  i       y )Nrt  )r1  r  )r  r  r  rU   s    r   check_y_combinatorzATestGetClosureVars.test_nonlocal_vars.<locals>.check_y_combinatori  s     ^D1C>Br   r,   r-   r  r  )rq  r  c                       fdS )Nc                     | z   S r   r"   r  s    r   r   zITestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>.<locals>.<lambda>t  s    QU r   r"   r  s   `r   r   z7TestGetClosureVars.test_nonlocal_vars.<locals>.<lambda>t  s    ? r   rb  )r1  )
rU   r  r  r  r  incadd_twogreater_than_fiver  r  s
   `       @@r   test_nonlocal_varsz%TestGetClosureVars.test_nonlocal_varsR  s    	7	
	1			C mQ-!)Q/,sAh703(;(9:"#Y7	9)BA(FGq	#	
r   c                     d }t        j                  i i i t                     }| j                  t        j                  d       |       | j                  t        j                  |      |       y )Nc                       y r   r"   r"   r   r   r.   z9TestGetClosureVars.test_getclosurevars_empty.<locals>.fooy  r   r   c                       yNTr"   r"   r   r   r   z>TestGetClosureVars.test_getclosurevars_empty.<locals>.<lambda>{  r   r   )rO   r  rN   r1  r  )rU   r.   _emptys      r   test_getclosurevars_emptyz,TestGetClosureVars.test_getclosurevars_emptyx  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+    r   r   r,  r,   )r  r  rO   r  r   )rU   r,  s     r   test_getclosurevars_errorz,TestGetClosureVars.test_getclosurevars_error~  sO    )W%;%;Q?)W%;%;TB)W%;%;R@r   c                 0    d}i }t        ||       |d   |fS )Nzdef f(): print(path)rt  )r3   )rU   r+  r   s      r   _private_globalsz#TestGetClosureVars._private_globals  s#    )T2#w{r   c                     | j                         \  }}|j                  dd        t        j                  i i dt        idh      }| j                  t        j                  |      |       y )Nr  r  r#  )r/  poprO   r  r  r1  r  rU   rt  r   r]  s       r   test_builtins_fallbackz)TestGetClosureVars.test_builtins_fallback  sY    %%'2
~t$&&r2I//2H=r   c                     | j                         \  }}ddi|d<   t        j                  i i ddidh      }| j                  t        j                  |      |       y )Nr#  r,   r  r  )r/  rO   r  r1  r  r2  s       r   test_builtins_as_dictz(TestGetClosureVars.test_builtins_as_dict  sY    %%'2$QZ>&&r2qzG9E//2H=r   c                     | j                         \  }}t        |d<   t        j                  i i dt        j                  idh      }| j                  t        j                  |      |       y )Nr  r#  r  )r/  r!  rO   r  r#  r1  r  r2  s       r   test_builtins_as_modulez*TestGetClosureVars.test_builtins_as_module  sZ    %%'2>&&r2rww/?'K//2H=r   N)rL   ra   rb   r  r  r  r"  r(  r-  r/  r3  r5  r7  r"   r   r   r  r  #  s9    DDH$L>A>>>r   r  c                   L    e Zd ZddZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zy)TestGetcallargsFunctionsNc                     t        |xs i |      }t        d|z  d |      }t        d|z  d |      }| j                  ||       y )Nr  func(%s)inspect.getcallargs(func, %s))r   rJ   r1  )rU   r  call_params_stringlocsr1r2s         r   assertEqualCallArgsz,TestGetcallargsFunctions.assertEqualCallArgs  sN    DJBT**114>14FFR r   c                    t        |xs i |      }	 t        d|z  d |       | j                  d       	 t        d|z  d |       | j                  d       | j	                  t              t                     | j                  t        |      t        |             ~~y # t        $ r}|}Y d }~}d }~ww xY w# t        $ r}|}Y d }~sd }~ww xY w)Nr;  r<  zException not raisedr=  )r   rJ   failr   rQ  r   r1  r   )rU   r  call_param_stringr?  r   ex1ex2s          r   assertEqualExceptionz-TestGetcallargsFunctions.assertEqualException  s    DJBT*	.//t< II,-	.03DDd
 II,-d3ic+S3s8,  	C	  	C	s.   B! B9 !	B6*B11B69	CC		Cc                 $    	 d}t        ||z        S )Nzlambda %s: locals())rJ   )rU   r  r+  s      r   makeCallablez%TestGetcallargsFunctions.makeCallable  s    9$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)rJ  rB  rU   rt  s     r   
test_plainz#TestGetcallargsFunctions.test_plain  s9   h'  C(  F+  E*  J/  H-  G,  F+  I.  I.  K0  $45  N3  $67  $@A  $CD  $AB  $DE  $FGr   c                     | j                  d      }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |d       y )Nz
a, b=1, *crM  rN  2, 3, 4z*(2,3,4)z	2, *[3,4]z 2, 3, *collections.UserList([4])rP  rQ  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, **crO  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)rP  rQ  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)rP  rQ  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)rJ  rB  rH  rQ  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)rP  rQ  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, brL  r  r  z1,x=1rO  zb=3rT  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=2rY  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>.f5L  r   r   zmissing 1 required keyword-onlyc                      y r   r"   r  s      r   f6z0TestGetcallargsFunctions.test_errors.<locals>.f6S  r  r   z'a', 'b' and 'c'z6variadic keyword parameters cannot have default valuesr.   r   kinddefaultz%value 5 is not a valid Parameter.kindr&   r  zname must be a str, not a int{   rD  rf  )	rJ  rH  r  r  rO   getcallargs
ValueErrorr  VAR_KEYWORD)	rU   f0f1f2rt  f3f4rb  rd  s	            r   test_errorsz$TestGetcallargsFunctions.test_errors  s   r"v&x(!!"c*!!"e,!!"g.!!"b)!!"c*!!"e,!!"e,!!"b)!!"e,R 	8A%%a3%%a8%%a8%%a)<=%%a/%%a2%%a5%%a7%%a)AB%%a2%%a8%%a5%%a7!	8$ u%!!"f-!!"&67{+!!"f-!!"&67!!"j1!!"j1!!"o6!!"&:;!!"&:; 	##I$EG 	$#	$	##I/AB 	$#	$ ##J%;< 	* e'*;*;*G*G&(*	*
 ##J$KM 	9e!R8	9 ##I#BD 	+c*	+ 	++	$ 	$	$ 	$	* 	*
	9 	9	+ 	+s<   &N8O1O OO(8OOOO%(O1r   )rL   ra   rb   rB  rH  rJ  rR  rU  rW  rZ  r]  r_  rr  r"   r   r   r9  r9    s9    !&&
H.H
MM0 /0H+r   r9  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   Foorw  i  r*  r   rx  )r   r   inst)rU   rx  s     r   r  zTestGetcallargsMethods.setUph  s    	& 	E	r   c                     t         t        | 
  } |d|z         | j                  _        | j
                  j                  S )Nzself, )r'  rt  rJ  r   r  ry  )rU   r  mkr)  s      r   rJ  z#TestGetcallargsMethods.makeCallablen  s5    )4=X	12yyr   )rL   ra   rb   r  rJ  r1  r2  s   @r   rt  rt  f  s       r   rt  c                   >     e Zd Z fdZd fd	Zd fd	ZddZ xZS )TestGetcallargsUnboundMethodsc                 V    t         t        |   |       | j                  j                  S r   )r'  r}  rJ  r   r  )rU   r  r)  s     r   rJ  z*TestGetcallargsUnboundMethods.makeCallablev  s!    +T?	Jxxr   c                 F    t        t        | 
  | j                  |||       S r   )r'  r}  rB  _getAssertEqualParamsrU   r  r>  r?  r)  s       r   rB  z1TestGetcallargsUnboundMethods.assertEqualCallArgsz  s-    2DM''.@$GI 	Ir   c                 F    t        t        | 
  | j                  |||       S r   )r'  r}  rH  r  r  s       r   rH  z2TestGetcallargsUnboundMethods.assertEqualException~  s-    2DN''.@$GI 	Ir   c                 H    t        |xs i | j                        }|d|z   |fS )N)ry  zinst,)r   ry  )rU   r  r>  r?  s       r   r  z3TestGetcallargsUnboundMethods._getAssertEqualParams  s)    DJBTYY/g 22D99r   r   )rL   ra   rb   rJ  rB  rH  r  r1  r2  s   @r   r}  r}  t  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y)TestGetattrStaticc                     G d dt               } |       }| j                  t        j                  |d      |j                         | j                  t        j                  |dd       |j                         | j                  t              5  t        j                  |d       d d d        | j                  t        j                  |dd      d       y # 1 sw Y   1xY w)Nc                       e Zd Z e       Zy)+TestGetattrStatic.test_basic.<locals>.ThingNrL   ra   rb   r   r  r"   r   r   Thingr    	    Ar   r  r  rh  rb  )r   r1  rO   rw  r  r  r  rU   r  things      r   
test_basiczTestGetattrStatic.test_basic  s    	F 	 //s;UWWE//sDA577K~. 	/""5#.	/ 	//sA>B	/ 	/s   CCc                      G d dt               } G d d|      } |       }| j                  t        j                  |d      |j                         y )Nc                       e Zd Z e       Zy)/TestGetattrStatic.test_inherited.<locals>.ThingNr  r"   r   r   r  r    r  r   r  c                       e Zd Zy)4TestGetattrStatic.test_inherited.<locals>.OtherThingNr   r"   r   r   
OtherThingr    r*  r   r  r  r   r1  rO   rw  r  )rU   r  r  	somethings       r   test_inheritedz TestGetattrStatic.test_inherited  sD    	F 		 	 L	//	3?Ir   c                      G d dt               } |d      }| j                  t        j                  |d      d       |`| j                  t        j                  |d      d       y )Nc                       e Zd ZdZd Zy)3TestGetattrStatic.test_instance_attr.<locals>.Thingr-   c                     || _         y r   r  rU   r  s     r   r   z<TestGetattrStatic.test_instance_attr.<locals>.Thing.__init__  s	    r   N)rL   ra   rb   r  r   r"   r   r   r  r    s    Ar   r  rb  r  r-   r  r  s      r   test_instance_attrz$TestGetattrStatic.test_instance_attr  sX    	F 	 a//s;Q?G//s;Q?r   c                      G d dt               } |       }| j                  t        j                  |d      |j                         y )Nc                       e Zd Zed        Zy).TestGetattrStatic.test_property.<locals>.Thingc                     t        d      NzI'm pretending not to existr  r_   s    r   r  z0TestGetattrStatic.test_property.<locals>.Thing.x  s    $%BCCr   N)rL   ra   rb   r  r  r"   r   r   r  r    s    D Dr   r  r  r  r  s      r   r  zTestGetattrStatic.test_property  s:    	DF 	D //s;UWWEr   c                      G d dt               } |        G fddt               } |       }| j                  t        j                  |d             y )Nc                       e Zd Zd Zy)KTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptorc                      t        d      r  r  )r]  s    r   r=  zSTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.descriptor.__get__  s    $%BCCr   Nr  r"   r   r   
descriptorr    s    Dr   r  c                       e Zd ZW  Zy)FTestGetattrStatic.test_descriptor_raises_AttributeError.<locals>.ThingNrL   ra   rb   r  )descs   r   r  r    s    Ar   r  r  )r   r1  rO   rw  )rU   r  r  r  r  s       @r   %test_descriptor_raises_AttributeErrorz7TestGetattrStatic.test_descriptor_raises_AttributeError  sJ    	D 	D |	F 	//s;TBr   c                      G d dt               }| j                  t        j                  |d      |j                         y )Nc                       e Zd Z e       Zy)4TestGetattrStatic.test_classAttribute.<locals>.ThingNr  r"   r   r   r  r    r  r   r  r  r  rU   r  s     r   test_classAttributez%TestGetattrStatic.test_classAttribute  s1    	F 	 	//s;UWWEr   c                      G d dt               }| j                  t        j                  |d      |j                  d          y )Nc                   >    e Zd Zej                  d        Z e       Zy);TestGetattrStatic.test_classVirtualAttribute.<locals>.Thingc                     | j                   S r   )_xr_   s    r   r  z=TestGetattrStatic.test_classVirtualAttribute.<locals>.Thing.x  s    wwr   N)rL   ra   rb   r   r  r  r   r  r"   r   r   r  r    s!    (( )Br   r  r  )r   r1  rO   rw  r  r  s     r   test_classVirtualAttributez,TestGetattrStatic.test_classVirtualAttribute  s6    	F 	 	//s;U^^C=PQr   c                      G d dt               } G d d|      }| j                  t        j                  |d      |j                         y )Nc                       e Zd Z e       Zy)>TestGetattrStatic.test_inherited_classattribute.<locals>.ThingNr  r"   r   r   r  r    r  r   r  c                       e Zd Zy)CTestGetattrStatic.test_inherited_classattribute.<locals>.OtherThingNr   r"   r   r   r  r    r*  r   r  r  r  rU   r  r  s      r   test_inherited_classattributez/TestGetattrStatic.test_inherited_classattribute  s=    	F 		 	 	//
C@%''Jr   c                 @    G d dt               } |       }| j                  t        j                  |d      |j                         | j                  t        j                  |d      d       |`| j                  t        j                  |d      |j                         y )Nc                       e Zd ZdZdgZd Zy)+TestGetattrStatic.test_slots.<locals>.Thingr&   r  c                     d| _         y Nr.   r  r_   s    r   r   z4TestGetattrStatic.test_slots.<locals>.Thing.__init__  	    r   N)rL   ra   rb   rh  r   r   r"   r   r   r  r    s    AIr   r  r  rh  r&   r  r  s      r   
test_slotszTestGetattrStatic.test_slots  s{    	F 	
 //s;UWWE//s;UCG//s;UWWEr   c                 v    G d dt               } G d dt        |      }| j                  t        j                  |d      d        G d d	|      } G d
 dt        |      }| j                  t        j                  |d      d        G d d|      }| j                  t        j                  |d      d       y )Nc                       e Zd ZdZy).TestGetattrStatic.test_metaclass.<locals>.metar.   N)rL   ra   rb   r   r"   r   r   metar    s    Dr   r  c                       e Zd Zy)/TestGetattrStatic.test_metaclass.<locals>.ThingNr   r"   r   r   r  r    r*  r   r  r  r   r.   c                       e Zd Zy)-TestGetattrStatic.test_metaclass.<locals>.subNr   r"   r   r   subr    r*  r   r  c                       e Zd ZdZy)4TestGetattrStatic.test_metaclass.<locals>.OtherThingrb  Nr  r"   r   r   r  r        Ar   r  c                       e Zd Zy)9TestGetattrStatic.test_metaclass.<locals>.OtherOtherThingNr   r"   r   r   OtherOtherThingr    r*  r   r  r  rb  r   r   r1  rO   rw  )rU   r  r  r  r  r  s         r   test_metaclassz TestGetattrStatic.test_metaclass  s    	4 		Fd 	//v>F	$ 		3 	//
FCUK	j 	 	//EqIr   c                     | j                  t        j                  ddd       d        | j                  t        j                  dd      d        y )Nr,   r.   lower)r1  rO   rw  assertNotEqualr_   s    r   test_no_dict_no_slotsz'TestGetattrStatic.test_no_dict_no_slots  s>    //5$?FG225'BDIr   c                     t        t        d      5 }| j                  t        j                  |d      t        |      j                         d d d        y # 1 sw Y   y xY w)Nr|  r}  r  )r  rU  r1  rO   rw  r   r  )rU   handles     r   %test_no_dict_no_slots_instance_memberz7TestGetattrStatic.test_no_dict_no_slots_instance_member  sN    (W- 	XW33FFCT&\EVEVW	X 	X 	Xs   :AAc                      G d dt               } G d d|      }| j                  t        j                   |       d      |j                         y )Nc                       e Zd ZdgZd Zy)5TestGetattrStatic.test_inherited_slots.<locals>.Thingr  c                     d| _         y r  r  r_   s    r   r   z>TestGetattrStatic.test_inherited_slots.<locals>.Thing.__init__  r  r   N)rL   ra   rb   r   r   r"   r   r   r  r    s    Ir   r  c                       e Zd Zy):TestGetattrStatic.test_inherited_slots.<locals>.OtherThingNr   r"   r   r   r  r    r*  r   r  r  r  r  s      r   test_inherited_slotsz&TestGetattrStatic.test_inherited_slots  s?    	F 	
	 	 	//
cBEGGLr   c                     G d dt                G fddt               } |       }d|j                  d<   | j                  t        j                  |d      d       d _        | j                  t        j                  |d      |j                  d          `d _        | j                  t        j                  |d      |j                  d          y )	Nc                       e Zd Zd Zy)5TestGetattrStatic.test_descriptor.<locals>.descriptorc                      yrJ  r"   rU   instanceowners      r   r=  z=TestGetattrStatic.test_descriptor.<locals>.descriptor.__get__	      r   Nr  r"   r   r   r  r        r   r  c                       e Zd Z W         Zy).TestGetattrStatic.test_descriptor.<locals>.FooNrL   ra   rb   rs  r  s   r   rx  r    
    Ar   rx  r,   rs  c                      y r   r"   )r  r5   vs      r   r   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>  r   r   c                      y r   r"   )r  r5   r   s      r   r   z3TestGetattrStatic.test_descriptor.<locals>.<lambda>  r   r   )r   r  r1  rO   rw  rA  r  )rU   rx  r.   r  s      @r   test_descriptorz!TestGetattrStatic.test_descriptor  s    	 		& 	 e S//S91= 2
//S93<<;LM 4
//S93<<;LMr   c                      G d dt                G fddt              } G d dt         |      }| j                  t        j                  |d      |j
                  d          y )	Nc                       e Zd Zd Zy)DTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptorc                      yrJ  r"   r  s      r   r=  zLTestGetattrStatic.test_metaclass_with_descriptor.<locals>.descriptor.__get__  r  r   Nr  r"   r   r   r  r    r  r   r  c                       e Zd Z W         Zy)>TestGetattrStatic.test_metaclass_with_descriptor.<locals>.metaNr  r  s   r   r  r  !  r  r   r  c                       e Zd Zy)?TestGetattrStatic.test_metaclass_with_descriptor.<locals>.ThingNr   r"   r   r   r  r  #  r*  r   r  r  rs  )r   r   r1  rO   rw  r  )rU   r  r  r  s      @r   test_metaclass_with_descriptorz0TestGetattrStatic.test_metaclass_with_descriptor  sO    	 		4 		Fd 	//s;T]]3=OPr   c                     G d dt               } G d d|      } |       }| j                  t        j                  |d      d       | j	                  |j
                         | j                  t        j                  |d      d       y )Nc                       e Zd ZdZy)6TestGetattrStatic.test_class_as_property.<locals>.Baserb  Nr  r"   r   r   Baser  )      Cr   r  c                        e Zd ZdZed        Zy);TestGetattrStatic.test_class_as_property.<locals>.SomethingFc                     d| _         t        S r&  )executedr   r_   s    r   r)  zETestGetattrStatic.test_class_as_property.<locals>.Something.__class__.  s     $r   N)rL   ra   rb   r  r  r)  r"   r   r   	Somethingr  ,  s    H r   r	  r.   rb  )r   r1  rO   rw  rT   r  )rU   r  r	  r  s       r   test_class_as_propertyz(TestGetattrStatic.test_class_as_property(  sq    	6 		 	 ;//%@!D**+//	5A1Er   c                      G d dt               } G d dt              } G d d||      }| j                  t        j                   |       d      d	       | j                  t        j                  |d      d	       y )
Nc                       e Zd Zed        Zy)4TestGetattrStatic.test_mro_as_property.<locals>.Metac                     t         fS r   rW  r_   s    r   __mro__z<TestGetattrStatic.test_mro_as_property.<locals>.Meta.__mro__:  s
    y r   N)rL   ra   rb   r  r  r"   r   r   r  r  9  s    ! !r   r  c                       e Zd ZdZy)4TestGetattrStatic.test_mro_as_property.<locals>.Baserb  Nr  r"   r   r   r  r  >  r  r   r  c                       e Zd Zy)9TestGetattrStatic.test_mro_as_property.<locals>.SomethingNr   r"   r   r   r	  r  A  r*  r   r	  r  r.   rb  r  )rU   r  r  r	  s       r   test_mro_as_propertyz&TestGetattrStatic.test_mro_as_property8  sf    	!4 	!
	6 		 	 	//	UCQG//	5A1Er   c                     | d_          G fddt              } |       }d|_        | j                  t	        j
                  |d      d       | j                  j                          y )NFc                   &    e Zd ZdZe fd       Zy)4TestGetattrStatic.test_dict_as_property.<locals>.Foorb  c                     d_         i S r&  calledrU   r  s    r   r  z=TestGetattrStatic.test_dict_as_property.<locals>.Foo.__dict__M      "	r   NrL   ra   rb   r%   r  r  r  s   r   rx  r  K      A r   rx  rD  r%   rb  )r  r   r%   r1  rO   rw  rT   )rU   rx  r.   r  s      @r   test_dict_as_propertyz'TestGetattrStatic.test_dict_as_propertyG  sZ    	$ 	 e//S91=%r   c                 Z   | d_          G fddt              } G d dt              } G d d|      } |       }| j                  t        j                  |d      d	       |f|_        | j                  t        j                  |d      d
       | j                  j                          y )NFc                   &    e Zd ZdZe fd       Zy)/TestGetattrStatic.test_mutated_mro.<locals>.Foorb  c                     d_         i S r&  r  r  s    r   r  z8TestGetattrStatic.test_mutated_mro.<locals>.Foo.__dict__]  r  r   Nr  r  s   r   rx  r#  [  r  r   rx  c                       e Zd ZdZy)/TestGetattrStatic.test_mutated_mro.<locals>.BarrD  NrL   ra   rb   r%   r"   r   r   Barr&  b  r  r   r(  c                       e Zd Zy)/TestGetattrStatic.test_mutated_mro.<locals>.BazNr   r"   r   r   Bazr*  e  r   r   r+  r%   rD  rb  )r  r   r1  rO   rw  	__bases__rT   )rU   rx  r(  r+  bazr  s        @r   test_mutated_mroz"TestGetattrStatic.test_mutated_mroW  s    	$ 		$ 	 	#e//S91=//S91=%r   c                     | d_          G fddt              } G d dt              } |       } |       |_        | j	                  t        j                  |d      d       | j                  j                          y )NFc                   $     e Zd Zd fd	Z xZS )9TestGetattrStatic.test_custom_object_dict.<locals>.Customc                 4    d_         t        | 	  ||       y r&  )r  r'  get)rU   keyrg  r)  r  s      r   r3  z=TestGetattrStatic.test_custom_object_dict.<locals>.Custom.getr  s    "C)r   r   )rL   ra   rb   r3  r1  )r)  r  s   @r   Customr1  q  s    * *r   r5  c                       e Zd ZdZy)6TestGetattrStatic.test_custom_object_dict.<locals>.Foorb  Nr'  r"   r   r   rx  r7  v  r  r   rx  r%   rb  )r  r   r   r  r1  rO   rw  rT   )rU   r5  rx  r.   r  s       @r   test_custom_object_dictz)TestGetattrStatic.test_custom_object_dictm  sf    	*T 	*
	& 	ex//S91=%r   c                      G d dt               } G d d|      } |       }| j                  t        j                  |d      d       | j	                  |j
                         y )Nc                       e Zd Zed        Zy)?TestGetattrStatic.test_metaclass_dict_as_property.<locals>.Metac                     d| _         y r&  )r  r_   s    r   r  zHTestGetattrStatic.test_metaclass_dict_as_property.<locals>.Meta.__dict__  s	     $r   NrL   ra   rb   r  r  r"   r   r   r  r;  ~  r   r   r  c                       e Zd ZdZd Zy)@TestGetattrStatic.test_metaclass_dict_as_property.<locals>.ThingFc                     d| _         y Nr   rx   r_   s    r   r   zITestGetattrStatic.test_metaclass_dict_as_property.<locals>.Thing.__init__  s	    	r   N)rL   ra   rb   r  r   r"   r   r   r  r?    s    Hr   r  r  rx   r   )r   r1  rO   rw  rT   r  )rU   r  r  r  s       r   test_metaclass_dict_as_propertyz1TestGetattrStatic.test_metaclass_dict_as_property}  sR    	%4 	%
	d 	 7//&A2F(r   c                 n    t               }| j                  t        j                  t        d|      |       y )Nversion)r   r  rO   rw  r  )rU   sentinels     r   test_modulezTestGetattrStatic.test_module  s+    8//YI!	#r   c                     G d dt               } G d dt         |      } G d d|      }| j                  t              5  t        j                  |d       d d d        | j                  |j                         y # 1 sw Y   %xY w)	Nc                       e Zd Zed        Zy)WTestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMetac                 (    d| _         t        d      S )NTr   rB  )r  r   r_   s    r   r  z`TestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaMeta.__dict__  s     $}$r   Nr=  r"   r   r   MetaMetarJ    s    % %r   rL  c                       e Zd ZdZy)STestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property.<locals>.MetaFN)rL   ra   rb   r  r"   r   r   r  rN    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  rP    r*  r   r  rx   )r   r  r  rO   rw  rT   r  )rU   rL  r  r  s       r   3test_metaclass_with_metaclass_with_dict_as_propertyzETestGetattrStatic.test_metaclass_with_metaclass_with_dict_as_property  so    	%t 	%	48 		d 	 ~. 	2""5&1	2(	2 	2s   A==Bc                     | d_          G fdd      }| j                  t              5  t        j                   |       d       d d d        | j                  j                          y # 1 sw Y   %xY w)NFc                       e Zd Z fdZy)6TestGetattrStatic.test_custom___getattr__.<locals>.Fooc                     d_         i S r&  r  rU   r   r  s     r   r   zBTestGetattrStatic.test_custom___getattr__.<locals>.Foo.__getattr__      "	r   Nr   r  s   r   rx  rT        r   rx  whateverr  r  r  rO   rw  rT   rU   rx  r  s     @r   test_custom___getattr__z)TestGetattrStatic.test_custom___getattr__  sd    	 	
 ~. 	6""35*5	6 	%	6 	6   A,,A5c                     | d_          G fdd      }| j                  t              5  t        j                   |       d       d d d        | j                  j                          y # 1 sw Y   %xY w)NFc                       e Zd Z fdZy);TestGetattrStatic.test_custom___getattribute__.<locals>.Fooc                     d_         i S r&  r  rV  s     r   __getattribute__zLTestGetattrStatic.test_custom___getattribute__.<locals>.Foo.__getattribute__  rW  r   N)rL   ra   rb   rb  r  s   r   rx  r`    rX  r   rx  really_could_be_anythingrZ  r[  s     @r   test_custom___getattribute__z.TestGetattrStatic.test_custom___getattribute__  si    	 	
 ~. 	F""35*DE	F 	%	F 	Fr]  N)rL   ra   rb   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r   r.  r8  rC  rG  rQ  r\  rd  r"   r   r   r  r    s    
CJ@FCFRKFJ$JX
MN,QF F& &,& ) #
)"&&r   r  c                   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)TestGetGeneratorStatec                 "    d } |       | _         y )Nc               3   4   K   t        d      D ]  } |   y wNr  rp   numbers    r   number_generatorz5TestGetGeneratorState.setUp.<locals>.number_generator  s     ( rs   )	generator)rU   rl  s     r   r  zTestGetGeneratorState.setUp  s    	 *+r   c                 @    t        j                  | j                        S r   )rO   getgeneratorstaterm  r_   s    r   _generatorstatez%TestGetGeneratorState._generatorstate      ((88r   c                 `    | j                  | j                         t        j                         y r   )r1  rp  rO   GEN_CREATEDr_   s    r   test_createdz"TestGetGeneratorState.test_created  s!    --/1D1DEr   c                     t        | j                         | j                  | j                         t        j
                         y r   )nextrm  r1  rp  rO   GEN_SUSPENDEDr_   s    r   test_suspendedz$TestGetGeneratorState.test_suspended  s-    T^^--/1F1FGr   c                     | j                   D ]  } | j                  | j                         t        j                         y r   )rm  r1  rp  rO   
GEN_CLOSEDrq   s     r   test_closed_after_exhaustionz2TestGetGeneratorState.test_closed_after_exhaustion  s7     	A	--/1C1CDr   c                     | j                  t              5  | j                  j                  t               d d d        | j	                  | j                         t        j                         y # 1 sw Y   8xY wr   )r  r@  rm  r=   r1  rp  rO   rz  r_   s    r   %test_closed_after_immediate_exceptionz;TestGetGeneratorState.test_closed_after_immediate_exception  sV    |, 	/NN  .	/--/1C1CD	/ 	/    A--A6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ri  )r/   r1  rp  rO   GEN_RUNNINGrk  rU   s    r   running_check_generatorzCTestGetGeneratorState.test_running.<locals>.running_check_generator  s_     ( N  !5!5!79L9LM  !5!5!79L9LMNs   A2A5)rm  rv  )rU   r  s   ` r   test_runningz"TestGetGeneratorState.test_running  s-    
	N
 12T^^T^^r   c                     dj                         }|D ]H  }t        t        |      }| j                  |t	        |             | j                  |t        |             J y )Nz0GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDr  r  rO   r  reprr   rU   namesr  states       r   test_easy_debuggingz)TestGetGeneratorState.test_easy_debugging  sO    BHHJ 	,DGT*EMM$U,MM$E
+	,r   c           	      @   d
d} |g d      }| j                  t        j                  |      d g dd       t        |       | j                  t        j                  |      d g dddd       t        |       | j                  t        j                  |      d g dddd       t        |       | j                  t        j                  |      d g ddddd	       	 t        |       | j                  t        j                  |      i        y # t        $ r Y 1w xY w)Nc              3   4   K   d}| D ]  }|dk(  rd}|  y wNru  rb  rH  r"   lstr%   r   r  r   s        r   eachz;TestGetGeneratorState.test_getgeneratorlocals.<locals>.each  s+     A 6Ars   ru  r%   r  r,   r%   r  r  r   r-   rb  rH  r%   r  r  r   r   r   r1  rO   getgeneratorlocalsrv  StopIterationrU   r  numberss      r   test_getgeneratorlocalsz-TestGetGeneratorState.test_getgeneratorlocals  s   	 y/33G<#I6	8W33G<#IA(*	+ 	W33G<#IA(*	+ 	W33G<#IA(r3	4	M 	33G<bA  		s    D 	DDc                     d } |       }| j                  t        j                  |      i        	 t        |       | j                  t        j                  |      i        y # t        $ r Y 1w xY w)Nc               3      K   d y wr1  r"   r"   r   r   	yield_onezFTestGetGeneratorState.test_getgeneratorlocals_empty.<locals>.yield_one	  s     Gr}   r  rU   r  r!  s      r   test_getgeneratorlocals_emptyz3TestGetGeneratorState.test_getgeneratorlocals_empty	  sf    	k33C8"=	I 	33C8"=  		s   A" "	A.-A.c                 6   | j                  t        t        j                  d       | j                  t        t        j                  d        | j                  t        t        j                  t               | j                  t        t        j                  d       y )Nr,   c                      yr&  r"   r  s    r   r   zETestGetGeneratorState.test_getgeneratorlocals_error.<locals>.<lambda>	  r   r   r-   rb  )r  r  rO   r  rN   r_   s    r   test_getgeneratorlocals_errorz3TestGetGeneratorState.test_getgeneratorlocals_error	  sb    )W%?%?C)W%?%?P)W%?%?E)W%?%?Gr   N)rL   ra   rb   r  rp  rt  rx  r{  r}  r  r  r  r  r  r"   r   r   rf  rf    s?    ,9FHE
E
 ,B:	>Hr   rf  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
)TestGetCoroutineStatec                 T    t         j                  d        fd} |       | _        y )Nc               3   4   K   t        d      D ]  } |   y wri  rp   rj  s    r   number_coroutinez5TestGetCoroutineState.setUp.<locals>.number_coroutine&	  s     ( rs   c                  0   K             d {    y 7 wr   r"   )r  s   r   	coroutinez.TestGetCoroutineState.setUp.<locals>.coroutine*	  s     "$$$s   )r   r  )rU   r  r  s     @r   r  zTestGetCoroutineState.setUp%	  s'    		 
		%"r   c                 8    | j                   j                          y r   )r  r   r_   s    r   r-  zTestGetCoroutineState.tearDown.	  s    r   c                 @    t        j                  | j                        S r   )rO   getcoroutinestater  r_   s    r   _coroutinestatez%TestGetCoroutineState._coroutinestate1	  rq  r   c                 `    | j                  | j                         t        j                         y r   )r1  r  rO   CORO_CREATEDr_   s    r   rt  z"TestGetCoroutineState.test_created4	  s!    --/1E1EFr   c                     | j                   j                  d        | j                  | j                         t        j
                         y r   )r  sendr1  r  rO   CORO_SUSPENDEDr_   s    r   rx  z$TestGetCoroutineState.test_suspended7	  s3    D!--/1G1GHr   c                     	 	 | j                   j                  d        # t        $ r Y nw xY w| j                  | j	                         t
        j                         y r   )r  r  r  r1  r  rO   CORO_CLOSEDr_   s    r   r{  z2TestGetCoroutineState.test_closed_after_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  r@  r  r=   r1  r  rO   r  r_   s    r   r}  z;TestGetCoroutineState.test_closed_after_immediate_exceptionD	  sV    |, 	/NN  .	/--/1D1DE	/ 	/r~  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_debuggingI	  O    FLLN 	,DGT*EMM$U,MM$E
+	,r   c                    t         j                  d                dfd	} |       }| j                  t        j                  |      d d       |j                  d        | j                  t        j                  |      d dd       y )Nc               3      K   d  y wr   r"   r"   r   r   gencoroz>TestGetCoroutineState.test_getcoroutinelocals.<locals>.gencoroR	  s	     r}   c                 *   K   d} d {    y 7 wrw   r"   )r%   r   r  s     r   r  z;TestGetCoroutineState.test_getcoroutinelocals.<locals>.funcW	  s     AMMs   )r%   r  rx   )r%   r  r   r   )r   r  r1  rO   getcoroutinelocalsr  )rU   r  r   r  s      @r   test_getcoroutinelocalsz-TestGetCoroutineState.test_getcoroutinelocalsQ	  s    		 
	 )	 v33D9#8	:		$33D9#fE	Gr   N)rL   ra   rb   r  r-  r  rt  rx  r{  r}  r  r  r"   r   r   r  r  #	  s4    %9GI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ri  rp   rj  s    r   number_asyncgenz3TestGetAsyncGenState.setUp.<locals>.number_asyncgeng	  s     (    )asyncgen)rU   r  s     r   r  zTestGetAsyncGenState.setUpf	  s    	 ()r   c                 T   K   | j                   j                          d {    y 7 wr   )r  acloser_   s    r   asyncTearDownz"TestGetAsyncGenState.asyncTearDownl	  s     mm""$$$s   (&(c                 @    t        j                  | j                        S r   )rO   getasyncgenstater  r_   s    r   _asyncgenstatez#TestGetAsyncGenState._asyncgenstateo	  s    ''66r   c                 `    | j                  | j                         t        j                         y r   )r1  r  rO   AGEN_CREATEDr_   s    r   rt  z!TestGetAsyncGenState.test_createdr	  s!    ,,.0D0DEr   c                    K   t        | j                         d {   }| j                  | j                         t        j
                         | j                  |d       y 7 Ewr  )anextr  r1  r  rO   AGEN_SUSPENDEDrU   r  s     r   rx  z#TestGetAsyncGenState.test_suspendedu	  sK     DMM**,,.0F0FG" +s   A#A!AA#c                 @  K   d}| j                  t              5  |dz
  x}r%t        | j                         d {    |dz
  x}r%d d d        | j	                  |d       | j	                  | j                         t        j                         y 7 U# 1 sw Y   LxY ww)Nr7  r,   )r  StopAsyncIterationr  r  r1  r  rO   AGEN_CLOSED)rU   	countdowns     r   r{  z1TestGetAsyncGenState.test_closed_after_exhaustionz	  s     	12 	+(1},),DMM***  )1},),	+ 	A&,,.0C0CD +	+ 	+s-   B BBBA	BBBBc                   K   | j                  t              5  | j                  j                  t               d {    d d d        | j	                  | j                         t        j                         y 7 ;# 1 sw Y   :xY wwr   )r  r@  r  athrowr1  r  rO   r  r_   s    r   r}  z:TestGetAsyncGenState.test_closed_after_immediate_exception	  se     |, 	5--&&|444	5,,.0C0CD 5	5 	5s,   B#A9A7A9 7B7A99B>Bc                 d   K    fd} |        _         t         j                          d {     j                   j                         t        j
                         t         j                          d {     j                   j                         t        j
                         y 7 ~7 5w)Nc                    K   t        d      D ]c  } j                  j                         t        j                         |  j                  j                         t        j                         e y wri  )r/   r1  r  rO   AGEN_RUNNINGr  s    r   running_check_asyncgenzATestGetAsyncGenState.test_running.<locals>.running_check_asyncgen	  s_     ( N  !4!4!68L8LM  !4!4!68L8LMNs   A3A6)r  r  r1  r  rO   r  )rU   r  s   ` r   r  z!TestGetAsyncGenState.test_running	  s     	N
 /0DMM""",,.0F0FGDMM""",,.0F0FG	 	# 	#s"   *B0B,A
B08B.94B0.B0c                     dj                         }|D ]H  }t        t        |      }| j                  |t	        |             | j                  |t        |             J y )Nz4AGEN_CREATED AGEN_RUNNING AGEN_SUSPENDED AGEN_CLOSEDr  r  s       r   r  z(TestGetAsyncGenState.test_easy_debugging	  r  r   c           	        K   d
d} |g d      }| j                  t        j                  |      d g dd       t        |       d {    | j                  t        j                  |      d g dddd       t        |       d {    | j                  t        j                  |      d g dddd       t        |       d {    | j                  t        j                  |      d g ddddd	       | j	                  t
              5  t        |       d {    d d d        | j                  t        j                  |      i        y 7 7 7 7 9# 1 sw Y   8xY ww)Nc                6   K   d}| D ]  }|dk(  rd}|  y wr  r"   r  s        r   r  z9TestGetAsyncGenState.test_getasyncgenlocals.<locals>.each	  s+     A 6Ar  ru  r  r,   r  r-   rb  rH  r  r   r1  rO   getasyncgenlocalsr  r  r  r  s      r   test_getasyncgenlocalsz+TestGetAsyncGenState.test_getasyncgenlocals	  sI    	 y/227;#I6	8Gn227;#IA(*	+ Gn227;#IA(*	+ Gn227;#IA(r3	4 12 	!.  	!227;R@ 	 	 	
 !	! 	!sa   AE%	E
>E%E	>E%EAE%EEE"/E%E%E%EE"E%c                   K   d } |       }| j                  t        j                  |      i        t        |       d {    | j                  t        j                  |      i        | j	                  t
              5  t        |       d {    d d d        | j                  t        j                  |      i        y 7 7 4# 1 sw Y   3xY ww)Nc                    K   d y wr1  r"   r"   r   r   r  zDTestGetAsyncGenState.test_getasyncgenlocals_empty.<locals>.yield_one	  s     Gs   	r  r  s      r   test_getasyncgenlocals_emptyz1TestGetAsyncGenState.test_getasyncgenlocals_empty	  s     	k2237<Cj2237<12 	*	2237<	 	 	 	s;   >C C>C?CCC/CCC
Cc                 6   | j                  t        t        j                  d       | j                  t        t        j                  d        | j                  t        t        j                  t               | j                  t        t        j                  d       y )Nr,   c                      yr&  r"   r  s    r   r   zCTestGetAsyncGenState.test_getasyncgenlocals_error.<locals>.<lambda>	  r   r   r  )r  r  rO   r  rN   r_   s    r   test_getasyncgenlocals_errorz1TestGetAsyncGenState.test_getasyncgenlocals_error	  sb    )W%>%>B)W%>%>O)W%>%>D)W%>%>Fr   N)rL   ra   rb   r  r  r  rt  rx  r{  r}  r  r  r  r  r  r"   r   r   r  r  c	  sD    *%7F#
EE
H,A6	=Gr   r  c                       e Zd Zy)MySignatureNr   r"   r   r   r  r  	       	r   r  c                       e Zd Zy)MyParameterNr   r"   r   r   r  r  	  r  r   r  c                   <   e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Ze ej                  ed
      d               Ze ej                  ed
      d               Zed        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z! 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( Z.d) Z/d* Z0 ej                  ed
      d+        Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9y4)5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  rg  empty
annotationr   rf  r  ).0params     r   	<genexpr>z0TestSignatureObject.signature.<locals>.<genexpr>	  sn      J
 ). zz$}};$//5;;>=B=M=M5::,,.	0 Js   BB.)rO   r  tupler4   valuesreturn_annotationr  )r  kwsigs      r   r  zTestSignatureObject.signature	  sw    ++ J
 251F1F1HJ J --:I 	I 251F1FI 	Ir   c                    t         j                  }t         j                  }| j                  t	         |             d       | j                  t         |       j                        d       dddd}t        j                  |      }| j                  t        |      j                  d             | j                  dt        |      v        dd}t        j                  |      }| j                  t        |      j                  d             | j                  d	t        |      v        |j                  d
   }|j                  d   }|j                  d   }	|j                  d   }
|j                  d   }|j                  d   }|j                  d   }|j                  d   } |||	|||f        |||	||f        ||||f        ||||f        ||||f        |||f        |||||f        |||f        ||||f        ||||f       | j                  t        d      5   ||	||||f       d d d        | j                  t        d      5   ||||	||f       d d d        | j                  t        d      5   ||||	||f       d d d        | j                  t        d      5   |||	|||f       d d d        |j                  d      }| j                  t        d      5   |||	|||f       d d d        | j                  t        d      5   |||f       d d d        | j                  t        d      5   |||	f       d d d        | j                  t        d      5   ||||	f       d d d        | j                  t        d      5   |||
|	f       d d d        | j                  t        d      5   ||
|	f       d d d        y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   ^xY w# 1 sw Y   ?xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N()zmappingproxy(OrderedDict())r=  )kodc                    y r   r"   )popkpkdkor  r   r<  s          r   r  z7TestSignatureObject.test_signature_object.<locals>.test	  r  r   z
<Signaturez
(po, /, pkc                     y r   r"   )pods    r   test2z8TestSignatureObject.test_signature_object.<locals>.test2	  r  r   z(pod=42, /)r  r  r   r  r   r  r  r<  zwrong parameter orderr  zduplicate parameter namezfollows default argument)d   )r   )rO   r  r  r1  r   r  r4   r  rK   r  r  rk  replace)rU   SPr  r  r  sig2r  r  r   r  r   r  r  r<  kwargs2s                   r   test_signature_objectz)TestSignatureObject.test_signature_object	  s"   QS4(acnn-/LM	B 	 %S	,,\:;S	12	   'T
--l;<d34^^D!ooe$^^D!nnU#~~f%^^D!nnU#)	2r4V
$%	2r2s
	2sB-	2sC.	3C.	3*	3c6
"# 	
3)	3F
	4b/##J0GH 	*r2tR()	* ##J0GH 	*r4R()	* ##J0GH 	*tRR()	* ##J0GH 	*r2tVR()	* ..f.-##J0JK 	+r2tWb)*	+ ##J0JK 	sBiL	 ##J0JK 	sBiL	 ##J0JK 	r3m	 ##J0JK 	r3m	 ##J0JK 	sBiL	 	9	* 	*	* 	*	* 	*	* 	*	+ 	+	 		 		 		 		 	sx   (OO O*,O7*PP?P(P)P5<QOO'*O47PPPP&)P25P>Q
c                    i ddddddifd}t        j                  |d      }t        j                  |      }t	        t
        j                  dz         D ]Y  }| j                  |d	
      5  t        j                  t        j                  ||            }| j                  ||       d d d        [ t        j                  |      }t        dt        j                  j                        }t        j                  |j                   |      }t#               j%                  |j'                         |j(                        }| j+                  t-        |t"                     | j+                  t-        |j                   d   t                     t	        t
        j                  dz         D ]  }| j                  |d
      5  t        j                  t        j                  ||            }| j                  ||       | j+                  t-        |t"                     | j+                  t-        |j                   d   t                     d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r,   r  r   r  c                     y r   r"   r%   r   r   r  s       r   r.   z=TestSignatureObject.test_signature_object_pickle.<locals>.foo0
  r   r   r  F)
pickle_versubclassr+   )r  rf  )r4   r  T)r   r   rO   r  r/   pickleHIGHEST_PROTOCOLsubTestloadsdumpsr1  r  r  r  collectionsOrderedDictr4   r  r  r  r  rK   r  )	rU   r.   foo_partialr  versig_pickledmyparammyparamsmysigs	            r   test_signature_object_picklez0TestSignatureObject.test_signature_object_pickle/
  s   :1:2e*:''q1,00145 	3Cu= 3$ll6<<S+AB  k23 3	3 $3W->->-N-NO**3>>WE%%1B8;8M8M & O
5+67
5#3#3C#8+FG00145 	9Ct< 9$ll6<<s+CD  4
; DE
;+A+A#+F+6!8 9	9 9	93 39 9s   ,<I=BII	I%	c                    d }t        j                  |      }| j                  t              5  d|_        d d d        | j                  t
              5  d |j                  d<   d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)Nc                      y r   r"   r  s    r   r  z=TestSignatureObject.test_signature_immutability.<locals>.testL
  r  r   r&   r%   )rO   r  r  r  r.   r  r4   rU   r  r  s      r   test_signature_immutabilityz/TestSignatureObject.test_signature_immutabilityK
  sy    	%~. 	CG	 y) 	'"&CNN3	' 	'	 		' 	's   A,A8,A58Bc                 L    d }| j                  | j                  |      d       y )Nc                       y r   r"   r"   r   r   r  z9TestSignatureObject.test_signature_on_noarg.<locals>.testW
  r  r   r"   .r1  r  r  s     r   test_signature_on_noargz+TestSignatureObject.test_signature_on_noargV
  s     	-y9r   c                 N    dd}| j                  | j                  |      d       y )Nc                      y r   r"   r   s     r   r  z9TestSignatureObject.test_signature_on_wargs.<locals>.test\
  r  r   ))r%   ..positional_or_keyword)r   .r.   r.  rh  )r   r.   r  rh  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>.testd
  r  r   .keyword_only)floatr   r   r1  r  r  s     r   test_signature_on_wkwonlyz-TestSignatureObject.test_signature_on_wkwonlyc
  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 )Nrh  )r  r   r.   r   r&   rx   r-  r<  c                     y r   r"   )r%   r   rx   r  r   r<  s         r   r  z@TestSignatureObject.test_signature_on_complex_args.<locals>.testl
  r  r   r-  )r   r=  r.   r.  )r   .r&   var_positional)rx   .r-  r2  )r  rh  .r2  .var_keywordr=  )r   r1  r  r  s     r   test_signature_on_complex_argsz2TestSignatureObject.test_signature_on_complex_argsk
  sn    	S 	e 	e 	% 	3 	-CDA?<$c3>@ 	 r   c                 
   d d  G fdd      }| j                  | j                        d       | j                  | j                        d       | j                  | j                  |j                        d       | j                  | j                  |j                        d       | j                  | j                  |j                        d       | j                  | j                  |j
                        d       y )Nc                       y r   r"   r<  s    r   test_args_onlyzGTestSignatureObject.test_signature_without_self.<locals>.test_args_onlyx
  r  r   c                       y r   r"   r   r<  s     r   test_args_kwargs_onlyzNTestSignatureObject.test_signature_without_self.<locals>.test_args_kwargs_only{
  r  r   c                       e Zd Zed        Zed        Z ej                  ed      Z	 ej                  W d      Z
 ej                  ed      Z ej                  W  d      Zy):TestSignatureObject.test_signature_without_self.<locals>.Ac                       y r   r"   r<  s    r   test_classmethodzKTestSignatureObject.test_signature_without_self.<locals>.A.test_classmethod
  r   r   c                       y r   r"   r<  s    r   test_staticmethodzLTestSignatureObject.test_signature_without_self.<locals>.A.test_staticmethod
  r   r   r,   N)rL   ra   rb   r   rD  r   rF  r   partialmethodrn  ro  rp  rq  )r@  r=  s   r   rS  rB  ~
  s~        )((*:Q?B(((.1=B(((*;a@B(((*?CBr   rS  )r   ..r7  .)rI  r<  ..r8  .)r1  r  rn  ro  rp  rq  )rU   rS  r@  r=  s     @@r   test_signature_without_selfz/TestSignatureObject.test_signature_without_selfw
  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                           j)                  t*        d      5   G d d      } | |              d d d         |t        j,                          |t.        j0                          ||j2                         t4        j6                  } ||      } j                  t9        |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 Nr   rU   )
rO   r  rK   r  r  r1  r   r4   r  r  r   r  rU   s     r   test_unbound_methodzKTestSignatureObject.test_signature_on_builtins.<locals>.test_unbound_method
  sd    S))!,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 rO  )
rO   r  rK   r  r  r4   r  r   r  r  rP  s     r   test_callablezETestSignatureObject.test_signature_on_builtins.<locals>.test_callable
  sn    d))!,IOOJy'2C2CDE####D)=)=)D)D)F$G$J$O$OQWXr   c                 6    j                   |    j                  S r   )r4   rg  )r  r  s    r   r6   z9TestSignatureObject.test_signature_on_builtins.<locals>.p
  s    I006>>>r   r  r  r   s   bytesrs  gQ	@r5   #   nrL  Trt  Flocalrb  r  rW   r,   s   abczno signature foundc                       e Zd ZeZy)DTestSignatureObject.test_signature_on_builtins.<locals>.ThisWorksNowN)rL   ra   rb   r   r   r"   r   r   ThisWorksNowrY  
  s    r   rZ  rU   buffer)r  r  r1  r  maxsizer   r  r  r  r  StringIObytes	maketransr   fromkeysr   r   r   r  minr  rk  __delitem__r  r  #docstring_with_signature_but_no_doc	bytearray__release_buffer__r   r4   )
rU   r  rQ  rS  r6   rs  rZ  r  r  r  s
   `        @r   test_signature_on_builtinsz.TestSignatureObject.test_signature_on_builtins
  s@    			 ")"R"RS	>3+3*3&3$3&3&3'7Q'53;;/53;;?3f 	GOO001OOBKKM*aff 	eoo&f&&' 	dmm$bkk" 	DMM*CKK(qkk" 	cll# ##J0DE 	*   ,.)	* 	D,,-H//0 	iCCD --!&)cnn-/AB	* 	*s   K44K=c                 2   dd l }|j                  }d } ||      }| j                  t        j                  |      t        j                  |             dt
        fd}| j                  t        j                  |d      t        j                  |             y )Nr   c                 P     t        j                         dt        f fd       }|S )Nr  c                       | i |S r   r"   r   r<  r  s     r   r  z\TestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator.<locals>.wrapper
      T,V,,r   r   r  r   r  r  s   ` r   	decoratorzKTestSignatureObject.test_signature_on_decorated_builtins.<locals>.decorator
  *    __T"-C - #-Nr   r  c                       y r   r"   r?  s     r   wrapper_likezNTestSignatureObject.test_signature_on_decorated_builtins.<locals>.wrapper_like
  r   r   Ffollow_wrapped)r  r  r1  rO   r  r   )rU   r  r  rn  decorated_funcrq  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  rk  rO   r  r  r   )rU   r  s     r   'test_signature_on_builtins_no_signaturez;TestSignatureObject.test_signature_on_builtins_no_signature
  s    ##J$DF 	@i>>?	@ ##J$DF 	#c"	# 	#		@ 	@	# 	#s    A<B<BBc                     | j                  t        d      5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nis not a callable objectr   )r  r  rO   r  r_   s    r   test_signature_on_non_functionz2TestSignatureObject.test_signature_on_non_function
  s6    ##I/IJ 	"b!	" 	" 	"s   6?c                    ddd} G d d      }t         j                  j                  |      }t         j                  j                   ||            }| j                  ||       t        j                   ||            }| j                  ||        ||      }|`| j                  | j	                  |      d       t         j                  fd}t        j                  j                  d|      5   ||      }| j                  t        j                  |             d|_        | j                  t        j                  |             | j                  t        j                  |      |       d d d        y # 1 sw Y   y xY w)	NTkwonlyc                     y r   r"   r%   r   r}  	kwonlyreqr   r<  s         r   r  zITestSignatureObject.test_signature_from_functionlike_object.<locals>.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   rL   r  r  __defaults____kwdefaults__r  rU   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;  r;  s      r   r   zVTestSignatureObject.test_signature_from_functionlike_object.<locals>.funclike.__call__       tyy$1&11r   NrL   ra   rb   r   r   r"   r   r   funcliker        
!2r   r  rJ  c                 .    t        | d      ry |       S )N_builtinmockTr   )rX   _orig_isdescs    r   _isdesczLTestSignatureObject.test_signature_from_functionlike_object.<locals>._isdesc6  s    sN+$$r   zinspect.ismethoddescriptor)rO   r  from_callabler1  r  r  r[  r   r   r  rT   r  rK   )	rU   r  r  sig_funcsig_funclikeflr  builtin_funcr  s	           @r   'test_signature_from_functionlike_objectz;TestSignatureObject.test_signature_from_functionlike_object  sG   $( 		2 	2  $$2248((66x~Fx0(($8x0
 d^O+ 	! 11	%
 ]]  !=wG 	H#D>LW77EF(,L%OOG66|DEW..|<hG	H 	H 	Hs   5A=E;;Fc                     ddd G fdd      }| j                  t        t        j                  |            d       y )NTr|  c                     y r   r"   r  s         r   r  zCTestSignatureObject.test_signature_functionlike_class.<locals>.funcG  r  r   c                       e Zd Zd ZW  j                   Z W  j                  ZW  j
                  ZW  j                  ZW  j                  Zy)GTestSignatureObject.test_signature_functionlike_class.<locals>.funclikec                      y r   r"   )rU   markers     r   r   zPTestSignatureObject.test_signature_functionlike_class.<locals>.funclike.__init__K  r   r   N)rL   ra   rb   r   r  r  r  r  r;  s   r   r  r  J  s=     }}H}}H"22O,,L!00Nr   r  z(marker))r1  r   rO   r  )rU   r  r  s     @r   !test_signature_functionlike_classz5TestSignatureObject.test_signature_functionlike_classC  s9     %) 		1 	1 	W..x89:Fr   c                     G d d      }| j                  | j                   |       j                        dt        f       | j                  | j                   |       j                        d       | j                  | j                  |      d       | j                  t        d      5  | j                   |              d d d        y # 1 sw Y   y xY w)Nc                   ,    e Zd Zd ZddefdZd Zd Zy):TestSignatureObject.test_signature_on_method.<locals>.Testc                       y r   r"   r<  s    r   r   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__init__X  r   r   r  c                      y r   r"   rU   rq  rr  s      r   r  z=TestSignatureObject.test_signature_on_method.<locals>.Test.m1Z  r   r   c                       y r   r"   r<  s    r   m2z=TestSignatureObject.test_signature_on_method.<locals>.Test.m2\  r   r   c                      y r   r"   r  s    r   r   zCTestSignatureObject.test_signature_on_method.<locals>.Test.__call__^  r   r   Nr,   )rL   ra   rb   r   r   r  r  r   r"   r   r   r  r  W  s    # r   r  rq  ..r.  )rr  r,   .r.  rH  zinvalid method signature)r1  r  r  r   r  r  rk  )rU   r  s     r   test_signature_on_methodz,TestSignatureObject.test_signature_on_methodV  s    	 	 			2F	 
 			2	  	-	  ##J0JK 	#NN46"	# 	# 	#s   (CCc                      G d d      }t        j                   |       j                        d        }| j                  | j	                  |      dt
        f       y )Nc                       e Zd ZddefdZy)ETestSignatureObject.test_signature_wrapped_bound_method.<locals>.Testr  c                      y r   r"   r  s      r   r  zHTestSignatureObject.test_signature_wrapped_bound_method.<locals>.Test.m1t  r   r   Nr  )rL   ra   rb   r   r  r"   r   r   r  r  s  s    # r   r  c                       y r   r"   r?  s     r   m1dzDTestSignatureObject.test_signature_wrapped_bound_method.<locals>.m1dv  r  r   r  )r   r  r  r1  r  r   )rU   r  r  s      r   #test_signature_wrapped_bound_methodz7TestSignatureObject.test_signature_wrapped_bound_methodq  sV    	 	 
	#	 
$	,F	 r   c                      G d d      } |       j                   }| j                  | j                  |      d       |j                   }| j                  | j                  |      d       y )Nc                   "    e Zd Zeddd       Zy)?TestSignatureObject.test_signature_on_classmethod.<locals>.Testr,   )rr  c                     y r   r"   )r   rq  rr  s      r   r.   zCTestSignatureObject.test_signature_on_classmethod.<locals>.Test.foo  r   r   N)rL   ra   rb   r   r.   r"   r   r   r  r    s    '(  r   r  ))r  )rr  r,   .r2  .r.   r1  r  rU   r  meths      r   test_signature_on_classmethodz1TestSignatureObject.test_signature_on_classmethod~  `    	 	
 vzz-	 
 xx-	 r   c                      G d d      } |       j                   }| j                  | j                  |      d       |j                   }| j                  | j                  |      d       y )Nc                       e Zd Zed        Zy)@TestSignatureObject.test_signature_on_staticmethod.<locals>.Testc                     y r   r"   )r   rs  s     r   r.   zDTestSignatureObject.test_signature_on_staticmethod.<locals>.Test.foo  r   r   N)rL   ra   rb   r   r.   r"   r   r   r  r    s     r   r  )))r   ..r.  )rs  ..r2  .r  r  s      r   test_signature_on_staticmethodz2TestSignatureObject.test_signature_on_staticmethod  r  r   c                    ddl m} d }| j                  | j                   ||            d       | j	                  t
        d      5  t        j                   ||d             d d d        | j	                  t
        d      5  t        j                   ||d             d d d        d }| j                  | j                   ||            d	       | j                  | j                   ||d            d
       | j                  | j                   ||dd            d       | j                  | j                   ||dd            d       | j                  | j                   ||ddd            d       | j                  | j                   ||d            d       d }| j                  | j                   ||d            d       | j                  | j                   ||d            d       | j                  | j                   ||ddd            d       | j                  | j                   ||dddd            d       | j                  | j                   ||ddddd            d       | j                  | j                   ||d            d       | j                  | j                   ||dd            d       dt        ddfd }t        j                  |      x}|_        | j                  | j                   | ||d                  d!dd"t        d#ffdf       | j                  | j                   | ||d      d            dd"t        d#ffdf       d$ } | ||d%      d&      }| j                  | j                  |      d'       | j                   |       d&       d( } | ||dd&      d)      }| j                  | j                  |      d*       | j                   |d%      d+       d, } | ||d&d&-      d%d).      }| j                  | j                  |      d/       t        j                  |      j                  d0d12      }| j                   ||j                  i |j                  d3       dBd4} ||d5      }t        j                  |      j                  d1      }| j                   ||j                  i |j                  d6       t        j                  |      j                  d1d7      }| j                   ||j                  i |j                  d8       t        j                  |      j                  d1d7      }| j                   ||j                  i |j                  d8       t        j                  |      j                  d7      }| j                   ||j                  i |j                  d9        ||d%d&      }t        j                  |      j                  d7      }| j                   ||j                  i |j                  d:       d; }t        j                  |      }| j                  t        |      d<       | j                  | j                   ||d            d=       | j                  | j                   ||dd            d>       | j                  | j                   ||ddd            d?       | j                  | j                   ||ddd            d@       | j                  | j                   ||dd            dA       y # 1 sw Y   xY w# 1 sw Y   xY w)CNr   )r   c                       y r   r"   r"   r   r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   r(  has incorrect argumentsr,   r  c                     y r   r"   rt  s       r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   ))r-  r   ..r.  r   ..r2  rs  ..r2  .))r  r  r  .r-   r  ))r  r   r-   .r2  r  .)r   r   ))r-  r   r,   .r2  r  r  .))r  r  r  .))r%   r,   .r2  r   ..r2  r  r  .c                     y r   r"   )r%   r   r   r<  s       r   r  z;TestSignatureObject.test_signature_on_partial.<locals>.test  r  r   ))rI  r  rK  .))r  r  rK  .rb  Tr  )r  r   ))rI  r   r   .r2  rK  .r   ))r-  rI  r  rK  .)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   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.foo  s    Hr   r=     )))r%   r  .r2  .c                     | ||fS r   r"   r  s      r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.foo!      a7Nr   rP  )))r   rP  .r2  r  .)r,   rP  r=  c                    | |||fS r   r"   rt  s       r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.foo+  s    aA:r   )rs  r   )r   rs  ))r-  )r   r=  .r2  )r   r  .r2  )rs  rP  .r2  .   ri  r   )r  ri  r  rP  c                     | ||fS r   r"   r  s      r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.foo8  r  r   rd  )ri  r-   rd  rH  )ri  rH  rd  )r,   rH  rd  )rH  r=  r  c                     y r   r"   )r%   r   r   rs  r<  s        r   r.   z:TestSignatureObject.test_signature_on_partial.<locals>.fooM  r  r   z(a, b, /, c, d, **kwargs)))r   ..positional_onlyr   ..r.  rs  ..r.  rK  .))r  r  rK  .))r  rK  .))r   rb  .r2  r  rK  .))r  r  r  rK  .ru  )r   r   r1  r  r  rk  rO   r   r  bindr   r<  r   )rU   r   r  r  r.   _foobas          r   test_signature_on_partialz-TestSignatureObject.test_signature_on_partial  s   %	 	6	B##J0IJ 	0gdA./	0 ##J0IJ 	2gda01	2	 	6	  	a(89	  	a1(=>	  	Q(?@	  	a1(BC	  	(:;	 	 	a(89	  	(:;	  	aA(>?	  	aAD(IJ	  	aAA(KL	  	(:;	  	(BC	 	 	 	 $+#4#4T#::d a0@(ABCc+BCE	
 	a0@!(DEc+BCE		wsb)R0-	 
 	$	wsA,3-	  	[1	wsbB/2<-	  t$))C2)6rww4"))46GH	sb!t$))B)/rww4"))4kBt$))"b1rww4"))4lCt$))")3rww4"))4lCt$))B)/rww4"))4kBtrR(t$))"-rww4"))4lC	$S#>?Q8	 	Q(:;	 	Q1(=>	
 	QQ(?@	 	Q!(<=	A	0 	0	2 	2s   ]]]]c                    ddl m  G fdd      }| j                  t        d      5  t	        j
                  |j                         d d d         G fdd      }| j                  | j                  |j                  d      d	       | j                  | j                   |       j                  d      d
        G fdd      }| j                  | j                  |j                  d      d       y # 1 sw Y   xY w)Nr   rG  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.testu  r   r   NrL   ra   rb   r  r  r  s   r   Spamr  t  s    %Cr   r  r  c                   ,    e Zd ZddZ W  ed      Zy)r  c                     y r   r"   )itr%   r   s      r   r  zFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.test}  r   r   r,   r  N)r  rx   r  r  s   r   r  zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spam|  s    *Cr   Fr  )))r  ..r.  r-  r   r,   .r2  rx   ))r-  r  rx   c                   *    e Zd ZddZ W  ed      Zy)r  c                      y r   r"   r  s     r   r  zFTestSignatureObject.test_signature_on_partialmethod.<locals>.Spam.test  r   r   r,   N)rU   anno)rL   ra   rb   r  ru  r  s   r   r  zATestSignatureObject.test_signature_on_partialmethod.<locals>.Spam  s     dA&Ar   )))rU   .r  r.  .)	r   rG  r  rk  rO   r  r  r1  ru  )rU   r  rG  s     @r   test_signature_on_partialmethodz3TestSignatureObject.test_signature_on_partialmethodq  s    +	& 	&
 ##J0IJ 	(dhh'	(	+ 	+
 	5A"	# 	

UC"	#
	' 	' 	?	 3	( 	(s    C77D c                 t    d }d|_         | j                  t        t        j                  |            d       y )Nc                      y r   r"   r  s    r   r.   zETestSignatureObject.test_signature_on_fake_partialmethod.<locals>.foo  r   r   rx   z(a))_partialmethodr1  r   rO   r  rU   r.   s     r   $test_signature_on_fake_partialmethodz8TestSignatureObject.test_signature_on_fake_partialmethod  s-    #W..s34e<r   c                    d  G fdd      }  |       j                         }| j                  | j                  |j                         d       | j                  | j                   |       j                         d       | j                  | j                  |j                   d      d       | j                  | j                  |      d       d	  G fd
d      }| j                  | j                  |j                        d       | j                  | j                   |       j                        d       d }|j                  |_        | j                  | j                  |      d       y )Nc                 P     t        j                         dt        f fd       }|S )Nr  c                       | i |S r   r"   rj  s     r   r  zSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper  rk  r   rl  rm  s   ` r   rn  zBTestSignatureObject.test_signature_on_decorated.<locals>.decorator  ro  r   c                        e Zd ZW  d        Zy)<TestSignatureObject.test_signature_on_decorated.<locals>.Fooc                      y r   r"   rU   r%   r   s      r   r&   z@TestSignatureObject.test_signature_on_decorated.<locals>.Foo.bar  r   r   N)rL   ra   rb   r&   rn  s   r   rx  r         r   rx  ))rU   ..r.  r-  r  .))r-  r  .Frr  rJ  c                      t        j                         dt        f fd       }t        j                         }t        |j                  j                               dd  }|j                  |      |_	        |S )Nr  c                       dg| i |S rA  r"   rj  s     r   r  zSTestSignatureObject.test_signature_on_decorated.<locals>.decorator.<locals>.wrapper  s    B0000r   r,   r  )
r   r  r   rO   r  r  r4   r  r  r  )r  r  r  
new_paramss   `   r   rn  zBTestSignatureObject.test_signature_on_decorated.<locals>.decorator  sk    __T"1C 1 #1##D)Cs~~4467;J$'KK:K$FG!Nr   c                        e Zd ZW  d        Zy)r  c                      y r   r"   r  s      r   r   zETestSignatureObject.test_signature_on_decorated.<locals>.Foo.__call__  r   r   Nr   r  s   r   rx  z<TestSignatureObject.test_signature_on_decorated.<locals>.Foo  r  r   )r  .c                       y r   r"   r"   r   r   wrapped_foo_callzITestSignatureObject.test_signature_on_decorated.<locals>.wrapped_foo_call  r  r   )r&   r1  r  r   __wrapped__)rU   rx  r&   r  rn  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        G d dt              } G d	 d|      }| j                  | j                  |      d
       | j                  | j                  |      d        G d dt              } G d dt        |      } G d d|      }| j                  | j                  |      d       | j                  | j                  |      d       | j                  | j                  |      d
        G d dt              } G d d|      }| j                  | j                  |      d       y )Nc                       e Zd Zd Zy)6TestSignatureObject.test_signature_on_class.<locals>.Cc                      y r   r"   rU   r%   s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   NrL   ra   rb   r   r"   r   r   r   r    r   r   r   )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"   rU   r   s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__  r   r   Nr  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C  r   r   r  c                   $     e Zd Zdd fd
Z xZS )r  r,   r  c                (    t         |   | |||      S r   r'  r  mclsr  basesdctr.   r)  s        r   r  z?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__      wtT5#>>r   rL   ra   rb   r  r1  r2  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.  )r.   r,   .r2  .c                   *     e Zd Zdd fd
Zd Z xZS )8TestSignatureObject.test_signature_on_class.<locals>.CMMr,   r  c                (    t         |   | |||      S r   r  r  s        r   r  z@TestSignatureObject.test_signature_on_class.<locals>.CMM.__new__
  r  r   c                     t        |||      S r   )r   )r   nmbsdts       r   r   zATestSignatureObject.test_signature_on_class.<locals>.CMM.__call__  s    BB''r   )rL   ra   rb   r  r   r1  r2  s   @r   CMMr'  	  s    78 ?(r   r-  c                   $     e Zd Zdd fd
Z xZS )r  r-   r&   c                (    t         |   | |||      S r   r  )r  r  r  r  r&   r)  s        r   r  z?TestSignatureObject.test_signature_on_class.<locals>.CM.__new__  r  r   r  r2  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM  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__  r   r   Nr  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C  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   r'  r   )r   r  r  r  r&   r)  s        r   r   z@TestSignatureObject.test_signature_on_class.<locals>.CM.__init__'  s    w'eS99r   rL   ra   rb   r   r1  r2  s   @r   r  z7TestSignatureObject.test_signature_on_class.<locals>.CM&  s    78 : :r   c                       e Zd Zd Zy)r  c                      y r   r"   r  s     r   r   z?TestSignatureObject.test_signature_on_class.<locals>.C.__init__*  r   r   Nr  r"   r   r   r   z6TestSignatureObject.test_signature_on_class.<locals>.C)  r   r   ))r#  r$  r%  )r&   r-   .r2  .)r1  r  r   )rU   r   r  r-  s       r   test_signature_on_classz+TestSignatureObject.test_signature_on_class  sz   	 	 	*	 	 		" 	 	*	 	? 	?	" 	 	*	  	+	 	($ 	(
	? 	?	" 	 	,	  	+	  	*	 	: 	:	" 	 	+	 r   c                      G d d      } G d d|      } G d d|      } G d d|      }| j                  | j                  |      d	       | j                  | j                  |      d
       | j                  | j                  |      d       y )Nc                       e Zd ZddZy)9TestSignatureObject.test_signature_on_subclass.<locals>.Ac                 ,    t         j                  |       S r   r   r  )r   r%   r   r<  s       r   r  zATestSignatureObject.test_signature_on_subclass.<locals>.A.__new__6      ~~c**r   Nr  rL   ra   rb   r  r"   r   r   rS  r<  5      +r   rS  c                       e Zd Zd Zy)9TestSignatureObject.test_signature_on_subclass.<locals>.Bc                      y r   r"   r  s     r   r   zBTestSignatureObject.test_signature_on_subclass.<locals>.B.__init__9  r   r   Nr  r"   r   r   rV  rC  8  r   r   rV  c                       e Zd ZddZy)9TestSignatureObject.test_signature_on_subclass.<locals>.Cc                 ,    t         j                  |       S r   r>  )r   r%   r   r   r<  s        r   r  zATestSignatureObject.test_signature_on_subclass.<locals>.C.__new__<  r?  r   Nr,   r-   r@  r"   r   r   r   rF  ;  rA  r   r   c                       e Zd Zy)9TestSignatureObject.test_signature_on_subclass.<locals>.DNr   r"   r   r   r[  rJ  >  r*  r   r[  r  ))r%   r,   .r.  r   r-   .r.  rI  rK  .))rK  rI  rK  .r)  )rU   rS  rV  r   r[  s        r   test_signature_on_subclassz.TestSignatureObject.test_signature_on_subclass4  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__V  r   r   )rL   ra   rb   r   r   r"   r   r   rS  rR  U  s    S T r   rS  r%   .r2  )typingrO  rP  r1  r  r   )rU   rO  rP  r,  rS  s        r   "test_signature_on_generic_subclassz6TestSignatureObject.test_signature_on_generic_subclassP  sP    +CL	
 	 	*c>:< 	!r   c                 Z    G d d      }| j                  t        t        j                  |            d        G d d|      }| j                  t        t        j                  |            d        G d dt              } G d d|      }| j                  t        d      5  | j                  t        j                  |      d        d d d        | j                  t        d      5  | j                  t        j                  |      d        d d d        y # 1 sw Y   Nx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   rY  a  r   r   r   r  c                       e Zd ZyCTestSignatureObject.test_signature_on_class_without_init.<locals>.DNr   r"   r   r   r[  r\  c  r   r   r[  c                       e Zd ZyrX  r   r"   r   r   r   zCTestSignatureObject.test_signature_on_class_without_init.<locals>.Cg  r   r   c                       e Zd Zyr[  r   r"   r   r   r[  zCTestSignatureObject.test_signature_on_class_without_init.<locals>.Dh  r   r   zcallable.*is not supported)r1  r   rO   r  r   r  rk  )rU   r   r[  s      r   $test_signature_on_class_without_initz8TestSignatureObject.test_signature_on_class_without_init]  s     	W..q12D9W..q12D9 	##J0LM 	9W..q148	9##J0LM 	9W..q148	9 	9	9 	9	9 	9s   "&D&&D!D!D*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
  rb  u  r   r   r
  c                       e Zd Zy)GTestSignatureObject.test_signature_on_builtin_class.<locals>.EmptyTraitNr   r"   r   r   
EmptyTraitrd  v  r   r   re  c                       e Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P2Nr   r"   r   r   P2rg  w  r   r   rh  c                       e Zd Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P3c                      y r   r"   )rU   rx   s     r   r   zHTestSignatureObject.test_signature_on_builtin_class.<locals>.P3.__init__|  r   r   Nr  r"   r   r   P3rj  {  r   r   rl  z(spam)c                       e Zd Zd Zy)BTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaPc                      y r   r"   )r   r.   r&   s      r   r   zKTestSignatureObject.test_signature_on_builtin_class.<locals>.MetaP.__call__  r   r   Nr   r"   r   r   MetaPrn    r   r   rp  c                       e Zd Zy)?TestSignatureObject.test_signature_on_builtin_class.<locals>.P4Nr   r"   r   r   P4rr    r*  r   rs  r  z
(foo, bar))r1  r   rO   r  r  r  r   )rU   r]  r
  re  rh  rl  rp  rs  s           r   test_signature_on_builtin_classz3TestSignatureObject.test_signature_on_builtin_classn  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                 R    G d d      }| j                  | j                   |             d        G d d      }| j                  t        d      5  t	        j                   |              d d d         G d d||      }| j                  | j                   |             d        G d	 d
      }d |_        | j                  | j                  |      d       ||_        | j                  t        d      5  | j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)CTestSignatureObject.test_signature_on_callable_objects.<locals>.Fooc                      y r   r"   r  s     r   r   zLTestSignatureObject.test_signature_on_callable_objects.<locals>.Foo.__call__  r   r   Nr   r"   r   r   rx  rw    r   r   rx  r  c                       e Zd Zy)DTestSignatureObject.test_signature_on_callable_objects.<locals>.SpamNr   r"   r   r   r  rz    r*  r   r  ry  c                       e Zd Zy)CTestSignatureObject.test_signature_on_callable_objects.<locals>.BarNr   r"   r   r   r(  r|    r*  r   r(  c                       e Zd Zy)GTestSignatureObject.test_signature_on_callable_objects.<locals>.WrappedNr   r"   r   r   Wrappedr~    r*  r   r  c                      y r   r"   r  s    r   r   zHTestSignatureObject.test_signature_on_callable_objects.<locals>.<lambda>  r   r   wrapper loop)r1  r  r  r  rO   r  rk  )rU   rx  r  r(  r  s        r   "test_signature_on_callable_objectsz6TestSignatureObject.test_signature_on_callable_objects  s   	 	 	.	 	 	##I/IJ 	&df%	&	$ 	 	.	 	 	,0	  &##J? 	$NN7#	$ 	$%	& 	&$	$ 	$s   D6DDD&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    a r   )))r%   r=  .r.  .r9  r)  r_   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  r1  r   rO   r  rU   r   s     r   test_signature_on_mocksz+TestSignatureObject.test_signature_on_mocks  s     MM MM##%MM##%
 	TD
 4( T  W%6%6t%<!=?RST T	T
T Ts   //B))B2	c                 R   t         j                  j                         t         j                  j                         fD ]P  }| j	                  |      5  | j                  t              5  t        j                  |       d d d        d d d        R y # 1 sw Y   xY w# 1 sw Y   ixY w)Nr  )	r   r   NonCallableMockNonCallableMagicMockr  r  r  rO   r  r  s     r   #test_signature_on_noncallable_mocksz7TestSignatureObject.test_signature_on_noncallable_mocks  s    MM))+MM..0
 	,D 4( ,&&y1 ,%%d+,, ,		,
, ,, ,s$   B(B>BBBB&	c                    dt         dt        fd}| j                  t        j                  |      dk(         | j                  t        j                  |      dk7         | j                  t        j                  |      t        k(         | j                  t        j                  |      t        k7         dt         dt        fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         dt         fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dddt         dt        fd	}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt        fd
}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         dt        fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dt         dt        fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   d }d }| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   ddd}ddd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   ddd}ddd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   d }ddd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   dddt         fd}dddt         fd}| j                  t        j                  |      t        j                  |      k(         | j                  t        j                  |      t        j                  |      k7         | j                  t        t        j                  |            t        t        j                  |                   y )Nr   r  c                     y r   r"   r   s     r   r.   z8TestSignatureObject.test_signature_equality.<locals>.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  r   r   r  c                     y r   r"   r   s     r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r   r   c                     y r   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   r%   s     r   rx   z9TestSignatureObject.test_signature_equality.<locals>.spam  r   r   c                      y r   r"   r  s      r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  r   r   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   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  r   r   c                      y r   r"   r  s      r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r   r   c                     y r   r"   posr%   r   r   s       r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  r   r   c                     y r   r"   r  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>.foo  r   r   c                     y r   r"   r  s       r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r   r   r<  c                     y r   r"   )r  r%   r   r   r   r<  s         r   r.   z8TestSignatureObject.test_signature_equality.<locals>.foo  r   r   c                     y r   r"   )r  r   r   r%   r   r<  s         r   r&   z8TestSignatureObject.test_signature_equality.<locals>.bar  r   r   )
r   r3  rT   rO   r  rK   r   r1  hashr  )rU   r.   r&   rx   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   r.   z8TestSignatureObject.test_signature_hashable.<locals>.foo  r   r   r%   r  rx   r  r  c                      y r   r"   r  s    r   r&   z8TestSignatureObject.test_signature_hashable.<locals>.bar  r   r   c                      y r   r"   r  s    r   r.   z8TestSignatureObject.test_signature_hashable.<locals>.foo"  r   r   unhashable typec                      y r   r"   r  s    r   r.   z8TestSignatureObject.test_signature_hashable.<locals>.foo&  r   r   )r  r,   )rO   r  r  r  POSITIONAL_OR_KEYWORDr1  r  r  r  r  r  )rU   r	  r
  r.   foo_sig
manual_sigr&   s          r   test_signature_hashablez+TestSignatureObject.test_signature_hashable  s9   ##C(1S!*A*A#B"CD
gZ(89DM !3!3f!3!MN	P 	DM40A0A#0F+GH##I/@A 	)""3'(	) 	b##I/@A 	)""3'(	) 	)		) 	)	) 	)s   E-E9-E69Fc                    dd ddt         ddfd}| j                  t        t        j                  |            d       dd ddt         ddfd}| j                  t        t        j                  |            d       d	 }| j                  t        t        j                  |            d
       dt
        t           dt        t        t        f   fd}| j                  t        t        j                  |            d       ddlm	} dt
        t           d|t        t        f   fd}| j                  t        t        j                  |            d       y )Nr  r%   r  r   c                     y r   r"   r%   r   r   r<  s       r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo+  r  r   z*(a: int = 1, *, b, c=None, **kwargs) -> 42c                     y r   r"   )r%   r   r   r   r<  s        r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo0  r  r   z.(a: int = 1, *args, b, c=None, **kwargs) -> 42c                       y r   r"   r"   r   r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo5  r  r   r  c                      y r   r"   r  s    r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo9  r  r   z#(a: list[str]) -> tuple[str, float]r   )Tuplec                      y r   r"   r  s    r   r.   z3TestSignatureObject.test_signature_str.<locals>.foo?  r  r   z#(a: list[str]) -> Tuple[str, float]r  )
r   r1  r   rO   r  r   r  r3  rT  r  )rU   r.   r  s      r   test_signature_strz&TestSignatureObject.test_signature_str*  s0   	 	# 	B 	W..s34E	G	T 	# 	 	W..s34I	K	W..s34d;	49 	sEz!2 	W..s34>	@ 	!	49 	sEz!2 	W..s34>	@r   c                 &   t         j                  }t         j                  }d }| j                  t	        t        j
                  |            d       | j                  t	         | |d|j                        g            d       | j                  t	         | |d|j                         |d|j                        g            d       | j                  t	         | |d|j                         |d|j                        g            d       y )	Nc               
    | |fS r   r"   )a_por   r<  s      r   r  zDTestSignatureObject.test_signature_str_positional_only.<locals>.testH      <r   z(a_po, /, *, b, **kwargs)r.   r  z(foo, /)r&   z(foo, /, **bar)z(foo, /, *bar))	rO   r  r  r1  r   r  r  rl  VAR_POSITIONAL)rU   r
  r	  r  s       r   "test_signature_str_positional_onlyz6TestSignatureObject.test_signature_str_positional_onlyD  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   )rO   r  r  rQ  r  r  r1  r$  s      r   test_signature_replace_annoz/TestSignatureObject.test_signature_replace_anno[  s    	 %kkDk1c++T2kkCIIk6c++SYY7kkBk/..3g//56r   c                     d }t        j                  dt         j                  j                        }t        j                  |f      x}|_        | j                  |t        j                  |             y )Nc                       y r   r"   r"   r   r   r  z9TestSignatureObject.test_signature_replaced.<locals>.testi  r  r   rx   r  )rO   r  r  r  r  r1  r  )rU   r  r  r  s       r   test_signature_replacedz+TestSignatureObject.test_signature_replacedh  s\    	 &&vw/@/@/P/PQ
#*#4#4#NNd g//56r   c                     G d d      } G d d|      }| j                  | j                  |j                        d       | j                  | j                  |j                        | j                  |j                               y )Nc                       e Zd ZdddddZy)FTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spamrb  )	_Spam__p2c                     y r   r"   )rU   	_Spam__p1r  s      r   r.   zJTestSignatureObject.test_signature_on_mangled_parameters.<locals>.Spam.foor  r   r   N)r-   )r  r,   r  r-   r  r"   r   r   r  r  q  s    a r   r  c                       e Zd Zy)ETestSignatureObject.test_signature_on_mangled_parameters.<locals>.HamNr   r"   r   r   Hamr  t  r*  r   r  ))r  )r  r-   r,   r.  )r  rb  r-   r2  .)r1  r  r.   )rU   r  r  s      r   $test_signature_on_mangled_parametersz8TestSignatureObject.test_signature_on_mangled_parametersp  sk    	 		$ 	 	1	  	10	2r   c                      G d dt         j                        }dd}|j                  |      }| j                  ||       y )Nc                       e Zd Zy)PTestSignatureObject.test_signature_from_callable_python_obj.<locals>.MySignatureNr   r"   r   r   r  r    r   r   r  c                     y r   r"   r   s     r   r.   zHTestSignatureObject.test_signature_from_callable_python_obj.<locals>.foo  r   r   r   r,   rO   r  r  assertIsInstancerU   r  r.   r  s       r   'test_signature_from_callable_python_objz;TestSignatureObject.test_signature_from_callable_python_obj  s3    2'++2 ++C0g{3r   c                      G d dt         j                        } G d d      }|j                  |      }| j                  ||       y )Nc                       e Zd Zy)KTestSignatureObject.test_signature_from_callable_class.<locals>.MySignatureNr   r"   r   r   r  r    r   r   r  c                       e Zd Zy)CTestSignatureObject.test_signature_from_callable_class.<locals>.fooNr   r"   r   r   r.   r    r   r   r.   r  r  s       r   "test_signature_from_callable_classz6TestSignatureObject.test_signature_from_callable_class  s5    2'++2++C0g{3r   c                      G d dt         j                        }|j                  t        j                        }| j                  ||       y )Nc                       e Zd Zy)QTestSignatureObject.test_signature_from_callable_builtin_obj.<locals>.MySignatureNr   r"   r   r   r  r    r   r   r  )rO   r  r  r  r  r  )rU   r  r  s      r   (test_signature_from_callable_builtin_objz<TestSignatureObject.test_signature_from_callable_builtin_obj  s6     	3'++2''8c;/r   c                 Z   t               D ]Z  }t        j                  |      }t        |j                        }t        |      }| j                  |       | j                  ||       \ t        j                  t              }t        |j                        }| j                  |t               y r   )
r;   rO   r  r   r4   r  rK   r1  rD   r  r  s        r   3test_signature_definition_order_preserved_on_kwonlyzGTestSignatureObject.test_signature_definition_order_preserved_on_kwonly  s    GI 	*B))"-IY))*AayHOOAQ)	* %%&IJ	%%&<=r   c                     t        j                  d       j                  }t        j                  d       j                  }| j                  ||       y )Nc                      y r   r"   r  s     r   r   zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>  r   r   c                      y r   r"   r  s     r   r   zITestSignatureObject.test_signater_parameters_is_ordered.<locals>.<lambda>  r   r   )rO   r  r4   r  )rU   p1p2s      r   #test_signater_parameters_is_orderedz7TestSignatureObject.test_signater_parameters_is_ordered  s@    01<<01<<B#r   c                 l    G d d      }d|dt         fd}d|dddt         fd}t        j                  t        j                  j                  fD ]U  }| j                  |	      5   ||      }| j                  |j                  t                | j                  |j                  d   j                  |        ||t               
      }| j                  |j                  t                | j                  |j                  d   j                  |        ||dt         it                     }| j                  |j                  t                | j                  |j                  d   j                  |       | j                  |j                  d   j                  d       d d d        X y # 1 sw Y   dxY w)Nc                       e Zd Zy)QTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.FooNr   r"   r   r   rx  r    r   r   rx  r.   r  c                      y r   r"   r  s    r   r  zRTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func  r   r   r&   r(  c                      y r   r"   r.   r&   s     r   func2zSTestSignatureObject.test_signature_annotations_with_local_namespaces.<locals>.func2  r   r   signature_func)rp  )r  rp  )r   rO   r  r  r  r  r1  r  r4   r  rp  )rU   rx  r  r  r  sig1r  sig3s           r   0test_signature_annotations_with_local_namespaceszDTestSignatureObject.test_signature_annotations_with_local_namespaces  se   'c'c'4s4434&00'2C2C2Q2QR 	KN~> K%d+  !7!7=  !7!B!BCH%d68<  !7!7=  !7!B!BCH%eeS\&(S  !7!7=  !7!B!BCH  !7!B!BEJK K	KK Ks   %D8F))F3	c                 j   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             | j                   ||j                         |              | j                   ||j                         | |d|       |d|       |d|      f             | j                   ||j                  d       | |d|       |d|      f             | j                   ||j                  d       ||j                   |d|t               |d|t               f	             | j                   ||j                  d       ||j                   |d|t               |d|d       |d||j                        f	             | j                   ||j                  d       | |d|d       |d|d       |d|d      f             t"        t$        d}t&        t(        d}| j+                  t,              5   ||j                  d|       d d d        | j                   ||j                  d|       |t(         |d|t               |d|t&              f	             | j                   ||j                  d||       |t(         |d|t"               |d|t&              f	             d d d         y # 1 sw Y   xY w# 1 sw Y   xY w)Nr  r%   r   r  r  r   r  r   )r  r4   r  r   r  r  Tr  )r   r   )r   r  r  r  )r  r  rp  )r   rO   r  r  r  r  r  r  r1  r  rV  r  r  r  r  r   r   r3  complexr  r   r  	NameError)rU   r  r  parPORKr  globalnslocalnss           r   test_signature_eval_strz+TestSignatureObject.test_signature_eval_str  s   ,  66&00'2C2C2Q2QR b	N~> a  "3;;/TNTN$   "3<<0*3Te<Te<$   "3==1*3Te<Tg>Ti@$   "3==1Tg>Tg>TkB$   0D0D!EsuM  0H0H!ITNTNTN$   "3;;>TNTN$   "3<<$?*-++Tc:Tc:$   "3==4@*-++Tc:Te<TckkB$   "3==4@Te<Te<Ti@$ $)9"'D9&&y1 R"3<<$QR   "3<<$wO*.Tc:Te<$   "3<<$Y`a*.Te<Te<$ua ab	^R R]a as&   KP(P-B#P(P%!P((P2	c                     G d d      }d } ||      }d |_         t        j                  t        j                  j                  fD ]G  }| j                  |      5  | j                   ||      t        j                                d d d        I | j                  t        j                  |      i        y # 1 sw Y   yxY w)Nc                       e Zd Zd Zd Zy)DTestSignatureObject.test_signature_none_annotation.<locals>.funclikec                     |j                   | _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        || _        y r   r  r  s     r   r   zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__init__'  r  r   c                 &     | j                   |i |S r   r;  r;  s      r   r   zMTestSignatureObject.test_signature_none_annotation.<locals>.funclike.__call__/  r  r   Nr  r"   r   r   r  r	  "  r  r   r  c                       y r   r"   r"   r   r   r.   z?TestSignatureObject.test_signature_none_annotation.<locals>.foo2  r   r   r  )r  rO   r  r  r  r  r1  r  )rU   r  r.   r  s       r   test_signature_none_annotationz2TestSignatureObject.test_signature_none_annotation!  s    	2 	2  	sm"&00'2C2C2Q2QR 	KN~> K  !4g6G6G6IJK K	K 	005r:K Ks   +B77C 	c                 h    d | _          G d d      }| j                  | j                  |      d       y )Nc                       e Zd ZdZy)4TestSignatureObject.test_signature_as_str.<locals>.S(a, b=2)N)rL   ra   rb   r  r"   r   r   r	  r	  <  s    &Mr   r	  )r-  rL  .)r2  r1  r  rU   r	  s     r   test_signature_as_strz)TestSignatureObject.test_signature_as_str:  s3    	' 	' 	*	 r   c                      G d d      }| j                  | j                  |      d        G d d      }| j                  | j                  |      d       y )Nc                       e Zd Zed        Zy)9TestSignatureObject.test_signature_as_callable.<locals>.Sc                      yNr	  r"   r   s    r   r  zGTestSignatureObject.test_signature_as_callable.<locals>.S.__signature__G      !r   N)rL   ra   rb   r   r  r"   r   r   r	  r	  F  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__Q  r	  r   N)rL   ra   rb   r   r  r"   r   r   r	  z9TestSignatureObject.test_signature_as_callable.<locals>.SP  s    " "r   r)  r	  s     r   test_signature_as_callablez.TestSignatureObject.test_signature_as_callableD  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  )rU   r   r<  r)  s      r   r  zHTestSignatureObject.test_signature_on_derived_classes.<locals>.B.__new__^  s    wt,,r   c                     || _         y r   )r  r  s     r   r   zITestSignatureObject.test_signature_on_derived_classes.<locals>.B.__init__`  s	    "
r   )rL   ra   rb   r  r   r1  r2  s   @r   rV  r	  ]  s    -#r   rV  c                        e Zd Z fdZ xZS )ATestSignatureObject.test_signature_on_derived_classes.<locals>.D1c                 $    t         |   |       y r   r5  )rU   r  r)  s     r   r   zJTestSignatureObject.test_signature_on_derived_classes.<locals>.D1.__init__d  s     'r   r6  r2  s   @r   D1r!	  c  s    ( (r   r#	  c                       e Zd Zy)ATestSignatureObject.test_signature_on_derived_classes.<locals>.D2Nr   r"   r   r   D2r%	  g  r*  r   r&	  )r1  rO   r  )rU   rV  r#	  r&	  s       r   !test_signature_on_derived_classesz5TestSignatureObject.test_signature_on_derived_classesZ  sL    	# 	#	( 	(	 	 	**2.0A0A"0EFr   N):rL   ra   rb   r   r  r  r!  r%  r*  r/  r4  r:  rL  r   r   r$  r   rf  ru  rw  rz  r  r  r  r  r  r  r  r  r  r	  r9  rM  rU  r_  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
	  r	  r	  r'	  r"   r   r   r  r  	  s   	I 	IJX98	':
 !
 "HF X__)MOICO ICV X__)MO:O :( # #"3HjG&#6  $ $M^# J=
E PO b 8! X__)MO9O9 X__)MOCOC.$@ 
T,QHf)0@4+.772 44 X__)MO0O0
	>$
K(gR;2  ,Gr   r  c                   F    e Zd Zd Zd Zd Zd Zd Zd Ze	d        Z
d Zy	)
TestParameterObjectc                 |   t         j                  }| j                  |j                  |j                  cxk  xr3 |j
                  cxk  xr! |j                  cxk  xr |j                  k  nc        | j                  t        |j                        d       | j                  dt        |j                        v        y )Nr  )rO   r  rK   r  r  r  KEYWORD_ONLYrl  r1  r   r  )rU   r
  s     r   test_signature_parameter_kindsz2TestParameterObject.test_signature_parameter_kindsn  s    ))A,C,C J((J+,>>J<=MMJ 	K 	Q../1BC)T!2C2C-DDEr   c                    t        j                  ddt         j                  j                        }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  t         j                  j                         | j                  t        d      5  t        j                  ddd       d d d        | j                  t        d      5  t        j                  dt         j                  j                         d d d        | j                  t        d      5  t        j                  d	t         j                  j                         d d d        | j                  t        d
      5  t        j                  d t         j                  j                         d d d        | j                  t        d      5  t        j                  dt         j                  j                         d d d        | j                  t        d      5  t        j                  dt         j                  j                         d d d        | j                  t        d      5  t        j                  ddt         j                  j                         d d d        | j                  t        d      5  t        j                  ddt         j                  j                         d d d        t        j                  ddt         j                  j                        }| j                  t        d      5  |j!                  t         j                  j                         d d d        | j#                  t%        |      j'                  d             | j#                  dt%        |      v        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   *xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   $xY w# 1 sw Y   xY w)Nr.   r=  rg  rf  z)value '123' is not a valid Parameter.kind123znot a valid parameter namer  ri  fromname must be a strzis not a valid parameter name$z.azcannot have default valuesr%   r   z
<Parameterz"a=42")rO   r  r  r1  r  rg  rQ  r  r  rf  r  rk  rl  r  r  r  r  rK   r  r  rU   r6   s     r   test_signature_parameter_objectz3TestParameterObject.test_signature_parameter_objectv  se   eR#*#4#4#D#DF'B'allAGG,!2!2!B!BC##J 1A B 	=eRe<	= ##J0LM 	Gc(9(9(E(EF	G ##J0LM 	Jf7+<+<+H+HI	J ##I/CD 	Hd):):)F)FG	H ##J$CE 	Gc(9(9(E(EF	G ##J$CE 	Hd):):)F)FG	H ##J0LM 	Bc2#*#4#4#@#@B	B ##J0LM 	Ec2#*#4#4#C#CE	E c2#*#4#4#J#JL##J0LM 	=II7,,;;I<	= 	Q**<89DG+,G	= 	=	G 	G	J 	J	H 	H	G 	G	H 	H	B 	B	E 	E	= 	=sl   O0O*0O7,0P:0P0P1P+%1P8$+QO'*O47PPPP(+P58QQc           
         t         j                  } |d|j                        }| j                  t	        |      t	         |d|j                                     | j                  t	        |      t	         |d|j                  d                   | j                  t	        |      t	        |j                  |j                                     y )Nr.   ri  r   re  )rO   r  r  r1  r  r  r  r  )rU   r
  r.   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 )Nr.   r   r.	  )rO   r  r+	  rK   rT   r   )rU   r
  r6   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)Nr.   r   r.	  r,   r  r&   r  zname is a required attribute)r  rg  z<value <class 'inspect._empty'> is not a valid Parameter.kindri  )rO   r  r+	  r  r  r1  r  r  r  r  r  rk  rQ  rg  r  rf  )rU   r6   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	+ ZZUDZ1bjj$'B"ZZUBHHZ5bjj"((+ ZZ)A)AZB"":":;B"##J%DE 	+ *B	+
 ZZR__Z-Q-	+ 	+ 	+ 	+s   #J7JJJ!c                     | j                  t        d      5  t        j                  d t        j                  j                         d d d        y # 1 sw Y   y xY w)Nr1	  ri  )r  r  rO   r  r  r_   s    r   (test_signature_parameter_positional_onlyz<TestParameterObject.test_signature_parameter_positional_only  sH    ##I/CD 	Ld):):)J)JK	L 	L 	Ls   0AAc                    | j                  t        d      5  t        j                  dt        j                  j                         d d d        t        j                  dt        j                  j
                        }| j                  |j                  t        j                  j                         | j                  |j                  d       y # 1 sw Y   xY w)NzYimplicit arguments must be passed as positional or keyword arguments, not positional-onlyz.0ri  	implicit0)	r  rk  rO   r  r  r  r1  rf  r  )rU   r  s     r   !test_signature_parameter_implicitz5TestParameterObject.test_signature_parameter_implicit  s    ##J%:; 	L d):):)J)JK		L !!w((>>@W%6%6%F%FG[1	L 	Ls   0CCc                 &   t        j                  dt         j                  j                        }| j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        y # 1 sw Y   /xY w# 1 sw Y   y xY w)Nrx   ri  r&   rh  )rO   r  r+	  r  r  r.   rf  r3	  s     r   %test_signature_parameter_immutabilityz9TestParameterObject.test_signature_parameter_immutability  s{    f7+<+<+I+IJ~. 	AE	 ~. 	AF	 		 		 	s   A;*B;BBN)rL   ra   rb   r,	  r4	  r6	  r8	  r:	  r<	  r   r?	  rA	  r"   r   r   r)	  r)	  m  s?    F+-ZFF & PL 
2 
2r   r)	  c                   z    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zed        Zd Zy)TestSignatureBindc                     t        j                  |       } |j                  |i |} | |j                  i |j                  S r   )rO   r  r  r   r<  )r  r   r<  r  r  s        r   callzTestSignatureBind.call   s?    %SXXt&v&RWW*		**r   c                    d }| j                  | j                  |      d       | j                  t        d      5  | j                  |d       d d d        | j                  t        d      5  | j                  |dd       d d d        | j                  t        d      5  | j                  |d       d d d        y # 1 sw Y   oxY w# 1 sw Y   HxY w# 1 sw Y   y xY w)Nc                       yrA  r"   r"   r   r   r  z9TestSignatureBind.test_signature_bind_empty.<locals>.test  s    r   r   too many positional argumentsr,   r=  rB  )got an unexpected keyword argument 'spam'r1  rE	  r  r  r  s     r   test_signature_bind_emptyz+TestSignatureBind.test_signature_bind_empty  s    	 	4"-##I/NO 	IIdA	##I/NO 	(IIdABI'	(##BD 	$ IIdI#	$ 	$		 		( 	(	$ 	$s#   B<,CC<CCCc                     d }| j                  | j                  |      di f       | j                  | j                  |d      di f       | j                  | j                  |dd      di f       | j                  | j                  |d      dd	dif       | j                  | j                  |dd      dd	dif       | j                  | j                  |d
      ddd
if       | j                  | j                  |ddd      dd	dif       y )Nc                  
    | |fS r   r"   r?  s     r   r  z7TestSignatureBind.test_signature_bind_var.<locals>.test  r  r   r"   r,   r  r-   rH  r&   r  r.   r=  r<  r   r1  rE	  r  s     r   test_signature_bind_varz)TestSignatureBind.test_signature_bind_var  s   	  	42r(34+dBZ84A.=4U3b5%.5IJ46u~8NO4b1B3EF4A59 5%.1	3r   c                 :   d }| j                  | j                  |ddd      d       | j                  t        d      5  | j                  |dddd       d d d        | j                  t        d      5  | j                  |d       d d d        | j                  t        d	      5  | j                  |       d d d        dd}| j                  | j                  |ddd      d       | j                  | j                  |dd      d       dd}| j                  | j                  |d
d      d       | j                  | j                  |d
      d       | j                  | j                  |d
      d       y # 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                     | ||fS r   r"   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test"  r  r   r,   r-   rb  ru  rH	  rD  z missing a required argument: 'b'z missing a required argument: 'a'r=  c                     | ||fS r   r"   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test2  r  r   )r,   r-   r=  c                     | ||fS r   r"   r  s      r   r  z=TestSignatureBind.test_signature_bind_just_args.<locals>.test7  r  r   rd  r  )r=  r-   rd  r  )r=  r-   rb  r  )r,   r=  rb  r9  rJ	  r  s     r   test_signature_bind_just_argsz/TestSignatureBind.test_signature_bind_just_args!  sp   	 	4Aq19=##I/NO 	(IIdAq!Q'	( ##I$FH 	IIdA	 ##I$FH 	IIdO		4Aq19=4A.
;	424kB42.
;42.
;)	( 	(	 		 	s#   E72F#F7FFFc                     d }| j                  | j                  |      d       | j                  | j                  |ddd      d       y )Nc                      | S r   r"   r<  s    r   r  zATestSignatureBind.test_signature_bind_varargs_order.<locals>.test>  s    Kr   r"   r,   r-   rb  ru  rN	  r  s     r   !test_signature_bind_varargs_orderz3TestSignatureBind.test_signature_bind_varargs_order=  s@    	 	4"-4Aq19=r   c           
         dd}| j                  | j                  |ddddd      d       | j                  | j                  |dd      d       | j                  | j                  |dd	      d
       | j                  | j                  |dd      d       | j                  t        d      5  | j                  |dddd       d d d        y # 1 sw Y   y xY w)Nrb  c                     | |||fS r   r"   )r%   r   r   r   s       r   r  zDTestSignatureBind.test_signature_bind_args_and_varargs.<locals>.testE  s    aD= r   r,   r-   rD  r  )r,   r-   rb  )rD  r  )r,   r-   rb  r"   r  )r-   r,   rb  r"   r  z multiple values for argument 'c'r  rb  rJ	  r  s     r   $test_signature_bind_args_and_varargsz6TestSignatureBind.test_signature_bind_args_and_varargsD  s    	! 	4Aq!Q79JK4A.>412MB4a0-@##I%GI 	*IIdAq!qI)	* 	* 	*s   ,CCc                     d }| j                  | j                  |      i        | j                  | j                  |dd      ddd       y )Nc                      | S r   r"   )r<  s    r   r  z?TestSignatureBind.test_signature_bind_just_kwargs.<locals>.testR  s    Mr   r&   r  r.   rx   rN	  r  s     r   test_signature_bind_just_kwargsz1TestSignatureBind.test_signature_bind_just_kwargsQ  sH    	 	4"-4U?!&6	8r   c           
         dd}| j                  | j                  |dd      dddi f       | j                  | j                  |dddd      ddddddf       | j                  | j                  |dddd      ddddddf       | j                  | j                  |dddd	      ddddddf       | j                  | j                  |dddd
      ddddddf       | j                  | j                  |ddddd      ddddddf       | j                  | j                  |dddd      dddddif       | j                  | j                  |ddd      dddi f       y )Nrb  c                     | |||fS r   r"   r  s       r   r  zCTestSignatureBind.test_signature_bind_args_and_kwargs.<locals>.testZ  s    aF?"r   r,   r-   r&   r  r^	  )r   r%   r.   rx   )r%   r   r.   rx   )r   r.   rx   rD  )r   r   r.   rx   r  r.   r  )r   r%   r   rZ	  rN	  r  s     r   #test_signature_bind_args_and_kwargsz5TestSignatureBind.test_signature_bind_args_and_kwargsY  s   	# 	4A.Aq">4A5uEQ5%#@A	C41u5IQ5%#@A	C41u5IQ5%#@A	C4aUGQ5%#@A	C4a1%eLQ5%#@A	C4Aqe<QE5>2	441Q7Q2	(r   c           	         d }| j                  t        d      5  | j                  |d       d d d        | j                  | j                  |d      d       ddd}| j                  t        d      5  | j                  |d       d d d        d }| j                  | j                  |dd	      d
       | j                  | j                  |dd      d
       | j                  t        d      5  | j                  |ddd       d d d        | j                  t        d      5  | j                  |dd       d d d        | j                  t        d      5  | j                  |ddd	       d d d        | j                  t        d      5  | j                  |ddd       d d d        | j                  t        d      5  | j                  |d       d d d        d }| j                  | j                  |dd	      ddi f       | j                  | j                  |dd      ddi f       | j                  | j                  |ddd      ddddif       | j                  | j                  |ddd      ddddif       | j                  t        d      5  | j                  |dd       d d d        | j                  | j                  |dddd      dddddf       y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   xY w)Nc                     | S r   r"   r  s    r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.testn      Jr   rH	  r,   r  c                    |S r   r"   )r%   r.   r&   s      r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.testu  re	  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/  rH  )r&   r.   rI	  r=  )r&   r.   rx   r  )r&   rx   z/missing a required keyword-only argument: 'bar'c                    | ||fS r   r"   )r.   r&   bins      r   r  z:TestSignatureBind.test_signature_bind_kwonly.<locals>.test  s    S= r   r  rx   )rx   r.   r&   z"missing a required argument: 'foo')rx   r&   )r&   ri	  rx   )ri	  rx   )r  r  rE	  r1  r  s     r   test_signature_bind_kwonlyz,TestSignatureBind.test_signature_bind_kwonlym  s4   	##I%DF 	IIdA	 	4Q/3 	##I%IK 	IIdA		42F;4QA6?##BD 	3 IIdqrI2	3
 ##I%DF 	"IIdAq!	" ##I%DF 	)IIdAqaI(	) ##BD 	2 IIdA15I1	2
 ##I&78 	 IIdA	
	!42Q2J?4QA6Ar
C4>Q0	24eBQ0	2##I$HJ 	/IIdAI.	/ 	4qrBQ2 67	9e	 		 		3 	3
	" 	"	) 	)	2 	2
	 		/ 	/s_   K4K+0K8$LL
L>L,L9K(+K58LLLL),L69Mc                 \   ddd}t        j                  |      }|j                  dddddd	
      }| j                  t	        |j
                  j                               ddddddd	dff       | j                  |j                  dddd	d
       | j                  |j                  d       y )Nr  r+   c                     y r   r"   )r%   r   r+   r   r<  s        r   r  z=TestSignatureBind.test_signature_bind_arguments.<locals>.test  r  r   r=  r  rP  rh  r  <   )r   r   r   r<  r%   r=  )r   )r  )r   rP  r<  )r   r   r<  )r=  r  )	rO   r  r  r1  r  	argumentsitemsr<  r   rU   r  r  r  s       r   test_signature_bind_argumentsz/TestSignatureBind.test_signature_bind_arguments  s     # 	%XXb"br"X= 	r||1134#_i#2rR%HIK	L 	!B"E	G(+r   c           
         dddd}| j                  | j                  |dddd	d
      dddd	d
i f       | j                  | j                  |dd      dddddi f       | j                  | j                  |dddd	      ddddd	i f       | j                  t        d      5  | j                  |dd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        y # 1 sw Y   qxY w# 1 sw Y   IxY w# 1 sw Y   y xY w)Nrb  r   r  r/  c                   | |||||fS r   r"   )r  b_poc_por.   r&   r<  s         r   r  zCTestSignatureBind.test_signature_bind_positional_only.<locals>.test  s    tS#v55r   r,   r-   rD  r     r  zbut was passed as a keywordr=  )r.   r&   rw	  zparameter is positional only)rw	  )r  rv	  )rb  r   rJ	  r  s     r   #test_signature_bind_positional_onlyz5TestSignatureBind.test_signature_bind_positional_only  sd   	6r 	6 	4Aq!;Q1a,	. 	4A.Q2r2.	0 	4A1!<Q1a,	. ##I/LM 	9IIdAqaQRI8	9 ##I/MN 	*IIdAqqI)	* ##I/MN 	,IIdI+	, 	,	9 	9	* 	*	, 	,s$    D(D4
E (D14D= E	c                     d }t        j                  |      }|j                  ddd      }| j                  |j                  d       |j                  ddd      }| j                  |j                  d       y )Nc                      y r   r"   )r%   rU   r   s      r   r  zATestSignatureBind.test_signature_bind_with_self_arg.<locals>.test  r  r   r,   r-   rb  ru  r  )rO   r  r  r1  r   rr	  s       r   !test_signature_bind_with_self_argz3TestSignatureBind.test_signature_bind_with_self_arg  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>.test  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>.test  r  r   r<  r"   r   r<  )rO   r  r  r  r  r1  rE	  rp	  rr	  s       r   test_signature_bind_vararg_namez1TestSignatureBind.test_signature_bind_vararg_name  s    	%##BD 	" HHqqH!	"
	 4a02{2CD%XX1X61+'>?	" 	"s   B==Cc                     d }|j                   j                  d   }t        j                  |i       }t	        t        d            }| j                  t        | j                  ||            h d       y )Nc                  8    t        d t        d      D              S )Nc              3   &   K   | ]	  }||z    y wr   r"   )r  r+   s     r   r  zWTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set.<locals>.<genexpr>  s     /q1u/s   r  )rN   r/   r"   r   r   make_setzDTestSignatureBind.test_signature_bind_implicit_arg.<locals>.make_set  s    /eAh///r   r,   r  >   r   r,   rD  r9  r@  )	r  	co_constsr   FunctionTypeiterr/   r1  rN   rE	  )rU   r	  gencomp_codegencomp_funciterators        r    test_signature_bind_implicit_argz2TestSignatureBind.test_signature_bind_implicit_arg  s]    	0((2215)),;a>TYY|X>?AQRr   c                     d }t        j                  |      }|j                  dd      }| j                  |j                  ddi       | j                  d|j                  j                                y )Nc                (    | |j                  |       fS r   )r3  )r&   r<  s     r   r.   zATestSignatureBind.test_signature_bind_posonly_kwargs.<locals>.foo  s    

3''r   pos-onlykeywordr/  r&   )r&   r	  )rO   r  r  r1  r<  r  rp	  rq	  )rU   r.   r  results       r   "test_signature_bind_posonly_kwargsz4TestSignatureBind.test_signature_bind_posonly_kwargs  sb    	( $*)4	(:;)6+;+;+A+A+CDr   N)rL   ra   rb   r   rE	  rK	  rO	  rT	  rW	  r[	  r_	  rb	  rj	  rs	  ry	  r|	  r	  r   r	  r	  r"   r   r   rC	  rC	    sn    + +
$3<8>*8((69p,,,-@$ S SEr   rC	  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestBoundArgumentsc                     d }t        j                  |      j                  d      }| j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nc                      y r   r"   r  s    r   r.   zITestBoundArguments.test_signature_bound_arguments_unhashable.<locals>.foo  r   r   r,   r  )rO   r  r  r  r  r  rU   r.   r  s      r   )test_signature_bound_arguments_unhashablez<TestBoundArguments.test_signature_bound_arguments_unhashable  sM    s#((+##I/@A 	H	 	 	s   AAc                 
   d }t        j                  |      j                  d      }| j                  ||k(         | j	                  ||k7         | j                  |t
        k(         | j	                  |t
        k7         t        j                  |      j                  d      }| j                  ||k(         | j	                  ||k7         t        j                  |      j                  d      }| j	                  ||k(         | j                  ||k7         d|j                  d<   | j                  ||k(         | j	                  ||k7         d }t        j                  |      j                  d      }| j	                  ||k(         | j                  ||k7         d }t        j                  |      }|j                  dd      }|j                  dd      }| j                  ||k(         | j	                  ||k7         y )	Nc                      y r   r"   r  s    r   r.   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foo  r   r   r,   r-   r%   c                      y r   r"   r  s    r   r&   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.bar  r   r   c                      y r   r"   r   s     r   r.   zGTestBoundArguments.test_signature_bound_arguments_equality.<locals>.foo  r   r   r   r  )rO   r  r  rK   rT   r   rp	  )	rU   r.   r  ba2ba3r&   ba4r  ba1s	            r   'test_signature_bound_arguments_equalityz:TestBoundArguments.test_signature_bound_arguments_equality  s   s#((+b!r"i(y)$))!,c	"s#$))!,s#c	"cc	"s#$))!,s#c	"$hhah hhah s
#$r   c                 v   i ddddddifd}t        j                  |      }|j                  dd	i 
      }t        t        j
                  dz         D ]X  }| j                  |      5  t	        j                  t	        j                  ||            }| j                  ||       d d d        Z y # 1 sw Y   exY w)Nr  r   r,   r  r   r  c                     y r   r"   r  s       r   r.   zETestBoundArguments.test_signature_bound_arguments_pickle.<locals>.foo#  r   r   r  rP  rl	  )r  )
rO   r  r  r/   r  r  r  r  r  r1  )rU   r.   r  r  r  
ba_pickleds         r   %test_signature_bound_arguments_picklez8TestBoundArguments.test_signature_bound_arguments_pickle"  s    :1:2e*:$XXb"X#00145 	1C- 1#\\&,,r3*?@
  Z01 1	11 1s   (<B//B8	c                     i ddddddifd}t        j                  |      }|j                  dd	i 
      }| j                  t	        |      d       y )Nr  r   r,   r  r   r  c                     y r   r"   r  s       r   r.   zCTestBoundArguments.test_signature_bound_arguments_repr.<locals>.foo-  r   r   r  rP  rl	  z <BoundArguments \(a=20,.*\}\}\)>)rO   r  r  assertRegexr  rU   r.   r  r  s       r   #test_signature_bound_arguments_reprz6TestBoundArguments.test_signature_bound_arguments_repr,  sO    :1:2e*:$XXb"X#b#FGr   c           
      H   di ddd}t        j                  |      }|j                  d      }|j                          | j	                  t        |j                  j                               ddddi fd	i fg       |j                  d
ddd      }|j                          | j	                  t        |j                  j                               ddddi fd	ddifg       d }t        j                  |      }|j                  d      }|j                          | j	                  t        |j                  j                               dg       d }t        j                  |      }|j                         }|j                          | j	                  t        |j                  j                               g        dd}t        j                  |      }|j                         }|j                          | j	                  t        |j                  j                               dg       y )Nr,   r  r   c                     y r   r"   )r%   r   r   r   r  s        r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.foo3  r   r   r  )r%   r  r  )r   r"   r  r=  rP  )rs  ro	  )r   r  )r   )rP  rs  c                      y r   r"   r   s     r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.fooF  r   r   c                       y r   r"   r"   r   r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.fooO  r   r   c                      y r   r"   r  s    r   r.   zMTestBoundArguments.test_signature_bound_arguments_apply_defaults.<locals>.fooV  r   r   )r%   rx   r  )r   r,   rB  )	rO   r  r  apply_defaultsr1  r   rp	  rq	  bind_partialr	  s       r   -test_signature_bound_arguments_apply_defaultsz@TestBoundArguments.test_signature_bound_arguments_apply_defaults2  s   222$XXb\
##%&,b	D":F	H XXb"bAX&
##%&	?S"Is1gO	Q 	$b!
##%&K	
 	$XXZ
bll0023R8 	 $XXZ
bll0023m_Er   c                     d }t        j                  |      j                  d      }| j                  t	        |j
                        t               y )Nc                      y r   r"   r  s    r   r.   zMTestBoundArguments.test_signature_bound_arguments_arguments_type.<locals>.foo]  r   r   r,   )rO   r  r  rQ  r   rp	  r   r	  s      r   -test_signature_bound_arguments_arguments_typez@TestBoundArguments.test_signature_bound_arguments_arguments_type\  s7    s#((+d2<<($/r   N)	rL   ra   rb   r	  r	  r	  r	  r	  r	  r"   r   r   r	  r	    s#    %>1H(FT0r   r	  c                       e Zd Zd Zd Zy)TestSignaturePrivateHelpersc                 |    t        j                  |      \  }}| j                  ||       | j                  ||       y r   )rO   "_signature_strip_non_python_syntaxr1  )rU   inputclean_signatureself_parametercomputed_clean_signaturecomputed_self_parameters         r   _strip_non_python_syntaxz4TestSignaturePrivateHelpers._strip_non_python_syntaxb  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	  r_   s    r   &test_signature_strip_non_python_syntaxzBTestSignaturePrivateHelpers.test_signature_strip_non_python_syntaxj  s    %%E=	 	%%&%	
 	%%$$	
 	%%!!	
 	%%1!	
 	%%	
 	%%	r   N)rL   ra   rb   r	  r	  r"   r   r   r	  r	  a  s    B$r   r	  c                   T    e Zd Ze ej
                  ed      d               Zd Zd Z	y)TestSignatureDefinitionsr  c                 v   t               }h d}||z  }dh}||z  }dh}||z  }h d}||z  }ddh}||z  }t               }t        t              }t        |j	                               D ]z  \  }	}
t        |
      st        |
t              r|	|vr|j                  |	       |	|v r<| j                  |	      5  | j                  t        j                  |
             d d d        | |D ]8  }	| j                  |	      5  | j                  
j                         d d d        : y # 1 sw Y   xY w# 1 sw Y   QxY w)N>   r  r	  rv  varsr/   slicer  r  round>   maxra  r  
breakpoint__build_class__r  
__import__)r  )rN   r	  r  r  rq	  callabler  r   r  r  assertIsNotNonerO   r  r  __text_signature__)rU   no_signatureneeds_groups
needs_nullneeds_semantic_updateneeds_varargsnot_converted_yettypes_with_signaturesr   r  rX   s              r   test_builtins_have_signaturesz6TestSignatureDefinitions.test_builtins_have_signatures  s[    u0$Y

"!(	--,% $\2)) #(^
+ 	=ID#C=#t$$6K*K  &$d+ =$$W%6%6s%;<= =	=  ! 	:Dd+ :!!#"8"89: :	:= =: :s   6%D#<D/#D,	/D8	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>.func  r  r   z(($self, a, b=1, *args, c, d=2, **kwargs)z*(self, /, a, b=1, *args, c, d=2, **kwargs)z+($self, a, b=1, /, *args, c, d=2, **kwargs)z*(self, a, b=1, /, *args, c, d=2, **kwargs)z"(self, a=1+2, b=4-3, c=1 | 3 | 16)z(self, a=3, b=1, c=19)z(self, a=1,
b=2,


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

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

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

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