
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a€ ã                   @   sÄ  d Z 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	m
Z
mZmZ ddlmZ ddlmZmZ dd„ eeƒD ƒZd	ZeZd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd¾dd„Zdd„ Zdd„ Zdd„ Z dd „ Z!d¿d!d"„Z"d#d$„ Z#d%d&„ Z$d'd(„ Z%G d)d*„ d*e&ƒZ'G d+d,„ d,e&ƒZ(e(ƒ Z)e)j*Z*e)j+Z,e)j-Z.d-d.d/d0d1d2d3d4hZ/d5d6„ Z0G d7d8„ d8e1ƒZ2d9d:„ Z3G d;d<„ d<e&ƒZ4G d=d>„ d>e&ƒZ5G d?d@„ d@e5ƒZ6dAdB„ Z7G dCdD„ dDe5ƒZ8G dEdF„ dFe8e6ƒZ9dGdH„ Z:dIdJ„ Z;G dKdL„ dLe&ƒZ<dMdN„ Z=e*dddddfdOdP„Z>dÀdQdR„Z?e*dddddfdSdT„Z@G dUdV„ dVe&ƒZAdWdX„ ZBdYdZ„ ZCe>e@_&eAe@_De?e@_EeCe@_Fd[e@_Gd\ZHd]ZId^ Jd_d`„ eI K¡ D ƒ¡ZLd^ Jdad`„ eI K¡ D ƒ¡ZMdbdcdddedfdgdhdidjdkdldmdndodpdqdrdshZNdtdu„ ZOdvd„ d^ JeHeIeLeMg¡ K¡ D ƒZPdwdxdyhZQdzhZReQeRB ZSePeNB ZTeTeSB ZUd{d|d}d~dd€d�d‚hZVdƒd„„ d…d„„ d†d„„ d‡d„„ dˆœZWeXeXeXeXd‰ddddŠd‹d	d‰ddŒœZYd�dŽ„ ZZd�d�„ Z[d‘d’„ Z\d“d”„ Z]eZe[e\e]d•œZ^d–d—„ Z_G d˜d™„ d™e5ƒZ`G dšd›„ d›e`e6ƒZaG dœd�„ d�e`ƒZbG dždŸ„ dŸe`e9ƒZcG d d¡„ d¡e5ƒZdG d¢d£„ d£e5ƒZeG d¤d¥„ d¥eeebe9ƒZfG d¦d§„ d§e&ƒZgegƒ Zhd¨d©„ ZiG dªd«„ d«ejƒZkekdd¬�ZldÁd­d®„Zmd¯d°„ ZnG d±d²„ d²e&ƒZoepemƒepehjqƒfZrdasd³d´„ ZtdÂd¶d·„ZuG d¸d¹„ d¹e9ƒZvdºd»„ ZwG d¼d½„ d½ƒZxdS )Ã)ÚMockÚ	MagicMockÚpatchÚsentinelÚDEFAULTÚANYÚcallÚcreate_autospecÚ	AsyncMockÚ
FILTER_DIRÚNonCallableMockÚNonCallableMagicMockÚ	mock_openÚPropertyMockÚsealz1.0é    N)ÚCodeTypeÚ
ModuleTypeÚ
MethodType)Ú	safe_repr)ÚwrapsÚpartialc                 C   s   h | ]}|  d ¡s|’qS ©Ú_©Ú
startswith)Ú.0Úname© r   ú2/opt/alt/python38/lib64/python3.8/unittest/mock.pyÚ	<setcomp>(   s     
 r   Tc                 C   s>   t | ƒrt| tƒsdS t| dƒr*t| dƒ} t | ¡p<t | ¡S )NFÚ__func__)	Ú_is_instance_mockÚ
isinstancer	   ÚhasattrÚgetattrÚasyncioÚiscoroutinefunctionÚinspectZisawaitable©Úobjr   r   r   Ú_is_async_obj0   s
    

r*   c                 C   s   t | dd ƒrt | ¡S dS d S )NÚ__code__F)r$   r%   r&   ©Úfuncr   r   r   Ú_is_async_func8   s    
r.   c                 C   s   t t| ƒtƒS ©N)Ú
issubclassÚtyper   r(   r   r   r   r!   ?   s    r!   c                 C   s   t | tƒpt | tƒot| tƒS r/   )r"   ÚBaseExceptionr1   r0   r(   r   r   r   Ú_is_exceptionE   s    
þr3   c                 C   s"   t | tƒrt| dƒr| jS | S d S ©NÚmock)r"   ÚFunctionTypesr#   r5   r(   r   r   r   Ú_extract_mockL   s    r7   c                 C   s†   t | tƒr|s| j} d}n,t | tƒsFz
| j} W n tk
rD   Y d S X |rVt| d ƒ}n| }z| t |¡fW S  t	k
r€   Y d S X d S ©NT)
r"   r1   Ú__init__r6   Ú__call__ÚAttributeErrorr   r'   Ú	signatureÚ
ValueError)r-   Zas_instanceZeat_selfZsig_funcr   r   r   Ú_get_signature_objectU   s    

r>   Fc                    sN   t | ||ƒ‰ ˆ d krd S ˆ \} ‰ ‡ fdd„}t| |ƒ |t|ƒ_ˆ t|ƒ_d S )Nc                   s   ˆ j ||Ž d S r/   ©Úbind©ÚselfÚargsÚkwargs©Úsigr   r   Úchecksigw   s    z"_check_signature.<locals>.checksig)r>   Ú_copy_func_detailsr1   Ú_mock_check_sigÚ__signature__)r-   r5   Ú	skipfirstÚinstancerG   r   rE   r   Ú_check_signaturer   s    

rM   c              	   C   s:   dD ]0}zt ||t| |ƒƒ W q tk
r2   Y qX qd S )N)Ú__name__Ú__doc__Ú__text_signature__Ú
__module__Ú__defaults__Ú__kwdefaults__)Úsetattrr$   r;   )r-   ÚfuncopyÚ	attributer   r   r   rH   ~   s
    rH   c                 C   s@   t | tƒrdS t | tttfƒr(t| jƒS t| dd ƒd k	r<dS dS )NTr:   F)r"   r1   ÚstaticmethodÚclassmethodr   Ú	_callabler    r$   r(   r   r   r   rY   ‹   s    

rY   c                 C   s   t | ƒttfkS r/   )r1   ÚlistÚtupler(   r   r   r   Ú_is_list•   s    r\   c                 C   sF   t | tƒst| dd ƒd k	S | f| j D ]}|j d¡d k	r& dS q&dS )Nr:   TF)r"   r1   r$   Ú__mro__Ú__dict__Úget)r)   Úbaser   r   r   Ú_instance_callable›   s    
ra   c                    s†   t |tƒ}t|||ƒ}|d kr"| S |\}‰ ‡ fdd„}t||ƒ |j}| ¡ sRd}|| dœ}d| }	t|	|ƒ || }
t|
| ˆ ƒ |
S )Nc                     s   ˆ j | |Ž d S r/   r?   ©rC   rD   rE   r   r   rG   ´   s    z _set_signature.<locals>.checksigrU   )Z
_checksig_r5   zYdef %s(*args, **kwargs):
    _checksig_(*args, **kwargs)
    return mock(*args, **kwargs))r"   r1   r>   rH   rN   ÚisidentifierÚexecÚ_setup_func)r5   ÚoriginalrL   rK   Úresultr-   rG   r   ÚcontextÚsrcrU   r   rE   r   Ú_set_signatureª   s$    


þ
rj   c                    sê   ˆˆ _ ‡fdd„}‡fdd„}‡fdd„}‡fdd„}‡fd	d
„}‡fdd„}‡fdd„}	‡ ‡fdd„}
dˆ _dˆ _d ˆ _tƒ ˆ _tƒ ˆ _tƒ ˆ _ˆjˆ _ˆj	ˆ _	ˆj
ˆ _
|ˆ _|ˆ _|ˆ _|	ˆ _|
ˆ _|ˆ _|ˆ _|ˆ _|ˆ _ˆ ˆ_d S )Nc                     s   ˆ j | |ŽS r/   )Úassert_called_withrb   ©r5   r   r   rk   È   s    z'_setup_func.<locals>.assert_called_withc                     s   ˆ j | |ŽS r/   )Úassert_calledrb   rl   r   r   rm   Ê   s    z"_setup_func.<locals>.assert_calledc                     s   ˆ j | |ŽS r/   )Úassert_not_calledrb   rl   r   r   rn   Ì   s    z&_setup_func.<locals>.assert_not_calledc                     s   ˆ j | |ŽS r/   )Úassert_called_oncerb   rl   r   r   ro   Î   s    z'_setup_func.<locals>.assert_called_oncec                     s   ˆ j | |ŽS r/   )Úassert_called_once_withrb   rl   r   r   rp   Ð   s    z,_setup_func.<locals>.assert_called_once_withc                     s   ˆ j | |ŽS r/   )Úassert_has_callsrb   rl   r   r   rq   Ò   s    z%_setup_func.<locals>.assert_has_callsc                     s   ˆ j | |ŽS r/   )Úassert_any_callrb   rl   r   r   rr   Ô   s    z$_setup_func.<locals>.assert_any_callc                     s:   t ƒ ˆ _t ƒ ˆ _ˆ ¡  ˆ j} t| ƒr6| ˆk	r6|  ¡  d S r/   )Ú	_CallListÚmethod_callsÚ
mock_callsÚ
reset_mockÚreturn_valuer!   )Úret©rU   r5   r   r   rv   Ö   s    z_setup_func.<locals>.reset_mockFr   )r5   ÚcalledÚ
call_countÚ	call_argsrs   Úcall_args_listrt   ru   rw   Úside_effectÚ_mock_childrenrk   rp   rq   rr   rv   rm   rn   ro   rJ   Ú_mock_delegate)rU   r5   rF   rk   rm   rn   ro   rp   rq   rr   rv   r   ry   r   re   Å   s8    re   c                    sJ   t jjˆ _dˆ _d ˆ _tƒ ˆ _‡ fdd„}dD ]}tˆ |t||ƒƒ q.d S )Nr   c                   s   t ˆ j| ƒ||ŽS r/   )r$   r5   )ÚattrrC   rD   rl   r   r   Úwrapperÿ   s    z"_setup_async_mock.<locals>.wrapper)Úassert_awaitedÚassert_awaited_onceÚassert_awaited_withÚassert_awaited_once_withÚassert_any_awaitÚassert_has_awaitsÚassert_not_awaited)	r%   Ú
coroutinesÚ_is_coroutineÚawait_countÚ
await_argsrs   Úawait_args_listrT   r   )r5   r‚   rV   r   rl   r   Ú_setup_async_mockö   s    
r�   c                 C   s   d| dd…  | kS )Nú__%s__é   éþÿÿÿr   ©r   r   r   r   Ú	_is_magic  s    r”   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_SentinelObjectc                 C   s
   || _ d S r/   r“   ©rB   r   r   r   r   r9     s    z_SentinelObject.__init__c                 C   s
   d| j  S ©Nzsentinel.%sr“   ©rB   r   r   r   Ú__repr__  s    z_SentinelObject.__repr__c                 C   s
   d| j  S r—   r“   r˜   r   r   r   Ú
