
    daf݇                        d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ  G d de      Z G d dej(                        Z G d	 d
ej(                        Z G d dej(                        Z G d dej(                        Z G d dej(                        Zedk(  r ej6                          yy)    N)
call_Callcreate_autospec	MagicMockMockANY	_CallListpatchPropertyMock	_callable)datetimepartialc                        e Zd Zd Zd ZddZy)	SomeClassc                      y N selfabs      B/root/Python-3.12.4/Lib/test/test_unittest/testmock/testhelpers.pyonezSomeClass.one           c                      y r   r   r   s    r   twozSomeClass.two   s    4r   Nc                      y r   r   r   r   s     r   threezSomeClass.three   s    Tr   r   )__name__
__module____qualname__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)AnyTestc                     | j                  t        t                      t               } |t               |j	                  t               t               } |t               |j	                  t               y Nfoo)assertEqualr   objectr   assert_called_withr   mocks     r   test_anyzAnyTest.test_any   sO    fh'vS	$vC(r   c                     | j                  t        t              d       | j                  t        t              d       y )Nz<ANY>)r,   reprr   strr   s    r   	test_reprzAnyTest.test_repr"   s*    cG,S7+r   c                     t               } |t        j                         t        j                                |j                  t        t               y r)   )r   r   nowr.   r   r/   s     r   test_any_and_datetimezAnyTest.test_any_and_datetime'   s2    vX\\^0-r   c                 F   t               } G d dt              }t        j                          |       fD ]  }|j	                           ||||       |j                  |||        |       j                  ||       t        t        t        t              t        j
                  t        t        t              t               t               j                  t        t              g}| j                  ||j                         | j                  |j                  |        y )Nc                       e Zd Zd Zd Zy)9AnyTest.test_any_mock_calls_comparison_order.<locals>.Fooc                      y r   r   r   others     r   __eq__z@AnyTest.test_any_mock_calls_comparison_order.<locals>.Foo.__eq__1       Tr   c                      y r   r   r=   s     r   __ne__z@AnyTest.test_any_mock_calls_comparison_order.<locals>.Foo.__ne__2   r@   r   N)r#   r$   r%   r?   rB   r   r   r   Foor;   0   s    ))r   rC   r+   bar)zingaalpha)a1z99)
r   r-   r   r7   
reset_mockmethodr   r   r,   
mock_calls)r   r0   rC   dexpecteds        r   $test_any_mock_calls_comparison_orderz,AnyTest.test_any_mock_calls_comparison_order.   s    v	*& 	* & 	8AOOq!KK!K,FMMQAM& Scs+Cs#6#6H
 Xt7T__h7	8r   c                      G d d      }t               } | |       d       |j                  t        t        d      g       |j	                  t        d       |j                  t        d       y )Nc                       e Zd Zd Zy)%AnyTest.test_any_no_spec.<locals>.Fooc                      y r   r   r=   s     r   r?   z,AnyTest.test_any_no_spec.<locals>.Foo.__eq__F   r@   r   Nr#   r$   r%   r?   r   r   r   rC   rR   E       )r   rC      r   assert_has_callsr   r   r.   assert_any_callr   rC   r0   s      r   test_any_no_speczAnyTest.test_any_no_specC   sV    	* 	* vSUAtC|n-Q'S!$r   c                      G d d      }t        |      } | |       d       |j                  t        t        d      g       |j	                  t        d       |j                  t        d       y )Nc                       e Zd Zd Zy)*AnyTest.test_any_and_spec_set.<locals>.Fooc                      y r   r   r=   s     r   r?   z1AnyTest.test_any_and_spec_set.<locals>.Foo.__eq__Q   r@   r   NrT   r   r   r   rC   r^   P   rU   r   rC   )specrV   rW   rZ   s      r   test_any_and_spec_setzAnyTest.test_any_and_spec_setN   sX    	* 	* ~SUAtC|n-Q'S!$r   N)	r#   r$   r%   r1   r5   r8   rO   r[   ra   r   r   r   r'   r'      s     	),
.8*	%
%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y)CallTestc           	         t               }| j                  |t                      | j                  |t        d             | j                  |t        d             | j                  |t        i f             | j                  |t        d             | j                  |t        di f             | j                  |t        ddi f             | j                  |t        d             | j                  |t        d             | j                  |t        di f             | j                  |t        d	di f             t        d
      }| j                  |t        d
             | j                  |t        d             | j                  |t        di f             | j                  |t        ddi f             t        d      }| j                  |t        d             | j                  |t        ddi f             t        d      }| j                  |t        d             | j                  |t        ddi f             | j                  |t        d             | j                  |t        ddi f             t        ddif      }| j                  |t        ddddif             | j                  |t        dddif             | j                  |t        dddif             | j                  |t        ddif             y )N) r   )re   r   re   r   r*   rE   r   bazspamrV         )re   rk   rk   )rV   rl      )r+   rn   )re   rn   rn   )rE   rn   rE   r   rm   r   r,   assertNotEqual)r   kalls     r   test_call_with_callzCallTest.test_call_with_call\   s   wuw'uU|,uU|,ubU|,uX/ub"X/ub"b\23uX/u[12ueR[12ufb"%567\"u\23u_56ui_56ub)R%89:\"D%"89D%Y(;"<=()D%"89D%Y(;"<=D%(:";<D%	2(>"?@sAh[!ub"sAh%789ub3(^45ub3(^45usAh[12r   c                     t               }| j                  |d       | j                  |d       | j                  |d       | j                  |d       | j                  |ddi f       | j                  |di f       | j                  |i f       y )Nr   r*   rf   r+   r   r+   )r   r,   r   argss     r   test_empty__CallzCallTest.test_empty__Call   s    wr"x(u%{+b"~.r{+u%r   c                    t        ddi f      }| j                  |d       | j                  |d       | j                  |ddi f       | j                  |di f       | j                  |d       | j                  |d       | j                  |i f       | j                  |d       | j                  |d       | j                  |di f       y )	Nr+   r   r*   ru   rf   )rE   rg   rE   rp   rv   s     r   test_named_empty_callzCallTest.test_named_empty_call   s    eR_%x({+b"~.r{+D%(D"%D2%(D(+D+.D5"+.r   c                 (   t        di f      }| j                  |d       | j                  |d       | j                  |ddi f       | j                  |di f       | j                  |j                  d       | j                  |j                  i        y )Nrk   rj   r+   rk   r+   )r   r,   rw   kwargsrv   s     r   test_call_with_argszCallTest.test_call_with_args   s    i_%|,12y"56	2/I.b)r   c                 *   t        ddi f      }| j                  |d       | j                  |ddi f       | j                  |j                  d       | j                  |j                  i        | j	                  |d       | j	                  |di f       y )Nr+   rk   r|   rj   )r   r,   rw   r}   rq   rv   s     r   test_named_call_with_argsz"CallTest.test_named_call_with_args   s    eY+,12y"56I.b)D,/D9b/2r   c           	         t        dt        dd      f      }| j                  |t        dd      f       | j                  |dt        dd      f       | j                  |ddt        dd      f       | j                  |dt        dd      f       | j                  |j                  d       | j                  |j                  t        dd             y )Nr   rm   ro   r   r   r+   )r   dictr,   rw   r}   rv   s     r   test_call_with_kwargszCallTest.test_call_with_kwargs   s    b$a.)*qA01ta1~67r4!q>:;D1N34B'dQ!n5r   c           	         t        ddt        dd      f      }| j                  |dt        dd      f       | j                  |ddt        dd      f       | j                  |j                  d       | j                  |j                  t        dd             | j                  |t        dd      f       | j                  |dt        dd      f       y )Nr+   r   rm   ro   r   )r   r   r,   rw   r}   rq   rv   s     r   test_named_call_with_kwargsz$CallTest.test_named_call_with_kwargs   s    eRQ01ta1~67r4!q>:;B'dQ!n5D4!q>"34D2ta1~"67r   c                     t        di f      }| j                  |t        ddd             | j                  t        ddd      |       | j                  t        ddd      |g       y )Nrk   rV   rl   rm   )r   r,   r   assertInrv   s     r   #test_call_with_args_call_empty_namez,CallTest.test_call_with_args_call_empty_name   sX    i_%tAq!}-aA-d1amdV,r   c                     | j                  t        d      t        dd             | j                  t        d      t        ddd      k7         | j	                  t        di f      t        ddd      k7         y )Nrj   rV   rl   rm   rV   rl   )rq   r   r   assertFalse
