
    z%i                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZ ddlmZmZ ddlmZ  G d d	e      Z ee      D  ch c]  } | j1                  d
      r|  c} ZdZeZd Zd Zd Zd Z d Z!d Z"dydZ#d Z$d Z%d Z&d Z'dydZ(d Z)d Z*d Z+ G d de,      Z- G d de,      Z. e.       Z/e/j`                  Z0e/jb                  Z2e/jf                  Z4h d Z5d! Z6 G d" d#e7      Z8d$ Z9 G d% d&e,      Z: G d' d(e,      Z; G d) d*e;      Z< e= ee<      D  ch c]$  } | j1                  d+      r| j}                  d+      & c}       Z? G d, d-e7      Z@d. ZA G d/ d0e;      ZB G d1 d2eBe<      ZCd3 ZD G d4 d5e,      ZEd6 ZFe0dddddfdd7d8ZG	 	 dzd9ZHe0dddddfdd7d:ZI G d; d<e,      ZJd= ZKd> ZLeGeI_,        eJeI_M        eHeI_N        eLeI_O        d?eI_P        d@ZQdAZRdBj                  dC eRj                         D              ZUdBj                  dD eRj                         D              ZVh dEZWdF ZXdBj                  eQeReUeVg      j                         D ch c]  }dG|z  	 c}ZYh dHZZdIhZ[eZe[z  Z\eYeWz  Z]e]e\z  Z^h dJZ_dK dL dM dN dOZ`eaeaeaeadPddddQdRddPddSZbdT ZcdU ZddV ZedW ZfecedeeefdXZgdY Zh G dZ d[e;      Zi G d\ d]eie<      Zj G d^ d_ei      Zk G d` daeieC      Zl G db dce;      Zm ee      Zn ej                   eej                  d            Zq G dd dee;      Zr G df dgerekeC      Zs G dh die,      Zt et       Zudj Zv G dk dlew      Zx exdm      Zy	 	 d{dd7dnZzdo Z{ G dp dqe,      Z| e}ez       e}euj                        fZdadadr Zd|dsZ G dt dueC      Zdv Z G dw dx      Zyc c} w c c} w c c}w )})Mock	MagicMockpatchsentinelDEFAULTANYcallcreate_autospec	AsyncMock
FILTER_DIRNonCallableMockNonCallableMagicMock	mock_openPropertyMockseal    N)iscoroutinefunction)CodeType
ModuleType
MethodType)	safe_repr)wrapspartial)RLockc                       e Zd Zy)InvalidSpecErrorN__name__
__module____qualname__     A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/unittest/mock.pyr   r   )   s    Br!   r   _Tc                     t        |       rt        | t              syt        | d      rt	        | d      } t        |       xs t        j                  |       S )NF__func__)_is_instance_mock
isinstancer
   hasattrgetattrr   inspectisawaitableobjs    r"   _is_async_objr.   5   sG    ji&@sJc:&s#?w':':3'??r!   c                 4    t        | dd       rt        |       S y)N__code__F)r)   r   )funcs    r"   _is_async_funcr2   =   s    tZ&"4((r!   c                 4    t        t        |       t              S N)
issubclasstyper   r,   s    r"   r&   r&   D   s     d3i11r!   c                 j    t        | t              xs" t        | t              xr t        | t              S r4   )r'   BaseExceptionr6   r5   r,   s    r"   _is_exceptionr9   J   s-    3& 	A3@*S-"@r!   c                 V    t        | t              rt        | d      r| j                  S | S Nmock)r'   FunctionTypesr(   r<   r,   s    r"   _extract_mockr>   Q   s%     #}%'#v*>xx
r!   c                 x   	 t        | t              r|s| j                  } d}nRt        | t        t        f      rt        | t              rd}| j
                  } nt        | t              s	 | j                  } |rt        | d       }n| }	 | t        j                  |      fS # t        $ r Y y w xY w# t        $ r Y y w xY wNT)r'   r6   __init__classmethodstaticmethodr%   r=   __call__AttributeErrorr   r*   	signature
ValueError)r1   as_instanceeat_selfsig_funcs       r"   _get_signature_objectrK   Z   s    
 $k}}	D;5	6dK(H}}m,	==D 4&W&&x000  		  s$   )B B- 	B*)B*-	B98B9Fc                     t        | ||      y \  } fd}t        | |       |t        |      _        t        |      _        y )Nc                *     j                   |i | y r4   bind)selfargskwargssigs      r"   checksigz"_check_signature.<locals>.checksig       $!&!r!   )rK   _copy_func_detailsr6   _mock_check_sig__signature__)r1   r<   	skipfirstinstancerT   rS   s        @r"   _check_signaturer[   }   sI    
h	
:C
{ID#"tX&!)DJ"DJr!   c           	      `    dD ]  }	 t        ||t        | |              y # t        $ r Y )w xY w)N)r   __doc____text_signature__r   __defaults____kwdefaults__)setattrr)   rE   )r1   funcopy	attributes      r"   rV   rV      s?     		GYi(@A  		s   !	--c                     t        | t              ryt        | t        t        t        f      rt        | j                        S t        | dd       yy)NTrD   F)r'   r6   rC   rB   r   	_callabler%   r)   r,   s    r"   re   re      sD    #t#k:>?&&sJ%1r!   c                 0    t        |       t        t        fv S r4   )r6   listtupler,   s    r"   _is_listri      s     9u%%r!   c                     	 t        | t              st        | dd       d uS | f| j                  z   D ]  }|j                  j                  d       y y)NrD   TF)r'   r6   r)   __mro____dict__get)r-   bases     r"   _instance_callablero      s_    @c4 sJ-T99 $ ==Z(4 r!   c                    t        |t              }t        |||      }|| S |\  }fd}t        ||       |j                  }|j                         sd}|| d}d|z  }	t        |	|       ||   }
t        |
|        |
S )Nc                  *     j                   | i | y r4   rN   )rQ   rR   rS   s     r"   rT   z _set_signature.<locals>.checksig   rU   r!   rb   )
_checksig_r<   zYdef %s(*args, **kwargs):
    _checksig_(*args, **kwargs)
    return mock(*args, **kwargs))r'   r6   rK   rV   r   isidentifierexec_setup_func)r<   originalrZ   rY   resultr1   rT   namecontextsrcrb   rS   s              @r"   _set_signaturer{      s    
 8T*I"8XyAF~ID#"tX&D%t4G$&*+C 	#wdmGs#Nr!   c                      _         fd}fd}fd}fd}fd}fd}fd}	 fd}
d	 _        d
 _        d  _        t	                _        t	                _        t	                _        j                   _        j                   _	        j                   _
        | _        | _        | _        |	 _        |
 _        | _        | _        | _        | _         _        y )Nc                  (     j                   | i |S r4   )assert_called_withrQ   rR   r<   s     r"   r~   z'_setup_func.<locals>.assert_called_with       &t&&777r!   c                  (     j                   | i |S r4   )assert_calledr   s     r"   r   z"_setup_func.<locals>.assert_called   s    !t!!42622r!   c                  (     j                   | i |S r4   )assert_not_calledr   s     r"   r   z&_setup_func.<locals>.assert_not_called   s    %t%%t6v66r!   c                  (     j                   | i |S r4   )assert_called_oncer   s     r"   r   z'_setup_func.<locals>.assert_called_once   r   r!   c                  (     j                   | i |S r4   )assert_called_once_withr   s     r"   r   z,_setup_func.<locals>.assert_called_once_with   s    +t++T<V<<r!   c                  (     j                   | i |S r4   )assert_has_callsr   s     r"   r   z%_setup_func.<locals>.assert_has_calls   s    $t$$d5f55r!   c                  (     j                   | i |S r4   )assert_any_callr   s     r"   r   z$_setup_func.<locals>.assert_any_call   s    #t##T4V44r!   c                      t               _        t               _        j                          j                  } t        |       r| ur| j                          y y y r4   )	_CallListmethod_calls
mock_calls
reset_mockreturn_valuer&   )retrb   r<   s    r"   r   z_setup_func.<locals>.reset_mock   sL    ({&[""S!#+NN +6!r!   Fr   )r<   called
call_count	call_argsr   call_args_listr   r   r   side_effect_mock_childrenr~   r   r   r   r   r   r   r   rX   _mock_delegate)rb   r<   rS   r~   r   r   r   r   r   r   r   s   ``         r"   ru   ru      s    GL8378=65 GNGG&[G$;G"G,,G**G!00G!3G&=G#/G-G#G)G 1G!3GG!Dr!   c           	           t         j                  j                   _        d _        d  _        t                _         fd}dD ]  }t         |t        ||              y )Nr   c                <     t        j                  |       |i |S r4   )r)   r<   )attrrQ   rR   r<   s      r"   wrapperz"_setup_async_mock.<locals>.wrapper
  s     'wtyy$'888r!   )assert_awaitedassert_awaited_onceassert_awaited_withassert_awaited_once_withassert_any_awaitassert_has_awaitsassert_not_awaited)	asyncio
