509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \ð7 ã               @   sF  d¯Z d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
 dd„ eeƒD ƒZefZdejkrzddlZeejjfZdZe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 G d-d.„ d.e!ƒZ"G d/d0„ d0e!ƒZ#e#ƒ Z$e$j%Z%e$j&Z'e$j(Z)d1d2„ Z*d3d4d5d6d7d8d9d:hZ+d;d<„ Z,G d=d>„ d>e-ƒZ.d?d@„ Z/G dAdB„ dBe!ƒZ0G dCdD„ dDe!ƒZ1G dEd	„ d	e1ƒZ2dFdG„ Z3G dHdI„ dIe1ƒZ4G dJd „ d e4e2ƒZ5dKdL„ Z6dMdN„ Z7dOdP„ Z8G dQdR„ dRe!ƒZ9dSdT„ Z:e%dddddfdUdV„Z;d²dWdX„Z<e%dddddfdYd„Z=G dZd[„ d[e!ƒZ>d\d]„ Z?d^d_„ Z@e;e=_!e>e=_Ae<e=_Be@e=_Cd`e=_DdaZEdbZFdcjGddde„ eFjHƒ D ƒƒZIdcjGdfde„ eFjHƒ D ƒƒZJdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxhZKdydz„ ZLd{d„ dcjGeEeFeIeJgƒjHƒ D ƒZMeMeKB ZNd|d}d~dd€d�d‚dƒhZOd„d…„ d†d…„ d‡d…„ dˆœZPeQeQeQeQd‰ddddŠd‹dd‰dŒœZRd�dŽ„ ZSd�d�„ ZTd‘d’„ ZUeSeTeUd“œZVd”d•„ ZWG d–d—„ d—e!ƒZXG d˜d
„ d
eXe2ƒZYG d™d„ deXe5ƒZZG dšd›„ d›e!ƒZ[G dœd�„ d�e!ƒZ\e\ƒ Z]dždŸ„ Z^G d d¡„ d¡e_ƒZ`e`dd¢�Zad³d£d„Zbd¤d¥„ Zcd¦d§„ ZdG d¨d©„ d©e!ƒZeefebƒefe]jgƒfZhefe]jgjiƒfZjdakdªd«„ Zld´d­d„ZmG d®d„ de5ƒZndS )µÚMockÚ	MagicMockÚpatchÚsentinelÚDEFAULTÚANYÚcallÚcreate_autospecÚ
FILTER_DIRÚNonCallableMockÚNonCallableMagicMockÚ	mock_openÚPropertyMockz1.0é    N)Ú
ModuleType)ÚwrapsÚpartialc             C   s   h | ]}|j d ƒs|’qS )Ú_)Ú
startswith)Ú.0Úname© r   ú%/usr/lib64/python3.6/unittest/mock.pyú	<setcomp>#   s    r   ÚjavaTc             C   s   t t| ƒtƒS )N)Ú
issubclassÚtyper
   )Úobjr   r   r   Ú_is_instance_mock2   s    r   c             C   s   t | tƒpt | tƒot| tƒS )N)Ú