assertTruer   s    r   test_call_nezCallTest.test_call_ne   s_    E,/a<|,Q1=>vrl+tAq!}<=r   c                     t        d      }dd | t        fD ](  }| j                  ||       | j                  ||k(         * y )Nrj   rV   )r   intrq   r   )r   rr   values      r   test_call_non_tupleszCallTest.test_call_non_tuples   sF    \"dC' 	,Ee,TU]+	,r   c           
         | j                  t        t                     d       | j                  t        t        d            d       | j                  t        t        dddif            d       | j                  t        t        ddddif            d	       | j                  t        t              d
       | j                  t	        t              d
       | j                  t        t                     d       | j                  t        t        d            d       | j                  t        t        d            d       | j                  t        t               j
                        d       | j                  t        t        d      j
                  j                  d      j                        d       | j                  t        t               j                  ddd            d       | j                  t         t                            d       | j                  t         t        d      d            d       | j                  t         t                      j                         j                  j                  d            d       y )Nzcall()r*   z
call.foo()rk   r   r   zcall(1, 2, 3, a='b')rE   zcall.bar(1, 2, 3, a='b')r   rV   zcall(1)thing)zzzcall(zz='thing')z
call().foorm   r   zcall().foo.bar().bingrl   zcall().foo(1, 2, a=3)zcall()()z	call()(2)zcall()().bar().baz.beep(1))
r,   r3   r   r   r4   r+   rE   bingrh   beepr   s    r   r5   zCallTest.test_repr   s   eg1eHo.=eYc
$;<=/	1eUISz$BCD3	5 	dV,TF+dfx0d1g	2dg./1CDdfjj)<8d1gkkooo27780	2AqA&'#	
 	fdfh4gd1gaj);7##((+,(	
r   c                 ,   | j                  t               ddi f       | j                  t        dddd      dddddf       t               } |d	d
d        |dd       | j                  |j                  t        d	d
d      t        dd      g       y )Nre   r   r+   rE   rm   ro   )r   r   rD   rV   rl      r   )r,   r   r   call_args_listr/   s     r   	test_callzCallTest.test_call   s    "b".eUq9na.BC	E vQ1qA,,q!Q-Q8	:r   c                    | j                  t        j                  d      ddi f       | j                  t        j                  j	                  d      ddddif       t               }|j                  dd	d
       |j                  j	                  d
d       | j                  |j                  t        j                  dd	d
      t        j                  j	                  d
d      g       y )NrV   r+   )rV   eggs)fishzbar.bazr   r   rl   rm   r   r   )r,   r   r+   rE   rh   r   method_callsr/   s     r   test_attribute_callzCallTest.test_attribute_call
  s    !udB&7862#R&&)9:	< vAqqA**((1a+TXX\\A\-CD	Fr   c           	         t        d      j                  d      j                  dd      }| j                  |ddt	        d      f       t               } |dddd       | j                  |j                  t        dddd             | j                  |j                  t        ddd             | j                  |j                  t        dddd      g       | j                  |j                  t        dddd      g       t               } |j                  d      j                                j                  j                  d	        t        j                  d      j                                j                  j                  d	      }| j                  |j                  d
   |       | j                  |j                  |j                                y )NrV   rl   rm   ro   r   z().foo().barrm   r   r   )r   r+   rE   r,   r   r   	call_argsrq   r   rL   rh   r   	call_list)r   resultr0   	last_calls       r   test_extended_callzCallTest.test_extended_call  si   aQ##A#+.$q	!BC{QQ!aa1)=>DNNDAqM:,,tAqA/C.DE41Q+?*@A{$$q$)%DHHQKOO%'++00105	,i8)*=*=*?@r   c                     t        d      j                  }t        d      j                  }| j                  ||       | j                  ||       | j                  ||       y NrV   xrl   )r   r+   r,   rq   r   s      r   test_extended_not_equalz CallTest.test_extended_not_equal*  sL    1IMM1IMMAAAq!r   c                     t        d      j                         j                  }t        d      j                         j                  }| j                  ||       | j                  ||       | j	                  ||       y r   )r   r+   rE   r,   rq   r   s      r   test_nested_calls_not_equalz$CallTest.test_nested_calls_not_equal2  s\    1IMMO1IMMOAAAq!r   c                    t               } |d       | j                  t        d      j                         |j                         t               } |d      j                  d       | j                  t        d      j                  d      j                         |j                         t               }  |d      j                  d      d       | j                   t        d      j                  d      d      j                         |j                         t               }t           |d      j                  d      d      j                  j                  j                  d      d               t        d      j                  d      d      j                  j                  j                  d      d      j                         }| j                  |j                         |j                         y )NrV   rl   rm   ro      )r   r,   r   r   rL   rK   r   r+   rE   rh   __int__)r   r0   rr   s      r   test_call_listzCallTest.test_call_list:  sk   {Qa**,doo>{Qqa*446	* {Qq!*a*1-779	* {/DGNN1a $$((,,Q/232 tAw~~a #''++//215==?)4??;r   c                     | j                  t        t               t               }t	        |       | j                  |j
                  t        g       | j                  t        g|j
                         y r   )r,   r   r   r   r   rL   r   ms     r   test_call_anyzCallTest.test_call_anyO  sL    s#KAu-#-r   c                     t        dddifd      }| j                  t        |      d       | j                  |d   d       | j                  |d   ddi       t        dddif      }| j                  ||       y )	Nr   r   rm   T)r   rl   r   rV   )r   r,   len)r   rw   
