
    =OgH                    `   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d
  ee          D             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/        Z/e.j0        Z1e.j2        Z3h d Z4d! Z5 G d" d#e6          Z7d$ Z8 G d% d&e+          Z9 G d' d(e+          Z: G d) d*e:          Z; ej<        e;j=                  Z> G d+ d,e6          Z?d- Z@ G d. d/e:          ZA G d0 d1eAe;          ZBd2 ZC G d3 d4e+          ZDd5 ZEe/dddddfdd6d7ZF	 	 dzd8ZGe/dddddfdd6d9ZH G d: d;e+          ZId< ZJd= ZKeFeH_+        eIeH_L        eGeH_M        eKeH_N        d>eH_O        d?ZPd@ZQdAR                    dB eQS                                D                       ZTdAR                    dC eQS                                D                       ZUh dDZVdE ZWdF dAR                    ePeQeTeUg          S                                D             ZXh dGZYdHhZZeYeZz  Z[eXeVz  Z\e\e[z  Z]h dIZ^dJ dK dL dM dNZ_e`e`e`e`dOddddPdQddOddRZadS ZbdT ZcdU ZddV ZeebecedeedWZfdX Zg G dY dZe:          Zh G d[ d\ehe;          Zi G d] d^eh          Zj G d_ d`eheB          Zk G da dbe:          Zl G dc dde:          Zm G de dfemejeB          Zn G dg dhe+          Zo eo            Zpdi Zq G dj dker          Zs esdl          Zt	 	 d{dd6dmZudn Zv G do dpe+          Zw exeu           exepjy                  fZzda{da|dq Z}d|dsZ~ G dt dueB          Zdv Z G dw dx          ZdS )})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dS )InvalidSpecErrorN__name__
__module____qualname__     &/usr/lib64/python3.11/unittest/mock.pyr   r   )   s        BBr!   r   c                 <    h | ]}|                     d           |S _
startswith).0names     r"   	<setcomp>r*   -   s)    HHHd4??33G3GHTHHHr!   Tc                     t          |           rt          | t                    sdS t          | d          rt	          | d          } t          |           pt          j        |           S )NF__func__)_is_instance_mock
isinstancer
   hasattrgetattrr   inspectisawaitableobjs    r"   _is_async_objr5   5   sg     ji&@&@ usJ 'c:&&s##?w':3'?'??r!   c                 F    t          | dd           rt          |           S dS )N__code__F)r0   r   )funcs    r"   _is_async_funcr9   =   s)    tZ&& "4(((ur!   c                 F    t          t          |           t                    S N)
issubclasstyper   r3   s    r"   r-   r-   D   s     d3ii111r!   c                     t          | t                    p)t          | t                    ot          | t                    S r;   )r.   BaseExceptionr=   r<   r3   s    r"   _is_exceptionr@   J   s6    3&& 	A3@*S-"@"@r!   c                 ^    t          | t                    rt          | d          r| j        S | S Nmock)r.   FunctionTypesr/   rC   r3   s    r"   _extract_mockrE   Q   s3     #}%% '#v*>*> x
r!   c                    	 t          | t                    r|s
| j        } d}njt          | t          t          f          rt          | t                    rd}| j        } n/t          | t                    s	 | j        } n# t          $ r Y d S w xY w|rt          | d           }n| }	 | t          j        |          fS # t          $ r Y d S w xY wNT)r.   r=   __init__classmethodstaticmethodr,   rD   __call__AttributeErrorr   r1   	signature
ValueError)r8   as_instanceeat_selfsig_funcs       r"   _get_signature_objectrR   Z   s   
 $ k }	D;5	6	6 dK(( 	H}m,, 	=DD 	 	 	44	 4&&W&x0000   tts$   4A< <
B
	B
#B9 9
CCFc                     t          | ||          d S \  } fd}t          | |           |t          |          _        t          |          _        d S )Nc                "     j         |i | d S r;   bind)selfargskwargssigs      r"   checksigz"_check_signature.<locals>.checksig        $!&!!!!!r!   )rR   _copy_func_detailsr=   _mock_check_sig__signature__)r8   rC   	skipfirstinstancer[   rZ   s        @r"   _check_signaturerb   }   sr    
h	
:
:C
{ID#" " " " "tX&&&!)DJJ"DJJr!   c           	      p    dD ]2}	 t          ||t          | |                     ## t          $ r Y /w xY wd S )N)r   __doc____text_signature__r   __defaults____kwdefaults__)setattrr0   rL   )r8   funcopy	attributes      r"   r]   r]      sa      		GYi(@(@AAAA 	 	 	D	 s   &
33c                     t          | t                    rdS t          | t          t          t          f          rt          | j                  S t          | dd           dS dS )NTrK   F)r.   r=   rJ   rI   r   	_callabler,   r0   r3   s    r"   rl   rl      s^    #t t#k:>?? '&&&sJ%%1t5r!   c                 <    t          |           t          t          fv S r;   )r=   listtupler3   s    r"   _is_listrp      s     99u%%r!   c                     	 t          | t                    st          | dd           d uS | f| j        z   D ]}|j                            d           dS  dS )NrK   TF)r.   r=   r0   __mro____dict__get)r4   bases     r"   _instance_callablerv      sr    @c4   :sJ--T99 $  =Z((444 55r!   c                 0   t          |t                    }t          |||          }|| S |\  }fd}t          ||           |j        }|                                sd}|| d}d|z  }	t          |	|           ||         }
t          |
|            |
S )Nc                  "     j         | i | d S r;   rU   )rX   rY   rZ   s     r"   r[   z _set_signature.<locals>.checksig   r\   r!   ri   )
_checksig_rC   zYdef %s(*args, **kwargs):
    _checksig_(*args, **kwargs)
    return mock(*args, **kwargs))r.   r=   rR   r]   r   isidentifierexec_setup_func)rC   originalra   r`   resultr8   r[   r)   contextsrcri   rZ   s              @r"   _set_signaturer      s    
 8T**I"8XyAAF~ID#" " " " "tX&&&D %t4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
         _
        | _        | _        | _        |	 _        |
 _        | _        | _        | _        | _         _        d S )Nc                       j         | i |S r;   )assert_called_withrX   rY   rC   s     r"   r   z'_setup_func.<locals>.assert_called_with       &t&7777r!   c                       j         | i |S r;   )assert_calledr   s     r"   r   z"_setup_func.<locals>.assert_called   s    !t!426222r!   c                       j         | i |S r;   )assert_not_calledr   s     r"   r   z&_setup_func.<locals>.assert_not_called   s    %t%t6v666r!   c                       j         | i |S r;   )assert_called_oncer   s     r"   r   z'_setup_func.<locals>.assert_called_once   r   r!   c                       j         | i |S r;   )assert_called_once_withr   s     r"   r   z,_setup_func.<locals>.assert_called_once_with   s    +t+T<V<<<r!   c                       j         | i |S r;   )assert_has_callsr   s     r"   r   z%_setup_func.<locals>.assert_has_calls   s    $t$d5f555r!   c                       j         | i |S r;   )assert_any_callr   s     r"   r   z$_setup_func.<locals>.assert_any_call   s    #t#T4V444r!   c                      t                      _        t                      _                                         j        } t          |           r| ur|                                  d S d S d S r;   )	_CallListmethod_calls
mock_calls
reset_mockreturn_valuer-   )retri   rC   s    r"   r   z_setup_func.<locals>.reset_mock   so    ({{&[["S!! 	#++NN	 	++r!   Fr   )rC   called
call_count	call_argsr   call_args_listr   r   r   side_effect_mock_childrenr   r   r   r   r   r   r   r   r_   _mock_delegate)ri   rC   rZ   r   r   r   r   r   r   r   r   s   ``         r"   r|   r|      s   GL8 8 8 8 83 3 3 3 37 7 7 7 78 8 8 8 8= = = = =6 6 6 6 65 5 5 5 5      GNGG&[[G$;;G"G,G*G!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          ||                     "d S )Nr   c                :     t          j        |           |i |S r;   )r0   rC   )attrrX   rY   rC   s      r"   wrapperz"_setup_async_mock.<locals>.wrapper
  s$    'wty$''8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_listrh   r   )rC   r   rj   s   `  r"   _setup_async_mockr     s     +9DDDO$;;D