__reduce__  s    z_SentinelObject.__reduce__N)rN   rQ   Ú__qualname__r9   r™   rš   r   r   r   r   r•     s   r•   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	_Sentinelc                 C   s
   i | _ d S r/   )Ú
_sentinelsr˜   r   r   r   r9   #  s    z_Sentinel.__init__c                 C   s   |dkrt ‚| j |t|ƒ¡S )NÚ	__bases__)r;   r�   Ú
setdefaultr•   r–   r   r   r   Ú__getattr__&  s    z_Sentinel.__getattr__c                 C   s   dS )Nr   r   r˜   r   r   r   rš   ,  s    z_Sentinel.__reduce__N)rN   rQ   r›   r9   r    rš   r   r   r   r   rœ   !  s   rœ   rw   Ú_mock_return_valuer~   Ú_mock_side_effectÚ_mock_parentÚ_mock_new_parentÚ
_mock_nameÚ_mock_new_namec                 C   s8   t  | ¡ d|  }| |fdd„}| |fdd„}t||ƒS )NZ_mock_c                 S   s"   | j }|d krt| |ƒS t||ƒS r/   )r€   r$   )rB   r   Ú	_the_namerF   r   r   r   Ú_getA  s    
z"_delegating_property.<locals>._getc                 S   s*   | j }|d kr|| j|< nt|||ƒ d S r/   )r€   r^   rT   )rB   Úvaluer   r§   rF   r   r   r   Ú_setF  s    z"_delegating_property.<locals>._set)Ú_allowed_namesÚaddÚproperty)r   r§   r¨   rª   r   r   r   Ú_delegating_property>  s
    