coroutines_is_coroutineawait_count
await_argsr   await_args_listra   r   )r<   r   rc   s   `  r"   _setup_async_mockr     s[     ++99DDDO$;D
9, >	 	i)!<=>r!   c                     d| dd z  | k(  S )N__%s__   r    rx   s    r"   	_is_magicr     s    d1Rj D((r!   c                        e Zd Z	 d Zd Zd Zy)_SentinelObjectc                     || _         y r4   r   rP   rx   s     r"   rA   z_SentinelObject.__init__"  s	    	r!   c                      d| j                   z  S Nzsentinel.%sr   rP   s    r"   __repr__z_SentinelObject.__repr__%      tyy((r!   c                      d| j                   z  S r   r   r   s    r"   
__reduce__z_SentinelObject.__reduce__(  r   r!   N)r   r   r   rA   r   r   r    r!   r"   r   r      s    '))r!   r   c                        e Zd Z	 d Zd Zd Zy)	_Sentinelc                     i | _         y r4   )
_sentinelsr   s    r"   rA   z_Sentinel.__init__.  s	    r!   c                 b    |dk(  rt         | j                  j                  |t        |            S )N	__bases__)rE   r   
setdefaultr   r   s     r"   __getattr__z_Sentinel.__getattr__1  s,    ;  ))$0EFFr!   c                      y)Nr   r    r   s    r"   r   z_Sentinel.__reduce__7  s    r!   N)r   r   r   rA   r   r   r    r!   r"   r   r   ,  s    KGr!   r   >   
_mock_namer   _mock_parentr   _mock_new_name_mock_new_parent_mock_side_effect_mock_return_valuec                 f    t         j                  |        d| z   }| |fd}| |fd}t        ||      S )N_mock_c                 N    | j                   }|t        | |      S t        ||      S r4   )r   r)   )rP   rx   	_the_namerS   s       r"   _getz"_delegating_property.<locals>._getL  s,    !!;4++sD!!r!   c                 Z    | j                   }||| j                  |<   y t        |||       y r4   )r   rl   ra   )rP   valuerx   r   rS   s        r"   _setz"_delegating_property.<locals>._setQ  s,    !!;',DMM)$Cu%r!   )_allowed_namesaddproperty)rx   r   r   r   s       r"   _delegating_propertyr   I  s>    t4I	 "
  $y & D$r!   c                       e Zd Zd Zd Zy)r   c                     t        |t              st        j                  | |      S t        |      }t        |       }||kD  ryt	        d||z
  dz         D ]  }| |||z    }||k(  s y y)NFr      T)r'   rg   __contains__lenrange)rP   r   	len_valuelen_selfisub_lists         r"   r   z_CallList.__contains__^  s|    %&$$T511J	t9xq(Y.23 	AAa	k*H5 	 r!   c                 >    t        j                  t        |             S r4   )pprintpformatrg   r   s    r"   r   z_CallList.__repr__l  s    ~~d4j))r!   N)r   r   r   r   r   r    r!   r"   r   r   \  s    *r!   r   c                    t        |      }t        |      sy|j                  s$|j                  s|j                  |j
                  y| }|||u ry|j
                  }||r| |_        ||_        |r| |_        ||_        y)NFT)r>   r&   r   r   r   r   )parentr   rx   new_name_parents        r"   _check_and_set_parentr   p  s    % EU#			U11				'				+G

 e** 
 !''#r!   c                       e Zd Zd Zd Zy)	_MockIterc                 $    t        |      | _        y r4   )iterr-   )rP   r-   s     r"   rA   z_MockIter.__init__  s    9r!   c                 ,    t        | j                        S r4   )nextr-   r   s    r"   __next__z_MockIter.__next__  s    DHH~r!   N)r   r   r   rA   r   r    r!   r"   r   r     s    r!   r   c                       e Zd ZeZdZd Zy)BaseNc                     y r4   r    rP   rQ   rR   s      r"   rA   zBase.__init__  s    r!   )r   r   r   r   r   r   rA   r    r!   r"   r   r     s     r!   r   c                      e Zd Z	  e       Z	 	 	 d)dZ	 	 	 d)dZd Zd*dZ	 	 d+dZ	d Z
d	 Zd
Z ee
ee      Zed        Z ed      Z ed      Z ed      Z ed      Z ed      Zd Zd Z eee      Zd,ddddZd Zd Zd Zd Zd Zd Zd Z d Z!d-dZ"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d*d%Z*d& Z+d' Z,d.d(Z-y)/r   NFc                     | f}t        | t              s|xs |}|t        |      rt        | f}t        | j                  |d| j
                  i      }t        t        |       j                  |      }|S )Nr]   )	r5   AsyncMockMixinr.   r6   r   r]   _safe_superr   __new__)clsspecr   rx   spec_setr   _spec_state	_new_name_new_parent_spec_as_instance	_eat_selfunsaferR   basesspec_argnewrZ   s                    r"   r   zNonCallableMock.__new__  sm     #~.'4H#h(?'-3<<CKK(@A4<<SAr!   c                    ||}| j                   }||d<   ||d<   ||d<   ||d<   d|d<   ||}d}|
|d u}
| j                  |||	|
       i |d<   ||d	<   d |d
<   d|d<   d |d<   d|d<   t               |d<   t               |d<   t               |d<   ||d<   |r | j                  di | t	        t
        |       j                  ||||||       y )Nr   r   r   r   F_mock_sealedTr   _mock_wrapsr   _mock_called_mock_call_argsr   _mock_call_count_mock_call_args_list_mock_mock_callsr   _mock_unsafer    )rl   _mock_add_specr   configure_mockr   r   rA   )rP   r   r   rx   r   r   r   r   r   r  r  r  rR   rl   s                 r"   rA   zNonCallableMock.__init__  s*   
  K==#) !%%.!"'2#$#( DHd*ID(,=yI%'!""'%)!"#( &*"#'(#$+4;'('0{#$#,; #) D)&)OT*33%x	
r!   c                 n    	 t        |      }d |_        d |_        d|_        d |_        t        | ||       y N )r>   r   r   r   r   ra   )rP   r<   rc   
inner_mocks       r"   attach_mockzNonCallableMock.attach_mock  s@    	C #4(
"&
&*
# "
$(
!i&r!   c                 *    	 | j                  ||       y r4   )r  rP   r   r   s      r"   mock_add_speczNonCallableMock.mock_add_spec  s    	N
 	D(+r!   c                    t        |      rt        d|d      d }d }g }|{t        |      spt        |t              r|}nt	        |      }t        |||      }|xr |d   }t        |      }	|	D ]*  }
t        t        ||
d             s|j                  |
       , |	}| j                  }||d<   ||d<   ||d<   ||d<   ||d<   y )	Nz#Cannot spec a Mock object. [object=]r   _spec_class	_spec_set_spec_signature_mock_methods_spec_asyncs)r&   r   ri   r'   r6   rK   dirr   r)   appendrl   )rP   r   r   r  r  r  r  r   res	spec_listr   rl   s               r"   r  zNonCallableMock._mock_add_spec  s    T""%HPQ#RSSHTN$%""4j'(99FC!nc!fOD	I! .&wtT4'@A ''-. D=="- (&5"#$(!#/ r!   c                     | j                   }| j                  | j                  j                  }|t        u r| j	                  | d      }|| _        |S )N()r   r   )r   r   r   r   _get_child_mock)rP   r   s     r"   __get_return_valuez"NonCallableMock.__get_return_value  sZ    %%*%%22C'>&& D ' C !$D
r!   c                 j    | j                   || j                   _        y || _        t        | |d d       y )Nr&  )r   r   r   r   )rP   r   s     r"   __set_return_valuez"NonCallableMock.__set_return_value*  s2    */4D,&+D#!$tT:r!   z1The value to be returned when the mock is called.c                 H    | j                   t        |       S | j                   S r4   )r  r6   r   s    r"   	__class__zNonCallableMock.__class__6  s$    #:r!   r   r   r   r   r   c                     | j                   }|| j                  S |j                  }|8t        |      s-t	        |t
              st        |      st        |      }||_        |S r4   )r   r   r   callabler'   r   r9   )rP   	delegatedsfs      r"   __get_side_effectz!NonCallableMock.__get_side_effectC  s\    ''	)))""N8B<"2y1-:K2B$&I!	r!   c                 T    t        |      }| j                  }||| _        y ||_        y r4   )	_try_iterr   r   r   )rP   r   r0  s      r"   __set_side_effectz!NonCallableMock.__set_side_effectN  s-    % ''	%*D"$)I!r!   r   r   c                   	 |g }t        |       |v ry |j                  t        |              d| _        d | _        d| _        t               | _        t               | _        t               | _        |rt        | _
        |rd | _        | j                  j                         D ]/  }t        |t              s|t         u r|j#                  |||       1 | j                  }t%        |      r|| ur|j#                  |       y y y )NFr   r6  )idr"  r   r   r   r   r   r   r   r   r   r   r   valuesr'   
_SpecState_deletedr   r&   )rP   visitedr   r   childr   s         r"   r   zNonCallableMock.reset_mockY  s    7?Gd8wr$x #+'k%K&-D#%)D"((//1 	ZE%,0AW<[Y	Z
 %%S!coNN7# '6!r!   c                    	 t        |j                         d       D ]H  \  }}|j                  d      }|j                         }| }|D ]  }t	        ||      } t        |||       J y )Nc                 *    | d   j                  d      S )Nr   .)count)entrys    r"   <lambda>z0NonCallableMock.configure_mock.<locals>.<lambda>  s    q1D r!   )keyr@  )sorteditemssplitpopr)   ra   )rP   rR   argvalrQ   finalr-   rB  s           r"   r  zNonCallableMock.configure_mockw  sv    	, v||~ $E	F 
	%HC
 99S>DHHJEC *c5)*C$
	%r!   c                    |dv rt        |      | j                  $|| j                  vs|t        v r$t        d|z        t        |      rt        |      | j                  sD| j                  r|| j                  vr*|j                  d      s|t        v rt        |d|d      t        j                  5  | j                  j                  |      }|t        u rt        |      |Jd }| j                  t        | j                  |      }| j                  | ||||       }|| j                  |<   nat        |t               rQ	 t#        |j$                  |j&                  |j(                  |j*                  |j,                        }|| j                  |<   d d d        |S # t.        $ r6 | j0                  d   xs | }t/        d|d	|d
| d|j$                  d	      w xY w# 1 sw Y   S xY w)N>   r  r  zMock object has no attribute %r)assertassretasertaseertassrtz6 is not a valid assertion. Use a spec for the mock if z is meant to be an attribute.)r   rx   r   r   r   r   Cannot autospec attr  from target , as it has already been mocked out. [target=, attr=r  )rE   r  _all_magicsr   r  
startswith_ATTRIB_DENY_LISTr   _lockr   rm   r;  r	  r)   r(  r'   r:  r	   r   r   rZ   r   rx   r   rl   )rP   rx   rw   r   target_names        r"   r   zNonCallableMock.__getattr__  s   44 &&+4---1D$%F%MNNt_ &&  $*<*<DL^L^@^OPTX\mTm$h ''+h.KMN N "" 	4((,,T2F!$T**##/ $D$4$4d;E--d%4 $ .  .4##D)FJ/
D,V__foov{{F .4##D);	4>  ( D"&--"="EK*/x}&/ *##'('&++CD DD/	4> s&   6BGAFG?GGG(c                 |   | j                   g}| j                  }| }d}|dgk(  rd}|B|}|j                  |j                   |z          d}|j                   dk(  rd}|j                  }|Bt        t	        |            }|j
                  xs d}t        |      dkD  r|d   dvr|dz  }||d<   dj                  |      S )Nr@  r&  r  r<   r   )r&  z().r   )r   r   r"  rg   reversedr   r   join)rP   
_name_listr   lastdot_firsts         r"   _extract_mock_namez"NonCallableMock._extract_mock_name  s    ))*
''$C!Dg44s:;C%%-..G ! (:./
*Fz?Q!}M1#
1wwz""r!   c                     | j                         }d}|dvrd|z  }d}| j                  )d}| j                  rd}|| j                  j                  z  }dt	        |       j                  ||dt        |       dS )	Nr  )r<   zmock.z name=%rz spec=%rz spec_set=%r<z id='z'>)rb  r  r  r   r6   r8  )rP   rx   name_stringspec_strings       r"   r   zNonCallableMock.__repr__  s    &&((($t+K'$K~~,%(8(8(A(AAKJtH	
 	
r!   c                    	 t         st        j                  |       S | j                  xs g }t	        t        |             }t        | j                        }| j                  j                         D cg c]  \  }}|t        ur| }}}|D cg c]  }|j                  d      r| }}|D cg c]   }|j                  d      rt        |      r|" }}t        t        ||z   |z   |z               S c c}}w c c}w c c}w )Nr#   )r   object__dir__r  r!  r6   rg   rl   r   rF  r;  rW  r   rE  set)rP   extras	from_type	from_dictm_namem_valuefrom_child_mockses           r"   ri  zNonCallableMock.__dir__  s    F>>$''##)rT
O	'	*.*=*=*C*C*E(&vwh& ( ( !*C1c1BQC	C ) #1c1Bq\  #	 #c&9,y8;KKLMM( D#s   3C3C9%C9/%C>c                      |t         v rt        j                   ||      S  j                  r6 j                  *| j                  vr| j
                  vrt        d|z        |t        v rd|z  }t        |      |t        v r j                  | j                  vrt        d|z        t        |      s)t        t               |t        ||             | fd}n^t         |d |       t        t               ||       | j                  |<   n*|dk(  r| _        y t         |||      r| j                  |<    j                   r/t#         |      s# j%                          d| }t        d|       t        j                   ||      S )Nz!Mock object has no attribute '%s'z.Attempting to set unsupported magic method %r.c                       g| i |S r4   r    )rQ   kwrv   rP   s     r"   rC  z-NonCallableMock.__setattr__.<locals>.<lambda>  s    HT,GD,GB,G r!   r-  r@  zCannot set )r   rh  __setattr__r  r  rl   rE   _unsupported_magicsrV  r&   ra   r6   _get_methodr   r   r  r  r(   rb  )rP   rx   r   msg	mock_namerv   s   `    @r"   ru  zNonCallableMock.__setattr__  s   >!%%dD%88nn!3!3!?***% !Dt!KLL((BTIC %%[ !!-$d>P>P2P$%H4%OPP$U+T