9 9 9 9 9, > >	 	i)!<!<====> >r!   c                 $    d| dd         z  | k    S )N__%s__   r    r)   s    r"   	_is_magicr     s    d1R4j D((r!   c                   "    e Zd Z	 d Zd Zd ZdS )_SentinelObjectc                     || _         d S r;   r   rW   r)   s     r"   rH   z_SentinelObject.__init__"  s    			r!   c                     d| j         z  S Nzsentinel.%sr   rW   s    r"   __repr__z_SentinelObject.__repr__%      ty((r!   c                     d| j         z  S r   r   r   s    r"   
__reduce__z_SentinelObject.__reduce__(  r   r!   N)r   r   r   rH   r   r   r    r!   r"   r   r      sD        '  ) ) )) ) ) ) )r!   r   c                   "    e Zd Z	 d Zd Zd ZdS )	_Sentinelc                     i | _         d S r;   )
_sentinelsr   s    r"   rH   z_Sentinel.__init__.  s    r!   c                 l    |dk    rt           | j                            |t          |                    S )N	__bases__)rL   r   
setdefaultr   r   s     r"   __getattr__z_Sentinel.__getattr__1  s3    ;  ))$0E0EFFFr!   c                     dS )Nr   r    r   s    r"   r   z_Sentinel.__reduce__7  s    zr!   N)r   r   r   rH   r   r   r    r!   r"   r   r   ,  sG        K  G G G    r!   r   >   
_mock_namer   _mock_parentr   _mock_new_name_mock_new_parent_mock_side_effect_mock_return_valuec                 x    t                               |            d| z   }| |fd}| |fd}t          ||          S )N_mock_c                 T    | j         }|t          | |          S t          ||          S r;   )r   r0   )rW   r)   	_the_namerZ   s       r"   _getz"_delegating_property.<locals>._getL  s/    !;4+++sD!!!r!   c                 R    | j         }||| j        |<   d S t          |||           d S r;   )r   rs   rh   )rW   valuer)   r   rZ   s        r"   _setz"_delegating_property.<locals>._setQ  s9    !;',DM)$$$Cu%%%%%r!   )_allowed_namesaddproperty)r)   r   r   r   s       r"   _delegating_propertyr   I  se    t4I	 " " " "
  $y & & & & D$r!   c                       e Zd Zd Zd ZdS )r   c                    t          |t                    st                              | |          S t          |          }t          |           }||k    rdS t	          d||z
  dz             D ]}| |||z            }||k    r dS dS )NFr      T)r.   rn   __contains__lenrange)rW   r   	len_valuelen_selfisub_lists         r"   r   z_CallList.__contains__^  s    %&& 	2$$T5111JJ	t99x5q(Y.233 	 	AAa	kM*H5  tt !ur!   c                 D    t          j        t          |                     S r;   )pprintpformatrn   r   s    r"   r   z_CallList.__repr__l  s    ~d4jj)))r!   N)r   r   r   r   r   r    r!   r"   r   r   \  s2          * * * * *r!   r   c                     t          |          }t          |          sdS |j        s|j        s|j        |j        dS | }|||u rdS |j        }||r| |_        ||_        |r| |_        ||_        dS )NFT)rE   r-   r   r   r   r   )parentr   r)   new_name_parents        r"   _check_and_set_parentr   p  s    %  EU## u		 U1 			'			+uG

 e5* 
  (!''  #4r!   c                       e Zd Zd Zd ZdS )	_MockIterc                 .    t          |          | _        d S r;   )iterr4   )rW   r4   s     r"   rH   z_MockIter.__init__  s    99r!   c                 *    t          | j                  S r;   )nextr4   r   s    r"   __next__z_MockIter.__next__  s    DH~~r!   N)r   r   r   rH   r   r    r!   r"   r   r     s2              r!   r   c                       e Zd ZeZdZd ZdS )BaseNc                    d S r;   r    rW   rX   rY   s      r"   rH   zBase.__init__  s    r!   )r   r   r   r   r   r   rH   r    r!   r"   r   r     s/             r!   r   c                      e Zd Z	  e            Z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!d0dZ"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d-d'Z*d( Z+d) Z,d1d+Z-dS )2r   c                z   | f}t          | t                    s]t          j        | g|R i |j        }|                    d|                    d                    }|t          |          r	t          | f}t          | j        |d| j	        i          }t          t          |                               |          }|S )Nspec_setspecrd   )r<   AsyncMockMixin	_MOCK_SIGbind_partial	argumentsrt   r5   r=   r   rd   _safe_superr   __new__)clsrX   kwbases
bound_argsspec_argnewra   s           r"   r  zNonCallableMock.__new__  s     #~.. 	."/AdAAAbAAKJ!~~j*..2H2HIIH#h(?(?#'-3<CK(@AA44<<SAAr!   N Fc                    ||}| j         }||d<   ||d<   ||d<   ||d<   d|d<   ||}d}|
|d u}
|                     |||	|
           i |d<   ||d	<   d |d
<   d|d<   d |d<   d|d<   t                      |d<   t                      |d<   t                      |d<   ||d<   |r | j        di | t	          t
          |                               ||||||           d S )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    )rs   _mock_add_specr   configure_mockr  r   rH   )rW   r   r   r)   r   r   _spec_state	_new_name_new_parent_spec_as_instance	_eat_selfunsaferY   rs   s                 r"   rH   zNonCallableMock.__init__  sV   
  K=#) !%%.!"'2#$#( DHd*ID(,=yIII%'!""'%)!"#( &*"#'(#$+4;;'('0{{#$#,;; #)  	*D))&)))OT**33%x	
 	
 	
 	
 	
r!   c                     	 t          |          }d |_        d |_        d|_        d |_        t          | ||           d S Nr  )rE   r   r   r   r   rh   )rW   rC   rj   
inner_mocks       r"   attach_mockzNonCallableMock.attach_mock  sO    	C #4((
"&
&*
# "
$(
!i&&&&&r!   c                 4    	 |                      ||           d S r;   )r  rW   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          |          D ]5}t          t	          ||d                     r|                    |           6|`t          |          sQt          |t                    r|}nt          |          }t          |||          }	|	o|	d         }t          |          }| j
        }
||
d<   ||
d<   ||
d<   ||
d<   ||
d<   d S )	Nz#Cannot spec a Mock object. [object=]r   _spec_class	_spec_set_spec_signature_mock_methods_spec_asyncs)r-   r   dirr   r0   appendrp   r.   r=   rR   rs   )rW   r   r   r  r  r'  r)  r+  r   resrs   s              r"   r  zNonCallableMock._mock_add_spec  s'   T"" 	T"#R#R#R#RSSSII 	* 	*D"74t#<#<== *##D)))HTNN$%% )""4jj'(99F FC!nc!fOt99D="- (&5"#$(!#/   r!   c                     | j         }| j        | j        j        }|t          u r%| j        |                     | d          }|| _        |S )N()r  r  )r   r   r   r   r  _get_child_mock)rW   r   s     r"   __get_return_valuez"NonCallableMock.__get_return_value  s]    %*%2C'>>d.6&& D '  C !$D
r!   c                 b    | j         || j         _        d S || _        t          | |d d           d S )Nr0  )r   r   r   r   )rW   r   s     r"   __set_return_valuez"NonCallableMock.__set_return_value%  s>    */4D,,,&+D#!$tT:::::r!   z1The value to be returned when the mock is called.c                 <    | j         t          |           S | j         S r;   )r'  r=   r   s    r"   	__class__zNonCallableMock.__class__1  s     #::r!   r   r   r   r   r   c                     | j         }|| j        S |j        }|It          |          s:t	          |t
                    s%t          |          st          |          }||_        |S r;   )r   r   r   callabler.   r   r@   )rW   	delegatedsfs      r"   __get_side_effectz!NonCallableMock.__get_side_effect>  sj    '	))"N8B<<N"2y11 :G:K:K 2B$&I!	r!   c                 V    t          |          }| j        }|	|| _        d S ||_        d S r;   )	_try_iterr   r   r   )rW   r   r:  s      r"   __set_side_effectz!NonCallableMock.__set_side_effectI  s9    %  '	%*D"""$)I!!!r!   r   r   c                P   	 |g }t          |           |v rd S |                    t          |                      d| _        d | _        d| _        t                      | _        t                      | _        t                      | _        |rt          | _
        |rd | _        | j                                        D ]9}t          |t                    s	|t           u r!|                    |||           :| j
        }t%          |          r|| ur|                    |           d S d S d S )NFr   r@  )idr-  r   r   r   r   r   r   r   r   r   r   r   valuesr.   
_SpecState_deletedr   r-   )rW   visitedr   r   childr   s         r"   r   zNonCallableMock.reset_mockT  s8   7?Gd88wFr$xx   #++'kk%KK 	.&-D# 	*%)D"(//11 	Z 	ZE%,, 0A0AW<[YYYY%S!! 	$cooNN7#####	$ 	$oor!   c                    	 t          |                                d           D ]V\  }}|                    d          }|                                }| }|D ]}t	          ||          }t          |||           Wd S )Nc                 8    | d                              d          S )Nr   .)count)entrys    r"   <lambda>z0NonCallableMock.configure_mock.<locals>.<lambda>  s    q1D1D r!   )keyrJ  )sorteditemssplitpopr0   rh   )rW   rY   argvalrX   finalr4   rL  s           r"   r  zNonCallableMock.configure_mockr  s    	, v||~~ $E#D	F F F 
	% 
	%HC
 99S>>DHHJJEC * *c5))C$$$$
	% 
	%r!   c                    |dv rt          |          | j        %|| j        vs	|t          v rt          d|z            nt          |          rt          |          | j        s:| j        r	|| j        vr*|                    d          rt          |d|d          t          j        5  | j        	                    |          }|t          u rt          |          |Cd }| j        t          | j        |          }|                     | ||||           }|| j        |<   nt          |t                    rv	 t!          |j        |j        |j        |j        |j                  }n># t,          $ r1 | j        d         p| }t-          d|d	|d
| d|j        d	          w xY w|| j        |<   d d d            n# 1 swxY w Y   |S )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   r)   r   r  r  r   Cannot autospec attr  from target , as it has already been mocked out. [target=, attr=r&  )rL   r*  _all_magicsr   r  r'   r   _lockr   rt   rE  r  r0   r2  r.   rD  r	   r   r   ra   r   r)   r   rs   )rW   r)   r~   r   target_names        r"   r   zNonCallableMock.__getattr__  s   444 &&&+4---1D1D$%F%MNNN 2Et__ 	' &&&  	N$*< 	NDL^@^@^OPP N$ M M'+M M MN N N " 	4 	4(,,T22F!!$T***#/ $D$4d;;E--d%4 $ .   .4#D))FJ// 4
D,V_fov{ FF ( D D D"&-"="EK*C C C&C C#'C C28+C C CD D DD .4#D);	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4> s+   +BF:9,E&%F:&;F!!F::F>F>c                 n   | j         g}| j        }| }d}|dgk    rd}|7|}|                    |j         |z              d}|j         dk    rd}|j        }|7t          t	          |                    }|j        pd}t          |          dk    r|d         dvr|dz  }||d<   d                    |          S )NrJ  r0  r  rC   r   )r0  z().r   )r   r   r-  rn   reversedr   r   join)rW   
_name_listr   lastdot_firsts         r"   _extract_mock_namez"NonCallableMock._extract_mock_name  s    )*
'$C!Dg4s:;;;C%--.G ! (:..//
*Fz??Q!}M11#
1wwz"""r!   c                     |                                  }d}|dvrd|z  }d}| j        d}| j        rd}|| j        j        z  }dt	          |           j        ||dt          |           dS )	Nr  )rC   zmock.z name=%rz spec=%rz spec_set=%r<z id='z'>)rj  r'  r(  r   r=   rB  )rW   r)   name_stringspec_strings       r"   r   zNonCallableMock.__repr__  s    &&((((($t+K'$K~ -,%(8(AAKJJKKKtHHHH	
 	
r!   c                 x   	 t           st                              |           S | j        pg }t	          t          |                     }t          | j                  }d | j        	                                D             }d |D             }d |D             }t          t          ||z   |z   |z                       S )Nc                 *    g | ]\  }}|t           u|S r    )rE  )r(   m_namem_values      r"   
<listcomp>z+NonCallableMock.__dir__.<locals>.<listcomp>  s1     ( ( (&vwh&& &&&r!   c                 <    g | ]}|                     d           |S r$   r&   r(   es     r"   rs  z+NonCallableMock.__dir__.<locals>.<listcomp>  s)    CCC1c1B1BCQCCCr!   c                 Z    g | ](}|                     d           rt          |          &|)S r$   )r'   r   ru  s     r"   rs  z+NonCallableMock.__dir__.<locals>.<listcomp>  sE     # # #1c1B1B #q\\#Q # # #r!   )r   object__dir__r*  r,  r=   rn   rs   r   rP  rO  set)rW   extras	from_type	from_dictfrom_child_mockss        r"   ry  zNonCallableMock.__dir__  s    F 	(>>$'''#)rT

OO	''	( (*.*=*C*C*E*E( ( ( DC	CCC	# #	 # # #	c&9,y8;KKLLMMMr!   c                 T    |t           v rt                               ||          S  j        r+ 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          |          s5t          t                     |t          ||                     | fd}nft           |d |           t          t                     ||           | j        |<   n+|dk    r	| _        d S t           |||          r
| j        |<    j        r;t#           |          s+                                  d| }t          d|           t                               ||          S )Nz!Mock object has no attribute '%s'z.Attempting to set unsupported magic method %r.c                       g| R i |S r;   r    )rX   r  r}   rW   s     r"   rM  z-NonCallableMock.__setattr__.<locals>.<lambda>  s!    HHT,GD,G,G,GB,G,G r!   r7  rJ  zCannot set )r   rx  __setattr__r(  r*  rs   rL   _unsupported_magicsr`  r-   rh   r=   _get_methodr   r   r'  r  r/   rj  )rW   r)   r   msg	mock_namer}   s   `    @r"   r  zNonCallableMock.__setattr__  s   >!!%%dD%888n 	2!3!?***%% !Dt!KLLL(((BTIC %%%[  !-$d>P2P2P$%H4%OPPP$U++ 	2T

