
    dafs?                         d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	  G d dej                        Zedk(  r ej                          yy)    N)iscoroutinefunction)	AsyncMockMock	MagicMock_magicsc                       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$y#)$TestMockingMagicMethodsc                     t               }| j                  t        |d             t               |_        | j	                  t        |d             |`| j                  t        |d             y )N__getitem__)r   assertFalsehasattrr   
assertTrueselfmocks     G/root/Python-3.12.4/Lib/test/test_unittest/testmock/testmagicmethods.pytest_deleting_magic_methodsz3TestMockingMagicMethods.test_deleting_magic_methods   sV    v}566m45}56    c                     t               `| j                  t        fd       t               d    `| j                  t        fd       y )Nc                       d   S Nfoo r   s   r   <lambda>z<TestMockingMagicMethods.test_magicmock_del.<locals>.<lambda>       T%[ r   r   c                       d   S r   r   r   s   r   r   z<TestMockingMagicMethods.test_magicmock_del.<locals>.<lambda>    r   r   )r   r   assertRaises	TypeErrorr   s    @r   test_magicmock_delz*TestMockingMagicMethods.test_magicmock_del   sF    {)%89{U)%89r   c                    t               }d }||_        | j                  |j                  |       | j                  |d   |df       | j                  |j                  d      |df       ||_        | j	                  |j                  |       y )Nc                 
    | dfS )Nfishr   r   names     r   fz=TestMockingMagicMethods.test_magic_method_wrapping.<locals>.f%   s    <r   r   r#   )r   r   assertIsNotassertEqualassertIs)r   r   r&   s      r   test_magic_method_wrappingz2TestMockingMagicMethods.test_magic_method_wrapping#   s    v	  ))1-etVn5))%04.Ad&&-r   c                     t               }t               t        t        g             |_        | j                  t	        |      g        | j                  t        fd       y )Nreturn_valuec                      t               S N)list)mock2s   r   r   zSTestMockingMagicMethods.test_magic_methods_isolated_between_mocks.<locals>.<lambda>7   s    T%[ r   )r   iter__iter__r(   r0   r   r   )r   mock1r1   s     @r   )test_magic_methods_isolated_between_mockszATestMockingMagicMethods.test_magic_methods_isolated_between_mocks1   sF    484eb))%89r   c                     t               }| j                  t        |      dt        |      z         d |_        | j                  t        |      d       y )Nz<Mock id='%s'>c                      yr   r   ss    r   r   z3TestMockingMagicMethods.test_repr.<locals>.<lambda>=       r   r   )r   r(   reprid__repr__r   s     r   	test_reprz!TestMockingMagicMethods.test_repr:   sB    vd%54%@A'dU+r   c                     t               }| j                  t        |      t        j	                  |             d |_        | j                  t        |      d       y )Nc                      yr   r   r8   s    r   r   z2TestMockingMagicMethods.test_str.<locals>.<lambda>D   r:   r   r   )r   r(   strobject__str__r   s     r   test_strz TestMockingMagicMethods.test_strA   sA    vTFNN4$89&TE*r   c                    t               | j                  t        fd       fd}fd}| j                  t        |       | j                  t        |       i fd}fd}fd}|_        |_        |_        | j                  t        fd       dd	<   | j                  d	di       | j                  d	   d       d	= | j                  i        y )