D+dE*BC G &dE4>T
D%0,1##D)[ $D$T5$=,1##D)WT4%82245Qtf=I ;yk!:;;!!$e44r!   c                    |t         v r;|t        |       j                  v r$t        t        |       |       || j                  vry | j                  j                  |t              }|| j                  v r t        t        |       j                  |       n|t        u rt        |      |t        ur| j                  |= t        | j                  |<   y r4   )rV  r6   rl   delattrr   rm   _missingr   r   __delattr__r;  rE   )rP   rx   r-   s      r"   r}  zNonCallableMock.__delattr__&  s    ;44:+>+>#>DJ%4==( !!%%dH54== .::4@H_ &&h##D)$,D!r!   c                 <    | j                   xs d}t        |||      S r;   )r   _format_call_signaturerP   rQ   rR   rx   s       r"   _format_mock_call_signaturez+NonCallableMock._format_mock_call_signature8  s    (&%dD&99r!   c                 p    d}| j                  ||      }| j                  } | j                   | }||||fz  S )Nz.expected %s not found.
Expected: %s
Actual: %s)r  r   )rP   rQ   rR   actionmessageexpected_stringr   actual_strings           r"   _format_mock_failure_messagez,NonCallableMock._format_mock_failure_message=  sF    D::4HNN	888)D&/=AAAr!   c                 "   	 |s| j                   S d }|j                  dd      j                  d      }| j                  }|D ]K  }|j	                  |      }|t        |t              r |S t        |      }|j                  }|j                   }M |S )Nr&  r  r@  )r  replacerG  r   rm   r'   r:  r>   )rP   rx   rS   nameschildrenr=  s         r"   _get_call_signature_from_namez-NonCallableMock._get_call_signature_from_nameE  s    		 '''T2&,,S1&& 
	,DLL&E}
5* = 
	 &e, //++
	, 
r!   c                 x   	 t        |t              r#t        |      dkD  r| j                  |d         }n| j                  }|Pt        |      dk(  rd}|\  }}n|\  }}}	  |j
                  |i |}t        ||j                  |j                        S |S # t        $ r}|j                  d       cY d }~S d }~ww xY w)Nr   r   r  )r'   rh   r   r  r  rO   r   rQ   rR   	TypeErrorwith_traceback)rP   _callrS   rx   rQ   rR   
bound_callrq  s           r"   _call_matcherzNonCallableMock._call_matcherf  s    	 eU#E
Q44U1X>C&&C?5zQ$f%*"dF.%SXXt6v6
D*//:3D3DEE L  .''--.s    2B 	B9B4.B94B9c                     	 | j                   dk7  r<d| j                  xs dd| j                   d| j                         }t        |      y )Nr   
Expected 'r<   z"' to not have been called. Called  times.r   r   _calls_reprAssertionErrorrP   rx  s     r"   r   z!NonCallableMock.assert_not_called  sN    	??aoo//oo&&(*C !%%  r!   c                 `    	 | j                   dk(  rd| j                  xs dz  }t        |      y )Nr   z"Expected '%s' to have been called.r<   )r   r   r  r  s     r"   r   zNonCallableMock.assert_called  s9    	??a7OO-v/C %%  r!   c                     	 | j                   dk(  s<d| j                  xs dd| j                   d| j                         }t        |      y )Nr   r  r<   z#' to have been called once. Called r  r  r  s     r"   r   z"NonCallableMock.assert_called_once  sN    	!#oo//oo&&(*C !%% $r!   c                F    	  j                   ' j                        }d}d|d|}t        |       fd} j                  t	        fd            } j                   j                         }||k7  r%t        |t              r|nd }t         |             |y )Nznot called.z#expected call not found.
Expected: 	
Actual: c                  ,    j                        } | S r4   r  rx  rQ   rR   rP   s    r"   _error_messagez:NonCallableMock.assert_called_with.<locals>._error_message  s    33D&ACJr!   Ttwo)r   r  r  r  _Callr'   	Exception)rP   rQ   rR   expectedactualerror_messager  causes   ```     r"   r~   z"NonCallableMock.assert_called_with  s    	3 >>!77fEH"F)M //	 %%eT6N&EF##DNN3X *8Y ?HTE !12= r!   c                    	 | j                   dk(  s<d| j                  xs dd| j                   d| j                         }t        |       | j                  |i |S )Nr   r  r<   z' to be called once. Called r  )r   r   r  r  r~   rP   rQ   rR   rx  s       r"   r   z'NonCallableMock.assert_called_once_with  sa    	)!#oo//oo&&(*C !%%&t&&777r!   c           	          	 |D cg c]  } j                  |       }}t        d |D        d       }t         fd j                  D              }|sv||vrq|d}n1dj	                  |D cg c]  }t        |t              r|nd  c}      }t        | dt        |        j                  d      j                  d             |y t        |      }g }	|D ]  }
	 |j                  |
        |	r,t         j                  xs d	d
t        |	      d|d      |y c c}w c c}w # t        $ r |	j                  |
       Y lw xY w)Nc              3   B   K   | ]  }t        |t              s|  y wr4   r'   r  .0rq  s     r"   	<genexpr>z3NonCallableMock.assert_has_calls.<locals>.<genexpr>       FAZ9-EaF   c              3   @   K   | ]  }j                  |        y wr4   r  r  crP   s     r"   r  z3NonCallableMock.assert_has_calls.<locals>.<genexpr>  s     Md003M   zCalls not found.z+Error processing expected calls.