r®   c                   @   s   e Zd Zdd„ Zdd„ ZdS )rs   c                 C   sl   t |tƒst | |¡S t|ƒ}t| ƒ}||kr2dS td|| d ƒD ]"}| ||| … }||krD dS qDdS )NFr   é   T)r"   rZ   Ú__contains__ÚlenÚrange)rB   r©   Z	len_valueZlen_selfÚiZsub_listr   r   r   r°   S  s    
z_CallList.__contains__c                 C   s   t  t| ƒ¡S r/   )ÚpprintZpformatrZ   r˜   r   r   r   r™   a  s    z_CallList.__repr__N)rN   rQ   r›   r°   r™   r   r   r   r   rs   Q  s   rs   c                 C   s|   t |ƒ}t|ƒsdS |js4|js4|jd k	s4|jd k	r8dS | }|d k	rX||krPdS |j}q<|rh| |_||_|rx| |_||_dS )NFT)r7   r!   r¥   r¦   r£   r¤   )Úparentr©   r   Únew_nameÚ_parentr   r   r   Ú_check_and_set_parente  s*    ÿþr¸   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	_MockIterc                 C   s   t |ƒ| _d S r/   )Úiterr)   )rB   r)   r   r   r   r9   �  s    z_MockIter.__init__c                 C   s
   t | jƒS r/   )Únextr)   r˜   r   r   r   Ú__next__ƒ  s    z_MockIter.__next__N)rN   rQ   r›   r9   r¼   r   r   r   r   r¹   €  s   r¹   c                   @   s   e Zd ZeZdZdd„ ZdS )ÚBaseNc                O   s   d S r/   r   rA   r   r   r   r9   ‰  s    zBase.__init__)rN   rQ   r›   r   r¡   r¢   r9   r   r   r   r   r½   †  s   r½   c                   @   s`  e Zd Zdd„ ZdKdd„Zdd	„ ZdLd
d„ZdMdd„Zdd„ Zdd„ Z	dZ
eee	e
ƒZedd„ ƒZedƒZedƒZedƒZedƒZedƒZdd„ Zdd„ ZeeeƒZdNdddœdd „Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ ZdOd2d3„Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$d<d=„ Z%d>d?„ Z&d@dA„ Z'dPdBdC„Z(dDdE„ Z)dFdG„ Z*dQdIdJ„Z+dS )Rr   c          	      O   s†   | f}t | tƒs^t tj¡}|j| f|ž|Žj}dd„ | ¡ D ƒ}|r^t	||d  ƒr^t
| f}t| j|d| jiƒ}tt| ƒ |¡}|S )Nc                 S   s   g | ]}|  d ¡r|‘qS ©Úspecr   ©r   Úargr   r   r   Ú
<listcomp>š  s   
ÿz+NonCallableMock.__new__.<locals>.<listcomp>r   rO   )r0   r	   r'   r<   r   r9   Zbind_partialZ	argumentsÚkeysr*   ÚAsyncMockMixinr1   rN   rO   Ú_safe_superÚ__new__)	ÚclsrC   ÚkwÚbasesrF   Z
bound_argsZspec_argÚnewrL   r   r   r   rÆ   ‘  s    
ÿzNonCallableMock.__new__NÚ Fc                 K   sî   |d kr|}| j }||d< ||d< ||d< ||d< d|d< |d k	rJ|}d}|
d krZ|d k	}
|  |||	|
¡ i |d< ||d	< d |d
< d|d< d |d< d|d< tƒ |d< tƒ |d< tƒ |d< ||d< |rÐ| jf |Ž tt| ƒ ||||||¡ d S )Nr£   r¥   r¦   r¤   FÚ_mock_sealedTr   Ú_mock_wrapsr€   Z_mock_calledZ_mock_call_argsr   Z_mock_call_countZ_mock_call_args_listZ_mock_mock_callsrt   Ú_mock_unsafe)r^   Ú_mock_add_specrs   Úconfigure_mockrÅ   r   r9   )rB   r¿   r   r   Úspec_setrµ   Ú_spec_stateÚ	_new_nameÚ_new_parentÚ_spec_as_instanceÚ	_eat_selfZunsaferD   r^   r   r   r   r9   §  sD    



    þzNonCallableMock.__init__c                 C   s0   t |ƒ}d |_d |_d|_d |_t| ||ƒ d S )NrË   )r7   r£   r¤   r¥   r¦   rT   )rB   r5   rV   Z
inner_mockr   r   r   Úattach_mockÔ  s    zNonCallableMock.attach_mockc                 C   s   |   ||¡ d S r/   )rÏ   ©rB   r¿   rÑ   r   r   r   Úmock_add_specã  s    zNonCallableMock.mock_add_specc                 C   s°   d }d }g }t |ƒD ] }t t||d ƒ¡r| |¡ q|d k	r~t|ƒs~t|tƒrV|}nt|ƒ}t|||ƒ}	|	ot|	d }t |ƒ}| j	}
||
d< ||
d< ||
d< ||
d< ||
d< d S )Nr¯   Ú_spec_classÚ	_spec_setÚ_spec_signatureÚ_mock_methodsÚ_spec_asyncs)
Údirr%   r&   r$   Úappendr\   r"   r1   r>   r^   )rB   r¿   rÑ   rÕ   rÖ   rÚ   rÜ   rÞ   r�   Úresr^   r   r   r   rÏ   ì  s,    
 ÿzNonCallableMock._mock_add_specc                 C   s8   | j }| jd k	r| jj}|tkr4| j| dd�}|| _|S )Nú()©rÔ   rÓ   )r¡   r€   rw   r   Ú_get_child_mock)rB   rx   r   r   r   Z__get_return_value  s    
 ÿz"NonCallableMock.__get_return_valuec                 C   s,   | j d k	r|| j _n|| _t| |d dƒ d S )Nrâ   )r€   rw   r¡   r¸   )rB   r©   r   r   r   Z__set_return_value  s    

z"NonCallableMock.__set_return_valuez1The value to be returned when the mock is called.c                 C   s   | j d krt| ƒS | j S r/   )rÚ   r1   r˜   r   r   r   Ú	__class__!  s    
zNonCallableMock.__class__rz   r{   r|   r}   ru   c                 C   sN   | j }|d kr| jS |j}|d k	rJt|ƒsJt|tƒsJt|ƒsJt|ƒ}||_|S r/   )r€   r¢   r~   Úcallabler"   r¹   r3   )rB   Ú	delegatedZsfr   r   r   Z__get_side_effect.  s    ÿÿz!NonCallableMock.__get_side_effectc                 C   s(   t |ƒ}| j}|d kr|| _n||_d S r/   )Ú	_try_iterr€   r¢   r~   )rB   r©   rç   r   r   r   Z__set_side_effect9  s
    z!NonCallableMock.__set_side_effect)rw   r~   c                C   sº   |d krg }t | ƒ|krd S | t | ƒ¡ d| _d | _d| _tƒ | _tƒ | _tƒ | _|r^t	| _
|rhd | _| j ¡ D ]"}t|tƒsr|tkrŠqr| |¡ qr| j
}t|ƒr¶|| k	r¶| |¡ d S )NFr   )Úidrà   rz   r|   r{   rs   ru   r}   rt   r   r¡   r¢   r   Úvaluesr"   Ú
_SpecStateÚ_deletedrv   r!   )rB   Zvisitedrw   r~   Úchildrx   r   r   r   rv   D  s,    zNonCallableMock.reset_mockc                K   sX   t | ¡ dd„ d�D ]>\}}| d¡}| ¡ }| }|D ]}t||ƒ}q6t|||ƒ qd S )Nc                 S   s   | d   d¡S )Nr   Ú.)Úcount)Úentryr   r   r   Ú<lambda>o  ó    z0NonCallableMock.configure_mock.<locals>.<lambda>)Úkeyrî   )ÚsortedÚitemsÚsplitÚpopr$   rT   )rB   rD   rÁ   ÚvalrC   Úfinalr)   rð   r   r   r   rÐ   b  s    	ü
zNonCallableMock.configure_mockc                 C   sö   |dkrt |ƒ‚n:| jd k	r<|| jks.|tkrLt d| ƒ‚nt|ƒrLt |ƒ‚| jsd| d¡rdt dƒ‚| j |¡}|tkr‚t |ƒ‚np|d krÄd }| j	d k	r¤t
| j	|ƒ}| j| |||| d�}|| j|< n.t|tƒròt|j|j|j|j|jƒ}|| j|< |S )N>   rÝ   rÎ   zMock object has no attribute %r)ÚassertZassretz1Attributes cannot start with 'assert' or 'assret')rµ   r   r   rÓ   rÔ   )r;   rÝ   Ú_all_magicsr”   rÎ   r   r   r_   rì   rÍ   r$   rä   r"   rë   r   r¿   rÑ   rL   rµ   r   )rB   r   rg   r   r   r   r   r    x  sF    




   þ
   þ
zNonCallableMock.__getattr__c                 C   s¢   | j g}| j}| }d}|dgkr$d}|d k	rZ|}| |j | ¡ d}|j dkrRd}|j}q$tt|ƒƒ}|jpnd}t|ƒdkr�|d dkr�|d7 }||d< d |¡S )Nrî   râ   rË   r5   r¯   )râ   z().r   )r¦   r¤   rà   rZ   Úreversedr¥   r±   Újoin)rB   Z
_name_listr·   ZlastÚdotZ_firstr   r   r   Ú_extract_mock_nameŸ  s(    


z"NonCallableMock._extract_mock_namec                 C   s^   |   ¡ }d}|dkrd| }d}| jd k	rDd}| jr8d}|| jj }dt| ƒj||t| ƒf S )NrË   )r5   zmock.z name=%rz spec=%rz spec_set=%rz<%s%s%s id='%s'>)rÿ   rÚ   rÛ   rN   r1   ré   )rB   r   Zname_stringZspec_stringr   r   r   r™   º  s     
üzNonCallableMock.__repr__c                 C   sv   t st | ¡S | jpg }tt| ƒƒ}t| jƒ}dd„ | j 	¡ D ƒ}dd„ |D ƒ}dd„ |D ƒ}t
t|| | | ƒƒS )Nc                 S   s   g | ]\}}|t k	r|‘qS r   )rì   )r   Zm_nameZm_valuer   r   r   rÂ   ×  s   ÿz+NonCallableMock.__dir__.<locals>.<listcomp>c                 S   s   g | ]}|  d ¡s|‘qS r   r   ©r   Úer   r   r   rÂ   Û  s     
 c                 S   s"   g | ]}|  d ¡rt|ƒr|‘qS r   )r   r”   r   r   r   r   rÂ   Ü  s     
ÿ)r
   ÚobjectÚ__dir__rÝ   rß   r1   rZ   r^   r   rõ   rô   Úset)rB   ZextrasZ	from_typeZ	from_dictZfrom_child_mocksr   r   r   r  Ï  s    


ÿzNonCallableMock.__dir__c                    sT  |t krt ˆ||¡S ˆjrHˆjd k	rH|ˆjkrH|ˆjkrHtd| ƒ‚nÊ|tkrbd| }t|ƒ‚n°|tkræˆjd k	rŠ|ˆjkrŠtd| ƒ‚t	|ƒs¼t
tˆƒ|t||ƒƒ |‰ ‡ ‡fdd„}n(tˆ|d |ƒ t
tˆƒ||ƒ |ˆj|< n,|dkrø|ˆ_d S tˆ|||ƒ�r|ˆj|< ˆj�rFtˆ|ƒ�sFˆ ¡ › d|› �}td|› �ƒ‚t ˆ||¡S )Nz!Mock object has no attribute '%s'z.Attempting to set unsupported magic method %r.c                     s   ˆ ˆf| ž|ŽS r/   r   ©rC   rÈ   ©rf   rB   r   r   rñ   ó  rò   z-NonCallableMock.__setattr__.<locals>.<lambda>rå   rî   zCannot set )r«   r  Ú__setattr__rÛ   rÝ   r^   r;   Ú_unsupported_magicsrû   r!   rT   r1   Ú_get_methodr¸   r   rÚ   rÌ   r#   rÿ   )rB   r   r©   ÚmsgÚ	mock_namer   r  r   r  á  s<    ÿþ

zNonCallableMock.__setattr__c                 C   sŠ   |t kr2|t| ƒjkr2tt| ƒ|ƒ || jkr2d S | j |t¡}|| jkr\tt| ƒ 	|¡ n|t
krlt|ƒ‚|tk	r|| j|= t
| j|< d S r/   )rû   r1   r^   Údelattrr   r_   Ú_missingrÅ   r   Ú__delattr__rì   r;   )rB   r   r)   r   r   r   r    s    

zNonCallableMock.__delattr__c                 C   s   | j pd}t|||ƒS r4   )r¥   Ú_format_call_signature©rB   rC   rD   r   r   r   r   Ú_format_mock_call_signature  s    
z+NonCallableMock._format_mock_call_signaturer   c                 C   s.   d}|   ||¡}| j}| j |Ž }||||f S )Nz.expected %s not found.
Expected: %s
Actual: %s)r  r|   )rB   rC   rD   ÚactionÚmessageÚexpected_stringr|   Zactual_stringr   r   r   Ú_format_mock_failure_message  s
    
z,NonCallableMock._format_mock_failure_messagec                 C   sj   |s
| j S d }| dd¡ d¡}| j}|D ]:}| |¡}|d ksJt|tƒrP qfq*t|ƒ}|j}|j }q*|S )Nrâ   rË   rî   )rÜ   Úreplacerö   r   r_   r"   rë   r7   )rB   r   rF   ÚnamesZchildrenrí   r   r   r   Ú_get_call_signature_from_name'  s    
z-NonCallableMock._get_call_signature_from_namec              
   C   s¦   t |tƒr&t|ƒdkr&|  |d ¡}n| j}|d k	ržt|ƒdkrNd}|\}}n
|\}}}z||j||ŽfW S  tk
rš } z| d ¡ W Y ¢S d }~X Y q¢X n|S d S )Nr‘   r   rË   )r"   r[   r±   r  rÜ   r@   Ú	TypeErrorÚwith_traceback)rB   Ú_callrF   r   rC   rD   r  r   r   r   Ú_call_matcherH  s    

"zNonCallableMock._call_matcherc                 C   s0   | j dkr,d| jpd| j |  ¡ f }t|ƒ‚d S )Nr   z9Expected '%s' to not have been called. Called %s times.%sr5   ©r{   r¥   Ú_calls_reprÚAssertionError©rB   r
  r   r   r   rn   b  s    
þÿz!NonCallableMock.assert_not_calledc                 C   s$   | j dkr d| jpd }t|ƒ‚d S )Nr   z"Expected '%s' to have been called.r5   )r{   r¥   r  r   r   r   r   rm   l  s
    
ÿzNonCallableMock.assert_calledc                 C   s0   | j dks,d| jpd| j |  ¡ f }t|ƒ‚d S )Nr¯   z:Expected '%s' to have been called once. Called %s times.%sr5   r  r   r   r   r   ro   t  s    
þÿz"NonCallableMock.assert_called_oncec                   s‚   ˆj d kr.ˆ ˆ ˆ¡}d}d||f }t|ƒ‚‡ ‡‡fdd„}ˆ ˆ ˆf¡}ˆ ˆj ¡}||kr~t|tƒrn|nd }t|ƒ ƒ|‚d S )Nznot called.z0expected call not found.
Expected: %s
Actual: %sc                     s   ˆ  ˆ ˆ¡} | S r/   ©r  ©r
  ©rC   rD   rB   r   r   Ú_error_messageŠ  s    z:NonCallableMock.assert_called_with.<locals>._error_message)r|   r  r  r  r"   Ú	Exception)rB   rC   rD   ÚexpectedÚactualZerror_messager$  Úcauser   r#  r   rk   ~  s    
ÿz"NonCallableMock.assert_called_withc                O   s8   | j dks,d| jpd| j |  ¡ f }t|ƒ‚| j||ŽS )Nr¯   z3Expected '%s' to be called once. Called %s times.%sr5   )r{   r¥   r  r  rk   ©rB   rC   rD   r
  r   r   r   rp   ”  s    
þÿz'NonCallableMock.assert_called_once_withc           	   	      s  ‡ fdd„|D ƒ}t dd„ |D ƒd ƒ}t‡ fdd„ˆ jD ƒƒ}|sš||kr–|d krXd}nd dd„ |D ƒ¡}t|› d	t|ƒ› ˆ jd
d� d¡› �ƒ|‚d S t|ƒ}g }|D ]2}z| |¡ W qª t	k
rÚ   | 
|¡ Y qªX qª|�rtdˆ jpðdt|ƒ|f ƒ|‚d S )Nc                    s   g | ]}ˆ   |¡‘qS r   ©r  ©r   Úcr˜   r   r   rÂ   ª  s     z4NonCallableMock.assert_has_calls.<locals>.<listcomp>c                 s   s   | ]}t |tƒr|V  qd S r/   ©r"   r%  r   r   r   r   Ú	<genexpr>«  s     
 z3NonCallableMock.assert_has_calls.<locals>.<genexpr>c                 3   s   | ]}ˆ   |¡V  qd S r/   r*  r+  r˜   r   r   r.  ¬  s     zCalls not found.z+Error processing expected calls.
Errors: {}c                 S   s   g | ]}t |tƒr|nd ‘qS r/   r-  r   r   r   r   rÂ   ´  s   ÿú
Expected: ZActual)Úprefixrî   z@%r does not contain all of %r in its call list, found %r insteadr5   )r»   rs   ru   Úformatr  r  ÚrstriprZ   Úremover=   rà   r¥   r[   )	rB   ÚcallsÚ	any_orderr&  r(  Z	all_callsÚproblemÚ	not_foundÚkallr   r˜   r   rq      sH    
ÿþ"ÿü ÿÿÿüz NonCallableMock.assert_has_callsc                   sZ   ˆ   ||f¡}‡ fdd„ˆ jD ƒ}||krVt|tƒr8|nd }ˆ  ||¡}td| ƒ|‚d S )Nc                    s   g | ]}ˆ   |¡‘qS r   r*  r+  r˜   r   r   rÂ   Ô  s     z3NonCallableMock.assert_any_call.<locals>.<listcomp>z%s call not found)r  r}   r"   r%  r  r  ©rB   rC   rD   r&  r'  r(  r  r   r˜   r   rr   Í  s    ÿþzNonCallableMock.assert_any_callc                K   sà   |  d¡}|| jd kr"tf |ŽS t| ƒ}t|tƒrB|tkrBt}nbt|tƒrp|tksd| j	rj|| j	krjt}q¤t}n4t|t
ƒsšt|tƒrŠt}q¤t|tƒr¤t}n
|jd }| jrÖd|kr¾d|d  nd}|  ¡ | }t|ƒ‚|f |ŽS )NrÓ   rÞ   r¯   r   rî   râ   )r_   r^   r	   r1   r0   r   Ú_async_method_magicsrÄ   Ú_all_sync_magicsrÝ   ÚCallableMixinr   r   r   r]   rÌ   rÿ   r;   )rB   rÈ   rÓ   Ú_typeÚklassrV   r  r   r   r   rä   Ý  s2    


ÿÿ



zNonCallableMock._get_child_mockÚCallsc                 C   s"   | j s
dS d|› dt| j ƒ› d�S )NrË   Ú
z: rî   )ru   r   )rB   r0  r   r   r   r    s    zNonCallableMock._calls_repr)NNNNNNrË   NFNF)F)FF)N)r   )F)r?  ),rN   rQ   r›   rÆ   r9   r×   rÙ   rÏ   Z"_NonCallableMock__get_return_valueZ"_NonCallableMock__set_return_valueZ"_NonCallableMock__return_value_docr­   rw   rå   r®   rz   r{   r|   r}   ru   Z!_NonCallableMock__get_side_effectZ!_NonCallableMock__set_side_effectr~   rv   rÐ   r    rÿ   r™   r  r  r  r  r  r  r  rn   rm   ro   rk   rp   rq   rr   rä   r  r   r   r   r   r   Ž  sn                      ý
-
	  ÿ
ÿ

''
!


-'r   c                 C   sL   | d kr| S t | ƒr| S t| ƒr$| S z
t| ƒW S  tk
rF   |  Y S X d S r/   )r3   rY   rº   r  r(   r   r   r   rè     s    
rè   c                
   @   sR   e Zd Zddedddddddf
dd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )r<  NrË   c              	   K   s6   || j d< tt| ƒj|||||||	|
f|Ž || _d S )Nr¡   )r^   rÅ   r<  r9   r~   )rB   r¿   r~   rw   r   r   rÑ   rµ   rÒ   rÓ   rÔ   rD   r   r   r   r9   #  s    

      þþzCallableMixin.__init__c                O   s   d S r/   r   rA   r   r   r   rI   /  s    zCallableMixin._mock_check_sigc                O   s$   | j ||Ž | j||Ž | j||ŽS r/   )rI   Ú_increment_mock_callÚ
_mock_callrA   r   r   r   r:   4  s    zCallableMixin.__call__c                O   s   | j ||ŽS r/   )Ú_execute_mock_callrA   r   r   r   rB  <  s    zCallableMixin._mock_callc                O   s   d| _ |  jd7  _t||fdd�}|| _| j |¡ | jd k	}| j}| j}|dk}| j	 td||fƒ¡ | j
}|d k	rü|r®|j t|||fƒ¡ |jd k	}|r®|jd | }t|||fƒ}	|j	 |	¡ |jrô|rØd}
nd}
|jdk}|j|
 | }|j
}qpd S )NTr¯   ©Útworâ   rË   rî   )rz   r{   Ú_Callr|   r}   rà   r£   r¥   r¦   ru   r¤   rt   )rB   rC   rD   r  Zdo_method_callsZmethod_call_nameZmock_call_nameZ	is_a_callrÔ   Zthis_mock_callrþ   r   r   r   rA  ?  s4    


z"CallableMixin._increment_mock_callc                O   s|   | j }|d k	rPt|ƒr|‚n(t|ƒs:t|ƒ}t|ƒrD|‚n
|||Ž}|tk	rP|S | jtk	r`| jS | jd k	rv| j||ŽS | jS r/   )r~   r3   rY   r»   r   r¡   rw   rÍ   )rB   rC   rD   Úeffectrg   r   r   r   rC  m  s     