isinstanceÚBaseExceptionsr   r   )r   r   r   r   Ú_is_exception8   s    
r    c             C   sœ   t | tƒr6| r6y
| j} W n tk
r.   d S X d}n*t | tƒs`y
| j} W n tk
r^   d S X |rpt| d ƒ}n| }y| tj|ƒfS  t	k
r–   d S X d S )NT)
r   r   Ú__init__ÚAttributeErrorÚFunctionTypesÚ__call__r   ÚinspectZ	signatureÚ
ValueError)ÚfuncZas_instanceZeat_selfZsig_funcr   r   r   Ú_get_signature_object?   s$    


r(   Fc                sD   t | ||ƒ‰ ˆ d krd S ˆ \} ‰ ‡ fdd„}t| |ƒ |t|ƒ_d S )Nc                s   ˆ j ||Ž d S )N)Úbind)Ú
_mock_selfÚargsÚkwargs)Úsigr   r   Úchecksigd   s    z"_check_signature.<locals>.checksig)r(   Ú_copy_func_detailsr   Ú_mock_check_sig)r'   ÚmockÚ	skipfirstÚinstancer.   r   )r-   r   Ú_check_signature_   s    
r4   c          #   C   sœ   | j |_ | j|_y| j|_W n tk
r0   Y nX y| j|_W n tk
rR   Y nX y| j|_W n tk
rt   Y nX y| j|_W n tk
r–   Y nX d S )N)Ú__name__Ú__doc__Ú__text_signature__r"   Ú
__module__Ú__defaults__Ú__kwdefaults__)r'   Úfuncopyr   r   r   r/   j   s$    r/   c             C   s&   t | tƒrdS t| dd ƒd k	r"dS dS )NTr$   F)r   r   Úgetattr)r   r   r   r   Ú	_callable�   s
    
r=   c             C   s   t | ƒttfkS )N)r   ÚlistÚtuple)r   r   r   r   Ú_is_list‰   s    r@   c             C   sH   t | tƒst| dd ƒd k	S x(| f| j D ]}|jjdƒd k	r(dS q(W dS )Nr$   TF)r   r   r<   Ú__mro__Ú__dict__Úget)r   Úbaser   r   r   Ú_instance_callable�   s    
rE   c                s�   t |ƒsd S t|tƒ}t|||ƒ}|d kr.| S |\}‰ ‡ fdd„}t||ƒ |j}|jƒ s^d}|| dœ}d| }	t|	|ƒ || }
t|
| ƒ |
S )Nc                 s   ˆ j | |Ž d S )N)r)   )r+   r,   )r-   r   r   r.   ª   s    z _set_signature.<locals>.checksigr;   )Z
_checksig_r1   zYdef %s(*args, **kwargs):
    _checksig_(*args, **kwargs)
    return mock(*args, **kwargs))	r=   r   r   r(   r/   r5   ÚisidentifierÚexecÚ_setup_func)r1   Úoriginalr3   r2   Úresultr'   r.   r   ÚcontextÚsrcr;   r   )r-   r   Ú_set_signaturež   s$    




rM   c       
         sð   ˆˆ _ tˆƒsd 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 )N)Úassert_called_with)r+   r,   )r1   r   r   rN   Â   s    z'_setup_func.<locals>.assert_called_withc                 s   ˆ j | |ŽS )N)Úassert_called)r+   r,   )r1   r   r   rO   Ä   s    z"_setup_func.<locals>.assert_calledc                 s   ˆ j | |ŽS )N)Úassert_not_called)r+   r,   )r1   r   r   rP   Æ   s    z&_setup_func.<locals>.assert_not_calledc                 s   ˆ j | |ŽS )N)Úassert_called_once)r+   r,   )r1   r   r   rQ   È   s    z'_setup_func.<locals>.assert_called_oncec                 s   ˆ j | |ŽS )N)Úassert_called_once_with)r+   r,   )r1   r   r   rR   Ê   s    z,_setup_func.<locals>.assert_called_once_withc                 s   ˆ j | |ŽS )N)Úassert_has_calls)r+   r,   )r1   r   r   rS   Ì   s    z%_setup_func.<locals>.assert_has_callsc                 s   ˆ j | |ŽS )N)Úassert_any_call)r+   r,   )r1   r   r   rT   Î   s    z$_setup_func.<locals>.assert_any_callc                 s:   t ƒ ˆ _t ƒ ˆ _ˆjƒ  ˆ j} t| ƒr6| ˆk	r6| jƒ  d S )N)Ú	_CallListÚmethod_callsÚ
mock_callsÚ
reset_mockÚreturn_valuer   )Úret)r;   r1   r   r   rX   Ð   s    z_setup_func.<locals>.reset_mockFr   )r1   r   ÚcalledÚ
call_countÚ	call_argsrU   Úcall_args_listrV   rW   rY   Úside_effectÚ_mock_childrenrN   rR   rS   rT   rX   rO   rP   rQ   Ú_mock_delegate)
r;   r1   rN   rO   rP   rQ   rR   rS   rT   rX   r   )r;   r1   r   rH   »   s:    rH   c             C   s   d| dd…  | kS )Nz__%s__é   éþÿÿÿr   )r   r   r   r   Ú	_is_magicï   s    rd   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú_SentinelObjectc             C   s
   || _ d S )N)r   )Úselfr   r   r   r   r!   õ   s    z_SentinelObject.__init__c             C   s
   d| j  S )Nzsentinel.%s)r   )rf   r   r   r   Ú__repr__ø   s    z_SentinelObject.__repr__N)r5   r8   Ú__qualname__r!   rg   r   r   r   r   re   ó   s   re   c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú	_Sentinelc             C   s
   i | _ d S )N)Ú
_sentinels)rf   r   r   r   r!   þ   s    z_Sentinel.__init__c             C   s   |dkrt ‚| jj|t|ƒƒS )NÚ	__bases__)r"   rj   Ú
setdefaultre   )rf   r   r   r   r   Ú__getattr__  s    z_Sentinel.__getattr__N)r5   r8   rh   r!   rm   r   r   r   r   ri   ü   s   ri   c             C   s$   t | ƒttttfkr t | ƒ| ƒS | S )N)r   Údictr>   r?   Úset)Úvaluer   r   r   Ú_copy  s    rq   rY   Ú_mock_return_valuer_   Ú_mock_side_effectÚ_mock_parentÚ_mock_new_parentÚ
_mock_nameÚ_mock_new_namec             C   s8   t j| ƒ d|  }| |fdd„}| |fdd„}t||ƒS )NZ_mock_c             S   s"   | j }|d krt| |ƒS t||ƒS )N)ra   r<   )rf   r   Ú	_the_namer-   r   r   r   Ú_get  s    
z"_delegating_property.<locals>._getc             S   s*   | j }|d kr|| j|< nt|||ƒ d S )N)ra   rB   Úsetattr)rf   rp   r   rx   r-   r   r   r   Ú_set$  s    z"_delegating_property.<locals>._set)Ú_allowed_namesÚaddÚproperty)r   rx   ry   r{   r   r   r   Ú_delegating_property  s
    
r   c               @   s   e Zd Zdd„ Zdd„ ZdS )rU   c             C   sn   t |tƒstj| |ƒS t|ƒ}t| ƒ}||kr2dS x6td|| d ƒD ] }| ||| … }||krFdS qFW dS )NFr   é   T)r   r>   Ú__contains__ÚlenÚrange)rf   rp   Z	len_valueZlen_selfÚiZsub_listr   r   r   r�   1  s    
z_CallList.__contains__c             C   s   t jt| ƒƒS )N)ÚpprintZpformatr>   )rf   r   r   r   rg   ?  s    z_CallList.__repr__N)r5   r8   rh   r�   rg   r   r   r   r   rU   /  s   rU   c             C   sx   t |ƒsdS |js,|js,|jd k	s,|jd k	r0dS | }x|d k	rR||krJdS |j}q6W |rd| |_||_|rt| |_||_dS )NFT)r   rv   rw   rt   ru   )Úparentrp   r   Únew_nameÚ_parentr   r   r   Ú_check_and_set_parentC  s$    



r‰   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	_MockIterc             C   s   t |ƒ| _d S )N)Úiterr   )rf   r   r   r   r   r!   ]  s    z_MockIter.__init__c             C   s   | S )Nr   )rf   r   r   r   Ú__iter___  s    z_MockIter.__iter__c             C   s
   t | jƒS )N)Únextr   )rf   r   r   r   Ú__next__a  s    z_MockIter.__next__N)r5   r8   rh   r!   rŒ   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 )Nr   )rf   r+   r,   r   r   r   r!   g  s    zBase.__init__)r5   r8   rh   r   rr   rs   r!   r   r   r   r   r�   d  s   r�   c               @   sD  e Zd Zdd„ ZdCdd„Zdd	„ ZdDd
d„ZdEd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dFd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d1d2„ Z d3d4„ Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$d;d<„ Z%dGd=d>„Z&d?d@„ Z'dAdB„ Z(dS )Hr
   c             O   s$   t | j| fd| jiƒ}tj|ƒ}|S )Nr6   )r   r5   r6   ÚobjectÚ__new__)Úclsr+   ÚkwÚnewr3   r   r   r   r‘   o  s    
zNonCallableMock.__new__NÚ Fc             K   sæ   |d kr|}| j }||d< ||d< ||d< ||d< |d k	rB|}d}|
d krR|d k	}
| j|||	|
ƒ i |d< ||d< d |d< d	|d
< d |d< d|d< tƒ |d< tƒ |d< tƒ |d< ||d< |rÈ| jf |Ž tt| ƒj||||||ƒ d S )Nrt   rv   rw   ru   Tr`   Ú_mock_wrapsra   FZ_mock_calledZ_mock_call_argsr   Z_mock_call_countZ_mock_call_args_listZ_mock_mock_callsrV   Ú_mock_unsafe)rB   Ú_mock_add_specrU   Úconfigure_mockÚ_safe_superr
   r!   )rf   Úspecr   r   Úspec_setr†   Ú_spec_stateÚ	_new_nameÚ_new_parentÚ_spec_as_instanceÚ	_eat_selfZunsafer,   rB   r   r   r   r!   x  s8    