other_argss      r   test_two_args_callzCallTest.test_two_args_callX  sz    fsAh'T2TA&a&)a3(+FS!H-.
z*r   c                     | j                  t        dd      d   d       | j                  t        d      d   d       | j                  t        dddif      d   d       y )	Nr   r+   r   )rE   barzre   r   helloworld)r,   r   r   s    r   test_call_with_namezCallTest.test_call_with_namea  s]    r5)!,e413A6;'71CDFqI2Nr   c           	         t               }  |       j                         d           | j                  |j                  t	               t	               j                         t	               j                         j                  d       t	               j                         j                                g       t               }d |       j                         d<   | j                  |j                  t	               t	               j                         t	               j                         j                  dd      g       t               }t         |       j                                | j                  |j                  t	               t	               j                         t	               j                         j                         g       y )NrE   rV   )	r   r+   r,   rL   r   __getitem____setitem__iter__iter__r   s     r   test_dunder_callzCallTest.test_dunder_callf  s   K	%LLVTVZZ\46::<#;#;E#BD^DFJJLD\D\D^D`a	
 K	%LLVTVZZ\46::<#;#;E1#EF	
 KQSWWYLLVTVZZ\46::<#8#8#:;	
r   N)r#   r$   r%   rs   rx   rz   r~   r   r   r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   rc   Z   so    "3J	&/ *	36	8->,
>	:	FA(""<*.+O

r   rc   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z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))*SpecSignatureTestc                    | j                  t        t        |d       |j                  dd       |j                  j	                  dd       | j                  t
        |j                  j                  dd       | j                  t        |j                  d       |j                          |j                  j	                          | j                  t
        |j                  j                  d       | j                  t        |j                  d       |j                          |j                  j	                          | j                  t
        |j                  j                  d       | j                  t        |j                  dd       |j                  d       |j                  j	                  d       |j                  d       |j                  j	                  d       y )Nr+   rV   rl   rm   ro   r   )	assertRaisesAttributeErrorgetattrr   r.   AssertionError	TypeErrorr   r"   r/   s     r   _check_someclass_mockz'SpecSignatureTest._check_someclass_mock}  sK   .'4?A##Aq).((55q!	=)TXXq1
##%.((55q	:)TXXq1



%%'.**77	<)TZZA6

1

%%a(

Q


%%%*r   c                     t        t              }| j                  |       t        t                     }| j                  |       y r   )r   r   r   r/   s     r   
test_basiczSpecSignatureTest.test_basic  s4    y)""4(y{+""4(r   c                     d }t        |d      }| j                   |       d        G d dt              }t        |d      }| j                   |       d       y )Nc                       y r   r   r   r   r   fz>SpecSignatureTest.test_create_autospec_return_value.<locals>.f  s    r   r+   return_valuec                       e Zd Zy)@SpecSignatureTest.test_create_autospec_return_value.<locals>.FooNr#   r$   r%   r   r   r   rC   r         r   rC   )r   r,   r-   )r   r   r0   rC   s       r   !test_create_autospec_return_valuez3SpecSignatureTest.test_create_autospec_return_value  sO    qu5'	& 	 s7'r   c                     t        t              }t        |       |j                          | j                  |j                  j
                  d       y )Nr   )r   r   rJ   r,   r   
call_countr   s     r   test_autospec_reset_mockz*SpecSignatureTest.test_autospec_reset_mock  s6    C A	--q1r   c                      G d dt               }t        j                   |d      }|j                         } |       j                  d       |j	                  d       y )Nc                       e Zd Zd Zy);SpecSignatureTest.test_mocking_unbound_methods.<locals>.Fooc                      y r   r   )r   r+   s     r   r+   z?SpecSignatureTest.test_mocking_unbound_methods.<locals>.Foo.foo      r   Nr#   r$   r%   r+   r   r   r   rC   r         $r   rC   r+   rV   )r-   r
   startr+   r.   )r   rC   pmock_foos       r   test_mocking_unbound_methodsz.SpecSignatureTest.test_mocking_unbound_methods  sD    	%& 	%LLe$779		!##A&r   c                 t     G d dt               }t        |d      }| j                  |j                  d       y )Nc                       e Zd ZdZy)ESpecSignatureTest.test_create_autospec_keyword_arguments.<locals>.Foorm   Nr#   r$   r%   r   r   r   r   rC   r         Ar   rC   3r   )r-   r   r,   r   )r   rC   r   s      r   &test_create_autospec_keyword_argumentsz8SpecSignatureTest.test_create_autospec_keyword_arguments  s.    	& 	C3'c"r   c                     d dd}t        |      } |d       |j                  d       | j                  t        |dd        |dd       |j                  dd       y )Nr   c                     y r   r   r   s     r   r+   zJSpecSignatureTest.test_create_autospec_keyword_only_arguments.<locals>.foo  s    tr   rV   rl   rm   )r   r.   r   r   )r   r+   r   s      r   +test_create_autospec_keyword_only_argumentsz=SpecSignatureTest.test_create_autospec_keyword_only_arguments  sW    #C 	!	Q)Q1-	!q		Q!$r   c                     t               }d }||_        t        |      }|j                  d       |j                  j                  d       y )Nc                      y r   r   r   s    r   r   z@SpecSignatureTest.test_function_as_instance_attribute.<locals>.f      $r   r   )r   r   r   r.   )r   objr   r0   s       r   #test_function_as_instance_attributez5SpecSignatureTest.test_function_as_instance_attribute  s:    ks#v!!&)r   c                    t        g       }|j                  d       |j                  j                  d       | j                  t        t
        |d        G d dt              }t        |      }|j                  j                  d       |j                  j                  j                  d       | j                  t        t
        |j                  d       y )Nr+   c                       e Zd Zg Zy)0SpecSignatureTest.test_spec_as_list.<locals>.FooNr   r   r   r   rC   r     s    Cr   rC   rm   )r   appendr.   r   r   r   r-   r+   )r   r0   rC   s      r   test_spec_as_listz#SpecSignatureTest.test_spec_as_list  s     r"E&&u-.'4?	& 	 s#**1-.'488UCr   c                      G d dt               }t        |      }||j                  fD ]  }| j                  |        y )Nc                       e Zd Z e       Zy).SpecSignatureTest.test_attributes.<locals>.SubNr#   r$   r%   r   attrr   r   r   Subr    	    ;Dr   r  )r   r   r  r   )r   r  sub_mockr0   s       r   test_attributesz!SpecSignatureTest.test_attributes  s@    	) 	 #3'x}}- 	-D&&t,	-r   c                 j    G d dt                G fddt               }t        |      }|j                  d       | j                  t              5  |j                          d d d        | j                  t              5  |j                  dd       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)VSpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.CrazyDescriptorc                     |d S y )Nc                      y r   r   r   s    r   <lambda>zpSpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.CrazyDescriptor.__get__.<locals>.<lambda>      r   r   )r   r   type_s      r   __get__z^SpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.CrazyDescriptor.__get__  s    ;)) r   Nr#   r$   r%   r  r   r   r   CrazyDescriptorr    s    *r   r  c                       e Zd Z W         Zy)NSpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.MyClassN)r#   r$   r%   	some_attr)r  s   r   MyClassr    s    ')Ir   r  rV   rl   )r-   r   r  r   r   )r   r  r0   r  s      @r   +test_spec_has_descriptor_returning_functionz=SpecSignatureTest.test_spec_has_descriptor_returning_function  s    	*f 	*	*f 	* w'qy) 	NN	y) 	!NN1a 	! 	!	 		! 	!s   BB)B&)B2c                     G fddt                       }| j                  t              5  |j                   d d d        | j	                  |j                  d      d       t        |      }|j                  d       | j                  t              5  |j                          d d d        | j                  t              5  |j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   y xY w)Nc                   (     e Zd Z fdZd Z xZS )ISpecSignatureTest.test_spec_has_function_not_in_bases.<locals>.CrazyClassc                 (    t         |          dgz   S )Ncrazy)super__dir__)r   