Errors: {}
Expected: Actual)prefixr@  r<   z does not contain all of z in its call list, found z instead)r  r   r   r   formatr'   r  r  r  rstriprg   removerG   r"  r   rh   )rP   calls	any_orderr  r  r  	all_callsproblemrq  	not_foundkalls   `          r"   r   z NonCallableMock.assert_has_calls  s   	1 499aD&&q)99FFMMT__MM	y(=0G ,-3V-5$7() *4Ay)AAt$K $7.8  %i  !!*5!1 2''x'8??DEG 	
 O		 	'D'  &	'
  &*oo&?&?&+I&6	C 	 7 :$7  '  &'s   D,D$D))EEc                $   	 | j                  t        ||fd            }t        |t              r|nd }| j                  D cg c]  }| j                  |       }}|s|t        |      vr!| j                  ||      }t        d|z        |y c c}w )NTr  z%s call not found)r  r  r'   r  r   _AnyComparerr  r  rP   rQ   rR   r  r  r  r  r  s           r"   r   zNonCallableMock.assert_any_call  s    	,
 %%eT6N&EF&x;151D1DEA$$$Q'EEHL$88">>tVLO #o5 9 F   Bc                L   	 | j                   r,d|v rd|d    nd}| j                         |z   }t        |      |j                  d      }|| j                  d   v rt        di |S t        |       }t        |t              r|t        v rt
        }nt        |t              r0|t        v s| j                  r|| j                  v rt        }nTt
        }nMt        |t              s.t        |t              rt        }n&t        |t              rt         }n|j"                  d   } di |S )Nrx   r@  r&  r   r   r   r    )r  rb  rE   rm   rl   r
   r6   r5   r   _async_method_magicsr   _all_sync_magicsr  CallableMixinr   r   r   rk   )rP   rt  rc   ry  r   _typeklasss          r"   r(  zNonCallableMock._get_child_mock  s	   	! ,2bL!BvJ<(dI//1I=I ++FF;'	n55?r?"T
eY'I9M,ME~.--&&98J8J+J!!E=1%!56!E?3MM!$E{r{r!   c                 V    	 | j                   syd| dt        | j                          dS )Nr  
z: r@  )r   r   )rP   r  s     r"   r  zNonCallableMock._calls_repr"  s2    	 F82i89;;r!   )NNNNNNr  NFNFF)FFr4   )r   )Calls).r   r   r   r   rY  r   rA   r  r  r  "_NonCallableMock__get_return_value"_NonCallableMock__set_return_value"_NonCallableMock__return_value_docr   r   r-  r   r   r   r   r   r   !_NonCallableMock__get_side_effect!_NonCallableMock__set_side_effectr   r   r  r   rb  r   ri  ru  r}  r  r  r  r  r   r   r   r~   r   r   r   r(  r  r    r!   r"   r   r     sM   * GE =AEI<A( >BEI<A*
Z', @E!&0B
; M.0B.0L    
 "(+F%l3J$[1I)*:;N%l3J	* ,.?@K$u% $<%,-`#6
*N$$5N-$:
BB6&&&>,	8*Z #L
<r!   r   assert_c                       e Zd Z	 d Zy)r  c           	      x    | D ]/  }t        t        ||      D cg c]
  \  }}||k(   c}}      s/ y yc c}}w )NTF)allzip)rP   itemr  r  r  s        r"   r   z_AnyComparer.__contains__<  sN     	E(+D%(8$Hf F"  	 s   6N)r   r   r   r   r    r!   r"   r  r  7  s    r!   r  c                 x    | | S t        |       r| S t        |       r| S 	 t        |       S # t        $ r | cY S w xY wr4   )r9   re   r   r  r,   s    r"   r4  r4  G  sJ    
{
S
~
Cy  
s   
+ 99c            
       F    e Zd Zddedddddddf
dZd Zd Zd Zd Zd Z	y)	r  Nr  c           
          || j                   d<    t        t        |       j                  |||||||	|
fi | || _        y )Nr   )rl   r   r  rA   r   )rP   r   r   r   r   rx   r   r   r   r   r   rR   s               r"   rA   zCallableMixin.__init__X  sN     /;*+1M4(11%xK	
39	

 'r!   c                     y r4   r    r   s      r"   rW   zCallableMixin._mock_check_sigd  s    r!   c                n     | j                   |i |  | j                  |i |  | j                  |i |S r4   )rW   _increment_mock_call
_mock_callr   s      r"   rD   zCallableMixin.__call__i  sD     	d-f-!!!4262t///r!   c                &     | j                   |i |S r4   )_execute_mock_callr   s      r"   r  zCallableMixin._mock_callq  s    &t&&777r!   c                   d| _         | xj                  dz  c_        t        ||fd      }|| _        | j                  j                  |       | j                  d u}| j                  }| j                  }|dk(  }| j                  j                  t        d||f             | j                  }||rI|j                  j                  t        |||f             |j                  d u}|r|j                  dz   |z   }t        |||f      }	|j                  j                  |	       |j                  r(|rd}
nd}
|j                  dk(  }|j                  |
z   |z   }|j                  }|y y )NTr   r  r&  r  r@  )r   r   r  r   r   r"  r   r   r   r   r   r   )rP   rQ   rR   r  do_method_callsmethod_call_namemock_call_name	is_a_callr   this_mock_callr`  s              r"   r  z"CallableMixin._increment_mock_callt  so   1
 tVn$/""5) ++47?? ,,"d*	ub$%789 ++% ((//7Gv6V0WX"-":":$"F"'2'='='CFV'V$ #ND&#ABN"")).9))CC'66$>	!,!;!;c!AN!R &66K- %r!   c                2   | j                   }|Bt        |      r|t        |      st        |      }t        |      r
| ||i |}|t        ur|S | j
                  t        ur| j                  S | j                   | j                  |i |S | j                  S r4   )r   r9   re   r   r   r   r   r	  )rP   rQ   rR   effectrw   s        r"   r  z CallableMixin._execute_mock_call  s     !!V$v&f ( L00W$""'1$$$'#4##T4V44   r!   )
r   r   r   r   rA   rW   rD   r  r  r  r    r!   r"   r  r  V  s8     d$d!RT	'
08,7\!r!   r  c                       e Zd Zy)r   Nr   r    r!   r"   r   r     s    7r!   r   c                 :    d}|D ]  }|| v st        |d       y )N)	autospect	auto_specset_specz5 might be a typo; use unsafe=True if this is intended)RuntimeError)kwargs_to_checktypostypos      r"   _check_spec_arg_typosr    s6    2E ?"(OP r!   c                       e Zd ZdZg ZdddZd Zd Zd Ze	j                  d        Zd	 Zd
 Zd Zd Zd Zd Zd Zy)_patchNFr  c
                p   | |t         urt        d      |t        d      |
st        |	       t        |      rt	        d|d|d      t        |      rt	        d|d|d      || _        || _        || _        || _        || _	        || _
        d| _        || _        || _        |	| _        g | _        y )Nz,Cannot use 'new' and 'new_callable' togetherz1Cannot use 'autospec' and 'new_callable' togetherzCannot spec attr z0 as the spec has already been mocked out. [spec=r  z? as the spec_set target has already been mocked out. [spec_set=F)r   rG   r  r&   r   getterrc   r  new_callabler   create	has_localr   autospecrR   additional_patchers)rP   r  rc   r  r   r  r   r  r  rR   r  s              r"   rA   z_patch.__init__	  s     #'! B  # G  !&)T""#I= 166:XQ@A A X&"#I= 1AAIAOP P "(	  #% r!   c                 f   t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  	      }| j                  |_
        | j                  D cg c]  }|j                          c}|_        |S c c}w r4   )r  r  rc   r  r   r  r   r  r  rR   attribute_namer  copy)rP   patcherps      r"   r  z_patch.copy.  s    KK499KKMM4,,dkk

 "&!4!4"66'
AFFH'
# '
s   B.c                     t        |t              r| j                  |      S t        j                  |      r| j                  |      S | j                  |      S r4   r'   r6   decorate_classr*   r   decorate_async_callabledecorate_callable)rP   r1   s     r"   rD   z_patch.__call__;  sM    dD!&&t,,&&t,//55%%d++r!   c                     t        |      D ]^  }|j                  t        j                        s#t	        ||      }t        |d      s<| j                         }t        || ||             ` |S NrD   )r!  rW  r   TEST_PREFIXr)   r(   r  ra   )rP   r  r   
attr_valuer  s        r"   r
  z_patch.decorate_classC  sf    J 		6D??5#4#45 -J:z2iikGE4!45		6 r!   c              #   R  K   g }t        j                         5 }|j                  D ]U  }|j                  |      }|j                  |j                  |       2|j                  t        u sE|j                  |       W |t        |      z  }||f d d d        y # 1 sw Y   y xY wwr4   )