z CallableMixin._execute_mock_call)
rN   rQ   r›   r   r9   rI   r:   rB  rA  rC  r   r   r   r   r<  !  s        þ
.r<  c                   @   s   e Zd ZdS )r   N©rN   rQ   r›   r   r   r   r   r   ‰  s   r   c                 C   s8   zt | |ƒW S  tk
r2   t|ƒ t | |ƒ Y S X d S r/   )r$   r;   Ú
__import__)ÚthingÚcompÚimport_pathr   r   r   Ú_dot_lookup½  s
    rM  c                 C   sB   |   d¡}| d¡}t|ƒ}|D ]}|d| 7 }t|||ƒ}q |S )Nrî   r   z.%s)rö   r÷   rI  rM  )ÚtargetZ
componentsrL  rJ  rK  r   r   r   Ú	_importerÅ  s    

rO  c                   @   sz   e Zd ZdZg Zdd„ Zdd„ Zdd„ Zdd	„ Ze	j
d
d„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú_patchNc
           
      C   sn   |d k	r(|t k	rtdƒ‚|d k	r(tdƒ‚|| _|| _|| _|| _|| _|| _d| _|| _	|| _
|	| _g | _d S )Nz,Cannot use 'new' and 'new_callable' togetherz1Cannot use 'autospec' and 'new_callable' togetherF)r   r=   ÚgetterrV   rÊ   Únew_callabler¿   ÚcreateZ	has_localrÑ   ÚautospecrD   Úadditional_patchers)
rB   rQ  rV   rÊ   r¿   rS  rÑ   rT  rR  rD   r   r   r   r9   Õ  s(    ÿÿz_patch.__init__c              
   C   sH   t | j| j| j| j| j| j| j| j| j	ƒ	}| j
|_
dd„ | jD ƒ|_|S )Nc                 S   s   g | ]}|  ¡ ‘qS r   )Úcopy)r   Úpr   r   r   rÂ   ÷  s    z_patch.copy.<locals>.<listcomp>)rP  rQ  rV   rÊ   r¿   rS  rÑ   rT  rR  rD   Úattribute_namerU  )rB   Úpatcherr   r   r   rV  ð  s           ýÿz_patch.copyc                 C   s2   t |tƒr|  |¡S t |¡r(|  |¡S |  |¡S r/   )r"   r1   Údecorate_classr'   r&   Údecorate_async_callableÚdecorate_callable©rB   r-   r   r   r   r:   ý  s
    