CrazyClass	__class__s    r   r   zQSpecSignatureTest.test_spec_has_function_not_in_bases.<locals>.CrazyClass.__dir__  s    Z68'BBr   c                 (    |dk(  rd S t        |      )Nr  c                     | S r   r   r   s    r   r  zgSpecSignatureTest.test_spec_has_function_not_in_bases.<locals>.CrazyClass.__getattr__.<locals>.<lambda>  s    Q r   r   )r   items     r   __getattr__zUSpecSignatureTest.test_spec_has_function_not_in_bases.<locals>.CrazyClass.__getattr__  s    7?&&$T**r   )r#   r$   r%   r   r'  __classcell__)r"  r!  s   @r   r!  r    s    C+r   r!  *   rV   rl   )r-   r   r   r>   r,   r  r   r   )r   instr0   r!  s      @r   #test_spec_has_function_not_in_basesz5SpecSignatureTest.test_spec_has_function_not_in_bases	  s    	+ 	+ |~. 	JJ	B,t$

2y) 	JJL	y) 	JJq!	 		 		 		 	s#   C C,C8 C),C58Dc                 <    G d dt               }t        |      }|j                  d       |j                  j                  d       | j	                  t
        t        |j                  d       |j                  d       |j                  j                  d       | j	                  t        |j                  dd       | j	                  t
        t        |j                  d       |j                  ddg       |j                  j                  ddg       | j	                  t
        t        |j                  d       |j                  j                  d       |j                  j                  j                  d       | j	                  t
        t        |j                  d       y )Nc                       e Zd Zd ZeZi Zy)GSpecSignatureTest.test_builtin_functions_types.<locals>.BuiltinSubclassc                      y r   r   )r   args     r   rE   zKSpecSignatureTest.test_builtin_functions_types.<locals>.BuiltinSubclass.bar'  r   r   N)r#   r$   r%   rE   sortedr  r   r   r   BuiltinSubclassr.  &  s    $FDr   r2  rm   r+   rE   rV   rl   )listr   r   r.   r   r   r   rE   r   r1  r  popr   r2  r0   s      r   test_builtin_functions_typesz.SpecSignatureTest.test_builtin_functions_types"  s   	d 	
 /A&&q).'4;;F##E*)TXXue<.'488UCQF&&1v..'4;;F		a		((+.'499eDr   c                     G d dt               }t        |      }|j                  dd       |j                          |j	                  d       t        j                  dd      t        j                         t        j                  d      g}| j                  |j                  |       |j                  j                  dd       |j                  j                          |j                  j	                  d       |j                  t
        j                  j                  dd      t
        j                  j                         t
        j                  j	                  d      g       | j                  |j                  |       y )Nc                       e Zd Z e       Zy)0SpecSignatureTest.test_method_calls.<locals>.SubNr  r   r   r   r  r9  ?  r  r   r  rV   rl   rm   )
r   r   r   r   r"   r   r,   r   r  extend)r   r  r0   rN   s       r   test_method_callsz#SpecSignatureTest.test_method_calls>  s    	) 	 s#A


1HHQNDHHJ