zNonCallableMock.__init__c             C   s(   d |_ d |_d|_d |_t| ||ƒ d S )Nr•   )rt   ru   rv   rw   rz   )rf   r1   Ú	attributer   r   r   Úattach_mock¤  s
    zNonCallableMock.attach_mockc             C   s   | j ||ƒ d S )N)r˜   )rf   r›   rœ   r   r   r   Úmock_add_spec±  s    zNonCallableMock.mock_add_specc       	      C   s|   d }d }|d k	rRt |ƒ rRt|tƒr*|}nt|ƒ}t|||ƒ}|oH|d }t|ƒ}| j}||d< ||d< ||d< ||d< d S )Nr€   Ú_spec_classÚ	_spec_setÚ_spec_signatureÚ_mock_methods)r@   r   r   Ú
_get_classr(   ÚdirrB   )	rf   r›   rœ   r    r¡   r¥   r§   ÚresrB   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 )Nz())rŸ   rž   )rr   ra   rY   r   Ú_get_child_mock)rf   rZ   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 )Nz())ra   rY   rr   r‰   )rf   rp   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 )N)r¥   r   )rf   r   r   r   Ú	__class__ê  s    
zNonCallableMock.__class__r[   r\   r]   r^   rW   c             C   sT   | j }|d kr| jS |j}|d k	rPt|ƒ rPt|tƒ rPt|ƒ rPt|ƒ}||_|S )N)ra   rs   r_   Úcallabler   rŠ   r    )rf   Ú	delegatedZsfr   r   r   Z__get_side_effect÷  s    z!NonCallableMock.__get_side_effectc             C   s(   t |ƒ}| j}|d kr|| _n||_d S )N)Ú	_try_iterra   rs   r_   )rf   rp   r¯   r   r   r   Z__set_side_effect  s
    z!NonCallableMock.__set_side_effect)rY   r_   c            C   s¾   |d krg }t | ƒ|krd S |jt | ƒƒ d| _d | _d| _tƒ | _tƒ | _tƒ | _|r^t	| _
|rhd | _x0| jjƒ D ]"}t|tƒst|tkrŒqt|j|ƒ qtW | j
}t|ƒrº|| k	rº|j|ƒ d S )NFr   )ÚidÚappendr[   r]   r\   rU   rW   r^   rV   r   rr   rs   r`   Úvaluesr   Ú
_SpecStateÚ_deletedrX   r   )rf   ZvisitedrY   r_   ZchildrZ   r   r   r   rX     s,    zNonCallableMock.reset_mockc             K   s`   xZt |jƒ dd„ d�D ]B\}}|jdƒ}|jƒ }| }x|D ]}t||ƒ}q:W t|||ƒ qW d S )Nc             S   s   | d j dƒS )Nr   Ú.)Úcount)Úentryr   r   r   Ú<lambda>8  s    z0NonCallableMock.configure_mock.<locals>.<lambda>)Úkeyr¶   )ÚsortedÚitemsÚsplitÚpopr<   rz   )rf   r,   ÚargÚvalr+   Úfinalr   r¸   r   r   r   r™   +  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|jdƒrdt |ƒ‚| j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 )	Nr¨   r—   zMock object has no attribute %rÚassertÚassret)r†   r   r   rž   rŸ   >   r—   r¨   )rÂ   rÃ   )r"   r¨   Ú_all_magicsrd   r—   r   r`   rC   rµ   r–   r<   r¬   r   r´   r   r›   rœ   r3   r†   r   )rf   r   rJ   r   r   r   r   rm   A  s6    






zNonCallableMock.__getattr__c       
      C   s"  | j g}| j}| }d}|dgkr$d}tƒ }xT|d k	r~|}|j|j | ƒ d}|j dkrZd}|j}t|ƒ|krnP |jt|ƒƒ q,W tt|ƒƒ}|jp”d}t	|ƒdkr¶|d dkr¶|d7 }||d< dj
|ƒ}d}|dkrÜd	| }d}	| jd k	�rd
}	| j� rüd}	|	| jj }	dt| ƒj||	t| ƒf S )Nr¶   ú()r•   r1   r€   ú().r   úmock.z name=%rz spec=%rz spec_set=%rz<%s%s%s id='%s'>)rÅ   rÆ   )r1   rÇ   )rw   ru   ro   r²   r±   r}   r>   Úreversedrv   r‚   Újoinr¥   r¦   r5   r   )
rf   Z
_name_listrˆ   ZlastÚdotÚseenZ_firstr   Zname_stringZspec_stringr   r   r   rg   g  sL    




zNonCallableMock.__repr__c             C   sh   t stj| ƒS | jpg }tt| ƒƒ}t| jƒ}dd„ |D ƒ}dd„ |D ƒ}tt	|| | t| j
ƒ ƒƒS )Nc             S   s   g | ]}|j d ƒs|‘qS )r   )r   )r   Úer   r   r   ú
<listcomp>¢  s    z+NonCallableMock.__dir__.<locals>.<listcomp>c             S   s$   g | ]}|j d ƒ st|ƒr|‘qS )r   )r   rd   )r   rÌ   r   r   r   rÍ   £  s    )r	   r�   Ú__dir__r¨   rª   r   r>   rB   r»   ro   r`   )rf   ZextrasZ	from_typeZ	from_dictr   r   r   rÎ   ™  s    


zNonCallableMock.__dir__c                s"  |t krtjˆ||ƒ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|< tjˆ||ƒS )Nz!Mock object has no attribute '%s'z.Attempting to set unsupported magic method %r.c                 s   ˆ ˆf| ž|ŽS )Nr   )r+   r“   )rI   rf   r   r   r¹   »  s    z-NonCallableMock.__setattr__.<locals>.<lambda>r­   )r|   r�   Ú__setattr__r¦   r¨   rB   r"   Ú_unsupported_magicsrÄ   r   rz   r   Ú_get_methodr‰   r`   r¥   )rf   r   rp   Úmsgr   )rI   rf   r   rÏ   ©  s2    