z_patch.__call__c                 C   sN   t |ƒD ]@}| tj¡sqt||ƒ}t|dƒs0q|  ¡ }t||||ƒƒ q|S ©Nr:   )rß   r   r   ÚTEST_PREFIXr$   r#   rV  rT   )rB   r>  r�   Ú
attr_valuerY  r   r   r   rZ    s    

z_patch.decorate_classc              	   c   sr   g }t  ¡ �\}|jD ]8}| |¡}|jd k	r8| |¡ q|jtkr| |¡ q|t	|ƒ7 }||fV  W 5 Q R X d S r/   )
Ú
contextlibÚ	ExitStackÚ	patchingsÚenter_contextrX  ÚupdaterÊ   r   rà   r[   )rB   ÚpatchedrC   ÚkeywargsÚ
extra_argsÚ
exit_stackÚpatchingrÁ   r   r   r   Údecoration_helper  s    




z_patch.decoration_helperc                    s>   t ˆ dƒrˆ j ˆ¡ ˆ S tˆ ƒ‡ ‡‡fdd„ƒ‰ˆgˆ_ˆS )Nrc  c               
      s4   ˆ  ˆ| |¡�\}}ˆ ||ŽW  5 Q R £ S Q R X d S r/   ©rk  ©rC   rg  ZnewargsZnewkeywargs©r-   rf  rB   r   r   rf  (  s    þz)_patch.decorate_callable.<locals>.patched©r#   rc  rà   r   r]  r   rn  r   r\  "  s    
z_patch.decorate_callablec                    s>   t ˆ dƒrˆ j ˆ¡ ˆ S tˆ ƒ‡ ‡‡fdd„ƒ‰ˆgˆ_ˆS )Nrc  c               
   Ÿ   s:   ˆ  ˆ| |¡�"\}}ˆ ||ŽI d H W  5 Q R £ S Q R X d S r/   rl  rm  rn  r   r   rf  9  s    þz/_patch.decorate_async_callable.<locals>.patchedro  r]  r   rn  r   r[  3  s    
z_patch.decorate_async_callablec              	   C   sŒ   |   ¡ }| j}t}d}z|j| }W n$ ttfk
rH   t||tƒ}Y nX d}|tkrft|t	ƒrfd| _
| j
s„|tkr„td||f ƒ‚||fS )NFTz!%s does not have the attribute %r)rQ  rV   r   r^   r;   ÚKeyErrorr$   Ú	_builtinsr"   r   rS  )rB   rN  r   rf   Úlocalr   r   r   Úget_originalD  s     
ÿz_patch.get_originalc                 C   s˜  | j | j| j  }}}| j| j }}| j}|  ¡ | _|dkr@d }|dkrLd }|dkrXd }|d k	rp|d k	rptdƒ‚|d k	s€|d k	r�|dkr�tdƒ‚|  	¡ \}}|t
k�r||d k�r|d}	|dkrÒ|}|dkrø|}d }n&|d k	rì|dkrø|}d }n|dkrø|}|d k	�s|d k	�r.|t
k�rtdƒ‚t|tƒ�r.d}	|d k�rHt|ƒ�rHt}
nt}
i }|d k	�r`|}
n^|d k	�st|d k	�r¾|}|d k	�r†|}t|ƒ�ršd|k}n
t|ƒ }t|ƒ�r´t}
n
|�r¾t}
|d k	�rÐ||d< |d k	�râ||d	< t|
tƒ�rt|
tƒ�r| j�r| j|d
< | |¡ |
f |Ž}|	�rèt|ƒ�rè|}|d k	�rB|}t|ƒ�sZt|ƒ�sZt}
| d
¡ |
f |ddœ|—Ž|_nl|d k	�rÚ|t
k	�r˜tdƒ‚|t
k�rªtdƒ‚t|ƒ}|dk�rÀ|}t|f|| jdœ|—Ž}n|�rètdƒ‚|}|| _|| _t  ¡ | _!zrt"| j| j|ƒ | j#d k	�rpi }| j t
k�r:||| j#< | j$D ](}| j! %|¡}|j t
k�r@| |¡ �q@|W S |W S    | j&t' (¡ Ž �sŽ‚ Y nX d S )NFzCan't specify spec and autospec)TNz6Can't provide explicit spec_set *and* spec or autospecTz!Can't use 'spec' with create=Truer:   r¿   rÑ   r   râ   rã   zBautospec creates the mock for you. Can't specify autospec and new.z%Can't use 'autospec' with create=True)rÑ   Ú_namez.Can't pass kwargs to a mock we aren't creating))rÊ   r¿   rÑ   rT  rD   rR  rQ  rN  r  rs  r   r"   r1   r*   r	   r   r\   ræ   r   r0   r   rV   re  r!   ra   r÷   rw   Úboolr   Útemp_originalÚis_localra  rb  Ú_exit_stackrT   rX  rU  rd  Ú__exit__ÚsysÚexc_info)rB   rÊ   r¿   rÑ   rT  rD   rR  rf   rr  ZinheritÚKlassÚ_kwargsZ	this_specZnot_callableZnew_attrrh  rj  rÁ   r   r   r   Ú	__enter__\  sà    
ÿ








ÿÿ




ÿ
ÿ


ÿ

ÿÿ


z_patch.__enter__c                 G   s‚   | j r$| jtk	r$t| j| j| jƒ n>t| j| jƒ | jsbt| j| jƒrP| jdkrbt| j| j| jƒ | `| ` | `| j	}| `	|j
|Ž S )N)rO   rQ   rR   Ú__annotations__rS   )rw  rv  r   rT   rN  rV   r  rS  r#   rx  ry  )rB   r{  ri  r   r   r   ry  â  s    ÿz_patch.__exit__c                 C   s   |   ¡ }| j | ¡ |S r/   )r~  Ú_active_patchesrà   )rB   rg   r   r   r   Ústart÷  s    z_patch.startc                 C   s6   z| j  | ¡ W n tk
r&   Y d S X |  d d d ¡S r/   )r€  r3  r=   ry  r˜   r   r   r   Ústopþ  s
    z_patch.stop)rN   rQ   r›   rX  r€  r9   rV  r:   rZ  ra  Úcontextmanagerrk  r\  r[  rs  r~  ry  r�  r‚  r   r   r   r   rP  Ð  s    
 rP  c              	      sP   zˆ   dd¡\‰ }W n& ttfk
r:   tdˆ f ƒ‚Y nX ‡ fdd„}||fS )Nrî   r¯   z.Need a valid target to patch. You supplied: %rc                      s   t ˆ ƒS r/   ©rO  r   ©rN  r   r   rñ     rò   z_get_target.<locals>.<lambda>)Úrsplitr  r=   )rN  rV   rQ  r   r…  r   Ú_get_target
  s    ÿr‡  c           
   
      s>   t ˆ ƒtkrtˆ ›d�ƒ‚‡ fdd„}	t|	||||||||ƒ	S )Nz3 must be the actual object to be patched, not a strc                      s   ˆ S r/   r   r   r…  r   r   rñ   *  rò   z_patch_object.<locals>.<lambda>)r1   Ústrr  rP  )
rN  rV   rÊ   r¿   rS  rÑ   rT  rR  rD   rQ  r   r…  r   Ú_patch_object  s     ÿ       þr‰  c                    s¬   t ˆ ƒtkr‡ fdd„}n‡ fdd„}|s2tdƒ‚t| ¡ ƒ}|d \}	}
t||	|
|||||i ƒ	}|	|_|dd … D ]2\}	}
t||	|
|||||i ƒ	}|	|_|j |¡ qt|S )Nc                      s   t ˆ ƒS r/   r„  r   r…  r   r   rñ   H  rò   z!_patch_multiple.<locals>.<lambda>c                      s   ˆ S r/   r   r   r…  r   r   rñ   J  rò   z=Must supply at least one keyword argument with patch.multipler   r¯   )	r1   rˆ  r=   rZ   rõ   rP  rX  rU  rà   )rN  r¿   rS  rÑ   rT  rR  rD   rQ  rõ   rV   rÊ   rY  Zthis_patcherr   r…  r   Ú_patch_multiple1  sH    ÿ       þ       þrŠ  c           
   
   K   s$   t | ƒ\}}	t||	|||||||ƒ	S r/   )r‡  rP  )
rN  rÊ   r¿   rS  rÑ   rT  rR  rD   rQ  rV   r   r   r   r   b  s    F       þr   c                   @   sN   e Zd Zddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	eZ
e	ZdS )Ú_patch_dictr   Fc                 K   s,   || _ t|ƒ| _| j |¡ || _d | _d S r/   )Úin_dictÚdictrê   re  ÚclearÚ	_original)rB   rŒ  rê   rŽ  rD   r   r   r   r9   Ì  s
    
z_patch_dict.__init__c                    s.   t ˆ tƒrˆ ˆ ¡S tˆ ƒ‡ ‡fdd„ƒ}|S )Nc                     s&   ˆ  ¡  zˆ | |ŽW ¢S ˆ ¡  X d S r/   )r‹  Ú_unpatch_dictr  ©ÚfrB   r   r   Ú_innerØ  s    z$_patch_dict.__call__.<locals>._inner)r"   r1   rZ  r   )rB   r’  r“  r   r‘  r   r:   Õ  s
    

z_patch_dict.__call__c                 C   sX   t |ƒD ]J}t||ƒ}| tj¡rt|dƒrt| j| j| j	ƒ}||ƒ}t
|||ƒ q|S r^  )rß   r$   r   r   r_  r#   r‹  rŒ  rê   rŽ  rT   )rB   r>  r�   r`  Z	decoratorZ	decoratedr   r   r   rZ  ã  s    
ÿz_patch_dict.decorate_classc                 C   s   |   ¡  | jS r/   )r‹  rŒ  r˜   r   r   r   r~  î  s    z_patch_dict.__enter__c                 C   s¶   | j }t| jtƒrt| jƒ| _| j}| j}z| ¡ }W n. tk
rd   i }|D ]}|| ||< qNY nX || _|rxt	|ƒ z| 
|¡ W n* tk
r°   |D ]}|| ||< qšY nX d S r/   )rê   r"   rŒ  rˆ  rO  rŽ  rV  r;   r�  Ú_clear_dictre  )rB   rê   rŒ  rŽ  rf   ró   r   r   r   r‹  ô  s&    z_patch_dict._patch_dictc                 C   sR   | j }| j}t|ƒ z| |¡ W n* tk
rL   |D ]}|| ||< q6Y nX d S r/   )rŒ  r�  r”  re  r;   )rB   rŒ  rf   ró   r   r   r   r�    s    z_patch_dict._unpatch_dictc                 G   s   |   ¡  dS ©NF)r�  )rB   rC   r   r   r   ry    s    z_patch_dict.__exit__N)r   F)rN   rQ   r›   r9   r:   rZ  r~  r‹  r�  ry  r�  r‚  r   r   r   r   r‹  ¯  s   
	r‹  c                 C   s>   z|   ¡  W n, tk