1>**H5		a				YY]]1a $))--/499??13EF	
 	**H5r   c                     G d dt               }t        |      }| j                  t        |      g        | j                  t        t
        |       | j                  t        t
        |j                         | j                  t        |      g        | j                  |d   t               | j                  |j                  d   t               y )Nc                       e Zd Zi Zy)=SpecSignatureTest.test_magic_methods.<locals>.BuiltinSubclassN)r#   r$   r%   r  r   r   r   r2  r>  U  s    Dr   r2  r+   )	r3  r   r,   r   r   r   r  assertIsInstancer   r5  s      r   test_magic_methodsz$SpecSignatureTest.test_magic_methodsT  s    	d 	 /dR()S$/)S$))4dR(d5k95dii.	:r   c                     G d dt               }| |       fD ]d  }t        |d      }| j                  |       | j                  t        t
        |dd       | j                  t        t
        |j                  dd       f y )Nc                       e Zd Z e       Zy),SpecSignatureTest.test_spec_set.<locals>.SubNr  r   r   r   r  rC  c  r  r   r  T)spec_setr+   rE   )r   r   r   r   r   setattrr  )r   r  r`   r0   s       r   test_spec_setzSpecSignatureTest.test_spec_setb  sq    	) 	 #%L 	PD"4$7D&&t,ngtUEJngtyy%O	Pr   c                 ^    G d dt               } G d d|      } G d dt        |      }| |       | |       | |       fD ]i  }t        |      }|j                  dd       |j                  j	                  dd       |j                  d	d
       |j
                  j	                  d	d
       k y )Nc                   ,    e Zd Zed        Zed        Zy)/SpecSignatureTest.test_descriptors.<locals>.Fooc                      y r   r   )clsr   r   s      r   r   z1SpecSignatureTest.test_descriptors.<locals>.Foo.fp      "r   c                      y r   r   r   s     r   gz1SpecSignatureTest.test_descriptors.<locals>.Foo.gr  s    r   N)r#   r$   r%   classmethodr   staticmethodrN  r   r   r   rC   rI  o  s    " " r   rC   c                       e Zd Zy)/SpecSignatureTest.test_descriptors.<locals>.BarNr   r   r   r   BarrR  u      r   rS  c                       e Zd Zy)/SpecSignatureTest.test_descriptors.<locals>.BazNr   r   r   r   BazrV  w  rT  r   rW  rV   rl   rm   ro   )r-   r   r   r   assert_called_once_withrN  )r   rC   rS  rW  r`   r0   s         r   test_descriptorsz"SpecSignatureTest.test_descriptorsn  s    	& 	 	#')S'#%ceS#%8 	1D"4(DFF1aLFF**1a0FF1aLFF**1a0	1r   c                     G d dt               }||_        t        |      } |        | j                  |j                  j                         |j                          |j                  j                          | j                  |j                  t        j
                         t        j                  j                         g       | j                  |j                  |j                         | j                  |j                  |j                         |j                  j                          | j                  t        |j                  j                  j                          y )Nc                       e Zd Zd ZdZeZy)+SpecSignatureTest.test_recursive.<locals>.Ac                      y r   r   r   s    r   r   z-SpecSignatureTest.test_recursive.<locals>.A.a  r   r   zfoo bar bazN)r#   r$   r%   r   r+   rE   r   r   r   Ar\    s    CCr   r^  )r-   Br   r   calledr   r,   r   r   assertIsr+   rE   assertIsNotlowerr   r   r.   )r   r^  r0   s      r   test_recursivez SpecSignatureTest.test_recursive  s    	 	
 q!'
**TVVXtvvxxz,BCaeeQUU#488,.$((..*K*KLr   c                 8    G d dt               }t        |      }| j                  | |              | |       fD ]  }|j                  d       |j                  j	                  d       |j                  j	                  d       | j                  t        |j                  dd       | j                  t        t        |d        t         |             }|j                  d       |j                  j	                  d       |j                  j	                  d       | j                  t        |j                  dd       | j                  t        t        |d       | j                  t        |       |j                  j                  d       |j                  j                  j	                  d       |j                  j                  j	                  d	       | j                  t        t        |j                  d
       |j                         j                  d       |j                         j                  j	                  d       |j                         j                  j	                  d	       | j                  t        t        |j                         d
       y )Nc                   (    e Zd Zd Z G d de      Zy)@SpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Fooc                      y r   r   )r   r   s     r   r   zBSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.a      Dr   c                       e Zd Zd Zy)DSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.Barc                      y r   r   )r   ys     r   r   zFSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.Bar.f  r   r   Nr#   r$   r%   r   r   r   r   rS  rk    s    $r   rS  N)r#   r$   r%   r   r-   rS  r   r   r   rC   rg    s     %f %r   rC   r   r   r+   rE   r   r   )rm  rN  )r-   r   rb  r   r.   r   r   r   r   rS  r   )r   rC   
class_mock	this_mockinstance_mocks        r   !test_spec_inheritance_for_classesz3SpecSignatureTest.test_spec_inheritance_for_classes  s   	%& 	%
 %S)
Z\2#Z\1 	GIKK!KKK**Q*/KK**1-ieUCngy#F	G (.**1-**Q*/)]__eUC.'=#F 	)]3A..q1...3.'=3D3DcJa 00300105.'=3D3D3FLr   c                     G d dt               }||_        t        |      } |       }| j                  t        t
        |d       |j                         }| j                  t        t
        |d       t         |             }| j                  t        t
        |d       | j                  t        |       |j                         }| j                  t        t
        |d       y )Nc                       e Zd ZdZy)+SpecSignatureTest.test_inherit.<locals>.Foorm   Nr   r   r   r   rC   ru    r   r   rC   r   )r-   rC   r   r   r   r   r   )r   rC   r0   instanceattr_instancecall_results         r   test_inheritzSpecSignatureTest.test_inherit  s    	& 	  s#6.'8SA
.'=#F su%.'4=)T* hhj.';Dr   c                    t        d       t        t               t        d       t        t               t        i        t        t               t        g        t        t               t        t                      t        t
               t        d       t        t               t        d       t        t               t        d       t        d       y )NrV   r+   g      ?y              ?FT)r   r   r4   r   r3  setfloatcomplexr   s    r   test_builtinszSpecSignatureTest.test_builtins  s     r   c                    d }t        |      }| j                  t        |        |dd       |j                  dd       |j                  dd       |j                  dd       ||_        t        |      }| j                  t        |j                         |j	                  dd       |j                  j                  dd       |j                  j                  dd       y )Nc                      y r   r   r   s     r   r   z*SpecSignatureTest.test_function.<locals>.f  s    Tr   rV   rl   r   r   rm   ro   )r   r   r   r.   r   r   r   r0   s      r   test_functionzSpecSignatureTest.test_function  s    q!)T*Q
1%Q'!q)q!)TVV,q!!!!Q'!!A!+r   c                     G d dt                G fddt               }| j                  |j                  dd      d       t        |      | j	                  t
        fd       | j                  j                  dd      j                  j                         | j	                  t        fd	       j                  }|j                  |j                  f y )