Nc                       d   S r   r   r   s   r   r   z;TestMockingMagicMethods.test_dict_methods.<locals>.<lambda>K   r   r   c                       d= y r   r   r   s   r   _delz7TestMockingMagicMethods.test_dict_methods.<locals>._delL   s
    Ur   c                      d d<   y )N   r   r   r   s   r   _setz7TestMockingMagicMethods.test_dict_methods.<locals>._setN   s    DKr   c                     |   S r/   r   r9   r%   _dicts     r   getitemz:TestMockingMagicMethods.test_dict_methods.<locals>.getitemT   s    ;r   c                     ||<   y r/   r   )r9   r%   valuerN   s      r   setitemz:TestMockingMagicMethods.test_dict_methods.<locals>.setitemV   s    E$Kr   c                     |= y r/   r   rM   s     r   delitemz:TestMockingMagicMethods.test_dict_methods.<locals>.delitemX   s
    dr   c                       d   S r   r   r   s   r   r   z;TestMockingMagicMethods.test_dict_methods.<locals>.<lambda>_   s    DK r   barr   )r   r   r   __setitem__r   __delitem__KeyErrorr(   )r   rH   rK   rO   rR   rT   rN   r   s         @@r   test_dict_methodsz)TestMockingMagicMethods.test_dict_methodsH   s    v)%89		)T*)T*		 	 #""($78U/ee,K#r   c                 &   t               x}d_        | j                  t        fd       fd}|_        | j                  dz          | j                  j                  d       `d }| j                  t        |       |_        dz  | j                  |       | j                  j                  d       | j                  t        fd       |_        | j                  d	z          | j                  j                  d
       y )Nr   c                       dz   S NrJ   r   r   s   r   r   z6TestMockingMagicMethods.test_numeric.<locals>.<lambda>k       TAX r   c                 2    xj                   |z  c_         | S r/   rQ   r   otherr   s     r   addz1TestMockingMagicMethods.test_numeric.<locals>.addm       JJ%JKr   rJ   c                     | dz  } y r]   r   r   s    r   iaddz2TestMockingMagicMethods.test_numeric.<locals>.iaddu       AIDr      	   c                      d z   S r]   r   r   s   r   r   z6TestMockingMagicMethods.test_numeric.<locals>.<lambda>}       QX r         )r   rQ   r   r   __add__r(   __iadd____radd__)r   originalrc   rf   r   s       @r   test_numericz$TestMockingMagicMethods.test_numericg   s    & 4
)%56	 4(Q'L	)T40	x(Q')%56T4(R(r   c                 &   t               x}d_        | j                  t        fd       fd}|_        | j                  dz         | j                  j                  d       `d }| j                  t        |       |_        dz  | j                  |       | j                  j                  d       | j                  t        fd       |_        | j                  d	z         | j                  j                  d
       y )N    c                       dz  S )N   r   r   s   r   r   z7TestMockingMagicMethods.test_division.<locals>.<lambda>   r^   r   c                 2    xj                   |z  c_         | S r/   r`   ra   s     r   truedivz6TestMockingMagicMethods.test_division.<locals>.truediv   rd   r   rv   rm   c                     | dz  } y )N   r   r   s    r   itruedivz7TestMockingMagicMethods.test_division.<locals>.itruediv   rg   r      c                      d z  S )Nr|   r   r   s   r   r   z7TestMockingMagicMethods.test_division.<locals>.<lambda>   rk   r   g      ?rz   )r   rQ   r   r   __truediv__r(   __itruediv____rtruediv__)r   rq   rx   r{   r   s       @r   test_divisionz%TestMockingMagicMethods.test_division   s    & 4
)%56	 #4(R(	)Xt4#	x(Q')%56#tT*Q'r   c                     t               }| j                  t        |      t        j                  |             d }||_        | j                  t        |      d       y )Nc                      yr]   r   r8   s    r   _hashz0TestMockingMagicMethods.test_hash.<locals>._hash   s    r   rJ   )r   r(   hash__hash__)r   r   r   s      r   	test_hashz!TestMockingMagicMethods.test_hash   sF    vdT]]4%89	dQ'r   c                     t               }| j                  t        |             d |_        | j	                  t        |             y )Nc                      y)NFr   r8   s    r   r   z6TestMockingMagicMethods.test_nonzero.<locals>.<lambda>   r:   r   )r   r   bool__bool__r   r   ms     r   test_nonzeroz$TestMockingMagicMethods.test_nonzero   s2    FQ $
a!r   c                    t               }d }|x|_        x|_        x|_        |_        | j                  |dk         | j                  |dkD         | j                  |dk         | j                  |dk\         | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d	        | j                  t        d
        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        y )Nc                      y)NTr   r9   os     r   compz5TestMockingMagicMethods.test_comparison.<locals>.comp   s    r   rJ   c                  ,    t               t               k  S r/   r   rB   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>       Y[68-C r   c                  ,    t               t               k  S r/   rB   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>       VX	-C r   c                  ,    t               t               k  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>       Y[9;-F r   c                  ,    t               t               kD  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>   r   r   c                  ,    t               t               kD  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>   r   r   c                  ,    t               t               kD  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>   r   r   c                  ,    t               t               k  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>       Y[FH-D r   c                  ,    t               t               k  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>       VX-D r   c                  ,    t               t               k  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>       Y[IK-G r   c                  ,    t               t               k\  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>   r   r   c                  ,    t               t               k\  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>   r   r   c                  ,    t               t               k\  S r/   r   r   r   r   r   z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>   r   r   )r   __lt____gt____le____ge__r   r   r   )r   r   r   s      r   test_comparisonz'TestMockingMagicMethods.test_comparison   s>   v	@DDDdkDDK$+""##)%CD)%CD)%FG)%CD)%CD)%FG)%DE)%DE)%GH)%DE)%DE)%GHr   c                 :   t               t               fD ]  }| j                  ||k(  d       | j                  ||k(  t               | j                  ||k7  d       | j                  ||k7  t               | j                  |t               k(  d       | j                  |t               k7  d       d }||_        | j                  |dk(         | j                  |dk(         d }||_	        | j                  |dk7         | j                  |dk7          t               }d|j                  _
        | j                  |dk(  t               | j                  |dk(  d       d|j                  _
        | j                  |dk7  t               | j                  |dk7  d       y )NTFc                     |dk(  S r]   r   r   rb   s     r   eqz1TestMockingMagicMethods.test_equality.<locals>.eq       z!r   rJ   rz   c                     |dk(  S r]   r   r   s     r   nez1TestMockingMagicMethods.test_equality.<locals>.ne   r   r   )r   r   r(   assertIsInstancer   rB   __eq__r   r   __ne__r-   )r   r   r   r   s       r   test_equalityz%TestMockingMagicMethods.test_equality   se   FIK' 	(DTT\40!!$$,5TT\51!!$$,5TVX-u5TVX-t4"DKOODAI&TQY'"DKOODAI&TQY'%	(( {#' dai.D)#( dai.E*r   c                    t               | j                  t        t               | j                  t        t               | j                  t        fd       d _        | j                  t              d       d _        | j                  d       | j                  d       d _
        | j                  t              t        d             y )Nc                      d v S r   r   r   s   r   r   z@TestMockingMagicMethods.test_len_contains_iter.<locals>.<lambda>   s    Ud] r   c                      y)Nrh   r   r8   s    r   r   z@TestMockingMagicMethods.test_len_contains_iter.<locals>.<lambda>   r:   r   rh   c                     |dk(  S r]   r   r   s     r   r   z@TestMockingMagicMethods.test_len_contains_iter.<locals>.<lambda>   s
    a r   rJ   c                     t        d      S )N	foobarbaz)r2   r8   s    r   r   z@TestMockingMagicMethods.test_len_contains_iter.<locals>.<lambda>   s    ${"3 r   r   )r   r   r   lenr2   __len__r(   __contains__assertInassertNotInr3   r0   r   s    @r   test_len_contains_iterz.TestMockingMagicMethods.test_len_contains_iter   s    v)S$/)T40)%:;"TA&/aD!3dT+%67r   c                    t               }t        g d      |j                  _        | j	                  t        |      g d       dt        |d      _        | j                  t        |d             | j                  t        |             t        D ]  }| j                  t        ||              | j                  t        |d             y )N   rv   rJ   Fr   __nonzero____imaginary__)r   r2   r3   r-   r(   r0   getattrr   r   r   r   r   )r   r   entrys      r   test_magicmockz&TestMockingMagicMethods.test_magicmock   s    {%))_"dY/16j!.}56d$ 	2EOOGD%01	278r   c                 d   t               }| j                  |t               k(  t               | j                  |t               k7  t               | j	                  |t               k(  d       | j	                  |t               k7  d       | j	                  ||k(  d       | j	                  ||k7  d       y )NFT)r   r   rB   r   r(   r   s     r   test_magic_mock_equalityz0TestMockingMagicMethods.test_magic_mock_equality  s    {dfh.5dfh.5)51)40t,u-r   c                 F   t               }| j                  t        |      d       | j                  t        |      d       | j                  t	        |      d       | j                  t               |       | j                  t        |      d       | j                  t        |      g        | j                  t        |      t        j                  |             | j                  t        |      t        j                  |             | j                  t        |             | j                  t        |      |j!                                | j                  t#        j$                  |      |j'                                | j                  t#        j(                  |      |j+                                | j                  t#        j,                  |      |j/                                | j                  t1        |j2                               | j                  t1        |j4                               | j7                  |j4                  t                | j7                  |j2                  t                | j                  t9        |      d       | j                  t;        |      d       y Nr   y              ?g      ?r   0o10x1)r   r(   intcomplexfloatr   rB   r   r0   r   r   rA   rC   r   r   round	__round__mathtrunc	__trunc__floor	__floor__ceil__ceil__r   	__aexit__