r8   t| ƒ}|D ]
}| |= q(Y nX d S r/   )rŽ  r;   rZ   )rŒ  rÃ   ró   r   r   r   r”  &  s    r”  c                  C   s   t tjƒD ]} |  ¡  q
d S r/   )rü   rP  r€  r‚  )r   r   r   r   Ú_patch_stopall/  s    r–  Ztestz¿lt 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 zHadd sub mul matmul div floordiv mod lshift rshift and xor or pow truedivú c                 c   s   | ]}d | V  qdS )zi%sNr   ©r   Únr   r   r   r.  N  s     r.  c                 c   s   | ]}d | V  qdS )zr%sNr   r˜  r   r   r   r.  O  s     Ú__get__Ú__set__Ú
__delete__Ú__reversed__Ú__missing__rš   Ú__reduce_ex__Z__getinitargs__Ú__getnewargs__Ú__getstate__Ú__setstate__Ú__getformat__Z__setformat__r™   r  Ú__subclasses__Ú
__format__Ú__getnewargs_ex__c                    s   ‡ fdd„}| |_ |S )Nc                   s   ˆ | f|ž|ŽS r/   r   ©rB   rC   rÈ   r,   r   r   Úmethod`  s    z_get_method.<locals>.method)rN   )r   r-   r¨  r   r,   r   r	  ^  s    r	  c                 C   s   h | ]}d | ’qS )r�   r   )r   r¨  r   r   r   r   f  s    Ú
__aenter__Ú	__aexit__Ú	__anext__Ú	__aiter__r    r  r9   rÆ   Ú__prepare__Ú__instancecheck__Ú__subclasscheck__Ú__del__c                 C   s
   t  | ¡S r/   )r  Ú__hash__r˜   r   r   r   rñ   |  rò   rñ   c                 C   s
   t  | ¡S r/   )r  Ú__str__r˜   r   r   r   rñ   }  rò   c                 C   s
   t  | ¡S r/   )r  Ú
__sizeof__r˜   r   r   r   rñ   ~  rò   c                 C   s"   t | ƒj› d|  ¡ › dt| ƒ› �S )Nú/)r1   rN   rÿ   ré   r˜   r   r   r   rñ     rò   )r±  r²  r³  Ú
__fspath__r¯   y              ð?g      ð?)Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__int__r°   Ú__len__ry  Ú__complex__Ú	__float__Ú__bool__Ú	__index__rª  c                    s   ‡ fdd„}|S )Nc                    s$   ˆ j j}|tk	r|S ˆ | kr dS tS r8   )Ú__eq__r¡   r   ÚNotImplemented)ÚotherÚret_valr˜   r   r   rÀ  ”  s    z_get_eq.<locals>.__eq__r   )rB   rÀ  r   r˜   r   Ú_get_eq“  s    rÄ  c                    s   ‡ fdd„}|S )Nc                    s    ˆ j jtk	rtS ˆ | krdS tS r•  )Ú__ne__r¡   r   rÁ  )rÂ  r˜   r   r   rÅ  ž  s
    z_get_ne.<locals>.__ne__r   )rB   rÅ  r   r˜   r   Ú_get_ne�  s    rÆ  c                    s   ‡ fdd„}|S )Nc                     s    ˆ j j} | tkrtg ƒS t| ƒS r/   )Ú__iter__r¡   r   rº   ©rÃ  r˜   r   r   rÇ  §  s    z_get_iter.<locals>.__iter__r   )rB   rÇ  r   r˜   r   Ú	_get_iter¦  s    rÉ  c                    s   ‡ fdd„}|S )Nc                     s(   ˆ j j} | tkrttg ƒƒS tt| ƒƒS r/   )r¬  r¡   r   Ú_AsyncIteratorrº   rÈ  r˜   r   r   r¬  ±  s    z"_get_async_iter.<locals>.__aiter__r   )rB   r¬  r   r˜   r   Ú_get_async_iter°  s    rË  )rÀ  rÅ  rÇ  r¬  c                 C   sb   t  |t¡}|tk	r||_d S t |¡}|d k	rB|| ƒ}||_d S t |¡}|d k	r^|| ƒ|_d S r/   )Ú_return_valuesr_   r   rw   Ú_calculate_return_valueÚ_side_effect_methodsr~   )r5   r¨  r   ZfixedZreturn_calculatorrw   Zside_effectorr   r   r   Ú_set_return_valueÁ  s    

rÏ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
MagicMixinc                O   s&   |   ¡  tt| ƒj||Ž |   ¡  d S r/   )Ú_mock_set_magicsrÅ   rÐ  r9   r§  r   r   r   r9   Ô  s    zMagicMixin.__init__c                 C   s’   t tB }|}t| dd ƒd k	rX| | j¡}tƒ }|| }|D ]}|t| ƒjkr:t| |ƒ q:|tt| ƒjƒ }t| ƒ}|D ]}t	||t
|| ƒƒ qvd S )NrÝ   )Ú_magicsr:  r$   ÚintersectionrÝ   r  r1   r^   r  rT   Ú
MagicProxy)rB   Zorig_magicsZthese_magicsZremove_magicsrð   r=  r   r   r   rÑ  Ú  s    zMagicMixin._mock_set_magicsN)rN   rQ   r›   r9   rÑ  r   r   r   r   rÐ  Ó  s   rÐ  c                   @   s   e Zd Zddd„ZdS )r   Fc                 C   s   |   ||¡ |  ¡  d S r/   ©rÏ   rÑ  rØ   r   r   r   rÙ   ô  s    z"NonCallableMagicMock.mock_add_specN)F©rN   rQ   r›   rÙ   r   r   r   r   r   ò  s   r   c                   @   s   e Zd Zdd„ ZdS )ÚAsyncMagicMixinc                O   s&   |   ¡  tt| ƒj||Ž |   ¡  d S r/   )rÑ  rÅ   r×  r9   r§  r   r   r   r9   ÿ  s    zAsyncMagicMixin.__init__N©rN   rQ   r›   r9   r   r   r   r   r×  þ  s   r×  c                   @   s   e Zd Zddd„ZdS )r   Fc                 C   s   |   ||¡ |  ¡  d S r/   rÕ  rØ   r   r   r   rÙ     s    zMagicMock.mock_add_specN)FrÖ  r   r   r   r   r     s   r   c                   @   s&   e Zd Zdd„ Zdd„ Zddd„ZdS )	rÔ  c                 C   s   || _ || _d S r/   ©r   rµ   )rB   r   rµ   r   r   r   r9     s    zMagicProxy.__init__c                 C   s8   | j }| j}|j|||d�}t|||ƒ t|||ƒ |S )N)r   rÓ   rÔ   )r   rµ   rä   rT   rÏ  )rB   rð   rµ   Úmr   r   r   Úcreate_mock  s    ÿzMagicProxy.create_mockNc                 C   s   |   ¡ S r/   )rÛ  )rB   r)   r=  r   r   r   rš  (  s    zMagicProxy.__get__)N)rN   rQ   r›   r9   rÛ  rš  r   r   r   r   rÔ    s   	rÔ  c                       s‚   e Zd ZedƒZedƒZedƒZ‡ fdd„Zdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ Zddd„Zdd„ Z‡ fdd„Z‡  ZS )rÄ   rŒ   r�   rŽ   c                   s\   t ƒ j||Ž tjj| jd< d| jd< d | jd< tƒ | jd< ttd�}t	j
|_|| jd< d S )Nr‹   r   Z_mock_await_countZ_mock_await_argsZ_mock_await_args_list©rÑ   r+   )Úsuperr9   r%   rŠ   r‹   r^   rs   r   r   r'   ZCO_COROUTINEÚco_flags)rB   rC   rD   Ú	code_mock©rå   r   r   r9   1  s    


zAsyncMockMixin.__init__c                Ï   s  t ||fdd�}|  jd7  _|| _| j |¡ | j}|d k	rºt|ƒrL|‚nbt|ƒsˆzt|ƒ}W n t	k
rx   t
‚Y nX t|ƒr®|‚n&t |¡r¤|||ŽI d H }n
|||Ž}|tk	rº|S | jtk	rÊ| jS | jd k	rþt | j¡rò| j||ŽI d H S | j||ŽS | jS )NTrD  r¯   )rF  rŒ   r�   rŽ   rà   r~   r3   rY   r»   ÚStopIterationÚStopAsyncIterationr%   r&   r   r¡   rw   rÍ   )rB   rC   rD   r  rG  rg   r   r   r   rC  A  s6    




z!AsyncMockMixin._execute_mock_callc                 C   s(   | j dkr$d| jpd› d�}t|ƒ‚d S )Nr   ú	Expected r5   z to have been awaited.©rŒ   r¥   r  r   r   r   r   rƒ   i  s    
zAsyncMockMixin.assert_awaitedc                 C   s0   | j dks,d| jpd› d| j › d�}t|ƒ‚d S ©Nr¯   rã  r5   z$ to have been awaited once. Awaited ú times.rä  r   r   r   r   r„   q  s    
z"AsyncMockMixin.assert_awaited_oncec                   sz   ˆj d kr&ˆ ˆ ˆ¡}td|› d�ƒ‚‡ ‡‡fdd„}ˆ ˆ ˆf¡}ˆ ˆj ¡}||krvt|tƒrf|nd }t|ƒ ƒ|‚d S )NzExpected await: z
Not awaitedc                     s   ˆj ˆ ˆdd�} | S )NÚawait)r  r!  r"  r#  r   r   r$  ‚  s    z:AsyncMockMixin.assert_awaited_with.<locals>._error_message)r�   r  r  r  r"   r%  )rB   rC   rD   r&  r$  r'  r(  r   r#  r   r…   z  s    
z"AsyncMockMixin.assert_awaited_withc                O   s8   | j dks,d| jpd› d| j › d�}t|ƒ‚| j||ŽS rå  )rŒ   r¥   r  r…   r)  r   r   r   r†   Œ  s    
z'AsyncMockMixin.assert_awaited_once_withc                   sZ   ˆ   ||f¡}‡ fdd„ˆ jD ƒ}||krVt|tƒr8|nd }ˆ  ||¡}td| ƒ|‚d S )Nc                    s   g | ]}ˆ   |¡‘qS r   r*  r+  r˜   r   r   rÂ   œ  s     z3AsyncMockMixin.assert_any_await.<locals>.<listcomp>z%s await not found)r  rŽ   r"   r%  r  r  r9  r   r˜   r   r‡   —  s    ÿþzAsyncMockMixin.assert_any_awaitFc           	   	      sð   ‡ fdd„|D ƒ}t dd„ |D ƒd ƒ}t‡ fdd„ˆ jD ƒƒ}|s�||krŒ|d krXd}nd dd„ |D ƒ¡}t|› d	t|ƒ› d
ˆ j› �ƒ|‚d S t|ƒ}g }|D ]2}z| |¡ W q  tk
rÐ   | |¡ Y q X q |rìtdt	|ƒf ƒ|‚d S )Nc                    s   g | ]}ˆ   |¡‘qS r   r*  r+  r˜   r   r   rÂ   °  s     z4AsyncMockMixin.assert_has_awaits.<locals>.<listcomp>c                 s   s   | ]}t |tƒr|V  qd S r/   r-  r   r   r   r   r.  ±  s     
 z3AsyncMockMixin.assert_has_awaits.<locals>.<genexpr>c                 3   s   | ]}ˆ   |¡V  qd S r/   r*  r+  r˜   r   r   r.  ²  s     zAwaits not found.z,Error processing expected awaits.
Errors: {}c                 S   s   g | ]}t |tƒr|nd ‘qS r/   r-  r   r   r   r   rÂ   º  s   ÿr/  z	
Actual: z%r not all found in await list)
r»   rs   rŽ   r1  r  rZ   r3  r=   rà   r[   )	rB   r4  r5  r&  r(  Z
all_awaitsr6  r7  r8  r   r˜   r   rˆ   ¤  s>    ÿþÿüÿþz AsyncMockMixin.assert_has_awaitsc                 C   s0   | j dkr,d| jpd› d| j › d�}t|ƒ‚d S )Nr   rã  r5   z# to not have been awaited. Awaited ræ  rä  r   r   r   r   r‰   Ð  s    
z!AsyncMockMixin.assert_not_awaitedc                   s&   t ƒ j||Ž d| _d | _tƒ | _d S ©Nr   )rÝ  rv   rŒ   r�   rs   rŽ   rA   rà  r   r   rv   Ù  s    zAsyncMockMixin.reset_mock)F)rN   rQ   r›   r®   rŒ   r�   rŽ   r9   rC  rƒ   r„   r…   r†   r‡   rˆ   r‰   rv   Ú__classcell__r   r   rà  r   rÄ   ,  s   (	
,	rÄ   c                   @   s   e Zd ZdS )r	   NrH  r   r   r   r   r	   ã  s   r	   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_ANYc                 C   s   dS r8   r   ©rB   rÂ  r   r   r   rÀ  	  s    z_ANY.__eq__c                 C   s   dS r•  r   rë  r   r   r   rÅ  	  s    z_ANY.__ne__c                 C   s   dS )Nz<ANY>r   r˜   r   r   r   r™   	  s    z_ANY.__repr__N)rN   rQ   r›   rÀ  rÅ  r™   r   r   r   r   rê  	  s   rê  c                 C   s`   d|  }d}d  dd„ |D ƒ¡}d  dd„ | ¡ D ƒ¡}|r@|}|rX|rP|d7 }||7 }|| S )Nz%s(%%s)rË   z, c                 S   s   g | ]}t |ƒ‘qS r   )ÚreprrÀ   r   r   r   rÂ   !	  s     z*_format_call_signature.<locals>.<listcomp>c                 S   s   g | ]\}}d ||f ‘qS )z%s=%rr   )r   ró   r©   r   r   r   rÂ   "	  s    )rý   rõ   )r   rC   rD   r  Zformatted_argsZargs_stringZkwargs_stringr   r   r   r  	  s    
ÿr  c                   @   s†   e Zd Zd dd„Zd!dd	„Zd
d„ ZejZdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zdd„ ZdS )"rF  r   rË   NFTc                 C   s¼   d}i }t |ƒ}|dkr$|\}}}nr|dkrd|\}	}
t|	tƒrX|	}t|
tƒrR|
}qb|
}q–|	|
 }}n2|dkr–|\}t|tƒr‚|}nt|tƒr’|}n|}|rªt | ||f¡S t | |||f¡S )Nr   é   r‘   r¯   )r±   r"   rˆ  r[   rÆ   )rÇ   r©   r   rµ   rE  Ú	from_kallrC   rD   Ú_lenÚfirstÚsecondr   r   r   rÆ   C	  s.    