Nc                       e Zd ZddZy);SpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserNc                     |t        d      y )Nz$Can only be accessed via an instancer%  )r   r   types      r   r  zCSpecSignatureTest.test_skip_attributeerrors.<locals>.Raiser.__get__  s    ;()OPP r   r   r  r   r   r   Raiserr    s    Qr   r  c                   .    e Zd Z W         Zed        Zy)@SpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserClassc                     | |z   S r   r   r   s     r   existingzISpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserClass.existing  s    1ur   N)r#   r$   r%   raiserrP  r  )r  s   r   RaiserClassr    s    XF r   r  rV   rl   rm   c                 *    j                  ddd      S )NrV   rl   rm   )r  )r   ss    r   r  z=SpecSignatureTest.test_skip_attributeerrors.<locals>.<lambda>  s    qzz!Q/B r   c                       j                   S r   )nonexisting)r  s   r   r  z=SpecSignatureTest.test_skip_attributeerrors.<locals>.<lambda>  s    !-- r   )r-   r,   r  r   r   r   r   r   r  r+   rE   )r   r  r   r  r  s      @@r   test_skip_attributeerrorsz+SpecSignatureTest.test_skip_attributeerrors  s    	QV 	Q
	& 	 	--a3Q7K()%BCAq)1::+B+BC.*?@ hhr   c                     G d dt               }t        |      }| j                  t        |        |d       |j	                  d       |j	                  d       | j                  t
        |j                  d        |dd       |j                  dd       |j                  dd       | j                  t
        |j                  dd       y )	Nc                       e Zd ZddZy)3SpecSignatureTest.test_signature_class.<locals>.Fooc                      y r   r   r   s      r   __init__z<SpecSignatureTest.test_signature_class.<locals>.Foo.__init__  s    r   Nr   r#   r$   r%   r  r   r   r   rC   r    s    ,r   rC   rV   r   rl   ro   r   r   )r-   r   r   r   rX  r   r.   rZ   s      r   test_signature_classz&SpecSignatureTest.test_signature_class  s    	-& 	- s#)T*Q$$Q'$$q$).$*F*FJQ
1%!q).$*A*AQ!Lr   c                 8     G d dt               }t        |       y )Nc                       e Zd Zy)6SpecSignatureTest.test_class_with_no_init.<locals>.FooNr   r   r   r   rC   r  *  r   r   rC   )r-   r   )r   rC   s     r   test_class_with_no_initz)SpecSignatureTest.test_class_with_no_init'  s    	& 	r   c                 f    G d dt               }t        |      } |dd       |j                  dd       |j                  dd       | j                  t        |d        |dd      }| j                  t        |        |d       |j                  d       |j                  d        |d       |j                  d       |j                  d       t         |dd            } |d       |j                  d       | j                  t        |        |d       |j                  d       y )Nc                       e Zd Zd Zd Zy);SpecSignatureTest.test_signature_callable.<locals>.Callablec                      y r   r   )r   r   rm  s      r   r  zDSpecSignatureTest.test_signature_callable.<locals>.Callable.__init__1  s    dr   c                      y r   r   r!   s     r   __call__zDSpecSignatureTest.test_signature_callable.<locals>.Callable.__call__2  s    4r   N)r#   r$   r%   r  r  r   r   r   Callabler  0  s    *'r   r  rV   rl   r   rm  r   r   )r-   r   rX  r   r   r.   )r   r  r0   rv  s       r   test_signature_callablez)SpecSignatureTest.test_signature_callable/  s   	(v 	( x(Q
$$Q*$$qA$.)T3/1:)X.3((-((3(/##C(##c#*x1~.s$$s$+)T*S	$r   c                 h    G d dt               }t        |      } |       }|j                          | j                  t        |d       | j                  t        |       | j                  t        |d       t         |             }| j                  t        |       | j                  t        |d       y )Nc                       e Zd Zd Zy)ASpecSignatureTest.test_signature_noncallable.<locals>.NonCallablec                      y r   r   r   s    r   r  zJSpecSignatureTest.test_signature_noncallable.<locals>.NonCallable.__init__M  s    r   Nr  r   r   r   NonCallabler  L  s    r   r  r   )r-   r   rX  r   r   )r   r  r0   rv  s       r   test_signature_noncallablez,SpecSignatureTest.test_signature_noncallableK  s    	& 	 {+6$$&)T3/)X.)Xs3{}-)T*)T3/r   c                      G d dt               }t        |      }|j                  }| j                  |t	        d              |j                          |j
                  j                          y )Nc                       e Zd ZdZy)8SpecSignatureTest.test_create_autospec_none.<locals>.FooN)r#   r$   r%   rE   r   r   r   rC   r  ]  s    Cr   rC   )r-   r   rE   assertNotIsInstancer  r+   rX  )r   rC   r0   nones       r   test_create_autospec_nonez+SpecSignatureTest.test_create_autospec_none\  sP    	& 	 s#xx  tDz2
((*r   c                 Z    G d dt               }t        |      }|j                  d       |j                  j                  d       |j                  j                  d       |j                  d       |j                  j                  d       |j                  j                  d       y )Nc                       e Zd Zd Zy)MSpecSignatureTest.test_autospec_functions_with_self_in_odd_place.<locals>.Fooc                      y r   r   )r   r   s     r   r   zOSpecSignatureTest.test_autospec_functions_with_self_in_odd_place.<locals>.Foo.fj  ri  r   Nrn  r   r   r   rC   r  i  s     r   rC   
   r   )r-   r   r   r.   )r   rC   r   s      r   .test_autospec_functions_with_self_in_odd_placez@SpecSignatureTest.test_autospec_functions_with_self_in_odd_placeh  s    	!& 	! C 	B	r"	B'		r"	B'r   c                      G d dt                G d dt               G fddt               }t        |      } fd} ||j                          ||j                          ||j
                          ||j                         y )Nc                        e Zd Zd ZddZd Zy)CSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptorc                     || _         y r   )r   )r   r   s     r   r  zLSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptor.__init__w  s	    "
r   Nc                     | S r   r   )r   r   rK  s      r   r  zKSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptor.__get__z  s    r   c                      y r   r   )r   r   r   s      r   __set__zKSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptor.__set__}  s    4r   r   )r#   r$   r%   r  r  r  r   r   r   
Descriptorr  v  s    # 0r   r  c                       e Zd Zy)CSpecSignatureTest.test_autospec_data_descriptor.<locals>.MyPropertyNr   r   r   r   
MyPropertyr    r   r   r  c                   H    e Zd ZdgZed        ZW d        Z W  d      Zy)<SpecSignatureTest.test_autospec_data_descriptor.<locals>.Fooslotc                      y r   r   r   s    r   propzASpecSignatureTest.test_autospec_data_descriptor.<locals>.Foo.prop  s     r   c                      y r   r   r   s    r   subpropzDSpecSignatureTest.test_autospec_data_descriptor.<locals>.Foo.subprop  s    #r   r)  N)r#   r$   r%   	__slots__propertyr  r  desc)r  r  s   r   rC   r    s/    I   # #b>Dr   rC   c                     j                  | t                | ddd       | j                  ddd       | j                  ddd       | j                  j                  ddd       y )NrV   rl   rm   ro   r   r   )r?  r   abcrX  )	mock_attrr   s    r   check_data_descriptorzNSpecSignatureTest.test_autospec_data_descriptor.<locals>.check_data_descriptor  sW    !!)Y7aAMM!Q"--aA6MM11!Q:r   )r-   r  r   r  r  r  r  )r   rC   r+   r  r  r  s   `   @@r   test_autospec_data_descriptorz/SpecSignatureTest.test_autospec_data_descriptoru  sj    	0 	0	 			"& 		" c"	; 	chh'ckk*chh'chh'r   c                 D   t        j                  t        j                  t        j                               }| j	                   |       t
               t        |      } |        |j                          |j                           |ddd       |j                  ddd       y )Nro   r   r   )	types