zNonCallableMock.__setattr__c             C   s„   |t kr2|t| ƒjkr2tt| ƒ|ƒ || jkr2d S || jkrHtj| |ƒ | jj|tƒ}|t	krft
|ƒ‚|tk	rv| j|= t	| j|< d S )N)rÄ   r   rB   Údelattrr�   Ú__delattr__r`   rC   Ú_missingrµ   r"   )rf   r   r   r   r   r   rÔ   Ë  s    

zNonCallableMock.__delattr__c             C   s   | j pd}t|||ƒS )Nr1   )rv   Ú_format_call_signature)rf   r+   r,   r   r   r   r   Ú_format_mock_call_signatureÞ  s    
z+NonCallableMock._format_mock_call_signaturec             C   sD   d}| j ||ƒ}| j}t|ƒdkr.|dd … }| j |Ž }|||f S )Nz!Expected call: %s
Actual call: %sé   r€   )r×   r]   r‚   )rf   r+   r,   ÚmessageÚexpected_stringr]   Zactual_stringr   r   r   Ú_format_mock_failure_messageã  s    
z,NonCallableMock._format_mock_failure_messagec             C   st   | j }|d k	rlt|ƒdkr(d}|\}}n
|\}}}y||j||ŽfS  tk
rh } z
|jd ƒS d }~X qpX n|S d S )Nrb   r•   )r§   r‚   r)   Ú	TypeErrorÚwith_traceback)rf   Ú_callr-   r   r+   r,   rÌ   r   r   r   Ú_call_matcherí  s    

zNonCallableMock._call_matcherc             C   s.   | }|j dkr*d|jpd|j f }t|ƒ‚d S )Nr   z7Expected '%s' to not have been called. Called %s times.r1   )r\   rv   ÚAssertionError)r*   rf   rÒ   r   r   r   rP     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.r1   )r\   rv   rà   )r*   rf   rÒ   r   r   r   rO     s
    
zNonCallableMock.assert_calledc             C   s.   | }|j dks*d|jpd|j f }t|ƒ‚d S )Nr€   z8Expected '%s' to have been called once. Called %s times.r1   )r\   rv   rà   )r*   rf   rÒ   r   r   r   rQ     s
    
z"NonCallableMock.assert_called_oncec                s|   | ‰ˆj d kr(ˆjˆ ˆƒ}td|f ƒ‚‡ ‡‡fdd„}ˆjˆ ˆfƒ}ˆjˆj ƒ}||krxt|tƒrh|nd }t|ƒ ƒ|‚d S )NzExpected call: %s
Not calledc                 s   ˆj ˆ ˆƒ} | S )N)rÛ   )rÒ   )r+   r,   rf   r   r   Ú_error_message'  s    z:NonCallableMock.assert_called_with.<locals>._error_message)r]   r×   rà   rß   r   Ú	Exception)r*   r+   r,   Úexpectedrá   ÚactualÚcauser   )r+   r,   rf   r   rN     s    
z"NonCallableMock.assert_called_withc             O   s6   | }|j dks*d|jpd|j f }t|ƒ‚|j||ŽS )Nr€   z1Expected '%s' to be called once. Called %s times.r1   )r\   rv   rà   rN   )r*   r+   r,   rf   rÒ   r   r   r   rR   1  s    
z'NonCallableMock.assert_called_once_withc                sÈ   ‡ fdd„|D ƒ}t |tƒr |nd }t‡ fdd„ˆ jD ƒƒ}|sd||kr`tdt|ƒˆ jf ƒ|‚d S t|ƒ}g }x:|D ]2}y|j|ƒ W qv tk
r¦   |j|ƒ Y qvX qvW |rÄtdt	|ƒf ƒ|‚d S )Nc                s   g | ]}ˆ j |ƒ‘qS r   )rß   )r   Úc)rf   r   r   rÍ   F  s    z4NonCallableMock.assert_has_calls.<locals>.<listcomp>c             3   s   | ]}ˆ j |ƒV  qd S )N)rß   )r   ræ   )rf   r   r   ú	<genexpr>H  s    z3NonCallableMock.assert_has_calls.<locals>.<genexpr>z(Calls not found.
Expected: %r
Actual: %rz%r not all found in call list)
r   râ   rU   rW   rà   r>   Úremover&   r²   r?   )rf   ZcallsZ	any_orderrã   rå   Z	all_callsZ	not_foundZkallr   )rf   r   rS   <  s*    

z NonCallableMock.assert_has_callsc                sZ   ˆ j ||fƒ}‡ fdd„ˆ jD ƒ}||krVt|tƒr8|nd }ˆ j||ƒ}td| ƒ|‚d S )Nc                s   g | ]}ˆ j |ƒ‘qS r   )rß   )r   ræ   )rf   r   r   rÍ   f  s    z3NonCallableMock.assert_any_call.<locals>.<listcomp>z%s call not found)rß   r^   r   râ   r×   rà   )rf   r+   r,   rã   rä   rå   rÚ   r   )rf   r   rT   _  s    zNonCallableMock.assert_any_callc             K   sF   t | ƒ}t|tƒs2t|tƒr"t}q<t|tƒr<t}n
|jd }|f |ŽS )Nr€   )r   r   ÚCallableMixinr   r   r
   r   rA   )rf   r“   Ú_typeÚklassr   r   r   r¬   o  s    



zNonCallableMock._get_child_mock)NNNNNNr•   NFNF)F)FF)N)F))r5   r8   rh   r‘   r!   r£   r¤   r˜   Z"_NonCallableMock__get_return_valueZ"_NonCallableMock__set_return_valueZ"_NonCallableMock__return_value_docr~   rY   r­   r   r[   r\   r]   r^   rW   Z!_NonCallableMock__get_side_effectZ!_NonCallableMock__set_side_effectr_   rX   r™   rm   rg   rÎ   rÏ   rÔ   r×   rÛ   rß   rP   rO   rQ   rN   rR   rS   rT   r¬   r   r   r   r   r
   l  sP   
  
)
	 

&2"
			
#c             C   sF   | d kr| S t | ƒr| S t| ƒr$| S yt| ƒS  tk
r@   | S X d S )N)r    r=   r‹   rÜ   )r   r   r   r   r°   ƒ  s    r°   c            
   @   sB   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S )ré   Nr•   c          	   K   s6   || j d< tt| ƒj|||||||	|
f|Ž || _d S )Nrr   )rB   rš   ré   r!   r_   )rf   r›   r_   rY   r   r   rœ   r†   r�   rž   rŸ   r,   r   r   r   r!   •  s
    