contextlib	ExitStack	patchingsenter_contextr  updater  r   r"  rh   )rP   patchedrQ   keywargs
extra_args
exit_stackpatchingrI  s           r"   decoration_helperz_patch.decoration_helperQ  s     
!!# 		#z#-- + ..x8**6OOC(\\W,%%c*+ E*%%D""		# 		# 		#s#   B'AB+'B	B'B$ B'c                      t        d      rj                  j                          S t               fd        g_        S )Nr  c                  l    j                  | |      5 \  }} |i |cd d d        S # 1 sw Y   y xY wr4   r  rQ   r  newargsnewkeywargsr1   r  rP   s       r"   r  z)_patch.decorate_callable.<locals>.patchedf  sB    ''(,(02 55Kg{W445 5 5s   *3r(   r  r"  r   rP   r1   r  s   ``@r"   r  z_patch.decorate_callable`  sK    4%NN!!$'K	t	5 
	5 "Fr!   c                      t        d      rj                  j                          S t               fd        g_        S )Nr  c                     K   j                  | |      5 \  }} |i | d {   cd d d        S 7 # 1 sw Y   y xY wwr4   r  r   s       r"   r  z/_patch.decorate_async_callable.<locals>.patchedw  sS     ''(,(02 ;5Kg{!7:k::; ; ;; ;s#   A646
A6?Ar#  r$  s   ``@r"   r  z_patch.decorate_async_callableq  sK    4%NN!!$'K	t	; 
	; "Fr!   c                 H   | j                         }| j                  }t        }d}	 |j                  |   }d}|t        v rt        |t              rd| _
        | j                  s|t        u rt	        |d|      ||fS # t        t
        f$ r t        ||t              }Y iw xY w)NFTz does not have the attribute )r  rc   r   rl   rE   KeyErrorr)   	_builtinsr'   r   r  )rP   targetrx   rv   locals        r"   get_originalz_patch.get_original  s    ~~	t,H E9FJ!?DK{{x72 7=tD   ) 	6vtW5H	6s   A> > B! B!c                     	 | j                   | j                  | j                  }}}| j                  | j                  }}| j
                  }| j                         | _        |du rd }|du rd }|du rd }||t        d      |||dvrt        d      | j                         \  }}|t        u rd|ad}	|du r|}|du r|}d }n|	|du r|}d }n|du r|}||%|t        u rt        d      t        |t              rd}	|t        |      rt        }
nt        }
i }||}
n@||<|}||}t!        |      rd|v}nt#        |       }t        |      rt        }
n|rt$        }
|||d<   |||d	<   t        |
t              r+t'        |
t(              r| j*                  r| j*                  |d
<   |j-                  |        |
di |}|	rFt/        |      r:|}||}t!        |      st1        |      st$        }
|j3                  d
        |
d|dd||_        n||t        urt        d      |t        u rt        d      t7        |      }|du r|}t/        | j                        r)t9        d| j*                  d| j                  d|d      t/        |      rMt;        | j                  d| j                        }t9        d| j*                  d|d| j                  d|d	      t=        |f|| j*                  d|}n|rt        d      |}|| _        || _         tC        jD                         | _#        	 tI        | j                  | j*                  |       | jJ                  ui }| j                   t        u r||| jJ                  <   | jL                  D ]A  }| jF                  jO                  |      }|j                   t        u s1|j-                  |       C |S |S #   | jP                  tS        jT                          s Y y xY w)NFzCan't specify spec and autospec)TNz6Can't provide explicit spec_set *and* spec or autospecTz!Can't use 'spec' with create=TruerD   r   r   rx   r&  r'  zBautospec creates the mock for you. Can't specify autospec and new.z%Can't use 'autospec' with create=TruerR  z: as the patch target has already been mocked out. [target=rU  r  r   rS  rT  )r   _namez.Can't pass kwargs to a mock we aren't creatingr    )+r  r   r   r  rR   r  r  r*  r  r,  r   r'   r6   r.   r
   r   ri   r/  r   r5   r   rc   r  r&   ro   rH  r   boolr   r)   r	   temp_originalis_localr  r  _exit_stackra   r  r  r  __exit__sysexc_info)rP   r  r   r   r  rR   r  rv   r+  inheritKlass_kwargs	this_specnot_callablerZ  new_attrr  r  rI  s                      r"   	__enter__z_patch.__enter__  sr    "hh		4==8T==$++&((kkm 5=DuHuH 4=>>!5L(TUU++-%'>h.Gt|t#'HD!t##HDT!#8#7w&#$GHHh-"G|h 7!!G'$!X%9 	' (II&#-Y#>L'/	':#:L +%E!0E"&#&.
# 5$'5/2t~~"&..NN6""'"C,S1 !	' (I +&y10EF##( $4SD $4+2$4 ! '!(  7" GHHH~H4# -&+DNN+= >#{{oWXLCD D !*%dkk:t{{K&+DNN+=]"o &#{{oWXLCD D
 "( BX(,B:@BC LMM%%//1	DKK:"".
88w&7:Jt223 $ 8 8 /H**88BC||w."))#./ "!J	 4==#,,.1 2s   3BO  O O $O=c                    	 | j                   r>| j                  t        ur,t        | j                  | j
                  | j                         nt        | j                  | j
                         | j                  sYt        | j                  | j
                        r| j
                  dv r+t        | j                  | j
                  | j                         | `| ` | `| j                  }| `	 |j                  | S )N)r]   r   r_   __annotations__r`   )r1  r0  r   ra   r*  rc   r{  r  r(   r2  r3  )rP   r5  r  s      r"   r3  z_patch.__exit__,  s    ==T//w>DKK1C1CDDKK0;;T^^(L += = T^^T5G5GHMK%%
"z""H--r!   c                 ^    	 | j                         }| j                  j                  |        |S r4   )r<  _active_patchesr"  rP   rw   s     r"   startz_patch.startA  s*    ;!##D)r!   c                     	 	 | j                   j                  |        | j                  d d d       S # t        $ r Y y w xY wr4   )r@  r  rG   r3  r   s    r"   stopz_patch.stopH  sG    #	  ''-
 }}T4..	  		s   1 	==)r   r   r   r  r@  rA   r  rD   r
  r  contextmanagerr  r  r  r,  r<  r3  rB  rD  r    r!   r"   r  r    sg    NO AF"&J
, # #""0Pd.*/r!   r  c                     	 | j                  dd      \  } }t	        t
        j                  |       |fS # t        t        t        f$ r t        d|       w xY w)Nr@  r   z,Need a valid target to patch. You supplied: )rsplitr  rG   rE   r   pkgutilresolve_name)r*  rc   s     r"   _get_targetrJ  T  sj    G"MM#q1	 7''0);; z>2 G:6*EG 	GGs	   3 #Ar  c                x     	 t               t        u rt         d       fd}
t        |
||||||||	|
      S )Nz3 must be the actual object to be patched, not a strc                       S r4   r    r*  s   r"   rC  z_patch_object.<locals>.<lambda>s  s    V r!   r  )r6   strr  r  )r*  rc   r  r   r  r   r  r  r  rR   r  s   `          r"   _patch_objectrO  ]  sX    
 F|sjKL
 	
 F	3f(L& r!   c                     	 t               t        u rt        t        j                         }n fd}|st        d      t        |j                               }|d   \  }	}
t        ||	|
|||||i 	      }|	|_	        |dd  D ]:  \  }	}
t        ||	|
|||||i 	      }|	|_	        |j                  j                  |       < |S )Nc                       S r4   r    rM  s   r"   rC  z!_patch_multiple.<locals>.<lambda>  s     r!   z=Must supply at least one keyword argument with patch.multipler   r   )r6   rN  r   rH  rI  rG   rg   rF  r  r  r  r"  )r*  r   r  r   r  r  rR   r  rF  rc   r  r  this_patchers   `            r"   _patch_multiplerS  z  s    ( F|s--v6K
 	
  E1XNIs	3fh,G 'G) 9	3IsD&(lB
 '0###**<89 Nr!   c                J    	 t        |       \  }	}
t        |	|
||||||||
      S )Nr  )rJ  r  )r*  r  r   r  r   r  r  r  rR   r  rc   s              r"   r   r     s=    FN $F+FI	3f(L& r!   c                   R    e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)_patch_dictc                     || _         t        |      | _        | j                  j                  |       || _        d | _        y r4   )in_dictdictr9  r  clear	_original)rP   rX  r9  rZ  rR   s        r"   rA   z_patch_dict.__init__  s4    6l6"
r!   c                     t        |t              r| j                  |      S t        j                  |      r| j                  |      S | j                  |      S r4   r	  )rP   fs     r"   rD   z_patch_dict.__call__#  sM    a&&q))&&q)//22%%a((r!   c                 2     t               fd       }|S )Nc                      j                          	  | i |j                          S # j                          w xY wr4   rV  _unpatch_dictrQ   rt  r]  rP   s     r"   _innerz-_patch_dict.decorate_callable.<locals>._inner,  s8    %$~"~""$""$s   + =r   rP   r]  rc  s   `` r"   r  z_patch_dict.decorate_callable+       	q	% 
	% r!   c                 2     t               fd       }|S )Nc                     K   j                          	  | i | d {   j                          S 7 # j                          w xY wwr4   r`  rb  s     r"   rc  z3_patch_dict.decorate_async_callable.<locals>._inner8  sD     %^^+""$ ,""$s%   A7 57 A7 A		Ard  re  s   `` r"   r  z#_patch_dict.decorate_async_callable7  rf  r!   c                    t        |      D ]{  }t        ||      }|j                  t        j                        s/t        |d      s<t        | j                  | j                  | j                        } ||      }t        |||       } |S r  )r!  r)   rW  r   r  r(   rV  rX  r9  rZ  ra   )rP   r  r   r  	decorator	decorateds         r"   r
  z_patch_dict.decorate_classC  st    J 	0D -J 1 12Z0'dkk4::N	%j1	tY/	0 r!   c                 <    	 | j                          | j                  S r4   )rV  rX  r   s    r"   r<  z_patch_dict.__enter__N  s    ||r!   c                    | j                   }t        | j                  t              r$t	        j
                  | j                        | _        | j                  }| j                  }	 |j                         }|| _	        |rt        |       	 |j                  |       y # t        $ r i }|D ]
  }||   ||<    Y Cw xY w# t        $ r |D ]
  }||   ||<    Y y w xY wr4   )r9  r'   rX  rN  rH  rI  rZ  r  rE   r[  _clear_dictr  )rP   r9  rX  rZ  rv   rD  s         r"   rV  z_patch_dict._patch_dictT  s    dllC("//=DL,,

	-||~H " 	+NN6"  	- H - '-		-  	+ +%c{+	+s$   $B 	B; B87B8;CCc                     | j                   }| j                  }t        |       	 |j                  |       y # t        $ r |D ]
  }||   ||<    Y y w xY wr4   )rX  r[  rn  r  rE   )rP   rX  rv   rD  s       r"   ra  z_patch_dict._unpatch_dictp  sX    ,,>>G	-NN8$ 	- -'}-	-s   7 AAc                 >    	 | j                   | j                          yNF)r[  ra  )rP   rQ   s     r"   r3  z_patch_dict.__exit__}  s    >>% r!   c                 f    	 | j                         }t        j                  j                  |        |S r4   )r<  r  r@  r"  rA  s     r"   rB  z_patch_dict.start  s*    ;!%%d+r!   c                     	 	 t         j                  j                  |        | j	                  d d d       S # t        $ r Y y w xY wr4   )r  r@  r  rG   r3  r   s    r"   rD  z_patch_dict.stop  sG    #	""))$/
 }}T4..	  		s   5 	A AN)r    F)r   r   r   rA   rD   r  r  r
  r<  rV  ra  r3  rB  rD  r    r!   r"   rV  rV    s>    8)		+8