D+dE*B*BCCC GGGGG &dE4>>>T

D%000,1#D))[  $DF$T5$== 2,1#D) 	<WT4%8%8 	<2244==t==I !:y!:!:;;;!!$e444r!   c                    |t           v r>|t          |           j        v r(t          t          |           |           || j        vrd S | j                            |t                    }|| j        v r)t          t          |           	                    |           n|t          u rt          |          |t          ur| j        |= t          | j        |<   d S r;   )r`  r=   rs   delattrr   rt   _missingr  r   __delattr__rE  rL   )rW   r)   r4   s      r"   r  zNonCallableMock.__delattr__!  s    ;44::+>#>#>DJJ%%%4=(( !%%dH554=  ..::4@@@@H__ &&&h#D)$,D!!!r!   c                 6    | j         pd}t          |||          S rB   )r   _format_call_signaturerW   rX   rY   r)   s       r"   _format_mock_call_signaturez+NonCallableMock._format_mock_call_signature3  s     (&%dD&999r!   r   c                 d    d}|                      ||          }| j        } | j         | }||||fz  S )Nz0expected %s not found.
Expected: %s
  Actual: %s)r  r   )rW   rX   rY   actionmessageexpected_stringr   actual_strings           r"   _format_mock_failure_messagez,NonCallableMock._format_mock_failure_message8  sD    F::4HHN	88)D&/=AAAr!   c                    	 |s| j         S d }|                    dd                              d          }| j        }|D ]M}|                    |          }|t          |t                    r nt          |          }|j        }|j         }N|S )Nr0  r  rJ  )r)  replacerQ  r   rt   r.   rD  rE   )rW   r)   rZ   nameschildrenrG  s         r"   _get_call_signature_from_namez-NonCallableMock._get_call_signature_from_name@  s    		  	(''T2&&,,S11& 
	, 
	,DLL&&E}
5* = =}
 &e,, /+
r!   c                    	 t          |t                    r/t          |          dk    r|                     |d                   }n| j        }|vt          |          dk    rd}|\  }}n|\  }}}	  |j        |i |}t          ||j        |j                  S # t          $ r}|
                    d           cY d }~S d }~ww xY w|S )Nr   r   r  )r.   ro   r   r  r)  rV   r   rX   rY   	TypeErrorwith_traceback)rW   _callrZ   r)   rX   rY   
bound_callrv  s           r"   _call_matcherzNonCallableMock._call_matchera  s    	 eU## 	'E

Q44U1X>>CC&C?5zzQ$ff%*"dF.%SXt6v66
D*/:3DEEE . . .''--------. Ls   1'B 
C#B=7C=Cc                     	 | j         dk    r8d| j        pdd| j         d|                                 }t          |          d S )Nr   
Expected 'rC   z"' to not have been called. Called  times.r   r   _calls_reprAssertionErrorrW   r  s     r"   r   z!NonCallableMock.assert_not_called|  sa    	?ao///ooo&&(((*C !%%%  r!   c                 T    	 | j         dk    rd| j        pdz  }t          |          d S )Nr   z"Expected '%s' to have been called.rC   )r   r   r  r  s     r"   r   zNonCallableMock.assert_called  s>    	?a7O-v/C %%%  r!   c                     	 | j         dk    s8d| j        pdd| j         d|                                 }t          |          d S )Nr   r  rC   z#' to have been called once. Called r  r  r  s     r"   r   z"NonCallableMock.assert_called_once  sa    	!###o///ooo&&(((*C !%%% $#r!   c                v    	  j         /                               }d}d|d|}t          |           fd}                     t	          fd                    }                      j                   }||k    r1t          |t                    r|nd }t           |                      |d S )Nznot called.z#expected call not found.
Expected: z
  Actual: c                  4                                   } | S r;   r  r  rX   rY   rW   s    r"   _error_messagez:NonCallableMock.assert_called_with.<locals>._error_message  s    33D&AACJr!   Ttwo)r   r  r  r  _Callr.   	Exception)rW   rX   rY   expectedactualerror_messager  causes   ```     r"   r   z"NonCallableMock.assert_called_with  s    	3 >!77fEEH"FFxx)M ///	 	 	 	 	 	 	 %%eT6N&E&E&EFF##DN33X *8Y ? ?IHHTE !1!122= r!   c                    	 | j         dk    s8d| j        pdd| j         d|                                 }t          |           | j        |i |S )Nr   r  rC   z' to be called once. Called r  )r   r   r  r  r   rW   rX   rY   r  s       r"   r   z'NonCallableMock.assert_called_once_with  sq    	)!###o///ooo&&(((*C !%%%&t&7777r!   c                     	  fd|D             }t          d |D             d           }t           fd j        D                       }|su||vro|d}nd                    d |D                       }t	          | dt          |                                d	                              d
                     |d S t          |          }g }|D ]=}	 |                    |           # t          $ r |
                    |           Y :w xY w|r-t	           j        pddt          |          d|d          |d S )Nc                 :    g | ]}                     |          S r    r  r(   crW   s     r"   rs  z4NonCallableMock.assert_has_calls.<locals>.<listcomp>  '    999aD&&q))999r!   c              3   D   K   | ]}t          |t                    |V  d S r;   r.   r  ru  s     r"   	<genexpr>z3NonCallableMock.assert_has_calls.<locals>.<genexpr>  1      FFAZ9-E-EFaFFFFFFr!   c              3   B   K   | ]}                     |          V  d S r;   r  r  s     r"   r  z3NonCallableMock.assert_has_calls.<locals>.<genexpr>  s1      MMd0033MMMMMMr!   zCalls not found.z+Error processing expected calls.
