
    =e݇                     v   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j                     dS dS )    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dS )	SomeClassc                     d S N selfabs      9/usr/lib/python3.11/unittest/test/testmock/testhelpers.pyonezSomeClass.one             c                     d S r   r   r   s    r   twozSomeClass.two   r   r   Nc                     d S r   r   r   r   s     r   threezSomeClass.three   r   r   r   )__name__
__module____qualname__r   r   r"   r   r   r   r   r      s.        !!!!!!r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )AnyTestc                 8   |                      t          t                                 t                      } |t                     |                    t                     t                      } |t                     |                    t                     d S Nfoo)assertEqualr   objectr   assert_called_withr   mocks     r   test_anyzAnyTest.test_any   s{    fhh'''vvS			$$$vvC(((((r   c                     |                      t          t                    d           |                      t          t                    d           d S )Nz<ANY>)r,   reprr   strr   s    r   	test_reprzAnyTest.test_repr"   s@    cG,,,S7+++++r   c                     t                      } |t          j                    t          j                               |                    t          t                     d S r)   )r   r   nowr.   r   r/   s     r   test_any_and_datetimezAnyTest.test_any_and_datetime'   sK    vvX\^^0000-----r   c                    t                      } G d dt                    }t          j                     |            fD ]}|                                  ||||           |                    |||            |                                ||           t          t          t          t                    t          j        t          t          t                    t                      t                                          t          t                    g}|                     ||j	                   |                     |j	        |           d S )Nc                       e Zd Zd Zd ZdS )9AnyTest.test_any_mock_calls_comparison_order.<locals>.Fooc                     d S r   r   r   others     r   __eq__z@AnyTest.test_any_mock_calls_comparison_order.<locals>.Foo.__eq__1   r   r   c                     d S 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?   rA   r   r   r   Foor;   0   s"        ))))))))r   rB   r+   bar)zingaalpha)a1z99)
r   r-   r   r7   
reset_mockmethodr   r   r,   
mock_calls)r   r0   rB   dexpecteds        r   $test_any_mock_calls_comparison_orderz,AnyTest.test_any_mock_calls_comparison_order.   s=   vv	* 	* 	* 	* 	*& 	* 	* 	* & 	8 	8AOODq!!!!KK!K,,,DFFMMQAM&&& Scs+++Cs#666#66H
 Xt777T_h7777	8 	8r   c                 "    G d d          }t                      } | |            d           |                    t          t          d          g           |                    t          d           |                    t          d           d S )Nc                       e Zd Zd ZdS )%AnyTest.test_any_no_spec.<locals>.Fooc                     d S 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   rB   rQ   E           )))))r   rB      r   assert_has_callsr   r   r.   assert_any_callr   rB   r0   s      r   test_any_no_speczAnyTest.test_any_no_specC   s    	* 	* 	* 	* 	* 	* 	* 	* vvSSUUAtC||n---Q'''S!$$$$$r   c                 &    G d d          }t          |          } | |            d           |                    t          t          d          g           |                    t          d           |                    t          d           d S )Nc                       e Zd Zd ZdS )*AnyTest.test_any_and_spec_set.<locals>.Fooc                     d S r   r   r=   s     r   r?   z1AnyTest.test_any_and_spec_set.<locals>.Foo.__eq__Q   r   r   NrS   r   r   r   rB   r]   P   rT   r   rB   )specrU   rV   rY   s      r   test_any_and_spec_setzAnyTest.test_any_and_spec_setN   s    	* 	* 	* 	* 	* 	* 	* 	* ~~~SSUUAtC||n---Q'''S!$$$$$r   N)	r#   r$   r%   r1   r5   r8   rN   rZ   r`   r   r   r   r'   r'      sn        	) 	) 	), , ,