__aenter__r   octhexr   s     r   test_asyncmock_defaultsz/TestMockingMagicMethods.test_asyncmock_defaults     {TA&+tc*4(TA&dR(dV__T%:;TFNN4$89T
#tdnn&67D)4>>+;<D)4>>+;<4$--/:+DNN;<+DOO<=dooy9dnni8 	TE*TE*r   c                 F   t               }| j                  t        |      d       | j                  t        |      d       | j                  t	        |      d       | j                  t               |       | j                  t        |      d       | j                  t        |      g        | j                  t        |      t        j                  |             | j                  t        |      t        j                  |             | j                  t        |             | j                  t        |      |j!                                | j                  t#        j$                  |      |j'                                | j                  t#        j(                  |      |j+                                | j                  t#        j,                  |      |j/                                | j                  t1        |j2                               | j                  t1        |j4                               | j7                  |j4                  t8               | j7                  |j2                  t8               | j                  t;        |      d       | j                  t=        |      d       y r   )r   r(   r   r   r   r   rB   r   r0   r   r   rA   rC   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s     r   test_magicmock_defaultsz/TestMockingMagicMethods.test_magicmock_defaults+  r   r   c                     t               }|j                         }|j                          | j                  t	        j
                  |      |       |j                  j                          y r/   )r   
__fspath__
reset_mockr(   osfspathassert_called_once)r   r   expected_paths      r   test_magic_methods_fspathz1TestMockingMagicMethods.test_magic_methods_fspathF  sG    {)4-8**,r   c                     G d dt               }t        |      | j                  t        fd       t        t	        g             _        | j                  t              g         G d dt               }t        |      | j                  t        fd       fd	}| j                  t        |       t        |      | j                  t              g        | j                  t        |       y )
Nc                       e Zd Zd Zy)ETestMockingMagicMethods.test_magic_methods_and_spec.<locals>.Iterablec                      y r/   r   r   s    r   r3   zNTestMockingMagicMethods.test_magic_methods_and_spec.<locals>.Iterable.__iter__Q      r   N__name__
__module____qualname__r3   r   r   r   Iterabler   P      $r   r   )specc                       j                   S r/   r3   r   s   r   r   zETestMockingMagicMethods.test_magic_methods_and_spec.<locals>.<lambda>T      $-- r   r,   c                       e Zd Zy)HTestMockingMagicMethods.test_magic_methods_and_spec.<locals>.NonIterableNr   r   r   r   r   r   NonIterabler   Y      r   r  c                       j                   S r/   r   r   s   r   r   zETestMockingMagicMethods.test_magic_methods_and_spec.<locals>.<lambda>\  r   r   c                  :    t        t        g              _        y Nr,   r   r2   __int__r   s   r   set_intzDTestMockingMagicMethods.test_magic_methods_and_spec.<locals>.set_int^      T"X6DLr   	rB   r   r   AttributeErrorr2   r3   r(   r0   r   r   r   r  r	  r   s       @r   test_magic_methods_and_specz3TestMockingMagicMethods.test_magic_methods_and_specO  s    	%v 	% ".*?@$r(3dR(	& 	%.*?@	7.'2h'dR(.'2r   c                     G d dt               }t        |      | j                  t        fd       t        t	        g             _        | j                  t              g         G d dt               }t        |      | j                  t        fd       fd	}| j                  t        |       t        |      | j                  t              g        | j                  t        |       y )
Nc                       e Zd Zd Zy)ITestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.Iterablec                      y r/   r   r   s    r   r3   zRTestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.Iterable.__iter__i  r   r   Nr   r   r   r   r   r  h  r   r   r   )spec_setc                       j                   S r/   r   r   s   r   r   zITestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.<lambda>l  r   r   r,   c                       e Zd Zy)LTestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.NonIterableNr  r   r   r   r  r  q  r  r   r  c                       j                   S r/   r   r   s   r   r   zITestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.<lambda>t  r   r   c                  :    t        t        g              _        y r  r  r   s   r   r	  zHTestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.set_intv  r
  r   r  r  s       @r   test_magic_methods_and_spec_setz7TestMockingMagicMethods.test_magic_methods_and_spec_setg  s    	%v 	% X&.*?@$r(3dR(	& 	[).*?@	7.'2(+dR(.'2r   c                 R    t               fd}| j                  t        d|       y )Nc                      d  _         y )Nc                      y r/   r   r$   s     r   r   zdTestMockingMagicMethods.test_setting_unsupported_magic_method.<locals>.set_setattr.<locals>.<lambda>  r:   r   )__setattr__r   s   r   set_setattrzRTestMockingMagicMethods.test_setting_unsupported_magic_method.<locals>.set_setattr  s    6Dr   z9Attempting to set unsupported magic method '__setattr__'.)r   assertRaisesRegexr  )r   r  r   s     @r   %test_setting_unsupported_magic_methodz=TestMockingMagicMethods.test_setting_unsupported_magic_method  s%    {	7~G	
r   c                     t               }|j                  }d }| j                   ||      t                 |       }| j                   ||      t                y )Nc                 2    t        |       j                  d   S )Nr   )type__mro__)objs    r   	_get_typezKTestMockingMagicMethods.test_attributes_and_return_value.<locals>._get_type  s     9$$Q''r   )r   r   r(   )r   r   attrr&  returneds        r    test_attributes_and_return_valuez8TestMockingMagicMethods.test_attributes_and_return_value  sI    {xx	( 	4)468,i8r   c                     t               }| j                  |j                  t                d|d   d   j                  _        | j	                  |d   d   d   d       y )NrJ   r   rv   )r   r   r   r-   r(   r   s     r   "test_magic_methods_are_magic_mocksz:TestMockingMagicMethods.test_magic_methods_are_magic_mocks  sQ    {d..	:./Q
+aA*r   c                     t               }t        |       | j                  |j                  j                         |j                          | j                  |j                  j                         y r/   )r   rA   r   rC   calledr   r   r   s     r   test_magic_method_reset_mockz4TestMockingMagicMethods.test_magic_method_reset_mock  sH    {D	++,,,-r   c                     t               t               fD ](  }d }||_        | j                  t	        |      dg       * y )Nc                     dgS r   r   r   s    r   _dirz.TestMockingMagicMethods.test_dir.<locals>._dir  s	    wr   r   )r   r   __dir__r(   dir)r   r   r1  s      r   test_dirz TestMockingMagicMethods.test_dir  s<    FIK' 	1DDLSY0		1r   c                 r    t               }dgj                  |_        | j                  t        t        |       y r]   )r   r3   r   r   r2   r   s     r   test_bound_methodsz*TestMockingMagicMethods.test_bound_methods  s*    F S\\
)T1-r   c                 h     G d dt               } |       }| j                  |j                  |       y )Nc                       e Zd Zy);TestMockingMagicMethods.test_magic_method_type.<locals>.FooNr  r   r   r   Foor9    r  r   r:  )r   r   r  )r   r:  r   s      r   test_magic_method_typez.TestMockingMagicMethods.test_magic_method_type  s+    	) 	 eckk3/r   c                     t               }dt        |      j                  _        | j	                  t        |      d       y r   )r   r#  rC   r-   r(   rA   r   s     r   test_descriptor_from_classz2TestMockingMagicMethods.test_descriptor_from_class  s-    K',Q$Q'r   c                 Z   t               }g d|j                  _        | j                  t	        |      g d       | j                  t	        |      g d       t        g d      |j                  _        | j                  t	        |      g d       | j                  t	        |      g        y )Nr   )rz      rh   )r   r3   r-   r(   r0   r2   r   s     r   "test_iterable_as_iter_return_valuez:TestMockingMagicMethods.test_iterable_as_iter_return_value  su    K"+