-/r!   rV  c                 n    	 | j                          y # t        $ r t        |       }|D ]  }| |=  Y y w xY wr4   )rZ  rE   rg   )rX  keysrD  s      r"   rn  rn    s>     G} 	C	s    44c                  b    	 t        t        j                        D ]  } | j                           y r4   )r\  r  r@  rD  )r   s    r"   _patch_stopallrw    s(    A&001 

r!   testzlt le gt ge eq ne getitem setitem delitem len contains iter hash str sizeof enter exit divmod rdivmod neg pos abs invert complex int float index round trunc floor ceil bool next fspath aiter zDadd sub mul matmul truediv floordiv mod lshift rshift and xor or pow c              #   &   K   | ]	  }d |z    yw)zi%sNr    r  ns     r"   r  r    s     75197   c              #   &   K   | ]	  }d |z    yw)zr%sNr    r{  s     r"   r  r    s     5q5r}  >   ri  __get____set__r   
__delete__
__format__r   __missing____getstate____reversed____setstate____getformat____reduce_ex____getnewargs____subclasses____getinitargs____getnewargs_ex__c                 "    	 fd}| |_         |S )Nc                     | g|i |S r4   r    )rP   rQ   rt  r1   s      r"   methodz_get_method.<locals>.method  s    D&4&2&&r!   )r   )rx   r1   r  s    ` r"   rw  rw    s    @'FOMr!   r   >   	__aexit__	__anext__
__aenter__	__aiter__>   __del__r   rA   r   __prepare__ru  __instancecheck____subclasscheck__c                 ,    t         j                  |       S r4   )rh  __hash__r   s    r"   rC  rC    s    V__T2 r!   c                 ,    t         j                  |       S r4   )rh  __str__r   s    r"   rC  rC    s    FNN40 r!   c                 ,    t         j                  |       S r4   )rh  
__sizeof__r   s    r"   rC  rC    s    v006 r!   c                 j    t        |       j                   d| j                          dt        |        S )N/)r6   r   rb  r8  r   s    r"   rC  rC    s5    $t*"5"5!6a8O8O8Q7RRSTVW[T\S]^ r!   )r  r  r  
__fspath__r   y              ?g      ?)__lt____gt____le____ge____int__r   __len__r3  __complex__	__float____bool__	__index__r  c                       fd}|S )Nc                 Z    j                   j                  }|t        ur|S | u ryt        S r@   )__eq__r   r   NotImplemented)otherret_valrP   s     r"   r  z_get_eq.<locals>.__eq__  s/    ++00'!N5=r!   r    )rP   r  s   ` r"   _get_eqr    s     Mr!   c                       fd}|S )Nc                 ^    j                   j                  t        urt        S | u ryt        S rq  )__ne__r   r   r  )r  rP   s    r"   r  z_get_ne.<locals>.__ne__  s*    ;;))8N5=r!   r    )rP   r  s   ` r"   _get_ner    s     Mr!   c                       fd}|S )Nc                  l    j                   j                  } | t        u rt        g       S t        |       S r4   )__iter__r   r   r   r  rP   s    r"   r  z_get_iter.<locals>.__iter__  s/    --22g8O G}r!   r    )rP   r  s   ` r"   	_get_iterr    s     Or!   c                       fd}|S )Nc                      j                   j                  } | t        u rt        t	        g             S t        t	        |             S r4   )r  r   r   _AsyncIteratorr   r  s    r"   r  z"_get_async_iter.<locals>.__aiter__!  s8    ..33g!$r(++d7m,,r!   r    )rP   r  s   ` r"   _get_async_iterr     s    -
 r!   )r  r  r  r  c                     t         j                  |t              }|t        ur||_        y t        j                  |      }| ||       }||_        y t
        j                  |      }| ||       |_        y y r4   )_return_valuesrm   r   r   _calculate_return_value_side_effect_methodsr   )r<   r  rx   fixedreturn_calculatorr   side_effectors          r"   _set_return_valuer  1  s{    tW-EG#/33D9$(.*(,,T2M *40 !r!   c                       e Zd Zd Zd Zy)
MagicMixinc                    | j                           t        t        |       j                  |i | | j                          y r4   )_mock_set_magicsr   r  rA   )rP   rQ   rt  s      r"   rA   zMagicMixin.__init__D  s6    .J%..;;r!   c           	      z   t         t        z  }|}t        | dd       U|j                  | j                        }t               }||z
  }|D ]&  }|t        |       j                  v st        | |       ( |t        t        |       j                        z
  }t        |       }|D ]  }t        ||t        ||               y )Nr  )_magicsr  r)   intersectionr  rj  r6   rl   r{  ra   
MagicProxy)rP   orig_magicsthese_magicsremove_magicsrB  r  s         r"   r  zMagicMixin._mock_set_magicsJ  s     44"4$/;&33D4F4FGLEM',6M& )DJ///D%() $c$t**=*=&>>T
! 	;EE5*UD"9:	;r!   N)r   r   r   rA   r  r    r!   r"   r  r  C  s     ;r!   r  c                       e Zd Z	 ddZy)r   c                 J    	 | j                  ||       | j                          y r4   r  r  r  s      r"   r  z"NonCallableMagicMock.mock_add_specd  &    	N
 	D(+r!   Nr  r   r   r   r  r    r!   r"   r   r   b  s
    7 r!   r   c                       e Zd Zy)AsyncMagicMixinNr   r    r!   r"   r  r  n  s    r!   r  c                       e Zd Z	 ddZy)r   c                 J    	 | j                  ||       | j                          y r4   r  r  s      r"   r  zMagicMock.mock_add_spec}  r  r!   Nr  r  r    r!   r"   r   r   r  s    	 r!   r   c                        e Zd Zd Zd ZddZy)r  c                      || _         || _        y r4   rx   r   )rP   rx   r   s      r"   rA   zMagicProxy.__init__  s    	r!   c                     | j                   }| j                  }|j                  |||      }t        |||       t	        |||       |S )N)rx   r   r   )rx   r   r(  ra   r  )rP   rB  r   ms       r"   create_mockzMagicProxy.create_mock  sM    		""/5 # 7q!&!U+r!   Nc                 "    | j                         S r4   )r  )rP   r-   r  s      r"   r  zMagicProxy.__get__  s    !!r!   r4   )r   r   r   rA   r  r  r    r!   r"   r  r    s    "r!   r  c                        e Zd Z ed      Z ed      Z ed      Z fdZd Zd Z	d Z
d Zd	 Zd
 ZddZd Z fdZ xZS )r   r   r   r   c                    t               j                  |i | t        j                  j                  | j
                  d<   d| j
                  d<   d | j
                  d<   t               | j
                  d<   t        t              }t        |j
                  d<   t        |j
                  d<   t        j                  t        j                  z   t        j                  z   |_        d|_        d	|_        d|_        d|_        || j
                  d