MethodTypetimectimer?  r4   r   rX  rJ   )r   methmockeds      r   'test_autospec_on_bound_builtin_functionz9SpecSignatureTest.test_autospec_on_bound_builtin_function  sv    

DIIK8dfc* & 	&&(q!Q&&q!Q/r   c                 r     G d d      } |       }t        |      }| j                  t        |d             y )Nc                       e Zd Zd Zy)ESpecSignatureTest.test_autospec_getattr_partial_function.<locals>.Fooc                     t        d |      S )Nc                     | S r   r   )names    r   r  zcSpecSignatureTest.test_autospec_getattr_partial_function.<locals>.Foo.__getattr__.<locals>.<lambda>  s    D r   r   )r   	attributes     r   r'  zQSpecSignatureTest.test_autospec_getattr_partial_function.<locals>.Foo.__getattr__  s    0)<<r   N)r#   r$   r%   r'  r   r   r   rC   r    s    =r   rC   r#   )r   r   hasattr)r   rC   proxyautospecs       r   &test_autospec_getattr_partial_functionz8SpecSignatureTest.test_autospec_getattr_partial_function  s4    	= 	=
 "5):67r   c                      G d d      }t        |j                  d         }| j                  t        j                  |j
                        t        j                  |             y )Nc                       e Zd Zedd       Zy)CSpecSignatureTest.test_autospec_signature_staticmethod.<locals>.Fooc                     y r   r   r   r   cs      r   static_methodzQSpecSignatureTest.test_autospec_signature_staticmethod.<locals>.Foo.static_method  s    .2r   Nr  )r#   r$   r%   rP  r  r   r   r   rC   r    s    2 2r   rC   r  )r   __dict__r,   inspect	signaturer  rZ   s      r   $test_autospec_signature_staticmethodz6SpecSignatureTest.test_autospec_signature_staticmethod  sN    	3 	3 s||O<=**3+<+<=w?P?PQU?VWr   c                      G d d      }t        |j                  d         }| j                  t        j                  |j
                        t        j                  |             y )Nc                       e Zd Zedd       Zy)BSpecSignatureTest.test_autospec_signature_classmethod.<locals>.Fooc                     y r   r   )rK  r   r   r  s       r   class_methodzOSpecSignatureTest.test_autospec_signature_classmethod.<locals>.Foo.class_method  s    26r   Nr  )r#   r$   r%   rO  r  r   r   r   rC   r    s    6 6r   rC   r  )r   r  r,   r  r  r  rZ   s      r   #test_autospec_signature_classmethodz5SpecSignatureTest.test_autospec_signature_classmethod  sN    	7 	7 s||N;<**3+;+;<g>O>OPT>UVr   c                 J   d }t        |      } |dd        |dd       | j                  t        j                  |      t        j                  |             | j                  |j                  t        dd      t        dd      g       | j                  t        |d       y )Nc                      y r   r   r  s     r   myfuncz=SpecSignatureTest.test_spec_inspect_signature.<locals>.myfunc  s    $r   rV   rl   r  )r   r,   r  r  rL   r   r   r   )r   r  r0   s      r   test_spec_inspect_signaturez-SpecSignatureTest.test_spec_inspect_signature  s~    v&Q
qA**40'2C2CF2KL41:ta1~*FG)T1-r   c           	         ddt         dt         dt         dt         fd}| j                   |ddd	      d
       t        |      } |ddd	        |dd	       | j                  t        j                  |      t        j                  |             | j                  |j
                  t        ddd	      t        dd	      g       | j                  t        |d       | j                  t        |dddd	       y )Nr   r   r  returnc                    | |z   |z   S r   r   r  s      r   r+   zFSpecSignatureTest.test_spec_inspect_signature_annotations.<locals>.foo  s    q519r   rV   rl   rm   )r  r   ro   r  )	r   r,   r   r  r  rL   r   r   r   )r   r+   r0   s      r   'test_spec_inspect_signature_annotationsz9SpecSignatureTest.test_spec_inspect_signature_annotations  s    	3 	3 	 	 	 	Qa!,s#QQQ!**40'2C2CC2HI41?DaL*IJ)T1-)T1aa8r   c                 X    d }t        |      }| j                  |j                  d       y )Nc                       y)Nnoper   r   r   r   r  z>SpecSignatureTest.test_spec_function_no_name.<locals>.<lambda>  r  r   funcopy)r   r,   r#   )r   funcr0   s      r   test_spec_function_no_namez,SpecSignatureTest.test_spec_function_no_name  s%    t$	2r   c                     d }t        |      } |d       |j                  t        d      g       | j                  t              5  |j                  t        d      g       d d d        y # 1 sw Y   y xY w)Nc                      y r   r   r   s    r   r   z@SpecSignatureTest.test_spec_function_assert_has_calls.<locals>.f  r   r   rV   rl   )r   rX   r   r   r   r  s      r   #test_spec_function_assert_has_callsz5SpecSignatureTest.test_spec_function_assert_has_calls  sa    q!QtAwi(~. 	-!!47),	- 	- 	-s   A,,A5c                     d }t        |      } |d       |j                  d       | j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)Nc                      y r   r   r   s    r   r   z?SpecSignatureTest.test_spec_function_assert_any_call.<locals>.f  r   r   rV   rl   )r   rY   r   r   r  s      r   "test_spec_function_assert_any_callz4SpecSignatureTest.test_spec_function_assert_any_call  sU    q!QQ~. 	$  #	$ 	$ 	$s   AA!c                 |   d }t               }t        ||      }  |d      d       | j                  |j                  t	        d      g       | j                  |j                  t	        d      g       |j                          | j                  |j                  g        | j                  |j                  g        y )Nc                      y r   r   r   s    r   r   z:SpecSignatureTest.test_spec_function_reset_mock.<locals>.f  r   r   r   rV   rl   )r   r   r,   rL   r   rJ   )r   r   rvr0   s       r   test_spec_function_reset_mockz/SpecSignatureTest.test_spec_function_reset_mock  s    Vqr2Q