. . .8 8 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dS )CallTestc           	         t                      }|                     |t                                 |                     |t          d                     |                     |t          d                     |                     |t          i f                     |                     |t          d                     |                     |t          di f                     |                     |t          ddi f                     |                     |t          d                     |                     |t          d                     |                     |t          di f                     |                     |t          d	di f                     t          d
          }|                     |t          d
                     |                     |t          d                     |                     |t          di f                     |                     |t          ddi f                     t          d          }|                     |t          d                     |                     |t          ddi f                     t          d          }|                     |t          d                     |                     |t          ddi f                     |                     |t          d                     |                     |t          ddi f                     t          ddif          }|                     |t          ddddif                     |                     |t          dddif                     |                     |t          dddif                     |                     |t          ddif                     d S )N) r   )rd   r   rd   r   r*   rD   r   bazspamrU         )rd   rj   rj   )rU   rk      )r+   rm   )rd   rm   rm   )rD   rm   rD   r   rl   r   r,   assertNotEqual)r   kalls     r   test_call_with_callzCallTest.test_call_with_call\   s   wwuww'''uU||,,,uU||,,,ubU||,,,uX///ub"X///ub"b\22333uX///u[11222ueR[11222ufb"%566777\""u\22333u_55666ui_55666ub)R%899:::\""D%"8"8999D%Y(;"<"<===())D%"8"8999D%Y(;"<"<===D%(:";";<<<D%	2(>"?"?@@@sAh[!!ub"sAh%788999ub3(^44555ub3(^44555usAh[1122222r   c                 b   t                      }|                     |d           |                     |d           |                     |d           |                     |d           |                     |ddi f           |                     |di f           |                     |i f           d S )Nr   r*   re   r+   r   r+   )r   r,   r   argss     r   test_empty__CallzCallTest.test_empty__Call   s    wwr"""x(((u%%%{+++b"~...r{+++u%%%%%r   c                    t          ddi f          }|                     |d           |                     |d           |                     |ddi f           |                     |di f           |                     |d           |                     |d           |                     |i f           |                     |d           |                     |d           |                     |di f           d S )	Nr+   r   r*   rt   re   )rD   rf   rD   ro   ru   s     r   test_named_empty_callzCallTest.test_named_empty_call   s   eR_%%x((({+++b"~...r{+++D%(((D"%%%D2%(((D(+++D+...D5"+.....r   c                 N   t          di f          }|                     |d           |                     |d           |                     |ddi f           |                     |di f           |                     |j        d           |                     |j        i            d S )Nrj   ri   r+   rj   r+   )r   r,   rv   kwargsru   s     r   test_call_with_argszCallTest.test_call_with_args   s    i_%%|,,,1222y"5666	2///I...b)))))r   c                 P   t          ddi f          }|                     |d           |                     |ddi f           |                     |j        d           |                     |j        i            |                     |d           |                     |di f           d S )Nr+   rj   r{   ri   )r   r,   rv   r|   rp   ru   s     r   test_named_call_with_argsz"CallTest.test_named_call_with_args   s    eY+,,1222y"5666I...b)))D,///D9b/22222r   c           	         t          dt          dd          f          }|                     |t          dd          f           |                     |dt          dd          f           |                     |ddt          dd          f           |                     |dt          dd          f           |                     |j        d           |                     |j        t          dd                     d S )Nr   rl   rn   r   r   r+   )r   dictr,   rv   r|   ru   s     r   test_call_with_kwargszCallTest.test_call_with_kwargs   s    b$a...)**qA0111ta1~~~6777r4!q>>>:;;;D1NNN3444B'''dQ!nnn55555r   c           	      
   t          ddt          dd          f          }|                     |dt          dd          f           |                     |ddt          dd          f           |                     |j        d           |                     |j        t          dd                     |                     |t          dd          f           |                     |dt          dd          f           d S )Nr+   r   rl   rn   r   )r   r   r,   rv   r|   rp   ru   s     r   test_named_call_with_kwargsz$CallTest.test_named_call_with_kwargs   s    eRQ011ta1~~~6777r4!q>>>:;;;B'''dQ!nnn555D4!q>>>"3444D2ta1~~~"677777r   c                    t          di f          }|                     |t          ddd                     |                     t          ddd          |           |                     t          ddd          |g           d S )Nrj   rU   rk   rl   )r   r,   r   assertInru   s     r   #test_call_with_args_call_empty_namez,CallTest.test_call_with_args_call_empty_name   sy    i_%%tAq!}}---aA---d1ammdV,,,,,r   c                 @   |                      t          d          t          dd                     |                     t          d          t          ddd          k               |                     t          di f          t          ddd          k               d S )Nri   rU   rk   rl   rU   rk   )rp   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 ]1}|                     ||           |                     ||k               2d S )Nri   rU   )r   intrp   r   )r   rq   values      r   test_call_non_tupleszCallTest.test_call_non_tuples   sb    \""dC' 	, 	,Ee,,,TU]++++	, 	,r   c           
         |                      t          t                                d           |                      t          t          d                    d           |                      t          t          dddif                    d           |                      t          t          ddddif                    d	           |                      t          t                    d
           |                      t	          t                    d
           |                      t          t                                d           |                      t          t          d                    d           |                      t          t          d                    d           |                      t          t                      j                  d           |                      t          t          d          j                            d          j                  d           |                      t          t                                          ddd                    d           |                      t           t                                            d           |                      t           t          d          d                    d           |                      t           t                                                                  j        	                    d                    d           d S )Nzcall()r*   z
call.foo()rj   r   r   zcall(1, 2, 3, a='b')rD   zcall.bar(1, 2, 3, a='b')r   rU   zcall(1)thing)zzzcall(zz='thing')z
call().foorl   r   zcall().foo.bar().bingrk   zcall().foo(1, 2, a=3)zcall()()z	call()(2)zcall()().bar().baz.beep(1))
r,   r3   r   r   r4   r+   rD   bingrg   beepr   s    r   r5   zCallTest.test_repr   s   egg111eHoo..===eYc
$;<<==/	1 	1 	1eUISz$BCCDD3	5 	5 	5 	dV,,,TF+++dffx000d1gg	222dg...//1CDDDdffj))<888d1ggkooo227880	2 	2 	2AqA&&''#	
 	
 	
 	fdffhh444gd1ggajj));777#((++,,(	
 	
 	
 	
 	
r   c                 p   |                      t                      ddi f           |                      t          dddd          dddddf           t                      } |d	d
d            |dd           |                      |j        t          d	d
d          t          dd          g           d S )Nrd   r   r+   rD   rl   rn   )r   r   rC   rU   rk      r   )r,   r   r   call_args_listr/   s     r   	test_callzCallTest.test_call   s    "b"...eUq999na.B.BC	E 	E 	E vvQ1qA,q!Q--Q8	: 	: 	: 	: 	:r   c                    |                      t          j        d          ddi f           |                      t          j                            d          ddddif           t                      }|                    dd	d
           |j                            d
d           |                      |j        t          j        dd	d
          t          j                            d
d          g           d S )NrU   r+   )rU   eggs)fishzbar.bazr   r   rk   rl   r   r   )r,   r   r+   rD   rg   r   method_callsr/   s     r   test_attribute_callzCallTest.test_attribute_call
  s    !udB&7888622#R&&)9:	< 	< 	< vvAqqA*(1a++TX\\A\-C-CD	F 	F 	F 	F 	Fr   c           	      2   t          d                              d                              dd          }|                     |ddt	          d          f           t                      } |dddd           |                     |j        t          dddd                     |                     |j        t          ddd                     |                     |j        t          dddd          g           |                     |j	        t          dddd          g           t                      } |                    d                                                      j
                            d	            t          j        d                                                      j
                            d	          }|                     |j	        d
         |           |                     |j	        |                                           d S )NrU   rk   rl   rn   r   z().foo().barrl   r   r   )r   r+   rD   r,   r   r   	call_argsrp   r   rK   rg   r   	call_list)r   resultr0   	last_calls       r   test_extended_callzCallTest.test_extended_call  s   aQ##A#++.$q			!BCCC{{QQ!aa1)=)=)=>>>DNDAqMM:::,tAqA/C/C/C.DEEE41Q+?+?+?*@AAA{{$$q$)))%DHQKKOO%%''+001055	,i888)*=*=*?*?@@@@@r   c                     t          d          j        }t          d          j        }|                     ||           |                     ||           |                     ||           d S NrU   xrk   )r   r+   r,   rp   r   s      r   test_extended_not_equalz CallTest.test_extended_not_equal*  sh    1IIIM1IIIMAAAq!!!!!r   c                 &   t          d                                          j        }t          d                                          j        }|                     ||           |                     ||           |                     ||           d S r   )r   r+   rD   r,   rp   r   s      r   test_nested_calls_not_equalz$CallTest.test_nested_calls_not_equal2  sz    1IIIMMOO1IIIMMOOAAAq!!!!!r   c                    t                      } |d           |                     t          d                                          |j                   t                      } |d                              d           |                     t          d                              d                                          |j                   t                      }  |d                              d          d           |                      t          d                              d          d                                          |j                   t                      }t             |d                              d          d          j        j        	                    d          d                       t          d                              d          d          j        j        	                    d          d          
                                }|                     |                                |j                   d S )NrU   rk   rl   rn      )r   r,   r   r   rK   rJ   r   r+   rD   rg   __int__)r   r0   rq   s      r   test_call_listzCallTest.test_call_list:  s   {{Qa**,,do>>>{{Qqa**4466	* 	* 	* {{Qq!*a**1--7799	* 	* 	* {{/DDGGNN1a  $(,,Q//223332 tAww~~a  ##'+//22155==??))4?;;;;;r   c                    |                      t          t                     t                      }t	          |           |                      |j        t          g           |                      t          g|j                   d S r   )r,   r   r   r   r   rK   r   ms     r   test_call_anyzCallTest.test_call_anyO  sf    s###KKAu---#-----r   c                 <   t          dddifd          }|                     t          |          d           |                     |d         d           |                     |d         ddi           t          dddif          }|                     ||           d S )	Nr   r   rl   T)r   rk   r   rU   )r   r,   len)r   rv   
other_argss      r   test_two_args_callzCallTest.test_two_args_callX  s    fsAh'T222TA&&&a&)))a3(+++FS!H-..
z*****r   c                    |                      t          dd          d         d           |                      t          d          d         d           |                      t          dddif          d         d           d S )	Nr   r+   r   )rD   barzrd   r   helloworld)r,   r   r   s    r   test_call_with_namezCallTest.test_call_with_namea  s~    r5))!,e444133A6;;;'71CDFFqI2NNNNNr   c           	         t                      }  |                                            d                      |                     |j        t	                      t	                                                      t	                                                                          d           t	                                                                                                  g           t                      }d |                                            d<   |                     |j        t	                      t	                                                      t	                                                                          dd          g           t                      }t           |                                                       |                     |j        t	                      t	                                                      t	                                                                                      g           d S )NrD   rU   )	r   r+   r,   rK   r   __getitem____setitem__iter__iter__r   s     r   test_dunder_callzCallTest.test_dunder_callf  s   KK		%LVVTVVZZ\\466::<<#;#;E#B#BD^DFFJJLLD\D\D^D^D`D`a	
 	
 	
 KK		%LVVTVVZZ\\466::<<#;#;E1#E#EF	
 	
 	
 KKQQSSWWYYLVVTVVZZ\\466::<<#8#8#:#:;	
 	
 	
 	
 	
r   N)r#   r$   r%   rr   rw   ry   r}   r   r   r   r   r   r   r5   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   rb   Z   sY       "3 "3 "3J	& 	& 	&/ / / * * *	3 	3 	36 6 6	8 	8 	8- - -> > >, , ,
 
 
>	: 	: 	:	F 	F 	FA A A(" " "" " "< < <*. . .+ + +O O O

 
 
 
 
r   rb   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*d)S )*SpecSignatureTestc                    |                      t          t          |d           |                    dd           |j                            dd           |                      t
          |j        j        dd           |                      t          |j        d           |                                 |j                                         |                      t
          |j        j        d           |                      t          |j        d           |                                 |j                                         |                      t
          |j        j        d           |                      t          |j        dd           |                    d           |j                            d           |                    d           |j                            d           d S )Nr+   rU   rk   rl   rn   r   )	assertRaisesAttributeErrorgetattrr   r.   AssertionError	TypeErrorr   r"   r/   s     r   _check_someclass_mockz'SpecSignatureTest._check_someclass_mock}  s   .'4???A##Aq))).(5q!	= 	= 	=)TXq111


##%%%.(5q	: 	: 	:)TXq111

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

1
%%a(((

Q

%%%*****r   c                     t          t                    }|                     |           t          t                                }|                     |           d S r   )r   r   r   r/   s     r   
test_basiczSpecSignatureTest.test_basic  sN    y))""4(((y{{++""4(((((r   c                     d }t          |d          }|                      |            d            G d dt                    }t          |d          }|                      |            d           d S )Nc                      d S r   r   r   r   r   fz>SpecSignatureTest.test_create_autospec_return_value.<locals>.f  r   r   r+   return_valuec                       e Zd ZdS )@SpecSignatureTest.test_create_autospec_return_value.<locals>.FooNr#   r$   r%   r   r   r   rB   r             Dr   rB   )r   r,   r-   )r   r   r0   rB   s       r   !test_create_autospec_return_valuez3SpecSignatureTest.test_create_autospec_return_value  s    qu555'''	 	 	 	 	& 	 	 	 s777'''''r   c                     t          t                    }t          |           |                                 |                     |j        j        d           d S )Nr   )r   r   rI   r,   r   
call_countr   s     r   test_autospec_reset_mockz*SpecSignatureTest.test_autospec_reset_mock  sH    C  A	-q11111r   c                      G d dt                     }t          j         |d          }|                                } |                                d           |                    d           d S )Nc                       e Zd Zd ZdS );SpecSignatureTest.test_mocking_unbound_methods.<locals>.Fooc                     d S r   r   )r   r+   s     r   r+   z?SpecSignatureTest.test_mocking_unbound_methods.<locals>.Foo.foo  r   r   Nr#   r$   r%   r+   r   r   r   rB   r             $$$$$r   rB   r+   rU   )r-   r
   startr+   r.   )r   rB   pmock_foos       r   test_mocking_unbound_methodsz.SpecSignatureTest.test_mocking_unbound_methods  sy    	% 	% 	% 	% 	%& 	% 	% 	%Le$$7799		!##A&&&&&r   c                      G d dt                     }t          |d          }|                     |j        d           d S )Nc                       e Zd ZdZdS )ESpecSignatureTest.test_create_autospec_keyword_arguments.<locals>.Foorl   Nr#   r$   r%   r   r   r   r   rB   r             AAAr   rB   3r   )r-   r   r,   r   )r   rB   r   s      r   &test_create_autospec_keyword_argumentsz8SpecSignatureTest.test_create_autospec_keyword_arguments  s\    	 	 	 	 	& 	 	 	C3'''c"""""r   c                     d dd}t          |          } |d           |                    d           |                     t          |dd            |dd           |                    dd           d S )Nr   c                    d S r   r   r   s     r   r+   zJSpecSignatureTest.test_create_autospec_keyword_only_arguments.<locals>.foo  r   r   rU   rk   rl   )r   r.   r   r   )r   r+   r   s      r   +test_create_autospec_keyword_only_argumentsz=SpecSignatureTest.test_create_autospec_keyword_only_arguments  s    #####C  	!	Q)Q1---	!q					Q!$$$$$r   c                     t                      }d }||_        t          |          }|                    d           |j                            d           d S )Nc                     d S r   r   r   s    r   r   z@SpecSignatureTest.test_function_as_instance_attribute.<locals>.f  r   r   r   )r   r   r   r.   )r   objr   r0   s       r   #test_function_as_instance_attributez5SpecSignatureTest.test_function_as_instance_attribute  sQ    kks##v!!&)))))r   c                    t          g           }|                    d           |j                            d           |                     t          t
          |d            G d dt                    }t          |          }|j                            d           |j        j                            d           |                     t          t
          |j        d           d S )Nr+   c                       e Zd Zg ZdS )0SpecSignatureTest.test_spec_as_list.<locals>.FooNr   r   r   r   rB   r     s        CCCr   rB   rl   )r   appendr.   r   r   r   r-   r+   )r   r0   rB   s      r   test_spec_as_listz#SpecSignatureTest.test_spec_as_list  s     r""E&&u---.'4???	 	 	 	 	& 	 	 	 s##**1---.'48UCCCCCr   c                      G d dt                     }t          |          }||j        fD ]}|                     |           d S )Nc                   "    e Zd Z e            ZdS ).SpecSignatureTest.test_attributes.<locals>.SubNr#   r$   r%   r   attrr   r   r   Subr             9;;DDDr   r  )r   r   r  r   )r   r  sub_mockr0   s       r   test_attributesz!SpecSignatureTest.test_attributes  sr    	 	 	 	 	) 	 	 	 #3''x}- 	- 	-D&&t,,,,	- 	-r   c                     G d dt                      G fddt                     }t          |          }|                    d           |                     t                    5  |                                 d d d            n# 1 swxY w Y   |                     t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )VSpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.CrazyDescriptorc                     |d S d S )Nc                     d S r   r   r   s    r   <lambda>zpSpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.CrazyDescriptor.__get__.<locals>.<lambda>  s    T 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              ZdS )NSpecSignatureTest.test_spec_has_descriptor_returning_function.<locals>.MyClassN)r#   r$   r%   	some_attr)r  s   r   MyClassr    s        '))IIIr   r  rU   rk   )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.CCCc                 p    G fddt                                  }|                     t                    5  |j         d d d            n# 1 swxY w Y   |                     |                    d          d           t          |          }|                    d           |                     t                    5  |                                 d d d            n# 1 swxY w Y   |                     t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nc                   (     e Zd Z fdZd Z xZS )ISpecSignatureTest.test_spec_has_function_not_in_bases.<locals>.CrazyClassc                 P    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688'BBr   c                 2    |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    sS        C C C C C C+ + + + + + +r   r  *   rU   rk   )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   	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ z||~.. 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	B,,,t$$

2y)) 	 	JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	JJq!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AAAC""C&)C&D++D/2D/c                 Z    G d dt                     }t          |          }|                    d           |j                            d           |                     t
          t          |j        d           |                    d           |j                            d           |                     t          |j        dd           |                     t
          t          |j        d           |	                    ddg           |j	                            ddg           |                     t
          t          |j	        d           |j
                            d           |j
        j                            d           |                     t
          t          |j
        d           d S )Nc                       e Zd Zd ZeZi ZdS )GSpecSignatureTest.test_builtin_functions_types.<locals>.BuiltinSubclassc                     d S r   r   )r   args     r   rD   zKSpecSignatureTest.test_builtin_functions_types.<locals>.BuiltinSubclass.bar'  r   r   N)r#   r$   r%   rD   sortedr  r   r   r   BuiltinSubclassr*  &  s!        $$$FDDDr   r.  rl   r+   rD   rU   rk   )listr   r   r.   r   r   r   rD   r   r-  r  popr   r.  r0   s      r   test_builtin_functions_typesz.SpecSignatureTest.test_builtin_functions_types"  ss   	 	 	 	 	d 	 	 	
 //A&&q))).'4;FFF##E***)TXue<<<.'48UCCCQF&&1v....'4;FFF	a	((+++.'49eDDDDDr   c                 $    G d dt                     }t          |          }|                    dd           |                                 |                    d           t          j        dd          t          j                    t          j        d          g}|                     |j        |           |j                            dd           |j                                         |j                            d           |	                    t
          j                            dd          t
          j                                        t
          j                            d          g           |                     |j        |           d S )Nc                   "    e Zd Z e            ZdS )0SpecSignatureTest.test_method_calls.<locals>.SubNr  r   r   r   r  r5  ?  r  r   r  rU   rk   rl   )
r   r   r   r   r"   r   r,   r   r  extend)r   r  r0   rM   s       r   test_method_callsz#SpecSignatureTest.test_method_calls>  sG   	 	 	 	 	) 	 	 	 s##A




1HQNNDHJJ
1>*H555	a		Y]]1a  $)--//49??13E3EF	
 	
 	
 	*H55555r   c                     G d dt                     }t          |          }|                     t          |          g            |                     t          t
          |           |                     t          t
          |j                   |                     t          |          g            |                     |d         t                     |                     |j        d         t                     d S )Nc                       e Zd Zi ZdS )=SpecSignatureTest.test_magic_methods.<locals>.BuiltinSubclassN)r#   r$   r%   r  r   r   r   r.  r:  U  s        DDDr   r.  r+   )	r/  r   r,   r   r   r   r  assertIsInstancer   r1  s      r   test_magic_methodsz$SpecSignatureTest.test_magic_methodsT  s    	 	 	 	 	d 	 	 	 //dR((()S$///)S$)444dR(((d5k9555di.	:::::r   c                 ,    G d dt                     }| |            fD ]s}t          |d          }|                     |           |                     t          t
          |dd           |                     t          t
          |j        dd           td S )Nc                   "    e Zd Z e            ZdS ),SpecSignatureTest.test_spec_set.<locals>.SubNr  r   r   r   r  r?  c  r  r   r  T)spec_setr+   rD   )r   r   r   r   r   setattrr  )r   r  r_   r0   s       r   test_spec_setzSpecSignatureTest.test_spec_setb  s    	 	 	 	 	) 	 	 	 ##%%L 	P 	PD"4$777D&&t,,,ngtUEJJJngty%OOOO	P 	Pr   c                     G d dt                     } G d d|          } G d dt          |          }| |            | |            | |            fD ]s}t          |          }|                    dd           |j                            dd           |                    d	d
           |j                            d	d
           td S )Nc                   :    e Zd Zed             Zed             ZdS )/SpecSignatureTest.test_descriptors.<locals>.Fooc                     d S r   r   )clsr   r   s      r   r   z1SpecSignatureTest.test_descriptors.<locals>.Foo.fp      "dr   c                     d S r   r   r   s     r   gz1SpecSignatureTest.test_descriptors.<locals>.Foo.gr  s    r   N)r#   r$   r%   classmethodr   staticmethodrJ  r   r   r   rB   rE  o  s6        "" [" \r   rB   c                       e Zd ZdS )/SpecSignatureTest.test_descriptors.<locals>.BarNr   r   r   r   BarrN  u            r   rO  c                       e Zd ZdS )/SpecSignatureTest.test_descriptors.<locals>.BazNr   r   r   r   BazrR  w  rP  r   rS  rU   rk   rl   rn   )r-   r   r   r   assert_called_once_withrJ  )r   rB   rO  rS  r_   r0   s         r   test_descriptorsz"SpecSignatureTest.test_descriptorsn  s    	 	 	 	 	& 	 	 	 	#''''')S'''##%%cceeS##%%8 	1 	1D"4((DFF1aLLLF**1a000FF1aLLLF**1a0000	1 	1r   c                     G d dt                     }||_        t          |          } |             |                     |j        j                   |                                 |j                                         |                     |j        t          j                    t          j                                        g           | 	                    |j
        |j                   |                     |j
        |j                   |j
                                         |                     t          |j        j        j                   d S )Nc                       e Zd Zd ZdZeZdS )+SpecSignatureTest.test_recursive.<locals>.Ac                     d S r   r   r   s    r   r   z-SpecSignatureTest.test_recursive.<locals>.A.a  r   r   zfoo bar bazN)r#   r$   r%   r   r+   rD   r   r   r   ArX    s!        CCCCr   rZ  )r-   Br   r   calledr   r,   r   r   assertIsr+   rD   assertIsNotlowerr   r   r.   )r   rZ  r0   s      r   test_recursivez SpecSignatureTest.test_recursive  s   	 	 	 	 	 	 	 	
 q!!'''


*TVXXtvxxzz,BCCCaeQU###48,,,.$(.*KLLLLLr   c                     G d dt                     }t          |          }|                     | |                       | |            fD ]}|                    d           |j                            d           |j                            d           |                     t          |j        dd           |                     t          t          |d           t           |                      }|                    d           |j                            d           |j                            d           |                     t          |j        dd           |                     t          t          |d           |                     t          |           |j	        
                    d           |j	        j
                            d           |j	        j
                            d	           |                     t          t          |j	        d
           |	                                
                    d           |	                                j
                            d           |	                                j
                            d	           |                     t          t          |	                                d
           d S )Nc                   0    e Zd Zd Z G d de          ZdS )@SpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Fooc                     d S r   r   )r   r   s     r   r   zBSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.a  r   r   c                       e Zd Zd ZdS )DSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.Barc                     d S 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   rO  rf    s        $$$$$r   rO  N)r#   r$   r%   r   r-   rO  r   r   r   rB   rc    sG           % % % % %f % % % % %r   rB   r   r   r+   rD   r   r   )rh  rJ  )r-   r   r^  r   r.   r   r   r   r   rO  r   )r   rB   
class_mock	this_mockinstance_mocks        r   !test_spec_inheritance_for_classesz3SpecSignatureTest.test_spec_inheritance_for_classes  s   	% 	% 	% 	% 	%& 	% 	% 	%
 %S))
ZZ\\222#ZZ\\1 	G 	GIKK!KK**Q*///K**1---ieUCCCngy#FFFF'..**1---**Q*///)]_eUCCC.'=#FFF 	)]333A..q111...333.'=3DcJJJa   003330010555.'=3D3D3F3FLLLLLr   c                 0    G d dt                     }||_        t          |          } |            }|                     t          t
          |d           |                                }|                     t          t
          |d           t           |                      }|                     t          t
          |d           |                     t          |           |                                }|                     t          t
          |d           d S )Nc                       e Zd ZdZdS )+SpecSignatureTest.test_inherit.<locals>.Foorl   Nr   r   r   r   rB   rp    r   r   rB   r   )r-   rB   r   r   r   r   r   )r   rB   r0   instanceattr_instancecall_results         r   test_inheritzSpecSignatureTest.test_inherit  s   	 	 	 	 	& 	 	 	  s##466.'8SAAA

.'=#FFF ssuu%%.'4===)T*** hhjj.';DDDDDr   c                 D   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           d S )NrU   r+   g      ?y              ?FT)r   r   r4   r   r/  setfloatcomplexr   s    r   test_builtinszSpecSignatureTest.test_builtins  s       r   c                    d }t          |          }|                     t          |            |dd           |                    dd           |                    dd           |                    dd           ||_        t          |          }|                     t          |j                   |                    dd           |j                            dd           |j                            dd           d S )Nc                     d S r   r   r   s     r   r   z*SpecSignatureTest.test_function.<locals>.f  r   r   rU   rk   r   r   rl   rn   )r   r   r   r.   r   r   r   r0   s      r   test_functionzSpecSignatureTest.test_function  s    q!!)T***Q


1%%%Q'''!q)))q!!)TV,,,q!!!!Q'''!!A!+++++r   c                     G d dt                      G fddt                     }|                     |                    dd          d           t          |          |                     t
          fd           |                                         dd          j        j                   |                     t          fd	           j        }|j	        |j
        f d S )
Nc                       e Zd ZddZdS );SpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserNc                 (    |t          d          d S )Nz$Can only be accessed via an instancer!  )r   r   types      r   r  zCSpecSignatureTest.test_skip_attributeerrors.<locals>.Raiser.__get__  s    ;()OPPP ;r   r   r  r   r   r   Raiserr    s.        Q Q Q Q Q Qr   r  c                   :    e Zd Z              Zed             ZdS )@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%   raiserrL  r  )r  s   r   RaiserClassr    s9        VXXF  \  r   r  rU   rk   rl   c                 2                         ddd          S )NrU   rk   rl   )r  )r   ss    r   r  z=SpecSignatureTest.test_skip_attributeerrors.<locals>.<lambda>  s    qzz!Q/B/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+   rD   )r   r  r   r  r  s      @@r   test_skip_attributeerrorsz+SpecSignatureTest.test_skip_attributeerrors  s&   	Q 	Q 	Q 	Q 	QV 	Q 	Q 	Q
	 	 	 	 	 	 	& 	 	 	 	--a33Q777K(()%B%B%B%BCCCAq))1:+BCCC.*?*?*?*?@@@ hr   c                     G d dt                     }t          |          }|                     t          |            |d           |                    d           |                    d           |                     t
          |j        d            |dd           |                    dd           |                    dd           |                     t
          |j        dd           d S )	Nc                       e Zd ZddZdS )3SpecSignatureTest.test_signature_class.<locals>.Foorl   c                     d S r   r   r   s      r   __init__z<SpecSignatureTest.test_signature_class.<locals>.Foo.__init__  r   r   Nr   r#   r$   r%   r  r   r   r   rB   r    s        ,,,,,,r   rB   rU   r   rk   rn   r   r   )r-   r   r   r   rT  r   r.   rY   s      r   test_signature_classz&SpecSignatureTest.test_signature_class  s   	- 	- 	- 	- 	-& 	- 	- 	- s##)T***Q$$Q'''$$q$))).$*FJJJQ


1%%%!q))).$*AQ!LLLLLr   c                 J     G d dt                     }t          |           d S )Nc                       e Zd ZdS )6SpecSignatureTest.test_class_with_no_init.<locals>.FooNr   r   r   r   rB   r  *  r   r   rB   )r-   r   )r   rB   s     r   test_class_with_no_initz)SpecSignatureTest.test_class_with_no_init'  s@    	 	 	 	 	& 	 	 	r   c                     G d dt                     }t          |          } |dd           |                    dd           |                    dd           |                     t          |d            |dd          }|                     t          |            |d           |                    d           |                    d            |d           |                    d           |                    d           t           |dd                    } |d           |                    d           |                     t          |            |d           |                    d           d S )Nc                       e Zd Zd Zd ZdS );SpecSignatureTest.test_signature_callable.<locals>.Callablec                     d S r   r   )r   r   rh  s      r   r  zDSpecSignatureTest.test_signature_callable.<locals>.Callable.__init__1  r   r   c                     d S r   r   r!   s     r   __call__zDSpecSignatureTest.test_signature_callable.<locals>.Callable.__call__2  r   r   N)r#   r$   r%   r  r  r   r   r   Callabler  0  s"        ***'''''r   r  rU   rk   r   rh  r   r   )r-   r   rT  r   r   r.   )r   r  r0   rq  s       r   test_signature_callablez)SpecSignatureTest.test_signature_callable/  s   	( 	( 	( 	( 	(v 	( 	( 	( x((Q


$$Q***$$qA$...)T3///41::)X...3((---((3(///##C(((##c#***xx1~~..s$$s$+++)T***S			$$$$$r   c                     G d dt                     }t          |          } |            }|                                 |                     t          |d           |                     t          |           |                     t          |d           t           |                      }|                     t          |           |                     t          |d           d S )Nc                       e Zd Zd ZdS )ASpecSignatureTest.test_signature_noncallable.<locals>.NonCallablec                     d S 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   rT  r   r   )r   r  r0   rq  s       r   test_signature_noncallablez,SpecSignatureTest.test_signature_noncallableK  s    	 	 	 	 	& 	 	 	 {++466$$&&&)T3///)X...)Xs333{{}}--)T***)T3/////r   c                      G d dt                     }t          |          }|j        }|                     |t	          d                      |                                 |j                                         d S )Nc                       e Zd ZdZdS )8SpecSignatureTest.test_create_autospec_none.<locals>.FooN)r#   r$   r%   rD   r   r   r   rB   r  ]  s        CCCr   rB   )r-   r   rD   assertNotIsInstancer  r+   rT  )r   rB   r0   nones       r   test_create_autospec_nonez+SpecSignatureTest.test_create_autospec_none\  s    	 	 	 	 	& 	 	 	 s##x  tDzz222


((*****r   c                 t    G d dt                     }t          |          }|                    d           |j                            d           |j                            d           |                    d           |j                            d           |j                            d           d S )Nc                       e Zd Zd ZdS )MSpecSignatureTest.test_autospec_functions_with_self_in_odd_place.<locals>.Fooc                     d S r   r   )r   r   s     r   r   zOSpecSignatureTest.test_autospec_functions_with_self_in_odd_place.<locals>.Foo.fj  r   r   Nri  r   r   r   rB   r  i  s             r   rB   
   r   )r-   r   r   r.   )r   rB   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                   d S )Nc                   "    e Zd Zd ZddZd ZdS )CSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptorc                     || _         d S r   )r   )r   r   s     r   r  zLSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptor.__init__w  s    "


r   Nc                     | S r   r   )r   r   rG  s      r   r  zKSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptor.__get__z  s    r   c                     d S r   r   )r   r   r   s      r   __set__zKSpecSignatureTest.test_autospec_data_descriptor.<locals>.Descriptor.__set__}  r   r   r   )r#   r$   r%   r  r  r  r   r   r   
Descriptorr  v  s>        # # #    0////r   r  c                       e Zd ZdS )CSpecSignatureTest.test_autospec_data_descriptor.<locals>.MyPropertyNr   r   r   r   
MyPropertyr    r   r   r  c                   X    e Zd ZdgZed             Zd             Z  d          ZdS )<SpecSignatureTest.test_autospec_data_descriptor.<locals>.Fooslotc                     d S r   r   r   s    r   propzASpecSignatureTest.test_autospec_data_descriptor.<locals>.Foo.prop  s     Dr   c                     d S r   r   r   s    r   subpropzDSpecSignatureTest.test_autospec_data_descriptor.<locals>.Foo.subprop  s    #tr   r%  N)r#   r$   r%   	__slots__propertyr  r  desc)r  r  s   r   rB   r    sI        I   X ## Z#:b>>DDDr   rB   c                                          | t                      | ddd           |                     ddd           |                     ddd           | j                            ddd           d S )NrU   rk   rl   rn   r   r   )r;  r   abcrT  )	mock_attrr   s    r   check_data_descriptorzNSpecSignatureTest.test_autospec_data_descriptor.<locals>.check_data_descriptor  s{    !!)Y777IaAMM!Q"""--aA666M11!Q:::::r   )r-   r  r   r  r  r  r  )r   rB   r+   r  r  r  s   `   @@r   test_autospec_data_descriptorz/SpecSignatureTest.test_autospec_data_descriptoru  s   	0 	0 	0 	0 	0 	0 	0 	0	 	 	 	 	 	 	 			" 		" 		" 		" 		" 		" 		" 		"& 		" 		" 		" c""	; 	; 	; 	; 	; 	ch'''ck***ch'''ch'''''r   c                 v   t          j        t          j        t          j                              }|                      |            t
                     t          |          } |             |                                 |                                  |ddd           |                    ddd           d S )Nrn   r   r   )	types
MethodTypetimectimer;  r4   r   rT  rI   )r   methmockeds      r   'test_autospec_on_bound_builtin_functionz9SpecSignatureTest.test_autospec_on_bound_builtin_function  s    
DIKK88ddffc*** && 	&&(((q!Q&&q!Q/////r   c                      G d d          } |            }t          |          }|                     t          |d                     d S )Nc                       e Zd Zd ZdS )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0)<<<r   N)r#   r$   r%   r#  r   r   r   rB   r    s#        = = = = =r   rB   r#   )r   r   hasattr)r   rB   proxyautospecs       r   &test_autospec_getattr_partial_functionz8SpecSignatureTest.test_autospec_getattr_partial_function  sh    	= 	= 	= 	= 	= 	= 	= 	=
 "5)):6677777r   c                      G d d          }t          |j        d                   }|                     t          j        |j                  t          j        |                     d S )Nc                   &    e Zd Zedd            ZdS )CSpecSignatureTest.test_autospec_signature_staticmethod.<locals>.Foor  c                    d S r   r   r   r   cs      r   static_methodzQSpecSignatureTest.test_autospec_signature_staticmethod.<locals>.Foo.static_method  s    .2dr   Nr  )r#   r$   r%   rL  r  r   r   r   rB   r    s&        222 \222r   rB   r  )r   __dict__r,   inspect	signaturer  rY   s      r   $test_autospec_signature_staticmethodz6SpecSignatureTest.test_autospec_signature_staticmethod  sv    	3 	3 	3 	3 	3 	3 	3 	3 s|O<==*3+<==w?PQU?V?VWWWWWr   c                      G d d          }t          |j        d                   }|                     t          j        |j                  t          j        |                     d S )Nc                   &    e Zd Zedd            ZdS )BSpecSignatureTest.test_autospec_signature_classmethod.<locals>.Foor  c                    d S r   r   )rG  r   r   r  s       r   class_methodzOSpecSignatureTest.test_autospec_signature_classmethod.<locals>.Foo.class_method  s    26$r   Nr  )r#   r$   r%   rK  r  r   r   r   rB   r    s&        666 [666r   rB   r  )r   r  r,   r  r  r  rY   s      r   #test_autospec_signature_classmethodz5SpecSignatureTest.test_autospec_signature_classmethod  sv    	7 	7 	7 	7 	7 	7 	7 	7 s|N;<<*3+;<<g>OPT>U>UVVVVVr   c                 |   d }t          |          } |dd            |dd           |                     t          j        |          t          j        |                     |                     |j        t          dd          t          dd          g           |                     t          |d           d S )Nc                     d S r   r   r  s     r   myfuncz=SpecSignatureTest.test_spec_inspect_signature.<locals>.myfunc  r   r   rU   rk   r  )r   r,   r  r  rK   r   r   r   )r   r  r0   s      r   test_spec_inspect_signaturez-SpecSignatureTest.test_spec_inspect_signature  s    v&&Q


qA*400'2CF2K2KLLL41::ta1~~~*FGGG)T1-----r   c           	      D   ddt           dt           dt           dt           fd}|                      |ddd	
          d           t          |          } |ddd	
            |dd	
           |                     t          j        |          t          j        |                     |                     |j        t          ddd	
          t          dd	
          g           |                     t          |d           |                     t          |ddd	d
           d S )Nr  r   r   r  returnc                    | |z   |z   S r   r   r  s      r   r+   zFSpecSignatureTest.test_spec_inspect_signature_annotations.<locals>.foo  s    q519r   rU   rk   rl   )r  r   rn   r  )	r   r,   r   r  r  rK   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0'2CC2H2HIII41???DaLLL*IJJJ)T1---)T1aa88888r   c                 `    d }t          |          }|                     |j        d           d S )Nc                      dS )Nnoper   r   r   r   r  z>SpecSignatureTest.test_spec_function_no_name.<locals>.<lambda>  s    v r   funcopy)r   r,   r#   )r   funcr0   s      r   test_spec_function_no_namez,SpecSignatureTest.test_spec_function_no_name  s4    ~t$$	22222r   c                 2   d }t          |          } |d           |                    t          d          g           |                     t                    5  |                    t          d          g           d d d            d S # 1 swxY w Y   d S )Nc                     d S r   r   r   s    r   r   z@SpecSignatureTest.test_spec_function_assert_has_calls.<locals>.f  r   r   rU   rk   )r   rW   r   r   r   r|  s      r   #test_spec_function_assert_has_callsz5SpecSignatureTest.test_spec_function_assert_has_calls  s    q!!QtAwwi(((~.. 	- 	-!!477),,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   $BBBc                     d }t          |          } |d           |                    d           |                     t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nc                     d S r   r   r   s    r   r   z?SpecSignatureTest.test_spec_function_assert_any_call.<locals>.f  r   r   rU   rk   )r   rX   r   r   r|  s      r   "test_spec_function_assert_any_callz4SpecSignatureTest.test_spec_function_assert_any_call  s    q!!QQ~.. 	$ 	$  ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A00A47A4c                    d }t                      }t          ||          }  |d          d           |                     |j        t	          d          g           |                     |j        t	          d          g           |                                 |                     |j        g            |                     |j        g            d S )Nc                     d S r   r   r   s    r   r   z:SpecSignatureTest.test_spec_function_reset_mock.<locals>.f  r   r   r   rU   rk   )r   r   r,   rK   r   rI   )r   r   rvr0   s       r   test_spec_function_reset_mockz/SpecSignatureTest.test_spec_function_reset_mock  s    VVqr222Q