Errors: {}c                 @    g | ]}t          |t                    r|nd S r;   r  ru  s     r"   rs  z4NonCallableMock.assert_has_calls.<locals>.<listcomp>  ;     $7 $7 $7() *4Ay)A)A$KAAt $7 $7 $7r!   
Expected: z  Actual)prefixrJ  rC   z does not contain all of z in its call list, found z instead)r   r   r   formatr  r  rstriprn   removerN   r-  r   ro   )	rW   calls	any_orderr  r  	all_callsproblem	not_foundkalls	   `        r"   r   z NonCallableMock.assert_has_calls  s   	1 :9995999FFFFFMMMMMMT_MMMMM	 	y((=0GG ,-3V$7 $7-5$7 $7 $7.8 .8  % I I!*5!1!1I''z'::AA#FFI I  	
 FOO		 	' 	'D'  &&&& ' ' '  &&&&&' 	 &*o&?&?&?&+I&6&6&6&6			C  		 	s   C..DDc                &    	                       t          ||fd                    }t          |t                    r|nd } fd j        D             }|s|t          |          vr)                     ||          }t          d|z            |d S )NTr  c                 :    g | ]}                     |          S r    r  r  s     r"   rs  z3NonCallableMock.assert_any_call.<locals>.<listcomp>  s'    EEEA$$$Q''EEEr!   z%s call not found)r  r  r.   r  r   _AnyComparerr  r  rW   rX   rY   r  r  r  r  s   `      r"   r   zNonCallableMock.assert_any_call  s    	,
 %%eT6N&E&E&EFF&x;;EEEEE1DEEE 	HL$8$888">>tVLLO #o5  98r!   c                   	 | j         r7d|v rd|d          nd}|                                 |z   }t          |          |                    d          }|| j        d         v rt          di |S t          |           }t          |t                    r|t          v rt
          }nt          |t                    r)|t          v s| j        r|| j        v rt          }ndt
          }n\t          |t                    s:t          |t                    rt          }n*t          |t                    rt           }n|j        d         } |di |S )Nr)   rJ  r0  r  r+  r   r    )r  rj  rL   rt   rs   r
   r=   r<   r   _async_method_magicsr   _all_sync_magicsr*  CallableMixinr   r   r   rr   )rW   r  rj   r  r  _typeklasss          r"   r2  zNonCallableMock._get_child_mock  s`   	!  	,,2bLL(BvJ(((dI//11I=I +++FF;''	n555??r??"T

eY'' 	%I9M,M,MEE~.. 	%---& .+48J+J+J!!E=11 	%%!566 !E?33 M!$Eu{{r{{r!   Callsc                 L    	 | j         sdS d| dt          | j                    dS )Nr  
z: rJ  )r   r   )rW   r  s     r"   r  zNonCallableMock._calls_repr  s;    	  	2;F;;i88;;;;r!   )NNNNNNr  NFNFF)FFr;   )r   )r  ).r   r   r   r   ra  r  rH   r!  r$  r  "_NonCallableMock__get_return_value"_NonCallableMock__set_return_value"_NonCallableMock__return_value_docr   r   r7  r   r   r   r   r   r   !_NonCallableMock__get_side_effect!_NonCallableMock__set_side_effectr   r   r  r   rj  r   ry  r  r  r  r  r  r  r   r   r   r   r   r   r   r2  r  r    r!   r"   r   r     s       * EGGE  " >BEI<A*
 *
 *
 *
Z' ' ', , , , @E!&0 0 0 0>
 
 
; ; ; M8.0B.0 0L     X 
 "!(++F%%l33J$$[11I))*:;;N%%l33J	 	 	* * * (,.?@@K$u% $ $ $ $ $<% % %,- - -`# # #6
 
 
*N N N$$5 $5 $5N- - -$: : :
B B B B  B  6& & && & && & &> > >,	8 	8 	8* * * *Z   # # #L
< 
< 
< 
< 
< 
<r!   r   c                       e Zd Z	 d ZdS )r  c                 d    | D ],}t          d t          ||          D                       r dS -dS )Nc                      g | ]\  }}||k    S r    r    )r(   r  r  s      r"   rs  z-_AnyComparer.__contains__.<locals>.<listcomp>5  s1       $Hf F"  r!   TF)allzip)rW   itemr  s      r"   r   z_AnyComparer.__contains__2  s^     	 	E  (+D%(8(8      tt	
 ur!   N)r   r   r   r   r    r!   r"   r  r  -  s(            r!   r  c                     | | S t          |           r| S t          |           r| S 	 t          |           S # t          $ r | cY S w xY wr;   )r@   rl   r   r  r3   s    r"   r>  r>  =  sk    
{
S 
~~ 
Cyy    


s   7 AAc            
       H    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	dS )	r  Nr  c           
      x    || j         d<    t          t          |           j        |||||||	|
fi | || _        d S )Nr   )rs   r  r  rH   r   )rW   r   r   r   r   r)   r   r   r  r  r  rY   s               r"   rH   zCallableMixin.__init__N  sa     /;*+1M4((1%xK	
 	
39	
 	
 	

 'r!   c                    d S r;   r    r   s      r"   r^   zCallableMixin._mock_check_sigZ  s    r!   c                P     | j         |i |  | j        |i |  | j        |i |S r;   )r^   _increment_mock_call
_mock_callr   s      r"   rK   zCallableMixin.__call___  sK     	d-f---!!426222t////r!   c                     | j         |i |S r;   )_execute_mock_callr   s      r"   r  zCallableMixin._mock_callg  s    &t&7777r!   c                ~   d| _         | xj        dz  c_        t          ||fd          }|| _        | j                            |           | j        d u}| j        }| j        }|dk    }| j	                            t          d||f                     | j
        }||rB|j                            t          |||f                     |j        d u}|r|j        dz   |z   }t          |||f          }	|j	                            |	           |j        r|rd}
nd}
|j        dk    }|j        |
z   |z   }|j
        }|d S d S )NTr   r  r0  r  rJ  )r   r   r  r   r   r-  r   r   r   r   r   r   )rW   rX   rY   r  do_method_callsmethod_call_namemock_call_name	is_a_callr  this_mock_callrh  s              r"   r  z"CallableMixin._increment_mock_callj  s   1
 tVn$///""5))) +47? ,"d*	ub$%788999 +%  W(//7Gv6V0W0WXXX"-":$"F" W'2'='CFV'V$ #ND&#ABBN")).999) S CCC'6$>	!,!;c!AN!R &6K- %%%%%r!   c                ^   | j         }|Tt          |          r|t          |          s!t          |          }t          |          r|n ||i |}|t          ur|S | j        t          ur| j        S | j        r| j        j        t          ur| j        S | j         | j        |i |S | j        S r;   )	r   r@   rl   r   r   r   r   r   r  )rW   rX   rY   effectr~   s        r"   r  z CallableMixin._execute_mock_call  s     !V$$ 1v&& 1f (( ! L!  000W$$"'11$$ 	%4#6#C7#R#R$$'#4#T4V444  r!   )
r   r   r   r   rH   r^   rK   r  r  r  r    r!   r"   r  r  L  s         d$d!RT	' 	' 	' 	'  
0 0 08 8 8,7 ,7 ,7\! ! ! ! !r!   r  c                       e Zd ZdS )r   Nr   r    r!   r"   r   r     s        5 5r!   r   c                 @    d}|D ]}|| v rt          |d          d S )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    sN    2E  ?""PP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dS )_patchNFr  c
                   |)|t           urt          d          |t          d          |
st          |	           t          |          rt	          d|d|d          t          |          rt	          d|d|d          || _        || _        || _        || _        || _	        || _
        d| _        || _        || _        |	| _        g | _        d S )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   rN   r  r-   r   getterrj   r  new_callabler   create	has_localr   autospecrY   additional_patchers)rW   r  rj   r  r   r	  r   r  r  rY   r  s              r"   rH   z_patch.__init__   sV    #'!! B   # G    	*!&)))T"" 	A"@I @ @6:@ @ @A A A X&& 	P"OI O OAIO O OP P P "(	  #%   r!   c                     t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        	  	        }| j
        |_
        d | j        D             |_        |S )Nc                 6    g | ]}|                                 S r    )copy)r(   ps     r"   rs  z_patch.copy.<locals>.<listcomp>,  s-     '
 '
 '
AFFHH'
 '
 '
r!   )r  r  rj   r  r   r	  r   r  r  rY   attribute_namer  )rW   patchers     r"   r  z_patch.copy%  sq    K49KM4,dk
 

 "&!4'
 '
"6'
 '
 '
# r!   c                     t          |t                    r|                     |          S t          j        |          r|                     |          S |                     |          S r;   r.   r=   decorate_classr1   r   decorate_async_callabledecorate_callable)rW   r8   s     r"   rK   z_patch.__call__2  sc    dD!! 	-&&t,,,&t,, 	6//555%%d+++r!   c                    t          |          D ]q}|                    t          j                  s"t	          ||          }t          |d          sC|                                 }t          || ||                     r|S NrK   )r,  r'   r   TEST_PREFIXr0   r/   r  rh   )rW   r  r   
attr_valuer  s        r"   r  z_patch.decorate_class:  s    JJ 		6 		6D??5#455  --J:z22 iikkGE4!4!45555r!   c              #   T  K   g }t          j                    5 }|j        D ]W}|                    |          }|j        |                    |           4|j        t          u r|                    |           X|t          |          z  }||fV  d d d            d S # 1 swxY w Y   d S r;   )