z_Call.__new__c                 C   s   || _ || _|| _d S r/   )r¥   r£   Ú_mock_from_kall)rB   r©   r   rµ   rE  rî  r   r   r   r9   c	  s    z_Call.__init__c                 C   sh  |t krdS zt|ƒ}W n tk
r.   Y dS X d}t| ƒdkrJ| \}}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 }n"t|	tƒrä|	}di  }}nd}|	}nV|dk�r@|\}
}t|
tƒ�r4|
}t|tƒ�r(|i  }}n
d| }}n
|
| }}ndS |�rX||k�rXdS ||f||fkS )
NTFrË   r‘   r£   r   r   rí  r¯   )r   r±   r  r$   r£   r"   r[   rˆ  )rB   rÂ  Z	len_otherZ	self_nameZ	self_argsZself_kwargsZ
other_nameZ
other_argsZother_kwargsr©   rð  rñ  r   r   r   rÀ  j	  sR    


ÿ


z_Call.__eq__c                O   s<   | j d krtd||fdd�S | j d }t| j ||f|| d�S )NrË   râ   r“   rÙ  ©r¥   rF  r  r   r   r   r:   ¤	  s    

z_Call.__call__c                 C   s2   | j d krt|dd�S d| j |f }t|| dd�S )NF)r   rî  z%s.%s)r   rµ   rî  ró  )rB   r�   r   r   r   r   r    ¬	  s    
z_Call.__getattr__c                 C   s   |t jkrt‚t  | |¡S r/   )r[   r^   r;   Ú__getattribute__)rB   r�   r   r   r   rô  ³	  s    
z_Call.__getattribute__c                O   s   |   d¡||ŽS )Nrï   ©r    rA   r   r   r   rï   ¹	  s    z_Call.countc                O   s   |   d¡||ŽS )NÚindexrõ  rA   r   r   r   rö  ¼	  s    z_Call.indexc                 C   s(   t | ƒdkr| \}}n
| \}}}||fS )Nr‘   )r±   r  r   r   r   Ú_get_call_arguments¿	  s    