477)444a	222"---+++++r   N)+r#   r$   r%   r   r   r   r   r   r   r   r   r   r  r  r'  r2  r7  r<  rB  rU  r`  rm  rt  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   {  s       + + +6) ) )	( 	( 	(2 2 2' ' '# # #	% 	% 	%* * *D D D$- - -! ! !(  2E E E86 6 6,; ; ;	P 	P 	P1 1 1(M M M,#M #M #MLE E E0  *, , ,$  0M M M$  % % %80 0 0"	+ 	+ 	+
( 
( 
()( )( )(X
0 
0 
0
8 
8 
8X X XW W W
. 
. 
.9 9 9 3 3 3- - -$ $ $	, 	, 	, 	, 	,r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestCallListc                    t                      }|                     |j        t                      |dd            |d            |dd            |d           t	          dd          t	          d          t	          dd          t	          d          fD ]}|                     ||j                   t	          d          t	          dd          g}|                     ||j                   t	          dd          t	          d          g}|                     ||j                   t	          dd          t	          d          g}|                     ||j                   t	          dd          g}|                     ||j                   |                     t	          d          |j                   |                     t	          d          g|j                   d S )	NrU   rk   rl   r   rn   r   r   r   )r   r;  r   r	   r   r   assertNotIn)r   r0   rq   callss       r   !test_args_list_contains_call_listz.TestCallList.test_args_list_contains_call_list  s   vvd19===Q