47)4a	2"-+r   N)+r#   r$   r%   r   r   r   r   r   r   r   r   r   r	  r  r+  r6  r;  r@  rF  rY  rd  rr  ry  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    +6)	(2'#	%*D$-!(2E86,;	P1(M,#MLE0*,$0M$%80"	+
()(X
0
8XW
.9 3-$	,r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestCallListc                 ^   t               }| j                  |j                  t                |dd        |d        |dd        |d       t	        dd      t	        d      t	        dd      t	        d      fD ]  }| j                  ||j                           t	        d      t	        dd      g}| j                  ||j                         t	        dd      t	        d      g}| j                  ||j                         t	        dd      t	        d      g}| j                  ||j                         t	        dd      g}| j                  ||j                         | j                  t	        d      |j                         | j                  t	        d      g|j                         y )	NrV   rl   rm   r   ro   r   r   r   )r   r?  r   r	   r   r   assertNotIn)r   r0   rr   callss       r   !test_args_list_contains_call_listz.TestCallList.test_args_list_contains_call_list  sP   vd119=Q
q	Q
q	AJq	41:tay@ 	5DMM$ 3 34	5 DAJ'eT001aTAY'eT001aTAY'eT001aeT001ft':':;$v,)<)<=r   c                     t               } |dd       |j                  d       |j                  j                         j                  dd       d}| j	                  t        |j                        |       y )	NrV   rl   rm   r   r   dog)catzU[call(1, 2),
 call.foo(a=3),
 call.foo.bar(),
 call.foo.bar().baz('fish', cat='dog')])r   r+   rE   rh   r,   r4   rL   )r   r0   rN   s      r   test_call_list_strzTestCallList.test_call_list_str)  sa    vQ
16u-6 	 	T__-x8r   c                    t        dt        z  t              }|j                         }	 t        j
                   |j                          t	               }|j
                   |j                          | j                  |j                  t               t               g       d|_        | j                  |j                  t               t               t        d      g       |j                          y # |j                          w xY w)Nz%s.SomeClass.one)new_callablerm   )r
   r#   r   r   r   r   rX  r.   r,   rL   r   stop)r   r   r0   r  s       r   test_propertymockzTestCallList.test_propertymock8  s    $x/lKwwy	MM((*AEE##%T__tvtv.>?AET__tvtvtAw.GHFFHAFFHs   B3C. .D c                     t               }t               }|t        |      _        |j                  }|j	                          | j                  |t                | j                  |t               y r   )r   r   r  r+   rX  r?  r  r   r   r   returneds       r   test_propertymock_barez#TestCallList.test_propertymock_bareJ  sP    KNQ55	!!#h	2  <8r   c                     t               }t        d      }|t        |      _        |j                  }|j	                          | j                  |d       | j                  |t               y )Nr)  r   )r   r   r  r+   rX  r,   r  r   s       r   test_propertymock_returnvaluez*TestCallList.test_propertymock_returnvalueU  sS    Kb)Q55	!!#2&  <8r   c                     t               }t        t              }|t        |      _        | j                  t              5  |j                   d d d        |j                          y # 1 sw Y   xY w)N)side_effect)r   r   
ValueErrorr  r+   r   rX  )r   r   r   s      r   test_propertymock_side_effectz*TestCallList.test_propertymock_side_effect`  sT    KZ0Qz* 	EE		!!#	 	s    A&&A/N)	r#   r$   r%   r  r  r  r"  r$  r(  r   r   r   r  r    s     >29$99$r   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestCallablePredicatec                     t         t        t        t        t        t
        fD ]  }| j                  t        |              y r   )r4   bytesr   r3  tupler   r   r   )r   r   s     r   	test_typezTestCallablePredicate.test_typel  s.    T5)< 	,COOIcN+	,r   c                 Z     G d d      } |       }| j                  t        |             y )Nc                       e Zd Zd Zy)>TestCallablePredicate.test_call_magic_method.<locals>.Callablec                      y r   r   r   s    r   r  zGTestCallablePredicate.test_call_magic_method.<locals>.Callable.__call__r  r   r   N)r#   r$   r%   r  r   r   r   r  r1  q  r   r   r  )r   r   )r   r  rv  s      r   test_call_magic_methodz,TestCallablePredicate.test_call_magic_methodp  s$    	% 	%:	(+,r   c                 `     G d d      }| j                  t        |j                               y )Nc                       e Zd Zed        Zy)ATestCallablePredicate.test_staticmethod.<locals>.WithStaticMethodc                       y r   r   r   r   r   
staticfunczLTestCallablePredicate.test_staticmethod.<locals>.WithStaticMethod.staticfuncx  rL  r   N)r#   r$   r%   rP  r8  r   r   r   WithStaticMethodr6  w  s    " "r   r9  )r   r   r8  )r   r9  s     r   test_staticmethodz'TestCallablePredicate.test_staticmethodv  s&    	# 	# 		"2"="=>?r   c                 `     G d d      }| j                  t        |j                               y )Nc                       e Zd Z ed      Zy)MTestCallablePredicate.test_non_callable_staticmethod.<locals>.BadStaticMethodN)r#   r$   r%   rP  not_callabler   r   r   BadStaticMethodr=  }  s    '-Lr   r?  r   r   r>  )r   r?  s     r   test_non_callable_staticmethodz4TestCallablePredicate.test_non_callable_staticmethod|  s%    	. 	.?#?#?@Ar   c                 `     G d d      }| j                  t        |j                               y )Nc                       e Zd Zed        Zy)?TestCallablePredicate.test_classmethod.<locals>.WithClassMethodc                      y r   r   )rK  s    r   	classfunczITestCallablePredicate.test_classmethod.<locals>.WithClassMethod.classfunc  s     $r   N)r#   r$   r%   rO  rF  r   r   r   WithClassMethodrD    s    $ $r   rG  )r   r   rF  )r   rG  s     r   test_classmethodz&TestCallablePredicate.test_classmethod  s%    	% 	% 		/";";<=r   c                 `     G d d      }| j                  t        |j                               y )Nc                       e Zd Z ed      Zy)KTestCallablePredicate.test_non_callable_classmethod.<locals>.BadClassMethodN)r#   r$   r%   rO  r>  r   r   r   BadClassMethodrK    s    &t,Lr   rL  r@  )r   rL  s     r   test_non_callable_classmethodz3TestCallablePredicate.test_non_callable_classmethod  s%    	- 	->#>#>?@r   N)	r#   r$   r%   r.  r3  r:  rA  rH  rM  r   r   r   r*  r*  j  s#    ,-@B
>Ar   r*  __main__)r  r  r  unittestunittest.mockr   r   r   r   r   r   r	   r
   r   r   r   	functoolsr   r-   r   TestCaser'   rc   r   r  r*  r#   mainr   r   r   <module>rT     s         
  " "C%h C%J^
x   ^
B	P
,)) P
,fY$8$$ Y$x AH--  AF zHMMO r   