contextlib	ExitStack	patchingsenter_contextr  updater  r   r-  ro   )rW   patchedrX   keywargs
extra_args
exit_stackpatchingrS  s           r"   decoration_helperz_patch.decoration_helperH  s     
!## 		#z#- + + ..x88*6OOC((((\W,,%%c***E*%%%D""""		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		# 		#s   A8BB!$B!c                      t          d          rj                                        S t                     fd             g_        S )Nr  c                  |                         | |          5 \  }} |i |cd d d            S # 1 swxY w Y   d S r;   r'  rX   r#  newargsnewkeywargsr8   r"  rW   s       r"   r"  z)_patch.decorate_callable.<locals>.patched]  s    ''(,(02 2 55Kg{tW4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   155r/   r  r-  r   rW   r8   r"  s   ``@r"   r  z_patch.decorate_callableW  sv    4%% 	N!!$'''K	t	5 	5 	5 	5 	5 	5 
	5 "Fr!   c                      t          d          rj                                        S t                     fd             g_        S )Nr  c                     K                        | |          5 \  }} |i | d {V cd d d            S # 1 swxY w Y   d S r;   r*  r+  s       r"   r"  z/_patch.decorate_async_callable.<locals>.patchedn  s      ''(,(02 2 ;5Kg{!T7:k::::::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   9= =r.  r/  s   ``@r"   r  z_patch.decorate_async_callableh  sv    4%% 	N!!$'''K	t	; 	; 	; 	; 	; 	; 
	; "Fr!   c                 `   |                                  }| j        }t          }d}	 |j        |         }d}n-# t          t
          f$ r t          ||t                    }Y nw xY w|t          v rt          |t                    rd| _
        | j
        s|t          u rt	          |d|          ||fS )NFTz does not have the attribute )r  rj   r   rs   rL   KeyErrorr0   	_builtinsr.   r   r	  )rW   targetr)   r}   locals        r"   get_originalz_patch.get_originaly  s    ~	t,H EE ) 	6 	6 	6vtW55HHH	6
 9FJ!?!?DK{ 	x722 7=vvttD   s   6 'A A c                     	 | 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          | 	                                \  }}|t          u r|d}	|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 }||}
nN||J|}||}t!          |          rd|v}nt#          |           }t          |          rt          }
n	|rt$          }
|||d<   |||d	<   t          |
t                    r&t'          |
t(                    r| j        r
| j        |d
<   |                    |            |
di |}|	r_t/          |          rP|}||}t!          |          st1          |          st$          }
|                    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/          |          rAt;          | j        d| j                  }t9          d| j        d|d| j        d|d	          t=          |f|| j        d|}n|rt          d          |}|| _        || _         tC          j"                    | _#        	 tI          | j        | j        |           | j%        ci }| j         t          u r
||| j%        <   | j&        D ]?}| j#        '                    |          }|j         t          u r|                    |           @|S |S #   | j(        tS          j*                     s Y d S 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=TruerK   r   r   r)   r0  r1  zBautospec creates the mock for you. Can't specify autospec and new.z%Can't use 'autospec' with create=Truer\  z: as the patch target has already been mocked out. [target=r_  r&  r   r]  r^  )r   _namez.Can't pass kwargs to a mock we aren't creatingr    )+r  r   r   r  rY   r  r  r5  r  r7  r   r.   r=   r5   r
   r   rp   r9  r   r<   r   rj   r!  r-   rv   rR  r   boolr   r0   r	   temp_originalis_localr  r  _exit_stackrh   r  r  r   __exit__sysexc_info)rW   r  r   r   r  rY   r  r}   r6  inheritKlass_kwargs	this_specnot_callablerb  new_attrr$  r&  rS  s                      r"   	__enter__z_patch.__enter__  s    "h	4=8T=$+&(kkmm 5==DuHuH 4=>>>!5L((TUUU++--%'>>h.Gt||t##'HD!t###HDT!!#8#7w&&#$GHHHh-- #"G|h 7 7|!!G'$!X%9 	' (II&& ;#-Y#>LL'/	':':#:L ++ 1%EE! 10E"&#&.
# 5$'' 15/2217;~1"&.NN6"""%""'""C 4,S11 4 !	' (I ++ 1&y1110EF####(5 $4SD $4 $4+2$4 $4 ! '!!(   7"" GHHHH~~H4# -- D&CDN C C#{C C5=C C CD D D !** D%dk:t{KK&CDN C C"C C#{C C5=C C CD D D
 "( BX(,B B:@B BCC 	N LMMM%%/11	DK:::".
8w&&7:Jt23 $ 8 / /H*88BBC|w.."))#...!!J	 4=#,..1   s   BO O O=c                 j   	 | j         r/| j        t          ur!t          | j        | j        | j                   ndt          | j        | j                   | j        sCt          | j        | j                  r	| j        dv r t          | j        | j        | j                   | `| ` | `| j	        }| `	 |j
        | S )N)rd   r   rf   __annotations__rg   )r<  r;  r   rh   r5  rj   r  r	  r/   r=  r>  )rW   r@  r%  s      r"   r>  z_patch.__exit__#  s    = 		IT/w>>DK1CDDDDDK000; IT^(L(L I += = = T^T5GHHHMK%
"z"H--r!   c                 d    	 |                                  }| j                            |            |S r;   )rG  _active_patchesr-  rW   r~   s     r"   startz_patch.start8  s0    ;!!##D)))r!   c                     	 	 | j                             |            n# t          $ r Y d S w xY w|                     d d d           S r;   )rK  r  rN   r>  r   s    r"   stopz_patch.stop?  s^    #	 ''---- 	 	 	44	 }}T4...s    
,,)r   r   r   r  rK  rH   r  rK   r  r  contextmanagerr'  r  r  r7  rG  r>  rM  rO  r    r!   r"   r  r    s        NO AF"& "& "& "& "&J
 
 
, , ,   # # #  "  "  0P P Pd. . .*  / / / / /r!   r  c                     	 |                      dd          \  } }n-# t          t          t          f$ r t          d|           w xY wt	          t
          j        |           |fS )NrJ  r   z,Need a valid target to patch. You supplied: )rsplitr  rN   rL   r   pkgutilresolve_name)r5  rj   s     r"   _get_targetrU  K  s    G"MM#q11		z>2 G G GE6EEG G 	GG 7'00);;s	    *Ar  c                     	 t                     t          u rt           d           fd}
t          |
||||||||	|
  
        S )Nz3 must be the actual object to be patched, not a strc                       S r;   r    r5  s   r"   rM  z_patch_object.<locals>.<lambda>j  s    V r!   r  )r=   strr  r  )r5  rj   r  r   r	  r   r  r  r  rY   r  s   `          r"   _patch_objectrZ  T  ss    
 F||sLLL
 
 	
 ^^^F	3f(L&   r!   c                     	 t                     t          u rt          t          j                   }n fd}|st          d          t          |                                          }|d         \  }	}
t          ||	|
|||||i 	  	        }|	|_	        |dd          D ]=\  }	}
t          ||	|
|||||i 	  	        }|	|_	        |j
                            |           >|S )Nc                       S r;   r    rX  s   r"   rM  z!_patch_multiple.<locals>.<lambda>  s     r!   z=Must supply at least one keyword argument with patch.multipler   r   )r=   rY  r   rS  rT  rN   rn   rP  r  r  r  r-  )r5  r   r	  r   r  r  rY   r  rP  rj   r  r  this_patchers   `            r"   _patch_multipler^  q  s   ( F||s-v66 
K
 
 	
   E1XNIs	3fh, G 'G) 9 9	3IsD&(lB
 
 '0##**<8888Nr!   c                Z    	 t          |           \  }	}
t          |	|
||||||||
  
        S )Nr  )rU  r  )r5  r  r   r	  r   r  r  r  rY   r  rj   s              r"   r   r     sJ    FN $F++FI	3f(L&   r!   c                   T    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dS )_patch_dictr    Fc                     || _         t          |          | _        | j                            |           || _        d | _        d S r;   )in_dictdictrC  r!  clear	_original)rW   rc  rC  re  rY   s        r"   rH   z_patch_dict.__init__  s>    6ll6"""
r!   c                     t          |t                    r|                     |          S t          j        |          r|                     |          S |                     |          S r;   r  )rW   fs     r"   rK   z_patch_dict.__call__  sc    a 	*&&q)))&q)) 	3//222%%a(((r!   c                 @     t                     fd            }|S )Nc                                                        	  | i |                                 S #                                  w xY wr;   ra  _unpatch_dictrX   r  rh  rW   s     r"   _innerz-_patch_dict.decorate_callable.<locals>._inner#  sV    %q$~"~~""$$$$""$$$$s	   3 A	r   rW   rh  rn  s   `` r"   r  z_patch_dict.decorate_callable"  9    	q	% 	% 	% 	% 	% 
	% r!   c                 @     t                     fd            }|S )Nc                     K                                     	  | i | d {V 	                                  S #                                  w xY wr;   rk  rm  s     r"   rn  z3_patch_dict.decorate_async_callable.<locals>._inner/  so      %Q^^^+++++++""$$$$""$$$$s	   < Aro  rp  s   `` r"   r  z#_patch_dict.decorate_async_callable.  rq  r!   c                     t          |          D ]}}t          ||          }|                    t          j                  rLt          |d          r<t          | j        | j        | j	                  } ||          }t          |||           ~|S r  )r,  r0   r'   r   r  r/   ra  rc  rC  re  rh   )rW   r  r   r  	decorator	decorateds         r"   r  z_patch_dict.decorate_class:  s    JJ 	0 	0D --J 122 0Z000'dk4:NN	%Ij11	tY///r!   c                 :    	 |                                   | j        S r;   )ra  rc  r   s    r"   rG  z_patch_dict.__enter__E  s    |r!   c                    | j         }t          | j        t                    rt	          j        | j                  | _        | j        }| j        }	 |                                }n"# t          $ r i }|D ]}||         ||<   Y nw xY w|| _	        |rt          |           	 |                    |           d S # t          $ r |D ]}||         ||<   Y d S w xY wr;   )rC  r.   rc  rY  rS  rT  re  r  rL   rf  _clear_dictr!  )rW   rC  rc  re  r}   rN  s         r"   ra  z_patch_dict._patch_dictK  s!   dlC(( 	>"/==DL,
	-||~~HH 	- 	- 	- H - - '- -		- " 	!   	+NN6""""" 	+ 	+ 	+ + +%c{+ + +	+s$   A$ $BBB6 6CCc                     | j         }| j        }t          |           	 |                    |           d S # t          $ r |D ]}||         ||<   Y d S w xY wr;   )rc  rf  ry  r!  rL   )rW   rc  r}   rN  s       r"   rl  z_patch_dict._unpatch_dictg  s    ,>G	-NN8$$$$$ 	- 	- 	- - -'}- - -	-s   6 AAc                 >    	 | j         |                                  dS NF)rf  rl  )rW   rX   s     r"   r>  z_patch_dict.__exit__t  s$    >%   ur!   c                 n    	 |                                  }t          j                            |            |S r;   )rG  r  rK  r-  rL  s     r"   rM  z_patch_dict.start{  s0    ;!!%%d+++r!   c                     	 	 t           j                            |            n# t          $ r Y d S w xY w|                     d d d           S r;   )r  rK  r  rN   r>  r   s    r"   rO  z_patch_dict.stop  s^    #	"))$//// 	 	 	44	 }}T4...s   # 
11N)r    F)r   r   r   rH   rK   r  r  r  rG  ra  rl  r>  rM  rO  r    r!   r"   ra  ra    s        8   ) ) )	 	 		 	 	    + + +8
- 
- 
-    / / / / /r!   ra  c                     	 |                                   d S # t          $ r t          |           }|D ]}| |= Y d S w xY wr;   )re  rL   rn   )rc  keysrN  s      r"   ry  ry    se       G}} 	 	C	 	 	s    !==c                  h    	 t          t          j                  D ]} |                                  d S r;   )rd  r  rK  rO  )r   s    r"   _patch_stopallr    s8    A&01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  V  
dS )zi%sNr    r(   ns     r"   r  r    s&      77519777777r!   c              #       K   | ]	}d |z  V  
dS )zr%sNr    r  s     r"   r  r    s&      55q555555r!   >   ry  __get____set__r   
__delete__
__format__r   __missing____getstate____reversed____setstate____getformat____reduce_ex____getnewargs____subclasses____getinitargs____getnewargs_ex__c                 "    	 fd}| |_         |S )Nc                     | g|R i |S r;   r    )rW   rX   r  r8   s      r"   methodz_get_method.<locals>.method  s#    tD&4&&&2&&&r!   )r   )r)   r8   r  s    ` r"   r  r    s+    @' ' ' ' 'FOMr!   c                     h | ]}d |z  S )r   r    )r(   r  s     r"   r*   r*     s*        Hv  r!   >   	__aexit__	__anext__
__aenter__	__aiter__>   __del__r  rH   r   __prepare__r  __instancecheck____subclasscheck__c                 6    t                               |           S r;   )rx  __hash__r   s    r"   rM  rM    s    V__T22 r!   c                 6    t                               |           S r;   )rx  __str__r   s    r"   rM  rM    s    FNN400 r!   c                 6    t                               |           S r;   )rx  
__sizeof__r   s    r"   rM  rM    s    v0066 r!   c                 x    t          |           j         d|                                  dt          |            S )N/)r=   r   rj  rB  r   s    r"   rM  rM    s;    $t**"5^^8O8O8Q8Q^^TVW[T\T\^^ r!   )r  r  r  
__fspath__r   y              ?g      ?)__lt____gt____le____ge____int__r   __len__r>  __complex__	__float____bool__	__index__r  c                       fd}|S )Nc                 L    j         j        }|t          ur|S | u rdS t          S rG   )__eq__r   r   NotImplemented)otherret_valrW   s     r"   r  z_get_eq.<locals>.__eq__  s1    +0'!!N5==4r!   r    )rW   r  s   ` r"   _get_eqr    s#         Mr!   c                       fd}|S )Nc                 R    j         j        t          urt          S | u rdS t          S r|  )__ne__r   r   r  )r  rW   s    r"   r  z_get_ne.<locals>.__ne__  s,    ;)88N5==5r!   r    )rW   r  s   ` r"   _get_ner    s#         Mr!   c                       fd}|S )Nc                  j    j         j        } | t          u rt          g           S t          |           S r;   )__iter__r   r   r   r  rW   s    r"   r  z_get_iter.<locals>.__iter__  s1    -2g88O G}}r!   r    )rW   r  s   ` r"   	_get_iterr    s#         Or!   c                       fd}|S )Nc                      j         j        } | t          u rt          t	          g                     S t          t	          |                     S r;   )r  r   r   _AsyncIteratorr   r  s    r"   r  z"_get_async_iter.<locals>.__aiter__  s@    .3g!$r((+++d7mm,,,r!   r    )rW   r  s   ` r"   _get_async_iterr    s$    - - - - -
 r!   )r  r  r  r  c                 &   t                               |t                    }|t          ur	||_        d S t                              |          }| ||           }||_        d S t
                              |          }| ||           |_        d S d S r;   )_return_valuesrt   r   r   _calculate_return_value_side_effect_methodsr   )rC   r  r)   fixedreturn_calculatorr   side_effectors          r"   _set_return_valuer  (  s    tW--EG#/33D99$((..*(,,T22M *]400 ! r!   c                       e Zd Zd Zd ZdS )
MagicMixinc                    |                                    t          t          |           j        |i | |                                   d S r;   )_mock_set_magicsr  r  rH   rW   rX   r  s      r"   rH   zMagicMixin.__init__;  sN    .J%%.;;;;r!   c           	         t           t          z  }|}t          | dd           X|                    | j                  }t                      }||z
  }|D ](}|t          |           j        v rt          | |           )|t          t          |           j                  z
  }t          |           }|D ]!}t          ||t          ||                      "d S )Nr*  )_magicsr  r0   intersectionr*  rz  r=   rs   r  rh   
MagicProxy)rW   orig_magicsthese_magicsremove_magicsrL  r  s         r"   r  zMagicMixin._mock_set_magicsA  s     44"4$//;&33D4FGGLEEM',6M& ) )DJJ///D%((( $c$t***=&>&>>T

! 	; 	;EE5*UD"9"9::::	; 	;r!   N)r   r   r   rH   r  r    r!   r"   r  r  :  s2             ; ; ; ; ;r!   r  c                       e Zd Z	 ddZdS )r   Fc                 \    	 |                      ||           |                                  d S r;   r  r  r#  s      r"   r$  z"NonCallableMagicMock.mock_add_spec[  8    	N
 	D(+++r!   Nr  r   r   r   r$  r    r!   r"   r   r   Y  s+        7           r!   r   c                       e Zd Zd ZdS )AsyncMagicMixinc                    |                                    t          t          |           j        |i | |                                   d S r;   )r  r  r  rH   r  s      r"   rH   zAsyncMagicMixin.__init__f  sN    3OT**3T@R@@@r!   Nr   r   r   rH   r    r!   r"   r  r  e  s#                 r!   r  c                       e Zd Z	 ddZdS )r   Fc                 \    	 |                      ||           |                                  d S r;   r  r#  s      r"   r$  zMagicMock.mock_add_specv  r  r!   Nr  r  r    r!   r"   r   r   k  s-        	           r!   r   c                   "    e Zd Zd Zd ZddZdS )r  c                 "    || _         || _        d S r;   r)   r   )rW   r)   r   s      r"   rH   zMagicProxy.__init__  s    	r!   c                     | j         }| j        }|                    |||          }t          |||           t	          |||           |S )N)r)   r  r  )r)   r   r2  rh   r  )rW   rL  r   ms       r"   create_mockzMagicProxy.create_mock  sZ    	""/5 # 7 7q!!!&!U+++r!   Nc                 *    |                                  S r;   )r  )rW   r4   r  s      r"   r  zMagicProxy.__get__  s    !!!r!   r;   )r   r   r   rH   r  r  r    r!   r"   r  r    sF            " " " " " "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
        t          j        z   t          j        z   |_        d|_        d|_        d|_        d|_        || j        d<   d	| j        d
<   t%                      | j        d<   i | j        d<   d | j        d<   d S )Nr   r   _mock_await_count_mock_await_args_mock_await_args_listr   )rX   rY   r7   r
   r   rf   rg   rI  )superrH   r   r   r   rs   r   r   r   r1   CO_COROUTINE
CO_VARARGSCO_VARKEYWORDSco_flagsco_argcountco_varnamesco_posonlyargcountco_kwonlyargcountro   )rW   rX   rY   	code_mockr7  s       r"   rH   zAsyncMockMixin.__init__  s    $)&))) *1);)Io&-.)*,0()1:-.#X666	  !$% 	
 !"	 2	'(	$&'	#$-j!$/j!(-n%*,&'+/'(((r!   c                `  K   t          ||fd          }| xj        dz  c_        || _        | j                            |           | j        }|t          |          r|t          |          s8	 t          |          }n# t          $ r t          w xY wt          |          r|n&t          |          r ||i | d {V }n ||i |}|t          ur|S | j        t          ur| j        S | j        4t          | j                  r | j        |i | d {V S  | j        |i |S | j        S )NTr  r   )r  r   r   r   r-  r   r@   rl   r   StopIterationStopAsyncIterationr   r   r   r   r  )rW   rX   rY   r  r  r~   s         r"   r  z!AsyncMockMixin._execute_mock_call  s      tVn$///A##E***!V$$ 1v&& 1-!&\\FF$ - - - -,- !(( ! L!$V,, 1%vt6v66666666000W$$"'11$$'"4#344 ?-T-t>v>>>>>>>>>#4#T4V444  s   1B Bc                 V    	 | j         dk    rd| j        pd d}t          |          d S )Nr   	Expected rC   z to have been awaited.r   r   r  r  s     r"   r   zAsyncMockMixin.assert_awaited  sD    	 q  Odo7OOOC %%% ! r!   c                 f    	 | j         dk    s$d| j        pd d| j          d}t          |          d S Nr   r  rC   z$ to have been awaited once. Awaited r  r  r  s     r"   r   z"AsyncMockMixin.assert_awaited_once  s\    	 1$$9t8& 9 9#/9 9 9C %%% %$r!   c                j    	  j         )                               }t          d| d           fd}                     t	          fd                    }                      j                   }||k    r1t          |t                    r|nd }t           |                      |d S )NzExpected await: z
Not awaitedc                  8                         d          } | S )Nawait)r  r  r  s    r"   r  z:AsyncMockMixin.assert_awaited_with.<locals>._error_message  s"    33D&3QQCJr!   Tr  )r   r  r  r  r  r.   r  )rW   rX   rY   r  r  r  r  s   ```    r"   r   z"AsyncMockMixin.assert_awaited_with  s    	 ?"77fEEH !KH!K!K!KLLL	 	 	 	 	 	 	 %%eT6N&E&E&EFF##DO44X *8Y ? ?IHHTE !1!122= r!   c                |    	 | j         dk    s$d| j        pd d| j          d}t          |           | j        |i |S r  )r   r   r  r   r  s       r"   r   z'AsyncMockMixin.assert_awaited_once_with  sl    	 1$$9t8& 9 9#/9 9 9C %%%'t'8888r!   c                &    	                       t          ||fd                    }t          |t                    r|nd } fd j        D             }|s|t          |          vr)                     ||          }t          d|z            |d S )NTr  c                 :    g | ]}                     |          S r    r  r  s     r"   rs  z3AsyncMockMixin.assert_any_await.<locals>.<listcomp>	  s'    FFFA$$$Q''FFFr!   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&E&EFF&x;;EFFFF1EFFF 	HL$8$888">>tVLLO $6  98r!   Fc                 ,    	  fd|D             }t          d |D             d           }t           fd j        D                       }|sT||vrN|d}nd                    d |D                       }t	          | dt          |           d j                   |d S t          |          }g }|D ]=}	 |                    |           # t          $ r |                    |           Y :w xY w|r t	          t          |          d	          |d S )
Nc                 :    g | ]}                     |          S r    r  r  s     r"   rs  z4AsyncMockMixin.assert_has_awaits.<locals>.<listcomp>#	  r  r!   c              3   D   K   | ]}t          |t                    |V  d S r;   r  ru  s     r"   r  z3AsyncMockMixin.assert_has_awaits.<locals>.<genexpr>$	  r  r!   c              3   B   K   | ]}                     |          V  d S r;   r  r  s     r"   r  z3AsyncMockMixin.assert_has_awaits.<locals>.<genexpr>%	  s1      SSt11!44SSSSSSr!   zAwaits not found.z,Error processing expected awaits.
Errors: {}c                 @    g | ]}t          |t                    r|nd S r;   r  ru  s     r"   rs  z4AsyncMockMixin.assert_has_awaits.<locals>.<listcomp>-	  r  r!   r  z	
Actual: z not all found in await list)
r   r   r   r  r  rn   r  rN   r-  ro   )	rW   r  r  r  r  
all_awaitsr  r  r  s	   `        r"   r   z AsyncMockMixin.assert_has_awaits	  s   
	 :9995999FFFFFMMSSSSd>RSSSSS
 	z))=1GG ,-3V$7 $7-5$7 $7 $7.8 .8  % 6 6!*5!1!16 6#36 6  	
 F*%%
	 	' 	'D'!!$'''' ' ' '  &&&&&' 	 49)4D4D4D4DF 	 	s   7CC/.C/c                 f    	 | j         dk    r$d| j        pd d| j          d}t          |          d S )Nr   r  rC   z# to not have been awaited. Awaited r  r  r  s     r"   r   z!AsyncMockMixin.assert_not_awaitedC	  s\    	 q  9t8& 9 9#/9 9 9C %%% ! r!   c                ~    	  t                      j        |i | d| _        d | _        t	                      | _        d S Nr   )r  r   r   r   r   r   )rW   rX   rY   r7  s      r"   r   zAsyncMockMixin.reset_mockL	  sG    	 	D+F+++({{r!   r  )r   r   r   r   r   r   r   rH   r  r   r   r   r   r   r   r   r   __classcell__)r7  s   @r"   r   r     s       &&}55K%%l33J**+<==O0 0 0 0 08&! &! &!P& & && & &> > >$	9 	9 	9  * * * *X& & &+ + + + + + + + +r!   r   c                       e Zd ZdS )r
   Nr   r    r!   r"   r
   r
   V	  s        ' 'r!   r
   c                   "    e Zd Z	 d Zd Zd ZdS )_ANYc                     dS rG   r    rW   r  s     r"   r  z_ANY.__eq__	  s    tr!   c                     dS r|  r    r  s     r"   r  z_ANY.__ne__	  s    ur!   c                     dS )Nz<ANY>r    r   s    r"   r   z_ANY.__repr__	  s    wr!   N)r   r   r   r  r  r   r    r!   r"   r  r  	  sD        8        r!   r  c                     d| z  }d}d                     d |D                       }d                     d |                                D                       }|r|}|r|r|dz  }||z  }||z  S )Nz%s(%%s)r  z, c                 ,    g | ]}t          |          S r    )repr)r(   rS  s     r"   rs  z*_format_call_signature.<locals>.<listcomp>	  s    7773T#YY777r!   c                 "    g | ]\  }}|d |S )=r    )r(   rN  r   s      r"   rs  z*_format_call_signature.<locals>.<listcomp>	  s4       #-3333  r!   )re  rP  )r)   rX   rY   r  formatted_argsargs_stringkwargs_strings          r"   r  r  	  s    $GN))77$77788KII  17    M  %$ ( 	#d"N-'^##r!   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dS )r  r    r  NFTc                    d}i }t          |          }|dk    r|\  }}}n~|dk    r<|\  }	}