q				Q


q				AJJq			41::tayyy@ 	5 	5DMM$ 34444DAJJ'eT0111aTAYYY'eT0111aTAYYY'eT0111aeT0111ft':;;;$v,,)<=====r   c                    t                      } |dd           |                    d           |j                                                            dd           d}|                     t          |j                  |           d S )	NrU   rk   rl   r   r   dog)catzU[call(1, 2),
 call.foo(a=3),
 call.foo.bar(),
 call.foo.bar().baz('fish', cat='dog')])r   r+   rD   rg   r,   r4   rK   )r   r0   rM   s      r   test_call_list_strzTestCallList.test_call_list_str)  s    vvQ


16u---6 	 	T_--x88888r   c                 V   t          dt          z  t                    }|                                }	 t          j         |                                 t	                      }|j         |                                 |                     |j	        t                      t                      g           d|_        |                     |j	        t                      t                      t          d          g           |                                 d S # |                                 w xY w)Nz%s.SomeClass.one)new_callablerl   )r
   r#   r   r   r   r   rT  r.   r,   rK   r   stop)r   r   r0   r  s       r   test_propertymockzTestCallList.test_propertymock8  s    $x/lKKKwwyy	MM((***AEE##%%%T_tvvtvv.>???AET_tvvtvvtAww.GHHHFFHHHHHAFFHHHHs   CD D(c                    t                      }t                      }|t          |          _        |j        }|                                 |                     |t                      |                     |t                     d S r   )r   r   r  r+   rT  r;  r  r   r   r   returneds       r   test_propertymock_barez#TestCallList.test_propertymock_bareJ  sl    KKNNQ5	!!###h	222  <88888r   c                    t                      }t          d          }|t          |          _        |j        }|                                 |                     |d           |                     |t                     d S )Nr%  r   )r   r   r  r+   rT  r,   r  r  s       r   test_propertymock_returnvaluez*TestCallList.test_propertymock_returnvalueU  ss    KKb)))Q5	!!###2&&&  <88888r   c                    t                      }t          t                    }|t          |          _        |                     t                    5  |j         d d d            n# 1 swxY w Y   |                                 d S )N)side_effect)r   r   