a),a),"&y/

a),a"%r   c                 2   t               }| j                  |dz  t                d|j                  _        d|j                  _        d|j
                  _        | j                  |dz  d       | j                  d|z  d       |dz  }| j                  |d       y )Nr   *   i     )r   r   
__matmul__r-   __rmatmul____imatmul__r(   r   s     r   test_matmulz#TestMockingMagicMethods.test_matmul  s    Ka!eY/$&!%("%'"Q#Q$	RBr   c                    t               }| j                  t        d|      t                d|j                  _        | j                  t        |d      d       t               }t        d|      }| j                  |t                |j                  d      }| j                  |t                t        |d      }| j                  |t                |j                  d      }| j                  |t                y )Nr?  )rv   r   rv   )r   r   divmod
__divmod__r-   r(   __rdivmod__)r   r   r   
foo_directrV   
bar_directs         r   test_divmod_and_rdivmodz/TestMockingMagicMethods.test_divmod_and_rdivmod  s    KfQlI6$*!1v.KQlc9-\\!_
j)4Qlc9-]]1%
j)4r   c                 T    t        di ddi}| j                  t        |      d       y )N__str__.return_value12r   )r   r(   rA   r   s     r   test_magic_in_initializationz4TestMockingMagicMethods.test_magic_in_initialization  s)    7/67Q&r   c                     t        di ddi}d|j                  _        | j                  t	        |      d       t        di ddi} |j
                  di ddi | j                  t	        |      d       y )NrP  rQ  1314r   )r   rC   r-   r(   rA   configure_mockr   s     r   )test_changing_magic_set_in_initializationzATestMockingMagicMethods.test_changing_magic_set_in_initialization  su    7/67!%		Q&7/67:2D9:Q&r   N)%r   r   r   r   r    r*   r5   r>   rD   rZ   rr   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r)  r+  r.  r4  r6  r;  r=  r@  rG  rN  rR  rW  r   r   r   r	   r	   	   s    7
:.:,+$>)6(4("I0+>8$9.+4+6-3030

9+.1.0(&	 5"''r   r	   __main__)r   unittestr   asyncior   unittest.mockr   r   r   r   TestCaser	   r   mainr   r   r   <module>r^     sF      	 ' = =p'h// p'f zHMMO r   