<   d| j
                  d<   t)               | j
                  d<   i | j
                  d<   d | j
                  d<   y )Nr   r   _mock_await_count_mock_await_args_mock_await_args_listr   r  r  )rQ   rR   r0   r
   r   r_   r`   r>  )superrA   r   r   r   rl   r   r   _CODE_ATTRSr   	_CODE_SIGr*   CO_COROUTINE
CO_VARARGSCO_VARKEYWORDSco_flagsco_argcountco_varnamesco_posonlyargcountco_kwonlyargcountrh   )rP   rQ   rR   	code_mockr-  s       r"   rA   zAsyncMockMixin.__init__  s)   $)&) *1););)I)Io&-.)*,0()1:-.#[9	,4	=)09	,-    !$$% 	
 !"	 2	'(	$&'	#$-j!$/j!(-n%*,&'+/'(r!   c                  K   t        ||fd      }| xj                  dz  c_        || _        | j                  j	                  |       | j
                  }|_t        |      r|t        |      s	 t        |      }t        |      r&|t        |      r ||i | d {   }n ||i |}|t        ur|S | j                  t        ur| j                  S | j                  At        | j                        r | j                  |i | d {   S  | j                  |i |S | j                  S # t        $ r t        w xY w7 7 7w)NTr  r   )r  r   r   r   r"  r   r9   re   r   StopIterationStopAsyncIterationr   r   r   r   r	  )rP   rQ   rR   r  r  rw   s         r"   r  z!AsyncMockMixin._execute_mock_call  sT     tVn$/A##E*!!V$v&-!&\F
 !( L$V,%t6v6600W$""'1$$$'"4#3#34-T--t>v>>>#4##T4V44   - % - -,- 7 ?s=   A-E0D- ;#EE A+E
E"E-D==EEc                 b    	 | j                   dk(  rd| j                  xs d d}t        |      y )Nr   	Expected r<   z to have been awaited.r   r   r  r  s     r"   r   zAsyncMockMixin.assert_awaited  s@    	 q doo788NOC %% !r!   c                 |    	 | j                   dk(  s,d| j                  xs d d| j                    d}t        |      y Nr   r  r<   z$ to have been awaited once. Awaited r  r  r  s     r"   r   z"AsyncMockMixin.assert_awaited_once  sR    	 1$t8&9 :#//09C %% %r!   c                :    	  j                   ! j                        }t        d| d       fd} j                  t	        fd            } j                   j                         }||k7  r%t        |t              r|nd }t         |             |y )NzExpected await: z
Not awaitedc                  0    j                  d      } | S )Nawait)r  r  r  s    r"   r  z:AsyncMockMixin.assert_awaited_with.<locals>._error_message	  s    33D&3QCJr!   Tr  )r   r  r  r  r  r'   r  )rP   rQ   rR   r  r  r  r  s   ```    r"   r   z"AsyncMockMixin.assert_awaited_with  s    	 ??"77fEH #3H:]!KLL	 %%eT6N&EF##DOO4X *8Y ?HTE !12= r!   c                    	 | j                   dk(  s,d| j                  xs d d| j                    d}t        |       | j                  |i |S r  )r   r   r  r   r  s       r"   r   z'AsyncMockMixin.assert_awaited_once_with	  se    	 1$t8&9 :#//09C %%'t''888r!   c                $   	 | j                  t        ||fd            }t        |t              r|nd }| j                  D cg c]  }| j                  |       }}|s|t        |      vr!| j                  ||      }t        d|z        |y c c}w )NTr  z%s await not found)r  r  r'   r  r   r  r  r  r  s           r"   r   zAsyncMockMixin.assert_any_await	  s    	 %%eT6N&EF&x;151E1EFA$$$Q'FFHL$88">>tVLO $6 9 Gr  c           	      B    	 |D cg c]  } j                  |       }}t        d |D        d       }t         fd j                  D              }|sb||vr]|d}n1dj	                  |D cg c]  }t        |t              r|nd  c}      }t        | dt        |       d j                         |y t        |      }g }	|D ]  }
	 |j                  |
        |	rt        t        |	      d      |y c c}w c c}w # t        $ r |	j                  |
       Y Xw xY w)Nc              3   B   K   | ]  }t        |t              s|  y wr4   r  r  s     r"   r  z3AsyncMockMixin.assert_has_awaits.<locals>.<genexpr>1	  r  r  c              3   @   K   | ]  }j                  |        y wr4   r  r  s     r"   r  z3AsyncMockMixin.assert_has_awaits.<locals>.<genexpr>2	  s     St11!4Sr  zAwaits not found.z,Error processing expected awaits.
Errors: {}r  r  z not all found in await list)r  r   r   r   r  r'   r  r  rg   r  rG   r"  rh   )rP   r  r  r  r  r  
all_awaitsr  rq  r  r  s   `          r"   r   z AsyncMockMixin.assert_has_awaits$	  s`   
	 499aD&&q)99FFMSd>R>RSS
z)=1G ,-3V-5$7() *4Ay)AAt$K $7.8  %i  !!*5!1 2 3#3346 	
 *%
	 	'D'!!$'	'
  49)4DF 7 :$7  '  &'s   C7,C<	DDDc                 |    	 | j                   dk7  r,d| j                  xs d d| j                    d}t        |      y )Nr   r  r<   z# to not have been awaited. Awaited r  r  r  s     r"   r   z!AsyncMockMixin.assert_not_awaitedP	  sR    	 q t8&9 :#//09C %% !r!   c                v    	  t               j                  |i | d| _        d | _        t	               | _        y Nr   )r  r   r   r   r   r   )rP   rQ   rR   r-  s      r"   r   zAsyncMockMixin.reset_mockY	  s:    	 	D+F+({r!   r  )r   r   r   r   r   r   r   rA   r  r   r   r   r   r   r   r   r   __classcell__)r-  s   @r"   r   r     s[    &}5K%l3J*+<=O0<&!P&&>$	9*X&+ +r!   r   c                       e Zd Zy)r
   Nr   r    r!   r"   r
   r
   c	  s    'r!   r
   c                        e Zd Z	 d Zd Zd Zy)_ANYc                      yr@   r    rP   r  s     r"   r  z_ANY.__eq__	  s    r!   c                      yrq  r    r  s     r"   r  z_ANY.__ne__	  s    r!   c                      y)Nz<ANY>r    r   s    r"   r   z_ANY.__repr__	  s    r!   N)r   r   r   r  r  r   r    r!   r"   r  r  	  s    8r!   r  c           	         d| z  }d}dj                  |D cg c]  }t        |       c}      }dj                  |j                         D cg c]  \  }}|d| c}}      }	|r|}|	r|r|dz  }||	z  }||z  S c c}w c c}}w )Nz%s(%%s)r  z, =)r]  reprrF  )
rx   rQ   rR   r  formatted_argsrI  args_stringrD  r   kwargs_strings
             r"   r  r  	  s    $GN))$73T#Y78KII17#-33 M $d"N-'^## 8s   A>B
c                       e Zd Z	 	 	 ddZ	 	 ddZd Zej                  Zd Zd Z	d Z
d Zed	        Zed
        Zd Zd Zy)r  Nc                 n   d}i }t        |      }|dk(  r|\  }}}nh|dk(  r2|\  }	}
t        |	t              r|	}t        |
t              r|
}n9|
}n6|	|
}}n1|dk(  r,|\  }t        |t              r|}nt        |t              r|}n|}|rt        j	                  | ||f      S t        j	                  | |||f      S )Nr       r   r   )r   r'   rN  rh   r   )r   r   rx   r   r  	from_kallrQ   rR   _lenfirstseconds              r"   r   z_Call.__new__	  s    5z19!&D$QY!ME6%%fe,!D#F$ffQYFE%%E5)==tVn55}}S4v"677r!   c                 .    || _         || _        || _        y r4   )r   r   _mock_from_kall)rP   r   rx   r   r  r  s         r"   rA   z_Call.__init__	  s    "(r!   c                 "   	 t        |      }d}t        |       dk(  r| \  }}n| \  }}}t        | dd       r't        |dd       r| j                  |j                  k7  ryd}|dk(  rdi }}n|dk(  r|\  }}}nv|dk(  r5|\  }	t        |	t              r|	}i }nXt        |	t              r|	}di }}nAd}|	}n<|dk(  r6|\  }
}t        |
t              r|
}t        |t              r|i }}nd|}}n|
|}}ny|r||k7  ry||f||fk(  S # t        $ r	 t        cY S w xY w)	Nr  r   r   Fr   r    r  r   )r   r  r  r)   r   r'   rh   rN  )rP   r  	len_other	self_name	self_argsself_kwargs
other_name
other_argsother_kwargsr   r  r  s               r"   r  z_Call.__eq__	  sV   	"E
I 	t9>%)"I{04-Iy+D.$/GE>SW4X%%););;
>')2J!^380J
L!^FE%'"
!E3'"
+-rL

$!^!ME6%%"
fe,/5rJ/16J+0&L
y0 L)i-EEE_  	"!!	"s   C< <DDc                    | j                   t        d||fd      S | j                   dz   }t        | j                   ||f||       S )Nr  r&  r   r  r   r  r  s       r"   rD   z_Call.__call__"
  sH    ??""dF+$77%dootV44MMr!   c                 r    | j                   t        |d      S | j                   d|}t        || d      S )NF)rx   r  r@  )rx   r   r  r(  )rP   r   rx   s      r"   r   z_Call.__getattr__*
  s6    ??"de44//40$tu==r!   c                 ^    |t         j                  v rt        t         j                  | |      S r4   )rh   rl   rE   __getattribute__)rP   r   s     r"   r+  z_Call.__getattribute__1
  s'    5>>!  %%dD11r!   c                 D    t        |       dk(  r	| \  }}||fS | \  }}}||fS )Nr   )r   r  s       r"   _get_call_argumentsz_Call._get_call_arguments7
  s:    t9>LD& V| "&D$V|r!   c                 (    | j                         d   S r  r-  r   s    r"   rQ   z