ValueErrorr  r+   r   rT  )r   r   r   s      r   test_propertymock_side_effectz*TestCallList.test_propertymock_side_effect`  s    KKZ000Qz** 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 		!!#####s   A&&A*-A*N)	r#   r$   r%   r  r  r  r  r  r#  r   r   r   r  r    sn        > > >29 9 9  $9 9 99 9 9$ $ $ $ $r   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestCallablePredicatec                     t           t          t          t          t          t
          fD ]$}|                     t          |                     %d S r   )r4   bytesr   r/  tupler   r   r   )r   r   s     r   	test_typezTestCallablePredicate.test_typel  sC    T5)< 	, 	,COOIcNN++++	, 	,r   c                 x     G d d          } |            }|                      t          |                     d S )Nc                       e Zd Zd ZdS )>TestCallablePredicate.test_call_magic_method.<locals>.Callablec                     d S 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  r,  q  r   r   r  )r   r   )r   r  rq  s      r   test_call_magic_methodz,TestCallablePredicate.test_call_magic_methodp  sU    	% 	% 	% 	% 	% 	% 	% 	%8::	(++,,,,,r   c                 n     G d d          }|                      t          |j                             d S )Nc                   $    e Zd Zed             ZdS )ATestCallablePredicate.test_staticmethod.<locals>.WithStaticMethodc                      d S r   r   r   r   r   
staticfunczLTestCallablePredicate.test_staticmethod.<locals>.WithStaticMethod.staticfuncx  rH  r   N)r#   r$   r%   rL  r3  r   r   r   WithStaticMethodr1  w  s#        "" \"""r   r4  )r   r   r3  )r   r4  s     r   test_staticmethodz'TestCallablePredicate.test_staticmethodv  sP    	# 	# 	# 	# 	# 	# 	# 	# 		"2"=>>?????r   c                 n     G d d          }|                      t          |j                             d S )Nc                   $    e Zd Z ed          ZdS )MTestCallablePredicate.test_non_callable_staticmethod.<locals>.BadStaticMethodN)r#   r$   r%   rL  not_callabler   r   r   BadStaticMethodr8  }  s        '<--LLLr   r:  r   r   r9  )r   r:  s     r   test_non_callable_staticmethodz4TestCallablePredicate.test_non_callable_staticmethod|  sO    	. 	. 	. 	. 	. 	. 	. 	.?#?@@AAAAAr   c                 n     G d d          }|                      t          |j                             d S )Nc                   $    e Zd Zed             ZdS )?TestCallablePredicate.test_classmethod.<locals>.WithClassMethodc                     d S r   r   )rG  s    r   	classfunczITestCallablePredicate.test_classmethod.<locals>.WithClassMethod.classfunc  s     $r   N)r#   r$   r%   rK  rA  r   r   r   WithClassMethodr?    s#        $$ [$$$r   rB  )r   r   rA  )r   rB  s     r   test_classmethodz&TestCallablePredicate.test_classmethod  sO    	% 	% 	% 	% 	% 	% 	% 	% 		/";<<=====r   c                 n     G d d          }|                      t          |j                             d S )Nc                   $    e Zd Z ed          ZdS )KTestCallablePredicate.test_non_callable_classmethod.<locals>.BadClassMethodN)r#   r$   r%   rK  r9  r   r   r   BadClassMethodrF    s        &;t,,LLLr   rG  r;  )r   rG  s     r   test_non_callable_classmethodz3TestCallablePredicate.test_non_callable_classmethod  sO    	- 	- 	- 	- 	- 	- 	- 	->#>??@@@@@r   N)	r#   r$   r%   r)  r.  r5  r<  rC  rH  r   r   r   r%  r%  j  sy        , , ,- - -@ @ @B B B
> > >A A A A Ar   r%  __main__)r  r  r  unittestunittest.mockr   r   r   r   r   r   r	   r
   r   r   r   	functoolsr   r-   r   TestCaser'   rb   r   r  r%  r#   mainr   r   r   <module>rO     s%                             
            " " " " " " " "C% C% C% C% C%h C% C% C%J^
 ^
 ^
 ^
 ^
x  ^
 ^
 ^
B	P
, P
, P
, P
, P
,) P
, P
, P
,fY$ Y$ Y$ Y$ Y$8$ Y$ Y$ Y$x A  A  A  A  AH-  A  A  AF zHMOOOOO r   