zCallableMixin.__init__c             O   s   d S )Nr   )rf   r+   r,   r   r   r   r0   ¢  s    zCallableMixin._mock_check_sigc             O   s   | j ||Ž | j||ŽS )N)r0   Ú
_mock_call)r*   r+   r,   r   r   r   r$   §  s    zCallableMixin.__call__c             O   s¶  | }d|_ | jd7  _t||fdd�}||_|jj|ƒ tƒ }|jd k	}|j}|j	}|dk}	|j
jtd||fƒƒ |j}
x°|
d k	�r*|r¼|
jjt|||fƒƒ |
jd k	}|r¼|
jd | }t|||fƒ}|
j
j|ƒ |
j	�r|	rèd}nd}|
j	dk}	|
j	| | }|
j}
t|
ƒ}||k�rP |j|ƒ q|W |j}|d k	�r†t|ƒ�rL|‚n,t|ƒ�snt|ƒ}t|ƒ�rx|‚n
|||Ž}|tk	�r†|S |jtk	�r˜|jS |jd k	�r°|j||ŽS |jS )NTr€   )Útwoz()r•   r¶   )r[   r\   Ú_Callr]   r^   r²   ro   rt   rv   rw   rW   ru   rV   r±   r}   r_   r    r=   r�   r   rr   rY   r–   )r*   r+   r,   rf   rÞ   rË   Zdo_method_callsZmethod_call_nameZmock_call_nameZ	is_a_callrŸ   Zthis_mock_callrÊ   Z_new_parent_idZeffectrJ   r   r   r   rì   ®  s`    









zCallableMixin._mock_call)r5   r8   rh   r   r!   r0   r$   rì   r   r   r   r   ré   “  s   ré   c               @   s   e Zd ZdS )r   N)r5   r8   rh   r   r   r   r   r   ü  s   1c             C   s2   y
t | |ƒS  tk
r,   t|ƒ t | |ƒS X d S )N)r<   r"   Ú
__import__)ÚthingÚcompÚimport_pathr   r   r   Ú_dot_lookup1  s
    
ró   c             C   sF   | j dƒ}|jdƒ}t|ƒ}x$|D ]}|d| 7 }t|||ƒ}q"W |S )Nr¶   r   z.%s)r½   r¾   rï   ró   )ÚtargetZ
componentsrò   rð   rñ   r   r   r   Ú	_importer9  s    


rõ   c             C   s
   t | dƒS )NÚis_local)Úhasattr)Úpatcherr   r   r   Ú_is_startedD  s    rù   c               @   sd   e Zd ZdZg Z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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&   Úgetterr¢   r”   Únew_callabler›   ÚcreateZ	has_localrœ   Úautospecr,   Úadditional_patchers)
rf   rû   r¢   r”   r›   rý   rœ   rþ   rü   r,   r   r   r   r!   N  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 | ]}|j ƒ ‘qS r   )Úcopy)r   Úpr   r   r   rÍ   q  s    z_patch.copy.<locals>.<listcomp>)rú   rû   r¢   r”   r›   rý   rœ   rþ   rü   r,   Úattribute_namerÿ   )rf   rø   r   r   r   r   i  s    z_patch.copyc             C   s   t |tƒr| j|ƒS | j|ƒS )N)r   r   Údecorate_classÚdecorate_callable)rf   r'   r   r   r   r$   v  s    

z_patch.__call__c             C   sR   xLt |ƒD ]@}|jtjƒsq
t||ƒ}t|dƒs2q
| jƒ }t||||ƒƒ q
W |S )Nr$   )rª   r   r   ÚTEST_PREFIXr<   r÷   r   rz   )rf   rë   ÚattrÚ
attr_valuerø   r   r   r   r  |  s    

z_patch.decorate_classc                s<   t ˆ dƒrˆ jj| ƒ ˆ S tˆ ƒ‡ ‡fdd„ƒ‰| gˆ_ˆS )NÚ	patchingsc                 sÊ   g }g }t ƒ }z˜ybxJˆjD ]@}|jƒ }|j|ƒ |jd k	rF|j|ƒ q|jtkr|j|ƒ qW | t |ƒ7 } ˆ | |ŽS    ||kr”t|ƒr”|j|ƒ t	j
ƒ }‚ Y nX W d xt|ƒD ]}|j|Ž  q²W X d S )N)r?   r  Ú	__enter__r²   r  Úupdater”   r   rù   ÚsysÚexc_inforÈ   Ú__exit__)r+   ZkeywargsÚ
extra_argsZentered_patchersr  Úpatchingr¿   )r'   Úpatchedr   r   r  �  s*    




z)_patch.decorate_callable.<locals>.patched)r÷   r  r²   r   )rf   r'   r   )r'   r  r   r  Š  s    
z_patch.decorate_callablec             C   sŽ   | j ƒ }| j}t}d}y|j| }W n$ ttfk
rH   t||tƒ}Y nX d}|tkrft|t	ƒrfd| _
| j
 r†|tkr†td||f ƒ‚||fS )NFTz!%s does not have the attribute %r)rû   r¢   r   rB   r"   ÚKeyErrorr<   Ú	_builtinsr   r   rý   )rf   rô   r   rI   Úlocalr   r   r   Úget_original²  s    z_patch.get_originalc             C   s>  | j | 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ƒ‚| j	ƒ \}}|t
koª|d k�rTd}	|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}	t}
i }|d k	�rD|}
nN|d k	�sX|d k	�r’|}|d k	�rj|}t|ƒ�r~d|k}n
t|ƒ }|�r’t}
|d k	�r¤||d< |d k	�r¶||d< t|
tƒ�ràt|
tƒ�rà| j�rà| j|d	< |j|ƒ |
f |Ž}|	�rÀt|ƒ�rÀ|}|d k	�r|}t|ƒ �r2t|ƒ �r2t}
|jd	ƒ |
f |d
dœ|—Ž|_nl|d k	�r²|t
k	�rptdƒ‚|t
k�r‚tdƒ‚t|ƒ}|dk�r˜|}t|f|| jdœ|—Ž}n|�rÀtdƒ‚|}|| _|| _t| j| j|ƒ | jd k	�r:i }| j t
k�r||| j< x.| jD ]$}|j ƒ }|j t
k�r|j|ƒ �qW |S |S )NFzCan't specify spec and autospecTz6Can't provide explicit spec_set *and* spec or autospecz!Can't use 'spec' with create=Truer$   r›   rœ   r   z())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)TN)!r”   r›   rœ   rþ   r,   rü   rû   rô   rÜ   r  r   r   r   r   r@   r®   r   r   r
   r¢   r
  r   rE   r¾   rY   Úboolr   Útemp_originalrö   rz   r  rÿ   r	  )rf   r”   r›   rœ   rþ   r,   rü   rI   r  ZinheritÚKlassÚ_kwargsZ	this_specZnot_callableZnew_attrr  r  r¿   r   r   r   r	  Ê  sº    


















z_patch.__enter__c             G   s¬   t | ƒstdƒ‚| jr4| jtk	r4t| j| j| jƒ nBt| j| jƒ | j	 rvt
| j| jƒ sd| jdkrvt| j| j| jƒ | `| `| `x$t| jƒD ]}t |ƒrŽ|j|Ž  qŽW d S )Nz stop called on unstarted patcherr6   r8   r9   Ú__annotations__r:   )r6   r8   r9   r  r:   )rù   ÚRuntimeErrorrö   r  r   rz   rô   r¢   rÓ   rý   r÷   rÈ   rÿ   r  )rf   r  rø   r   r   r   r  H  s      z_patch.__exit__c             C   s   | j ƒ }| jj| ƒ |S )N)r	  Ú_active_patchesr²   )rf   rJ   r   r   r   Ústart`  s    z_patch.startc             C   s.   y| j j| ƒ W n tk
r$   Y nX | jƒ S )N)r  rè   r&   r  )rf   r   r   r   Ústopg  s
    z_patch.stop)r5   r8   rh   r  r  r!   r   r$   r  r  r  r	  r  r  r  r   r   r   r   rú   I  s   (~rú   c                sP   yˆ j 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 )N)rõ   r   )rô   r   r   r¹   y  s    z_get_target.<locals>.<lambda>)ÚrsplitrÜ   r&   )rô   r¢   rû   r   )rô   r   Ú_get_targets  s    r   c       
   
      s$   ‡ fdd„}	t |	||||||||ƒ	S )Nc                  s   ˆ S )Nr   r   )rô   r   r   r¹   �  s    z_patch_object.<locals>.<lambda>)rú   )
rô   r¢   r”   r›   rý   rœ   rþ   rü   r,   rû   r   )rô   r   Ú_patch_object}  s    
r!  c                s°   t ˆ ƒtkr‡ fdd„}n‡ fdd„}|s2tdƒ‚t|jƒ ƒ}|d \}	}
t||	|
|||||i ƒ	}|	|_xB|dd … D ]2\}	}
t||	|
|||||i ƒ	}|	|_|jj|ƒ qvW |S )Nc                  s   t ˆ ƒS )N)rõ   r   )rô   r   r   r¹   ­  s    z!_patch_multiple.<locals>.<lambda>c                  s   ˆ S )Nr   r   )rô   r   r   r¹   ¯  s    z=Must supply at least one keyword argument with patch.multipler   r€   )	r   Ústrr&   r>   r¼   rú   r  rÿ   r²   )rô   r›   rý   rœ   rþ   rü   r,   rû   r¼   r¢   r”   rø   Zthis_patcherr   )rô   r   Ú_patch_multiple–  s&    

r#  c       
   
   K   s$   t | ƒ\}}	t||	|||||||ƒ	S )N)r   rú   )
rô   r”   r›   rý   rœ   rþ   rü   r,   rû   r¢   r   r   r   r   Ç  s    E
c               @   sR   e Zd Zf df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_dictFc             K   s>   t |tƒrt|ƒ}|| _t|ƒ| _| jj|ƒ || _d | _d S )N)	r   r"  rõ   Úin_dictrn   r³   r
  ÚclearÚ	_original)rf   r%  r³   r&  r,   r   r   r   r!   0  s    

z_patch_dict.__init__c                s.   t ˆ tƒrˆjˆ ƒS tˆ ƒ‡ ‡fdd„ƒ}|S )Nc           
      s"   ˆj ƒ  z
ˆ | |ŽS ˆjƒ  X d S )N)r$  Ú_unpatch_dict)r+   r“   )Úfrf   r   r   Ú_inner>  s    
z$_patch_dict.__call__.<locals>._inner)r   r   r  r   )rf   r)  r*  r   )r)  rf   r   r$   ;  s    

z_patch_dict.__call__c             C   s\   xVt |ƒD ]J}t||ƒ}|jtjƒr
t|dƒr
t| j| j| j	ƒ}||ƒ}t
|||ƒ q
W |S )Nr$   )rª   r<   r   r   r  r÷   r$  r%  r³   r&  rz   )rf   rë   r  r  Z	decoratorZ	decoratedr   r   r   r  I  s    

z_patch_dict.decorate_classc             C   s   | j ƒ  d S )N)r$  )rf   r   r   r   r	  T  s    z_patch_dict.__enter__c             C   s¦   | j }| j}| j}y|jƒ }W n2 tk
rP   i }x|D ]}|| ||< q8W Y nX || _|rdt|ƒ y|j|ƒ W n. tk
r    x|D ]}|| ||< qˆW Y nX d S )N)r³   r%  r&  r   r"   r'  Ú_clear_dictr
  )rf   r³   r%  r&  rI   rº   r   r   r   r$  Y  s"    

z_patch_dict._patch_dictc             C   sV   | j }| j}t|ƒ y|j|ƒ W n. tk
rP   x|D ]}|| ||< q8W Y nX d S )N)r%  r'  r+  r
  r"   )rf   r%  rI   rº   r   r   r   r(  s  s    
z_patch_dict._unpatch_dictc             G   s   | j ƒ  dS )NF)r(  )rf   r+   r   r   r   r  €  s    z_patch_dict.__exit__N)r5   r8   rh   r!   r$   r  r	  r$  r(  r  r  r  r   r   r   r   r$    s   r$  c             C   sB   y| j ƒ  W n0 tk
r<   t| ƒ}x|D ]
}| |= q*W Y nX d S )N)r&  r"   r>   )r%  Úkeysrº   r   r   r   r+  ‰  s    
r+  c              C   s    xt tjƒD ]} | jƒ  qW d S )N)rÈ   rú   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 trunc floor ceil bool next 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ç   ¯  s    rç   c             c   s   | ]}d | V  qdS )zr%sNr   )r   r/  r   r   r   rç   °  s    Ú__get__Ú__set__Ú
__delete__Ú__reversed__Ú__missing__Ú
__reduce__Ú__reduce_ex__Z__getinitargs__Ú__getnewargs__Ú__getstate__Ú__setstate__Ú__getformat__Ú__setformat__rg   rÎ   Ú__subclasses__Ú
__format__Ú__getnewargs_ex__c                s   ‡ fdd„}| |_ |S )Nc                s   ˆ | f|ž|ŽS )Nr   )rf   r+   r“   )r'   r   r   ÚmethodÁ  s    z_get_method.<locals>.method)r5   )r   r'   r?  r   )r'   r   rÑ   ¿  s    rÑ   c             C   s   h | ]}d | ’qS )z__%s__r   )r   r?  r   r   r   r   Ç  s   rm   rÏ   r!   r‘   Ú__prepare__Ú__instancecheck__Ú__subclasscheck__Ú__del__c             C   s
   t j| ƒS )N)r�   Ú__hash__)rf   r   r   r   r¹   Ö  s    r¹   c             C   s
   t j| ƒS )N)r�   Ú__str__)rf   r   r   r   r¹   ×  s    c             C   s
   t j| ƒS )N)r�   Ú
__sizeof__)rf   r   r   r   r¹   Ø  s    )rD  rE  rF  r€   y              ð?g      ð?)Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__int__r�   Ú__len__r  Ú__complex__Ú	__float__Ú__bool__Ú	__index__c                s   ‡ fdd„}|S )Nc                s$   ˆ j j}|tk	r|S ˆ | kr dS tS )NT)Ú__eq__rr   r   ÚNotImplemented)ÚotherÚret_val)rf   r   r   rQ  ì  s    z_get_eq.<locals>.__eq__r   )rf   rQ  r   )rf   r   Ú_get_eqë  s    rU  c                s   ‡ fdd„}|S )Nc                s    ˆ j jtk	rtS ˆ | krdS tS )NF)Ú__ne__rr   r   rR  )rS  )rf   r   r   rV  ö  s
    z_get_ne.<locals>.__ne__r   )rf   rV  r   )rf   r   Ú_get_neõ  s    rW  c                s   ‡ fdd„}|S )Nc                 s    ˆ j j} | tkrtg ƒS t| ƒS )N)rŒ   rr   r   r‹   )rT  )rf   r   r   rŒ   ÿ  s    z_get_iter.<locals>.__iter__r   )rf   rŒ   r   )rf   r   Ú	_get_iterþ  s    rX  )rQ  rV  rŒ   c             C   s„   t j|tƒ}|tk	r||_d S tj|ƒ}|d k	rdy|| ƒ}W n tk
rX   t|ƒ}Y nX ||_d S tj|ƒ}|d k	r€|| ƒ|_d S )N)Ú_return_valuesrC   r   rY   Ú_calculate_return_valuer"   Ú_side_effect_methodsr_   )r1   r?  r   ZfixedZreturn_calulatorrY   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&   | j ƒ  tt| ƒj||Ž | j ƒ  d S )N)Ú_mock_set_magicsrš   r]  r!   )rf   r+   r“   r   r   r   r!   (  s    zMagicMixin.__init__c             C   s’   t }t| dd ƒd k	rTt j| jƒ}tƒ }t | }x$|D ]}|t| ƒjkr4t| |ƒ q4W |tt| ƒjƒ }t| ƒ}x|D ]}t||t	|| ƒƒ qtW d S )Nr¨   )
Ú_magicsr<   Úintersectionr¨   ro   r   rB   rÓ   rz   Ú
MagicProxy)rf   Zthese_magicsZremove_magicsr¸   rê   r   r   r   r^  .  s    

zMagicMixin._mock_set_magicsN)r5   r8   rh   r!   r^  r   r   r   r   r]  '  s   r]  c               @   s   e Zd Zddd„ZdS )r   Fc             C   s   | j ||ƒ | jƒ  d S )N)r˜   r^  )rf   r›   rœ   r   r   r   r¤   G  s    z"NonCallableMagicMock.mock_add_specN)F)r5   r8   rh   r¤   r   r   r   r   r   E  s   c               @   s   e Zd Zddd„ZdS )r   Fc             C   s   | j ||ƒ | jƒ  d S )N)r˜   r^  )rf   r›   rœ   r   r   r   r¤   ]  s    zMagicMock.mock_add_specN)F)r5   r8   rh   r¤   r   r   r   r   r   R  s   c               @   s.   e Zd Zdd„ Zdd„ Zdd„ Zd
dd	„ZdS )ra  c             C   s   || _ || _d S )N)r   r†   )rf   r   r†   r   r   r   r!   i  s    zMagicProxy.__init__c             O   s   | j ƒ }|||ŽS )N)Úcreate_mock)rf   r+   r,   Úmr   r   r   r$   m  s    zMagicProxy.__call__c             C   s8   | j }| j}|j|||d�}t|||ƒ t|||ƒ |S )N)r   rž   rŸ   )r   r†   r¬   rz   r\  )rf   r¸   r†   rc  r   r   r   rb  q  s    zMagicProxy.create_mockNc             C   s   | j ƒ S )N)rb  )rf   r   rê   r   r   r   r0  z  s    zMagicProxy.__get__)N)r5   r8   rh   r!   r$   rb  r0  r   r   r   r   ra  h  s   	ra  c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_ANYc             C   s   dS )NTr   )rf   rS  r   r   r   rQ  ‚  s    z_ANY.__eq__c             C   s   dS )NFr   )rf   rS  r   r   r   rV  …  s    z_ANY.__ne__c             C   s   dS )Nz<ANY>r   )rf   r   r   r   rg   ˆ  s    z_ANY.__repr__N)r5   r8   rh   rQ  rV  rg   r   r   r   r   rd    s   rd  c             C   sd   d|  }d}dj dd„ |D ƒƒ}dj dd„ t|jƒ ƒD ƒƒ}|rD|}|r\|rT|d7 }||7 }|| S )Nz%s(%%s)r•   z, c             S   s   g | ]}t |ƒ‘qS r   )Úrepr)r   r¿   r   r   r   rÍ   ’  s    z*_format_call_signature.<locals>.<listcomp>c             S   s   g | ]\}}d ||f ‘qS )z%s=%rr   )r   rº   rp   r   r   r   rÍ   ”  s    )rÉ   r»   r¼   )r   r+   r,   rÙ   Zformatted_argsZargs_stringZkwargs_stringr   r   r   rÖ   �  s    rÖ   c               @   sr   e Zd Zf ddddfdd„Zf ddddf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dS )rî   r•   NFTc             C   s¼   f }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j| ||fƒS tj| |||fƒS )NrØ   rb   r€   )r‚   r   r"  r?   r‘   )r’   rp   r   r†   rí   Ú	from_kallr+   r,   Ú_lenÚfirstÚsecondr   r   r   r‘   ´  s.    



z_Call.__new__c             C   s   || _ || _|| _d S )N)rv   rt   Ú_mock_from_kall)rf   rp   r   r†   rí   rf  r   r   r   r!   Ô  s    z_Call.__init__c             C   sf  |t krdS yt|ƒ}W n tk
r,   dS X d}t| ƒdkrH| \}}n
| \}}}t| dd ƒrzt|dd ƒrz| j|jkrzdS d}|dkr’f i  }}n°|dkr¦|\}}}nœ|dkrì|\}	t|	tƒrÈ|	}i }n"t|	tƒrâ|	}f i  }}nf }|	}nV|dk�r>|\}
}t|
tƒ�r2|
}t|tƒ�r&|i  }}n
f | }}n
|
| }}ndS |�rV||k�rVdS ||f||fkS )	NTFr•   rb   rt   r   rØ   r€   )r   r‚   rÜ   r<   rt   r   r?   r"  )rf   rS  Z	len_otherZ	self_nameZ	self_argsZself_kwargsZ
other_nameZ
other_argsZother_kwargsrp   rh  ri  r   r   r   rQ  Û  sP    




z_Call.__eq__c             O   s<   | j d krtd||fdd�S | j d }t| j ||f|| d�S )Nr•   z())r   )r   r†   )rv   rî   )rf   r+   r,   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   rf  z%s.%s)r   r†   rf  )rv   rî   )rf   r  r   r   r   r   rm     s    
z_Call.__getattr__c             O   s   | j dƒ||ŽS )Nr·   )rm   )rf   r+   r,   r   r   r   r·   $  s    z_Call.countc             O   s   | j dƒ||ŽS )NÚindex)rm   )rf   r+   r,   r   r   r   rk  '  s    z_Call.indexc             C   s|   | j s&| jpd}|jdƒr"d| }|S t| ƒdkr@d}| \}}n0| \}}}|sTd}n|jdƒshd| }nd| }t|||ƒS )Nr   z()zcall%srb   zcall.%s)rj  rv   r   r‚   rÖ   )rf   r   r+   r,   r   r   r   rg   *  s    





z_Call.__repr__c             C   s8   g }| }x"|d k	r*|j r"|j|ƒ |j}q
W tt|ƒƒS )N)rj  r²   rt   rU   rÈ   )rf   Úvalsrð   r   r   r   Ú	call_list?  s    


z_Call.call_list)r5   r8   rh   r‘   r!   rQ  r�   rV  r$   rm   r·   rk  rg   rm  r   r   r   r   rî   ¡  s   7rî   )rf  c             K   s,  t | ƒrt| ƒ} t| tƒ}d| i}|r0d| i}n| d kr<i }|rL|rLd|d< |j|ƒ t}tj| ƒrji }n$t| ƒsxt}n|rŽ|rŽt	| ƒ rŽt}|j
d|ƒ}|}	|d krªd}	|f |||	|dœ|—Ž}
t| tƒrØt|
| ƒ}
nt| |
||ƒ |d k	oò| �r |
|j|< |�r,| �r,d|k�r,t| |dd	|
d
�|
_xút| ƒD ]î}t|ƒ�rH�q6yt| |ƒ}W n tk
�rp   �w6Y nX d|i}|�rˆd|i}t|tƒ�s°t|||
||ƒ}||
j|< nZ|
}t| tƒ�rÆ|
j}t| ||ƒ}||d< tf ||||dœ|—Ž}||
j|< t|||d� t|tƒ�r6t|
||ƒ �q6W |
S )Nr›   rœ   Tr    r   r•   )r†   rŸ   rž   r   rY   z())r3   r  rˆ   r¡   )r†   r   rž   rŸ   )r2   )r@   r   r   r
  r   r%   Zisdatadescriptorr=   r   rE   r¾   r#   rM   r4   r`   r   rY   rª   rd   r<   r"   r´   r1   Ú