_Call.args?
      '')!,,r!   c                 (    | j                         d   S )Nr   r/  r   s    r"   rR   z_Call.kwargsC
  r0  r!   c                     | j                   s(| j                  xs d}|j                  d      rd|z  }|S t        |       dk(  rd}| \  }}n'| \  }}}|sd}n|j                  d      sd|z  }nd|z  }t	        |||      S )Nr   r&  zcall%sr   zcall.%s)r  r   rW  r   r  )rP   rx   rQ   rR   s       r"   r   z_Call.__repr__G
  s    ##??,fDt$$Kt9>DLD&!%D$__T* 4'$%dD&99r!   c                     	 g }| }|,|j                   r|j                  |       |j                  }|,t        t	        |            S r4   )r  r"  r   r   r\  )rP   valsthings      r"   	call_listz_Call.call_list\
  sR    	 $$E"&&E  $((r!   )r    r  NFT)r    NNFT)r   r   r   r   rA   r  rh  r  rD   r   r+  r-  r   rQ   rR   r   r6  r    r!   r"   r  r  	  s|    $ :?8@ >C)2Fj ]]FN>2 - - - -:*
)r!   r  )r  c          	         	 t        |       rt        |       } t        | t              }t        |       rt	        d| d      t        |       }d| i}	|rd| i}	n| i }	|	r|rd|	d<   |st        |       |	j                  |       t        }
t        j                  |       ri }	n=|r|rt        d      t        }
n't        |       st        }
n|r|rt        |       st        }
|	j!                  d|      }|}|d	} |
d||||d
|	}t        | t"              rt%        ||       }|rt'        |       nt)        | |||       ||s||j*                  |<   |r|sd|vrt-        | |dd|      |_        t1        |       D ]  }t3        |      r	 t5        | |      }d|i}|rd|i}t        |t"              st9        |||||      }||j*                  |<   n~|}t        | t"              r|j:                  }t=        | ||      }||d<   t?        |      rt        }nt        } |d||||d|}||j*                  |<    |       |_        t)        |||       t        |t"              stA        |||        |S # t6        $ r Y w xY w)Nz'Cannot autospec a Mock object. [object=r  r   r   Tr  zJInstance can not be True when create_autospec is mocking an async functionrx   r  )r   r   r   rx   r   r&  )rZ   r.  r   r  )r   rx   r   r   )rY   r    )!ri   r6   r'   r&   r   r2   r  r  r   r*   isdatadescriptorr  r
   re   r   ro   rH  r=   r{   r   r[   r   r	   r   r!  r   r)   rE   r:  r<   
_must_skipr   ra   )r   r   rZ   r   r.  r  rR   is_typeis_async_funcr8  r7  r   r<   rB  rv   r  r   rY   child_klasss                      r"   r	   r	   l
  s   ,* ~ Dzt$G "**. 4 5 	5"4(MtnGt$	8'+#$f%NN6E% 	  > ? ?t_$	X&8&>$KK&EI	 (W	(&(D $& dD)d#tWh78(,u%xN&$@+D(T26F T 1&U	tU+H (# (+F(M2XxuhGC),D&F$."48I"+F;"8,'' (V%5*0( &(C *-D&*}CXsi@ c=)D%%c1&f KG  		s   I++	I87I8c                 .   	 t        | t              s|t        | di       v ry| j                  } | j                  D ]X  }|j
                  j                  |t              }|t        u r,t        |t        t        f      r yt        |t              r|c S  y |S )Nrl   F)r'   r6   r)   r-  rk   rl   rm   r   rC   rB   r=   )r   rB  r:  r  rw   s        r"   r9  r9  
  s     dD!GD*b11~~ ##E73Wf|[9:. N Nr!   c                       e Zd Z	 	 ddZy)r:  Nc                 X    || _         || _        || _        || _        || _        || _        y r4   )r   idsr   r   rZ   rx   )rP   r   r   r   rx   r@  rZ   s          r"   rA   z_SpecState.__init__  s,    	  	r!   )FNNNF)r   r   r   rA   r    r!   r"   r:  r:    s    48/4r!   r:  c                 v    t        | t              rt        j                  |       S t        j                  |       S r4   )r'   bytesioBytesIOStringIO)	read_datas    r"   
_to_streamrG  -  s*    )U#zz)$${{9%%r!   c           	      f  	
 	 t              }|d g

fd}
fd}
fd	
fd
fd}t        Vdd l}t        t	        t        |j                              j                  t	        t        |j                                          at        +dd l}t        t	        t        |j                                    a	| t        dt              } t        t        	      j                  _        d j                  _        d j                  _        d j                   _        d j"                  _        |j                  _         	       
d
<   
d
   j                   _        |j"                  _        j&                  _        |j(                  _        	
fd}|| _        | _        | S )Nc                      j                   j                  j                   j                  S  d   j                   | i |S r  )	readlinesr   rQ   rR   _statehandles     r"   _readlines_side_effectz)mock_open.<locals>._readlines_side_effectC  sC    ((4##000"vay""D3F33r!   c                      j                   j                  j                   j                  S  d   j                   | i |S r  )readr   rK  s     r"   _read_side_effectz$mock_open.<locals>._read_side_effectH  s=    ;;##/;;+++vay~~t.v..r!   c               ?   `   K           E d {    	  d   j                   | i | 7 wr  )readline)rQ   rR   _iter_side_effectrL  s     r"   _readline_side_effectz(mock_open.<locals>._readline_side_effectM  s<     $&&&$&)$$d5f55  	's   .,.c               3      K   j                   j                  	 j                   j                   d   D ]  } |   y wr  )rS  r   )linerL  rM  s    r"   rT  z$mock_open.<locals>._iter_side_effectR  sG     ??''3oo222 1I 	DJ	s   A Ac                  x    j                   j                  j                   j                  S t         d         S r  )rS  r   r   )rL  rM  s   r"   _next_side_effectz$mock_open.<locals>._next_side_effectY  s1    ??''3??///F1Ir!   r   open)rx   r   )r   r   c                      t              d<   j                  j                  d   k(  r        d<   d   j                  _        t        S )Nr   r   )rG  rS  r   r   )rQ   rR   rU  rL  rM  rF  s     r"   
reset_datazmock_open.<locals>.reset_datay  sH    y)q	??&&&)3-/F1I*0)FOO'r!   )rG  	file_spec_iorg   rj  r!  TextIOWrapperunionrD  	open_specrZ  r   r<  r   writerP  rS  rJ  r   r  r   )r<   rF  
_read_datarN  rQ  rY  r^  r\  rT  rU  rL  rM  s    `      @@@@r"   r   r   4  s\   
 I&J$F4
/
6
 S!2!234::3s3;;?O;PQR	 S]+,	|f95I&F$*F! $FLL#FKK#'FOO $(F!/FKK%'F1I"()FOO#9F "3FOO"3FOO "DDKr!   c                   "    e Zd Z	 d ZddZd Zy)r   c                    t        di |S )Nr    )r   )rP   rR   s     r"   r(  zPropertyMock._get_child_mock  s    "6""r!   Nc                      |        S r4   r    )rP   r-   obj_types      r"   r  zPropertyMock.__get__  s	    vr!   c                      | |       y r4   r    )rP   r-   rJ  s      r"   r  zPropertyMock.__set__  s	    S	r!   r4   )r   r   r   r(  r  r  r    r!   r"   r   r     s    #r!   r   c                    	 d| _         t        |       D ]d  }	 t        | |      }t	        |t
              s!t	        |j                  j                  |      t              rK|j                  | u sZt        |       f y # t        $ r Y sw xY wr@   )r  r!  r)   rE   r'   r   r   rm   r:  r   r   )r<   r   r  s      r"   r   r     s     DD	 
	d#A !_-a&&**40*=%G
  		s   A<<	BBc                       e Zd Z	 d Zd Zy)r  c                 z    || _         t        t              }t        j                  |_        || j                  d<   y )Nr  r0   )iteratorr   r   r*   CO_ITERABLE_COROUTINEr  rl   )rP   rl  r  s      r"   rA   z_AsyncIterator.__init__  s/     #X6	$::	$-j!r!   c                 ^   K   	 t        | j                        S # t        $ r Y t        w xY wwr4   )r   rl  r  r  r   s    r"   r  z_AsyncIterator.__anext__  s1     	&& 	  	s   - -	*-*-N)r   r   r   rA   r  r    r!   r"   r  r    s    .!r!   r  r  )NFNNN)FFNNr  )__all__r   r  rC  r*   r   r4  builtinsrH  r   typesr   r   r   unittest.utilr   	functoolsr   r   	threadingr   r  r   r!  rW  r)  r   r  r   r.   r2   r&   r9   r>   rK   r[   rV   re   ri   ro   r{   ru   r   r   rh  r   r   r   r   MISSINGr|  DELETEDr;  r   r   rg   r   r   r   r   r   	frozensetremoveprefixrX  r  r4  r  r   r  r  rJ  rO  rS  r   rV  rn  rw  rY  multiplestopallr  magic_methodsnumericsr]  rG  inplaceright_non_defaultsrw  r  r  _sync_async_magics_async_magicsr  rV  rv  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r  rF   rA   r  r   r
   r  r   r  rh   r  r   r	   r9  r:  r6   r  r=   r]  ra  rG  r   r   r   r  )rx   r  s   00r"   <module>r     s  &   	   
   ' 2 2 # $ Cy C "(mHd4??33GTH	
 @2 F	#
&6."b>6)	)f 	)  ;


 &* *(6 6 S
<d S
<n O$y! 	i   4  d!D d!P8=/ 8zL/V L/`
<  'Ttd &+: ?C04.d $u4OCHOdV/& V/r 
   " K 	 ((7hnn&67
75HNN$455 HHmXw67==? Hv @ !] $'99]* .  306^	  "  	 1$; ;>	 : 	 	j 	 
D  ," "$ (mGgh&7&7>?	B+T B+J( (V
6 
 f$$v)E v)r u CGJ*/JZ8	 	 		 		&Od4 $0! !G\ IF Ls   N:3N:0)N?&O