t          |	t                    r|	}t          |
t                    r|
}nD|
}nA|	|
}}n<|dk    r6|\  }t          |t                    r|}nt          |t                    r|}n|}|rt                              | ||f          S t                              | |||f          S )Nr       r   r   )r   r.   rY  ro   r  )r  r   r)   r   r  	from_kallrX   rY   _lenfirstseconds              r"   r  z_Call.__new__	  s   5zz199!&D$QYY!ME6%%% -fe,, $!DD#FF$ffQYYFE%%% E5))  	6==tVn555}}S4v"6777r!   c                 0    || _         || _        || _        d S r;   )r   r   _mock_from_kall)rW   r   r)   r   r  r*  s         r"   rH   z_Call.__init__	  s    "(r!   c                 r   	 t          |          }n# t          $ r
 t          cY S w xY wd}t          |           dk    r| \  }}n| \  }}}t          | dd           r#t          |dd           r| j        |j        k    rdS d}|dk    rdi }}n|dk    r|\  }}}n|dk    r?|\  }	t          |	t                    r|	}i }nit          |	t                    r|	}di }}nMd}|	}nH|dk    r@|\  }
}t          |
t                    r!|
}t          |t                    r|i }}nd|}}n|
|}}ndS |r||k    rdS ||f||fk    S )	Nr  r   r   Fr   r    r)  r   )r   r  r  r0   r   r.   ro   rY  )rW   r  	len_other	self_name	self_argsself_kwargs
other_name
other_argsother_kwargsr   r,  r-  s               r"   r  z_Call.__eq__	  s   	"E