z_Call._get_call_argumentsc                 C   s   |   ¡ d S rè  ©r÷  r˜   r   r   r   rC   Ç	  s    z
_Call.argsc                 C   s   |   ¡ d S )Nr¯   rø  r˜   r   r   r   rD   Ë	  s    z_Call.kwargsc                 C   s|   | j s&| jpd}| d¡r"d| }|S t| ƒdkr@d}| \}}n0| \}}}|sTd}n| d¡shd| }nd| }t|||ƒS )Nr   râ   zcall%sr‘   zcall.%s)rò  r¥   r   r±   r  )rB   r   rC   rD   r   r   r   r™   Ï	  s    





z_Call.__repr__c                 C   s4   g }| }|d k	r(|j r | |¡ |j}qtt|ƒƒS r/   )rò  rà   r£   rs   rü   )rB   ZvalsrJ  r   r   r   Ú	call_listä	  s    
z_Call.call_list)r   rË   NFT)r   NNFT)rN   rQ   r›   rÆ   r9   rÀ  r  rÅ  r:   r    rô  rï   rö  r÷  r­   rC   rD   r™   rù  r   r   r   r   rF  0	  s(     ÿ
   ÿ
7

rF  )rî  c              	   K   sl  t | ƒrt| ƒ} t| tƒ}t| ƒ}d| i}|r8d| i}n| d krDi }|rT|rTd|d< | |¡ t}	t | ¡rri }n8|rˆ|r‚tdƒ‚t	}	n"t
| ƒs–t}	n|rª|rªt| ƒsªt}	| d|¡}|}
|d krÆd}
|	f |||
|dœ|—Ž}t| tƒ�rt|| ƒ}|�rt|ƒ nt| |||ƒ |d k	�r,|�s,||j|< |�rV|�sVd	|k�rVt| |dd
|d�|_t| ƒD �]}t|ƒ�rr�q^zt| |ƒ}W n tk
�rœ   Y �q^Y nX d|i}|�r´d|i}t|tƒ�sÜt|||||ƒ}||j|< np|}t| tƒ�rò|j}t| ||ƒ}||d< t |¡�rt	}nt}|f ||||dœ|—Ž}||j|< t|||d� t|tƒ�r^t|||ƒ �q^|S )Nr¿   rÑ   TrÕ   zJInstance can not be True when create_autospec is mocking an async functionr   rË   )rµ   rÔ   rÓ   r   rw   râ   )rL   rt  r·   rÖ   )rµ   r   rÓ   rÔ   )rK   )r\   r1   r"   r.   re  r   r'   ZisdatadescriptorÚRuntimeErrorr	   rY   r   ra   r÷   r6   rj   r�   rM   r   r   rw   rß   r”   r$   r;   rë   r5   Ú
_must_skipr%   r&   rT   )r¿   rÑ   rL   r·   rt  rD   Úis_typeZis_async_funcr}  r|  rÓ   r5   rð   rf   rÊ   rµ   rK   Zchild_klassr   r   r   r   ô	  s–    




ÿÿ


 ÿ

ÿþ
r   c                 C   sx   t | tƒs$|t| di ƒkrdS | j} | jD ]H}|j |t¡}|tkrFq*t |tt	fƒrZ dS t |t
ƒrl|  S  dS q*|S )Nr^   F)r"   r1   r$   rå   r]   r^   r_   r   rW   rX   r6   )r¿   rð   rü  r>  rg   r   r   r   rû  w
  s    


rû  c                   @   s   e Zd Zddd„ZdS )rë   FNc                 C   s(   || _ || _|| _|| _|| _|| _d S r/   )r¿   ÚidsrÑ   rµ   rL   r   )rB   r¿   rÑ   rµ   r   rý  rL   r   r   r   r9   •
  s    z_SpecState.__init__)FNNNFrØ  r   r   r   r   rë   “
  s
         ÿrë   c                 C   s"   t | tƒrt | ¡S t | ¡S d S r/   )r"   ÚbytesÚioÚBytesIOÚStringIO)Ú	read_datar   r   r   Ú
_to_streamª
  s    

r  rË   c                    s&  t ˆƒ}|d g‰‡‡fdd„}‡‡fdd„}‡ ‡fdd„‰‡‡fdd„‰ ‡‡fd	d
„}td krˆdd l}ttt|jƒƒ tt|jƒƒ¡ƒa| d krœt	dt
d�} t	td�‰ˆˆj_d ˆj_d ˆj_d ˆj_d ˆj_|ˆj_ˆƒ ˆd< ˆd ˆj_|ˆj_ˆ ˆj_|ˆj_‡‡‡‡fdd„}|| _ˆ| _| S )Nc                     s$   ˆj jd k	rˆj jS ˆ d j | |ŽS rè  )Ú	readlinesrw   rb   ©Ú_stateÚhandler   r   Ú_readlines_side_effectÀ
  s    z)mock_open.<locals>._readlines_side_effectc                     s$   ˆj jd k	rˆj jS ˆ d j | |ŽS rè  )Úreadrw   rb   r  r   r   Ú_read_side_effectÅ
  s    z$mock_open.<locals>._read_side_effectc                  ?   s$   ˆ ƒ E d H  ˆd j | |ŽV  qd S rè  )Úreadlinerb   )Ú_iter_side_effectr  r   r   Ú_readline_side_effectÊ
  s    z(mock_open.<locals>._readline_side_effectc                  3   s0   ˆj jd k	rˆj jV  qˆ d D ]
} | V  q d S rè  )r  rw   )Úliner  r   r   r  Ï
  s    z$mock_open.<locals>._iter_side_effectc                      s    ˆj jd k	rˆj jS tˆ d ƒS rè  )r  rw   r»   r   r  r   r   Ú_next_side_effectÖ
  s    z$mock_open.<locals>._next_side_effectr   Úopen)r   r¿   r¾   r¯   c                     s6   t ˆƒˆd< ˆjjˆd kr2ˆ ƒ ˆd< ˆd ˆj_tS )Nr   r¯   )r  r  r~   r   rb   )r  r  r  r  r   r   Ú
reset_dataò
  s
    
zmock_open.<locals>.reset_data)r  Ú	file_specÚ_iorZ   r  rß   ÚTextIOWrapperÚunionr   r   r  r~  rw   Úwriter	  r  r  r~   rÇ  r¼   )r5   r  Z
_read_datar  r
  r  r  r  r   )r  r  r  r  r  r   r   ±
  s8    "

r   c                   @   s&   e Zd Zdd„ Zddd„Zdd„ ZdS )	r   c                K   s
   t f |ŽS r/   )r   )rB   rD   r   r   r   rä     s    zPropertyMock._get_child_mockNc                 C   s   | ƒ S r/   r   )rB   r)   Zobj_typer   r   r   rš    s    zPropertyMock.__get__c                 C   s   | |ƒ d S r/   r   )rB   r)   rø   r   r   r   r›    s    zPropertyMock.__set__)N)rN   rQ   r›   rä   rš  r›  r   r   r   r   r   ÿ
  s   	
r   c              	   C   s^   d| _ t| ƒD ]J}zt| |ƒ}W n tk
r8   Y qY nX t|tƒsFq|j| krt|ƒ qd S r8   )rÌ   rß   r$   r;   r"   r   r¤   r   )r5   r�   rÚ  r   r   r   r     s    



r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )rÊ  c                 C   s&   || _ ttd�}tj|_|| jd< d S )NrÜ  r+   )Úiteratorr   r   r'   ZCO_ITERABLE_COROUTINErÞ  r^   )rB   r  rß  r   r   r   r9   +  s    
z_AsyncIterator.__init__c                 C   s   | S r/   r   r˜   r   r   r   r¬  1  s    z_AsyncIterator.__aiter__c                 Ã   s*   zt | jƒW S  tk
r    Y nX t‚d S r/   )r»   r  rá  râ  r˜   r   r   r   r«  4  s
    z_AsyncIterator.__anext__N)rN   rQ   r›   r9   r¬  r«  r   r   r   r   rÊ  '  s   rÊ  )F)F)NFNNN)FFNN)NrË   )yÚ__all__Ú__version__r%   ra  rÿ  r'   r´   rz  ÚbuiltinsÚtypesr   r   r   Zunittest.utilr   Ú	functoolsr   r   rß   rq  r
   rÝ  rÅ   r*   r.   r!   r3   r7   r>   rM   rH   rY   r\   ra   rj   re   r�   r”   r  r•   rœ   r   r   ÚMISSINGr  ZDELETEDrì   r«   r®   rZ   rs   r¸   r¹   r½   r   rè   r<  r   rM  rO  rP  r‡  r‰  rŠ  r   r‹  r”  r–  r�  ZmultipleZstopallr_  Zmagic_methodsZnumericsrý   rö   ZinplaceÚrightZ_non_defaultsr	  rÒ  r:  Z_sync_async_magicsZ_async_magicsr;  rû   r  rÍ  rÁ  rÌ  rÄ  rÆ  rÉ  rË  rÎ  rÏ  rÐ  r   r×  r   rÔ  rÄ   r	   rê  r   r  r[   rF  r   r   rû  rë   r1   rÀ  r6   r  r  r   r   r   rÊ  r   r   r   r   Ú<module>   s~  	


1     ý     	h4  <   ý
    ÿ
2    þ
Mw	ÿÿ             û	þ
    üüó
	
	ü	 8+ B
  ÿ
 ü
N