_must_skiprz   )r›   rœ   r3   rˆ   r  r,   Úis_typer  r  rž   r1   r¸   rI   r”   r†   r2   r   r   r   r   P  st    










c             C   s|   t | tƒs$|t| di ƒkrdS | j} xR| jD ]H}|jj|tƒ}|tkrHq,t |tt	fƒrZdS t t|dd ƒt
ƒrp|S dS q,W |S )NrB   Fr0  )r   r   r<   r­   rA   rB   rC   r   ÚstaticmethodÚclassmethodÚMethodWrapperTypes)r›   r¸   ro  rë   rJ   r   r   r   rn  È  s    
rn  c             C   s$   y| j S  tk
r   t| ƒS X d S )N)r­   r"   r   )r   r   r   r   r©   å  s    r©   c               @   s   e Zd Zddd„ZdS )r´   FNc             C   s(   || _ || _|| _|| _|| _|| _d S )N)r›   Úidsrœ   r†   r3   r   )rf   r›   rœ   r†   r   rs  r3   r   r   r   r!   ï  s    z_SpecState.__init__)FNNNF)r5   r8   rh   r!   r   r   r   r   r´   í  s    r´   c             #   sp   t | tƒrdnd‰ ‡ fdd„| jˆ ƒD ƒ}|d ˆ krD|d d… }n|d d d	… |d
< x|D ]
}|V  q^W d S )Nó   
Ú
c                s   g | ]}|ˆ  ‘qS r   r   )r   Úl)Úsepr   r   rÍ   	  s    z&_iterate_read_data.<locals>.<listcomp>r€   éÿÿÿÿrx  rx  rx  rx  )r   Úbytesr½   )Ú	read_dataZdata_as_listÚliner   )rw  r   Ú_iterate_read_data	  s    
r|  r•   c                sú   ‡‡fdd„}‡‡‡fdd„}‡‡‡fdd„‰ t d kr`dd l}ttt|jƒƒjtt|jƒƒƒƒa | d krttdt	d	�} tt d
�‰ˆˆj
_tˆƒd g‰d ˆj_d ˆj_d ˆj_d ˆj_|ˆj_ˆ ƒ ˆd< ˆd ˆj_|ˆj_‡ ‡‡‡fdd„}|| _ˆ| _| S )Nc                 s    ˆj jd k	rˆj jS tˆ d ƒS )Nr   )Ú	readlinesrY   r>   )r+   r,   )Ú_stateÚhandler   r   Ú_readlines_side_effect(	  s    z)mock_open.<locals>._readlines_side_effectc                 s(   ˆj jd k	rˆj jS tˆƒƒ jˆ d ƒS )Nr   )ÚreadrY   r   rÉ   )r+   r,   )r~  r  rz  r   r   Ú_read_side_effect-	  s    z$mock_open.<locals>._read_side_effectc              3   sJ   ˆj jd k	rxˆj jV  qW xˆ d D ]
} | V  q&W xtˆƒƒ V  q6W d S )Nr   )ÚreadlinerY   r   )r{  )r~  r  rz  r   r   Ú_readline_side_effect2	  s    
z(mock_open.<locals>._readline_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   )r+   r,   )r„  r~  r  rz  r   r   Ú
reset_dataS	  s
    
zmock_open.<locals>.reset_data)Ú	file_specÚ_ior>   ro   rª   ÚTextIOWrapperÚunionÚBytesIOr   r…  r	  rY   r|  Úwriter�  rƒ  r}  r_   )r1   rz  r€  r‚  rˆ  r†  r   )r„  r~  r  rz  r   r   	  s.    "

c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r   c             K   s
   t f |ŽS )N)r   )rf   r,   r   r   r   r¬   i	  s    zPropertyMock._get_child_mockc             C   s   | ƒ S )Nr   )rf   r   Zobj_typer   r   r   r0  l	  s    zPropertyMock.__get__c             C   s   | |ƒ d S )Nr   )rf   r   rÀ   r   r   r   r1  n	  s    zPropertyMock.__set__N)r5   r8   rh   r¬   r0  r1  r   r   r   r   r   `	  s   	)r   r   r   r   r   r   r   r   r	   r
   r   r   r   )F)F)NFNNN)FFNN)Nr•   )oÚ__all__Ú__version__r%   r…   r  ÚbuiltinsÚtypesr   Ú	functoolsr   r   rª   r  ÚBaseExceptionr   Úplatformr   ZlangZ	Throwabler	   Úsuperrš   r   r    r(   r4   r/   r=   r@   rE   rM   rH   rd   r�   re   ri   r   r   ZMISSINGrÕ   ZDELETEDrµ   rq   r|   r   r>   rU   r‰   rŠ   r�   r
   r°   ré   r   ró   rõ   rù   rú   r   r!  r#  r   r$  r+  r-  rn   ZmultipleZstopallr  Zmagic_methodsZnumericsrÉ   r½   ZinplaceÚrightZ_non_defaultsrÑ   r_  rÄ   rÐ   rZ  rR  rY  rU  rW  rX  r[  r\  r]  r   r   ra  rd  r   rÖ   r?   rî   r   r   rn  r©   r´   r   rQ  r#   r0  rr  r‡  r|  r   r   r   r   r   r   Ú<module>   s              
 

4	    i5  , 
1Jv	

	 ,
 
w
D