II 	" 	" 	"!!!!	" 	t99>>%)"I{{04-Iy+D.$// 	GE>SW4X4X 	%);;;5
>>')2JJ!^^380J
LL!^^FE%'' %"
!E3'' %"
+-rL


$!^^!ME6%%% 9"
fe,, :/5rJJ/16JJ+0&L

5 	y005 L)i-EEEs    &&c                    | j         t          d||fd          S | j         dz   }t          | j         ||f||           S )Nr  r0  r   r  r   r  r  s       r"   rK   z_Call.__call__
  sN    ?""dF+$7777%dotV44MMMMr!   c                 n    | j         t          |d          S | j         d|}t          || d          S )NF)r)   r*  rJ  )r)   r   r*  r9  )rW   r   r)   s      r"   r   z_Call.__getattr__
  sD    ?"de4444///440$tu====r!   c                 b    |t           j        v rt          t                               | |          S r;   )ro   rs   rL   __getattribute__)rW   r   s     r"   r<  z_Call.__getattribute__$
  s+    5>!!  %%dD111r!   c                 H    t          |           dk    r| \  }}n| \  }}}||fS )Nr   )r   r  s       r"   _get_call_argumentsz_Call._get_call_arguments*
  s2    t99>>LD&&!%D$V|r!   c                 6    |                                  d         S r  r>  r   s    r"   rX   z
_Call.args2
      ''))!,,r!   c                 6    |                                  d         S )Nr   r@  r   s    r"   rY   z_Call.kwargs6
  rA  r!   c                    | j         s%| j        pd}|                    d          rd|z  }|S t          |           dk    rd}| \  }}n+| \  }}}|sd}n |                    d          sd|z  }nd|z  }t	          |||          S )Nr   r0  zcall%sr   zcall.%s)r/  r   r'   r   r  )rW   r)   rX   rY   s       r"   r   z_Call.__repr__:
  s    # 	?,fDt$$ '$Kt99>>DLD&&!%D$ '__T** ' 4'$%dD&999r!   c                     	 g }| }|%|j         r|                    |           |j        }|%t          t	          |                    S r;   )r/  r-  r   r   rd  )rW   valsthings      r"   	call_listz_Call.call_listO
  s\    	 $ #E"""&E  $(((r!   )r    r  NFT)r    NNFT)r   r   r   r  rH   r  rx  r  rK   r   r<  r>  r   rX   rY   r   rG  r    r!   r"   r  r  	  s       $ :?8 8 8 8@ >C) ) ) )2F 2F 2Fj ]FN N N> > >2 2 2   - - X- - - X-: : :*
) 
) 
) 
) 
)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          |           |	                    |           t          }
t          j
        |           ri }	nL|r|rt          d          t          }
n1t          |           st          }
n|r|rt          |           st          }
|	                    d|          }|}|d	} |
d||||d
|	}t          | t"                    r"t%          ||           }|rt'          |           nt)          | |||           ||s
||j        |<   |                    d          }|r |sd|vrt/          | |dd||          |_        t3          |           D ];}t5          |          r	 t7          | |          }n# t8          $ r Y 1w xY wd|i}|r&t;          ||          r|                    |           |rd|i}t          |t"                    st=          |||||          }||j        |<   n{|}t          | t"                    r|j        }tA          | ||          }||d<   tC          |          rt          }nt          } |d||||d|}||j        |<   t)          |||           t          |t"                    rtE          |||           =|S )Nz'Cannot autospec a Mock object. [object=r&  r   r   Tr  zJInstance can not be True when create_autospec is mocking an async functionr)   r  )r   r  r  r)   r   r   r0  )ra   r9  r   r   ro  r  )r   r)   r  r  )r`   r    )#rp   r=   r.   r-   r   r9   r  r!  r   r1   isdatadescriptorr  r
   rl   r   rv   rR  rD   r   r   rb   r   rt   r	   r   r,  r   r0   rL   r/   rD  rC   
_must_skipr   rh   )r   r   ra   r   r9  r  rY   is_typeis_async_funcrC  rB  r  rC   wrappedrL  r}   r  r   r`   child_klasss                       r"   r	   r	   _
  s#   ,* ~~  Dzzt$$G 5  4*. 4  4  4 5 5 	5"4((MtnG t$	 ,8 ,'+#$ &f%%%NN6E%% % 	 % 	?  > ? ? ?t__ %$	 %X %&8&>&> %$KK&&EI	5 (W	( (&( (D $&& 8 dD)) 	$d###tWh7778(,u%jj!!G ;x ;N&$@$@+D(T2629; ; ; T 3& 3&U 		tU++HH 	 	 	H	 (# 	*ww.. 	*MMM))) 	, (+F(M22 	AXxuhGGC),D&&F$.. #"488I"+F;"8,, (''+ (V%5*0( ( &( (C *-D&Xsi@@@@ c=)) 	&D%%%%Ks   (G99
HHc                 F   	 t          | t                    s|t          | di           v rdS | j        } | j        D ]f}|j                            |t                    }|t          u r,t          |t          t          f          r dS t          |t                    r|c S  dS |S )Nrs   F)r.   r=   r0   r7  rr   rs   rt   r   rJ   rI   rD   )r   rL  rK  r  r~   s        r"   rJ  rJ  
  s     dD!! GD*b11115~  ##E733Wf|[9:: 	55.. 	 NNN55 Nr!   c                       e Zd Z	 	 ddZdS )rD  FNc                 Z    || _         || _        || _        || _        || _        || _        d S r;   )r   idsr   r   ra   r)   )rW   r   r   r   r)   rR  ra   s          r"   rH   z_SpecState.__init__  s0    	  			r!   )FNNNFr  r    r!   r"   rD  rD    s.        48/4     r!   rD  c                 |    t          | t                    rt          j        |           S t          j        |           S r;   )r.   bytesioBytesIOStringIO)	read_datas    r"   
_to_streamrY  %  s4    )U## &z)$$${9%%%r!   r  c           	      X  	
 	 t                    }|d g

fd}
fd}
fd	
fd
fd}t          ddd l}t          t	          t          |j                                                t	          t          |j                                                at          2d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                  Z    j         j        j         j        S  d         j         | i |S r  )	readlinesr   rX   rY   _statehandles     r"   _readlines_side_effectz)mock_open.<locals>._readlines_side_effect;  s7    (4#00"vay"D3F333r!   c                  Z    j         j        j         j        S  d         j         | i |S r  )readr   r]  s     r"   _read_side_effectz$mock_open.<locals>._read_side_effect@  s4    ;#/;++vay~t.v...r!   c               ?   V   K                E d {V  	  d         j         | i |V  NTr   )readline)rX   rY   _iter_side_effectr^  s     r"   _readline_side_effectz(mock_open.<locals>._readline_side_effectE  sT      $$&&&&&&&&&	6$&)$d5f55555	6r!   c               3   b   K   j         j        	 j         j        V  d         D ]} | V  d S re  )rf  r   )liner^  r_  s    r"   rg  z$mock_open.<locals>._iter_side_effectJ  sU      ?'33o222231I 	 	DJJJJ	 	r!   c                  ^    j         j        j         j        S t           d                   S r  )rf  r   r   )r^  r_  s   r"   _next_side_effectz$mock_open.<locals>._next_side_effectQ  s)    ?'3?//F1Ir!   r   open)r)   r   )r   r   c                      t                    d<   j        j        d         k    r             d<   d         j        _        t          S )Nr   r   )rY  rf  r   r   )rX   rY   rh  r^  r_  rX  s     r"   
reset_datazmock_open.<locals>.reset_dataq  sM    y))q	?&&)33--//F1I*0)FO'r!   )rY  	file_spec_iorn   rz  r,  TextIOWrapperunionrV  	open_specrm  r   rG  r   writerb  rf  r\  r   r  r   )rC   rX  
_read_datar`  rc  rl  rq  ro  rg  rh  r^  r_  s    `      @@@@r"   r   r   ,  s   
 I&&J$F4 4 4 4 4 4
/ / / / / /
6 6 6 6 6 6
           


S!23344::3s3;?O?O;P;PQQRR	 


S]]++,,	|f9555I&&&F$*F! $FL#FK#'FO $(F!/FK%%''F1I"()FO#9F "3FO"3FO        "DDKr!   c                   $    e Zd Z	 d ZddZd ZdS )r   c                    t          di |S )Nr    )r   )rW   rY   s     r"   r2  zPropertyMock._get_child_mock  s    ""6"""r!   Nc                      |             S r;   r    )rW   r4   obj_types      r"   r  zPropertyMock.__get__  s    tvvr!   c                      | |           d S r;   r    )rW   r4   rT  s      r"   r  zPropertyMock.__set__  s    S					r!   r;   )r   r   r   r2  r  r  r    r!   r"   r   r   ~  sK        # # #       r!   r   c                 6   	 d| _         t          |           D ]}	 t          | |          }n# t          $ r Y  w xY wt	          |t
                    s:t	          |j                            |          t                    rh|j	        | u rt          |           d S rG   )r  r,  r0   rL   r.   r   r   rt   rD  r   r   )rC   r   r  s      r"   r   r     s     DD		 
 
	d##AA 	 	 	H	!_-- 	a&**400*== 	%%GGG
 
s   ,
99c                       e Zd Z	 d Zd ZdS )r  c                 t    || _         t          t                    }t          j        |_        || j        d<   d S )Nr  r7   )iteratorr   r   r1   CO_ITERABLE_COROUTINEr  rs   )rW   r  r  s      r"   rH   z_AsyncIterator.__init__  s6     #X666	$:	$-j!!!r!   c                 ^   K   	 t          | j                  S # t          $ r Y nw xY wt          r;   )r   r  r  r  r   s    r"   r  z_AsyncIterator.__anext__  sA      	&&& 	 	 	D	  s    
%%N)r   r   r   rH   r  r    r!   r"   r  r    s7        . . .! ! ! ! !r!   r  r  )NFNNN)FFNNr  )__all__r   r  rU  r1   r   r?  builtinsrS  r   typesr   r   r   unittest.utilr   	functoolsr   r   	threadingr   r  r   r,  r4  r   r  r  r5   r9   r-   r@   rE   rR   rb   r]   rl   rp   rv   r   r|   r   r   rx  r   r   r   r   MISSINGr  DELETEDrE  r   r   rn   r   r   r   r   r   rM   rH   r  r  r>  r  r   r  r  rU  rZ  r^  r   ra  ry  r  rd  multiplestopallr  magic_methodsnumericsre  rQ  inplaceright_non_defaultsr  r  r  _sync_async_magics_async_magicsr  r`  r  r  r  r  r  r  r  r  r  r  r  r   r  r   r  r   r
   r  r   r  ro   r  r   r	   rJ  rD  r=   r  rD   rp  rt  rY  r   r   r   r  r    r!   r"   <module>r     s5
  &      				   



   ' ' ' ' ' ' 2 2 2 2 2 2 2 2 2 2 # # # # # # $ $ $ $ $ $ $ $      C C C C Cy C C C IHcc(mmHHH	
 @ @ @  2 2 2         F	# 	# 	# 	#
 
 
  & & &     6." ." ."b> > >6) ) )	) 	) 	) 	) 	)f 	) 	) 	)        9;;

       &* * * * * * * *(  6           6   N
< N
< N
< N
< N
<d N
< N
< N
<b Go677	    4      g! g! g! g! g!D g! g! g!V6 6 6 6 6=/ 6 6 6v  L/ L/ L/ L/ L/V L/ L/ L/`
< < <  'Ttd &+    : ?C04. . . .d $u4OCHO O O O OdV/ V/ V/ V/ V/& V/ V/ V/r     
   " K 	 ((77hnn&6&6777
7
755HNN$4$455555     HHmXw677==??   @?? !] $'99]* .    320066^^	    "          	  1 1 1$; ; ; ; ; ; ; ;>	  	  	  	  	 : 	  	  	          j               
D      ," " " " " " " "$@+ @+ @+ @+ @+T @+ @+ @+F( ( ( ( ( ( ( (V
 
 
 
 
6 
 
 
 dff$ $ $$v) v) v) v) v)E v) v) v)r uu CGO*/O O O O Od  8	 	 	 	 	 	 	 	 	DD	 		& & &O O O Od    4   $  0! ! ! ! ! ! ! ! ! !r!   