<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]y2                @   s  d  d d d d d d d d d	 d
 d d f 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 r d d l Z e e j j f Z d Z e Z d d   Z d d   Z Gd d   d e  Z e e j  e f 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& Gd/ d0   d0 e  Z' Gd1 d2   d2 e  Z( e(   Z) e) j* Z* e) j+ Z, e) j- Z. d3 d4   Z/ d5 d6 d7 d8 d9 d: d; d< h Z0 d= d>   Z1 Gd? d@   d@ e2  Z3 dA dB   Z4 GdC dD   dD e  Z5 GdE dF   dF e  Z6 GdG d	   d	 e6  Z7 dH dI   Z8 GdJ dK   dK e6  Z9 GdL d    d  e9 e7  Z: dM dN   Z; dO dP   Z< dQ dR   Z= GdS dT   dT e  Z> dU dV   Z? e* d d d d d dW dX  Z@ d d d d d dY dZ  ZA e* d d d d d d[ d  ZB Gd\ d]   d] e  ZC d^ d_   ZD d` da   ZE e@ eB _ eC eB _F eA eB _G eE eB _H db eB _I dc ZJ dd ZK de jL df dg   eK jM   D  ZN de jL dh dg   eK jM   D  ZO di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz h ZP d{ d|   ZQ d} d   de jL eJ eK eN eO g  jM   D ZR eR eP BZS d~ d d d d d d h ZT d d d   d d d   d d d   i ZU d eV d eV d eV d eV d d d d d d d d d d d d d d d d i ZW d d   ZX d d   ZY d d   ZZ d eX d eY d eZ i Z[ d d   Z\ Gd d   d e  Z] Gd d
   d
 e] e7  Z^ Gd d   d e] e:  Z_ Gd d   d e  Z` Gd d   d e  Za ea   Zb d d   Zc Gd d   d ed  Ze ee d d  Zf d d d d d d  Zg d d   Zh d d   Zi Gd d   d e  Zj e eg  e eb jk  f Zl e eb jk jm  f Zn d ao d d   Zp d d d d  Zq Gd d   d e:  Zr d 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   )/opt/alt/python35/lib64/python3.5/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               @   s   e  Z d  Z d g Z d S)_slottedaN)__name__
__module____qualname__	__slots__r   r   r   r   r!   ?   s   r!   c             C   s   t  |  t  rE | rE y |  j }  Wn t k
 r; d  SYn Xd } n5 t  |  t  sz y |  j }  Wn t k
 ry d  SYn X| r t |  d   } n |  } y |  t j |  f SWn t	 k
 r d  SYn Xd  S)NT)
r   r   __init__AttributeErrorFunctionTypes__call__r   inspectZ	signature
ValueError)funcZas_instanceZeat_selfZsig_funcr   r   r   _get_signature_objectK   s$    			r.   Fc                s`   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   checksigp   s    z"_check_signature.<locals>.checksig)r.   _copy_func_detailsr   _mock_check_sig)r-   mock	skipfirstinstancer4   r   )r3   r   _check_signaturek   s    r:   c          #   C   s   |  j  | _  |  j | _ y |  j | _ Wn t k
 r< Yn Xy |  j | _ Wn t k
 ra Yn Xy |  j | _ Wn t k
 r Yn Xy |  j | _ Wn t k
 r Yn Xd  S)N)r#   __doc____text_signature__r(   r$   __defaults____kwdefaults__)r-   funcopyr   r   r   r5   v   s$    r5   c             C   s3   t  |  t  r d St |  d d   d  k	 r/ d Sd S)NTr*   F)r   r   getattr)r   r   r   r   	_callable   s
    rA   c             C   s   t  |   t t f k S)N)r   listtuple)r   r   r   r   _is_list   s    rD   c             C   s`   t  |  t  s% t |  d d   d  k	 Sx4 |  f |  j D]" } | j j d  d  k	 r6 d Sq6 Wd S)Nr*   TF)r   r   r@   __mro____dict__get)r   baser   r   r   _instance_callable   s    rI   c                s   t  |  s d  St | t  } t | | |  } | d  k rA |  S| \ }     f d d   } t | |  | j } | j   s d } d | d |  i } d | }	 t |	 |  | | }
 t |
 |   |
 S)Nc                 s     j  |  |   d  S)N)r/   )r1   r2   )r3   r   r   r4      s    z _set_signature.<locals>.checksigr?   Z
_checksig_r7   zYdef %s(*args, **kwargs):
    _checksig_(*args, **kwargs)
    return mock(*args, **kwargs))	rA   r   r   r.   r5   r#   isidentifierexec_setup_func)r7   originalr9   r8   resultr-   r4   r   contextsrcr?   r   )r3   r   _set_signature   s$    	

rQ   c                s     _  t   s d  S 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)r1   r2   )r7   r   r   rR      s    z'_setup_func.<locals>.assert_called_withc                 s     j  |  |   S)N)assert_called_once_with)r1   r2   )r7   r   r   rS      s    z,_setup_func.<locals>.assert_called_once_withc                 s     j  |  |   S)N)assert_has_calls)r1   r2   )r7   r   r   rT      s    z%_setup_func.<locals>.assert_has_callsc                 s     j  |  |   S)N)assert_any_call)r1   r2   )r7   r   r   rU      s    z$_setup_func.<locals>.assert_any_callc                 sQ   t      _ t      _  j     j }  t |   rM |   k	 rM |  j   d  S)N)	_CallListmethod_calls
mock_calls
reset_mockreturn_valuer   )ret)r?   r7   r   r   rY      s    
	z_setup_func.<locals>.reset_mockFr   )r7   r   called
call_count	call_argsrV   call_args_listrW   rX   rZ   side_effect_mock_childrenrR   rS   rT   rU   rY   _mock_delegate)r?   r7   rR   rS   rT   rU   rY   r   )r?   r7   r   rL      s.    									rL   c             C   s   d |  d d  |  k S)Nz__%s__   r   )r   r   r   r   	_is_magic   s    re   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   )rg   r   r   r   __repr__   s    z_SentinelObject.__repr__N)r#   r$   r%   r'   rh   r   r   r   r   rf      s   rf   c               @   s(   e  Z d  Z d d   Z d d   Z d S)	_Sentinelc             C   s   i  |  _  d  S)N)
_sentinels)rg   r   r   r   r'     s    z_Sentinel.__init__c             C   s+   | d k r t   |  j j | t |   S)N	__bases__)r(   rj   
setdefaultrf   )rg   r   r   r   r   __getattr__  s    z_Sentinel.__getattr__N)r#   r$   r%   r'   rm   r   r   r   r   ri      s   ri   c             C   s2   t  |   t t t t f k r. t  |   |   S|  S)N)r   dictrB   rC   set)valuer   r   r   _copy  s    rq   rZ   _mock_return_valuer`   _mock_side_effect_mock_parent_mock_new_parent
_mock_name_mock_new_namec             C   sH   t  j |   d |  } |  | d d  } |  | d d  } t | |  S)NZ_mock_c             S   s/   |  j  } | d  k r" t |  |  St | |  S)N)rb   r@   )rg   r   	_the_namer3   r   r   r   _get"  s    	z"_delegating_property.<locals>._getc             S   s9   |  j  } | d  k r% | |  j | <n t | | |  d  S)N)rb   rF   setattr)rg   rp   r   rx   r3   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)rV   c             C   s   t  | t  s t j |  |  St |  } t |   } | | k rG d SxC t d | | d  D]* } |  | | |  } | | k r_ d Sq_ Wd S)NFr      T)r   rB   __contains__lenrange)rg   rp   Z	len_valueZlen_selfiZsub_listr   r   r   r   4  s    z_CallList.__contains__c             C   s   t  j t |    S)N)pprintZpformatrB   )rg   r   r   r   rh   B  s    z_CallList.__repr__N)r#   r$   r%   r   rh   r   r   r   r   rV   2  s   rV   c             C   s   t  |  s d S| j s@ | j s@ | j d  k	 s@ | j d  k	 rD d S|  } x) | d  k	 ru | | k ri d S| j } qM W| r |  | _ | | _ | r |  | _ | | _ d S)NFT)r   rv   rw   rt   ru   )parentrp   r   new_name_parentr   r   r   _check_and_set_parentF  s$    				r   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)	_MockIterc             C   s   t  |  |  _ d  S)N)iterr   )rg   r   r   r   r   r'   `  s    z_MockIter.__init__c             C   s   |  S)Nr   )rg   r   r   r   __iter__b  s    z_MockIter.__iter__c             C   s   t  |  j  S)N)nextr   )rg   r   r   r   __next__d  s    z_MockIter.__next__N)r#   r$   r%   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   )rg   r1   r2   r   r   r   r'   j  s    zBase.__init__)r#   r$   r%   r   rr   rs   r'   r   r   r   r   r   g  s   r   c               @   s  e  Z d  Z d d   Z d d d d d d d d d d d d d  Z d d	   Z d d
 d  Z d d d 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 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. d/   Z d0 d1   Z  d2 d3   Z! d4 d5   Z" d6 d7   Z# d d8 d9  Z$ d: d;   Z% d< d=   Z& d S)>r
   c             O   s4   t  |  j |  f d |  j i  } t j |  } | S)Nr;   )r   r#   r;   object__new__)clsr1   kwnewr9   r   r   r   r   r  s    !zNonCallableMock.__new__N Fc             K   s2  | d  k r | } |  j  } | | d <| | d <| | d <| | d <| d  k	 r[ | } d } |
 d  k rs | d  k	 }
 |  j | | |	 |
  i  | d <| | d <d  | d <d	 | d
 <d  | d <d | d <t   | d <t   | d <t   | d <| | d <| r	|  j |   t t |   j | | | | | |  d  S)Nrt   rv   rw   ru   Tra   _mock_wrapsrb   FZ_mock_calledZ_mock_call_argsr   Z_mock_call_countZ_mock_call_args_listZ_mock_mock_callsrW   _mock_unsafe)rF   _mock_add_specrV   configure_mock_safe_superr
   r'   )rg   specr   r   spec_setr   _spec_state	_new_name_new_parent_spec_as_instance	_eat_selfZunsafer2   rF   r   r   r   r'   {  s8    	










zNonCallableMock.__init__c             C   s8   d  | _  d  | _ d | _ d  | _ t |  | |  d  S)Nr   )rt   ru   rv   rw   rz   )rg   r7   	attributer   r   r   attach_mock  s
    				zNonCallableMock.attach_mockc             C   s   |  j  | |  d  S)N)r   )rg   r   r   r   r   r   mock_add_spec  s    zNonCallableMock.mock_add_specc       	      C   s   d  } d  } | d  k	 rw t  |  rw t | t  r= | } n t |  } t | | |  } | oh | d } t |  } |  j } | | d <| | d <| | d <| | d <d  S)Nr   _spec_class	_spec_set_spec_signature_mock_methods)rD   r   r   
_get_classr.   dirrF   )	rg   r   r   r   r   r   r   resrF   r   r   r   r     s    		


zNonCallableMock._mock_add_specc             C   sU   |  j  } |  j d  k	 r$ |  j j } | t k rQ |  j d |  d d  } | |  _ | S)Nr   r   z())rr   rb   rZ   r   _get_child_mock)rg   r[   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())rb   rZ   rr   r   )rg   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   )rg   r   r   r   	__class__  s    
zNonCallableMock.__class__r\   r]   r^   r_   rX   c             C   st   |  j  } | d  k r |  j S| j } | d  k	 rp t |  rp t | t  rp t |  rp t |  } | | _ | S)N)rb   rs   r`   callabler   r   r    )rg   	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_iterrb   rs   r`   )rg   rp   r   r   r   r   Z__set_side_effect  s
    	z!NonCallableMock.__set_side_effectc             C   s   | d  k r g  } t  |   | k r( d  S| j t  |    d |  _ d  |  _ d |  _ t   |  _ t   |  _ t   |  _ x6 |  j	 j
   D]% } t | t  r q | j |  q W|  j } t |  r | |  k	 r | j |  d  S)NFr   )idappendr\   r^   r]   rV   rX   r_   rW   ra   valuesr   
_SpecStaterY   rr   r   )rg   ZvisitedZchildr[   r   r   r   rY     s$    				zNonCallableMock.reset_mockc             K   s   x} t  | j   d d d   D]] \ } } | j d  } | j   } |  } x | D] } t | |  } qS Wt | | |  q Wd  S)Nkeyc             S   s   |  d j  d  S)Nr   .)count)entryr   r   r   <lambda>6  s    z0NonCallableMock.configure_mock.<locals>.<lambda>r   )sorteditemssplitpopr@   rz   )rg   r2   argvalr1   finalr   r   r   r   r   r   )  s    	zNonCallableMock.configure_mockc             C   su  | d k r t  |   nU |  j d  k	 rX | |  j k sE | t k rp t  d |   n t |  rp t  |   |  j s | j d  r t  |   |  j j |  } | t k r t  |   n | d  k r.d  } |  j	 d  k	 r t
 |  j	 |  } |  j d |  d | d | d	 | d
 |   } | |  j | <nC t | t  rqt | j | j | j | j | j  } | |  j | <| S)Nr   r   zMock object has no attribute %rassertassretr   r   r   r   r   >   r   r   )r   r   )r(   r   _all_magicsre   r   r   ra   rG   _deletedr   r@   r   r   r   r   r   r   r9   r   r   )rg   r   rN   r   r   r   r   rm   ?  s6    			zNonCallableMock.__getattr__c       
      C   s  |  j  g } |  j } |  } d } | d g k r6 d } t   } xt | d  k	 r | } | j | j  |  d } | j  d k r d } | j } t |  | k r P| j t |   qB Wt t |   } | j p d } t	 |  d k r| d d k r| d 7} | | d <d j
 |  } d } | d k r8d	 | } d }	 |  j d  k	 rrd
 }	 |  j rbd }	 |	 |  j j }	 d t |   j | |	 t |   f S)Nr   ()r   r7   r   ().r   mock.z name=%rz spec=%rz spec_set=%rz<%s%s%s id='%s'>)r   r   )r7   r   )rw   ru   ro   r   r   r}   rB   reversedrv   r   joinr   r   r#   r   )
rg   Z
_name_listr   ZlastdotseenZ_firstr   Zname_stringZspec_stringr   r   r   rh   e  sL    			


	zNonCallableMock.__repr__c             C   s   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   s2   g  |  ]( } | j  d   s( t |  r |  q S)r   )r   re   )r   r   r   r   r   r     s   	 )r	   r   __dir__r   r   r   rB   rF   r   ro   ra   )rg   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 rh t d |   n| t k r d | } t |   n | t k rI j d  k	 r |  j k r t d |   t	 |  st
 t   | t | |   |      f d d   } qt  | d  |  t
 t   | |  |  j | <n; | d k rb|  _ d  St  | | |  r|  j | <t j  | |  S)Nz!Mock object has no attribute '%s'z.Attempting to set unsupported magic method %r.c                 s      |  |  S)Nr   )r1   r   )rM   rg   r   r   r     s    z-NonCallableMock.__setattr__.<locals>.<lambda>r   )r|   r   __setattr__r   r   rF   r(   _unsupported_magicsr   r   rz   r   _get_methodr   ra   r   )rg   r   rp   msgr   )rM   rg   r   r     s2    
	zNonCallableMock.__setattr__c             C   s   | t  k rG | t |   j k rG t t |   |  | |  j k rG d  S| |  j k rf t j |  |  |  j j | t  } | t	 k r t
 |   | t k	 r |  j | =t	 |  j | <d  S)N)r   r   rF   delattrr   __delattr__ra   rG   _missingr   r(   )rg   r   r   r   r   r   r     s    !
zNonCallableMock.__delattr__c             C   s   |  j  p d } t | | |  S)Nr7   )rv   _format_call_signature)rg   r1   r2   r   r   r   r   _format_mock_call_signature  s    z+NonCallableMock._format_mock_call_signaturec             C   s`   d } |  j  | |  } |  j } t |  d k rC | d d   } |  j  |   } | | | f S)Nz!Expected call: %s
Actual call: %s   r   )r   r^   r   )rg   r1   r2   messageexpected_stringr^   Zactual_stringr   r   r   _format_mock_failure_message  s    	z,NonCallableMock._format_mock_failure_messagec             C   s   |  j  } | d  k	 r t |  d k r< d } | \ } } n | \ } } } y | | j | |   f SWq t k
 r } z | j d   SWYd  d  } ~ Xq Xn | Sd  S)Nrc   r   )r   r   r/   	TypeErrorwith_traceback)rg   _callr3   r   r1   r2   r   r   r   r   _call_matcher  s    	#zNonCallableMock._call_matcherc             C   sA   |  } | j  d k r= d | j p$ d | j  f } t |   d  S)Nr   z7Expected '%s' to not have been called. Called %s times.r7   )r]   rv   AssertionError)r0   rg   r   r   r   r   assert_not_called   s
    z!NonCallableMock.assert_not_calledc                s   |    j  d  k r:  j     } t d | f       f d d   }  j    f  }  j  j   } | | k r t | t  r | n d  } t |    |  d  S)NzExpected call: %s
Not calledc                 s    j      }  |  S)N)r   )r   )r1   r2   rg   r   r   _error_message  s    z:NonCallableMock.assert_called_with.<locals>._error_message)r^   r   r   r   r   	Exception)r0   r1   r2   expectedr   actualcauser   )r1   r2   rg   r   rR   	  s    z"NonCallableMock.assert_called_withc             O   sM   |  } | j  d k s= d | j p$ d | j  f } t |   | j | |   S)Nr   z1Expected '%s' to be called once. Called %s times.r7   )r]   rv   r   rR   )r0   r1   r2   rg   r   r   r   r   rS     s    z'NonCallableMock.assert_called_once_withc                s    f d d   | D } t  | t  r. | n d  } t   f d d     j D  } | s | | k r t d |   j f  |  d  St |  } g  } xA | D]9 } y | j |  Wq t k
 r | j |  Yq Xq W| r t d t	 |  f  |  d  S)Nc                s   g  |  ] }   j  |   q Sr   )r   )r   c)rg   r   r   r   2  s   	 z4NonCallableMock.assert_has_calls.<locals>.<listcomp>c             3   s   |  ] }   j  |  Vq d  S)N)r   )r   r   )rg   r   r   	<genexpr>4  s    z3NonCallableMock.assert_has_calls.<locals>.<genexpr>z(Calls not found.
Expected: %r
Actual: %rz%r not all found in call list)
r   r   rV   rX   r   rB   remover,   r   rC   )rg   ZcallsZ	any_orderr   r   Z	all_callsZ	not_foundZkallr   )rg   r   rT   (  s*    
"z NonCallableMock.assert_has_callsc                s     j  | | f  }   f d d     j D } | | k r} t | t  rR | n d  }   j | |  } t d |  |  d  S)Nc                s   g  |  ] }   j  |   q Sr   )r   )r   r   )rg   r   r   r   R  s   	 z3NonCallableMock.assert_any_call.<locals>.<listcomp>z%s call not found)r   r_   r   r   r   r   )rg   r1   r2   r   r   r   r   r   )rg   r   rU   K  s    
zNonCallableMock.assert_any_callc             K   sb   t  |   } t | t  sK t | t  r3 t } qX t | t  rX t } n | j d } | |   S)Nr   )r   r   CallableMixinr   r   r
   r   rE   )rg   r   _typeklassr   r   r   r   [  s    		zNonCallableMock._get_child_mock)'r#   r$   r%   r   r'   r   r   r   Z"_NonCallableMock__get_return_valueZ"_NonCallableMock__set_return_valueZ"_NonCallableMock__return_value_docr~   rZ   r   r   r\   r]   r^   r_   rX   Z!_NonCallableMock__get_side_effectZ!_NonCallableMock__set_side_effectr`   rY   r   rm   rh   r   r   r   r   r   r   r   rR   rS   rT   rU   r   r   r   r   r   r
   o  sL   
)			&2"
	#c             C   s[   |  d  k r |  St  |   r  |  St |   r0 |  Sy t |   SWn t k
 rV |  SYn Xd  S)N)r    rA   r   r   )r   r   r   r   r   o  s    r   c               @   s^   e  Z d  Z d d e d d d d d d d d d 
 Z d d   Z d d   Z d	 d
   Z d S)r   Nr   c          
   K   sH   | |  j  d <t t |   j | | | | | | |	 |
 |  | |  _ d  S)Nrr   )rF   r   r   r'   r`   )rg   r   r`   rZ   r   r   r   r   r   r   r   r2   r   r   r   r'     s
    zCallableMixin.__init__c             O   s   d  S)Nr   )rg   r1   r2   r   r   r   r6     s    zCallableMixin._mock_check_sigc             O   s    |  j  | |   |  j | |   S)N)r6   
_mock_call)r0   r1   r2   r   r   r   r*     s    zCallableMixin.__call__c             O   s  |  } d | _  | j d 7_ | j } | j } t | | f d d } | | _ | j j |  | j j t d | | f   t	   } | d k } | j
 d  k	 }	 | j }
 x| d  k	 rt | | | f  } | j rd } | r d } d } | j d k rd } | j | | } |	 r~| |
 k r3| } n t |
 | | f  } | j j |  | j
 d  k	 }	 |	 r~| j d |
 }
 | j j |  | j } t |  } | | k rP| j |  q Wt } | j } | d  k	 r@t |  r|  t |  s1t |  } t |  r|  | t k r-| j } | S| | |   } | j d  k	 rn| j t k rn| j | |   S| t k r| j } | S)NTr   twor   z()r   F)r\   r]   rw   ru   _Callr^   r_   r   rX   ro   rt   rv   rW   r   r}   r   r`   r    rA   r   rZ   r   rr   )r0   r1   r2   rg   r   r   r   r   Zskip_next_dotZdo_method_callsr   Zthis_mock_callr   Zthis_method_callZ_new_parent_idret_valZeffectrN   r   r   r   r     sp    												zCallableMixin._mock_call)r#   r$   r%   r   r'   r6   r*   r   r   r   r   r   r     s   	r   c               @   s   e  Z d  Z d S)r   N)r#   r$   r%   r   r   r   r   r     s   1c             C   sA   y t  |  |  SWn) t k
 r< t |  t  |  |  SYn Xd  S)N)r@   r(   
__import__)thingcompimport_pathr   r   r   _dot_lookup  s
    
r   c             C   s_   |  j  d  } | j d  } t |  } x. | D]& } | d | 7} t | | |  } q1 W| S)Nr   r   z.%s)r   r   r   r   )targetZ
componentsr   r   r   r   r   r   	_importer!  s    r   c             C   s   t  |  d  S)Nis_local)hasattr)patcherr   r   r   _is_started,  s    r   c               @   s   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   s   | 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   autospecr2   additional_patchers)
rg   r   r   r   r   r   r   r  r   r2   r   r   r   r'   6  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 Sr   )copy)r   pr   r   r   r   Y  s   	 z_patch.copy.<locals>.<listcomp>)r   r   r   r   r   r   r   r  r   r2   attribute_namer  )rg   r   r   r   r   r  Q  s    z_patch.copyc             C   s)   t  | t  r |  j |  S|  j |  S)N)r   r   decorate_classdecorate_callable)rg   r-   r   r   r   r*   ^  s    z_patch.__call__c             C   ss   xl t  |  D]^ } | j t j  s( q t | |  } t | d  sI q |  j   } t | | | |   q W| S)Nr*   )r   r   r   TEST_PREFIXr@   r   r  rz   )rg   r   attr
attr_valuer   r   r   r   r  d  s    z_patch.decorate_classc                sT   t    d  r#   j j |     St       f d d     |  g  _  S)N	patchingsc                 s  g  } g  } t    } z y xe  j D]Z } | j   } | j |  | j d  k	 rc | j |  q% | j t k r% | j |  q% W|  t  |  7}    |  |   SWn< | | k r t |  r | j |  t	 j
   }   Yn XWd  x! t |  D] } | j |   q WXd  S)N)rC   r  	__enter__r   r  updater   r   r   sysexc_infor   __exit__)r1   Zkeywargs
extra_argsZentered_patchersr  patchingr   )r-   patchedr   r   r  w  s*    	z)_patch.decorate_callable.<locals>.patched)r   r  r   r   )rg   r-   r   )r-   r  r   r  r  s    !z_patch.decorate_callablec             C   s   |  j    } |  j } t } d } y | j | } Wn* t t f k
 r^ t | | t  } Yn Xd } | t k r t | t	  r d |  _
 |  j
 r | t k r t d | | f   | | f S)NFTz!%s does not have the attribute %r)r   r   r   rF   r(   KeyErrorr@   	_builtinsr   r   r   )rg   r   r   rM   localr   r   r   get_original  s    		z_patch.get_originalc             C   sP  |  j  |  j |  j } } } |  j |  j } } |  j } |  j   |  _ | d k rZ d  } | d k rl d  } | d k r~ d  } | d  k	 r | d  k	 r t d   | d  k	 s | d  k	 r | d k r t d   |  j	   \ } } | t
 k r | d  k r d }	 | d k r/| } | d k rh| } d  } n9 | d  k	 rV| d k rh| } d  } n | d k rh| } | d  k	 s| d  k	 r| t
 k rt d   t | t  rd }	 t }
 i  } | d  k	 r| }
 nd | d  k	 s| d  k	 r2| } | d  k	 r| } t |  rd | k } n t |  } | r2t }
 | d  k	 rH| | d <| d  k	 r^| | d <t |
 t  rt |
 t  r|  j r|  j | d	 <| j |  |
 |   } |	 rt |  r| } | d  k	 r| } t |  rt |  rt }
 | j d	  |
 d
 | d d |  | _ n | d  k	 r| t
 k	 rDt d   | t
 k r\t d   t |  } | d k rz| } t | d | d |  j | } n | rt d   | } | |  _ | |  _ t |  j |  j |  |  j d  k	 rLi  } |  j  t
 k r| | |  j <x9 |  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   r   r   z()zBautospec creates the mock for you. Can't specify autospec and new.z%Can't use 'autospec' with create=True_namez.Can't pass kwargs to a mock we aren't creating)TN)!r   r   r   r  r2   r   r   r   r   r  r   r   r   r   rD   r   r   r   r
   r   r  r   rI   r   rZ   boolr   temp_originalr   rz   r  r  r  )rg   r   r   r   r  r2   r   rM   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 rL |  j t k	 rL t |  j |  j |  j  n[ t |  j |  j  |  j	 r t
 |  j |  j  s |  j d k r t |  j |  j |  j  |  ` |  ` |  ` x0 t |  j  D] } t  |  r | j |   q Wd  S)Nz stop called on unstarted patcherr;   r$   r=   __annotations__r>   )r;   r$   r=   r  r>   )r   RuntimeErrorr   r  r   rz   r   r   r   r   r   r   r  r  )rg   r  r   r   r   r   r  0  s       	z_patch.__exit__c             C   s    |  j    } |  j j |   | S)N)r  _active_patchesr   )rg   rN   r   r   r   startH  s    z_patch.startc             C   s3   y |  j  j |   Wn t k
 r( Yn X|  j   S)N)r  r   r,   r  )rg   r   r   r   stopO  s
    z_patch.stop)r#   r$   r%   r  r  r'   r  r*   r  r  r  r  r  r   r!  r   r   r   r   r   1  s   (~r   c                sf   y   j  d d  \   } Wn+ t t f k
 rI t d   f   Yn 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   a  s    z_get_target.<locals>.<lambda>)rsplitr   r,   )r   r   r   r   )r   r   _get_target[  s    r#  c       
   
      s4     f d d   }	 t  |	 | | | | | | | | 	 S)Nc                  s     S)Nr   r   )r   r   r   r   w  s    z_patch_object.<locals>.<lambda>)r   )
r   r   r   r   r   r   r  r   r2   r   r   )r   r   _patch_objecte  s    r$  c                s   t     t k r'   f d d   } n   f d d   } | sK t d   t | j    } | d \ }	 }
 t | |	 |
 | | | | | i  	 } |	 | _ x[ | d d   D]I \ }	 }
 t | |	 |
 | | | | | i  	 } |	 | _ | j j |  q W| 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,   rB   r   r   r  r  r   )r   r   r   r   r  r   r2   r   r   r   r   r   Zthis_patcherr   )r   r   _patch_multiple~  s&    			r&  c       
   
   K   s4   t  |   \ } }	 t | |	 | | | | | | | 	 S)N)r#  r   )
r   r   r   r   r   r  r   r2   r   r   r   r   r   r     s    Ec               @   sv   e  Z d  Z f  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_dictFc             K   sY   t  | t  r t |  } | |  _ t |  |  _ |  j j |  | |  _ d  |  _ d  S)N)	r   r%  r   in_dictrn   r   r  clear	_original)rg   r(  r   r)  r2   r   r   r   r'     s    		z_patch_dict.__init__c                sA   t    t  r  j    St       f d d    } | S)Nc           
      s-    j    z   |  |   SWd   j   Xd  S)N)r'  _unpatch_dict)r1   r   )frg   r   r   _inner&  s    
z$_patch_dict.__call__.<locals>._inner)r   r   r  r   )rg   r,  r-  r   )r,  rg   r   r*   #  s    !z_patch_dict.__call__c             C   s   x{ t  |  D]m } 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   )rg   r   r	  r
  Z	decoratorZ	decoratedr   r   r   r  1  s    z_patch_dict.decorate_classc             C   s   |  j    d  S)N)r'  )rg   r   r   r   r  <  s    z_patch_dict.__enter__c             C   s   |  j  } |  j } |  j } y | j   } Wn7 t k
 rd i  } x | D] } | | | | <qH WYn X| |  _ | r~ t |  y | j |  Wn1 t k
 r x | D] } | | | | <q WYn Xd  S)N)r   r(  r)  r  r(   r*  _clear_dictr  )rg   r   r(  r)  rM   r   r   r   r   r'  A  s"    				
z_patch_dict._patch_dictc             C   se   |  j  } |  j } t |  y | j |  Wn1 t k
 r` x | D] } | | | | <qD WYn Xd  S)N)r(  r*  r.  r  r(   )rg   r(  rM   r   r   r   r   r+  [  s    		
z_patch_dict._unpatch_dictc             G   s   |  j    d S)NF)r+  )rg   r1   r   r   r   r  h  s    
z_patch_dict.__exit__N)r#   r$   r%   r'   r*   r  r  r'  r+  r  r   r!  r   r   r   r   r'    s   r'  c             C   sK   y |  j    Wn6 t k
 rF t |   } x | D] } |  | =q1 WYn Xd  S)N)r)  r(   rB   )r(  keysr   r   r   r   r.  q  s    r.  c              C   s(   x! t  t j  D] }  |  j   q Wd  S)N)r   r   r  r!  )r   r   r   r   _patch_stopallz  s    r0  Ztestzlt le gt ge eq ne getitem setitem delitem len contains iter hash str sizeof enter exit divmod rdivmod neg pos abs invert complex int float index 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   r2  r   r   r   r     s    __get____set__
__delete____reversed____missing__
__reduce____reduce_ex____getinitargs____getnewargs____getstate____setstate____getformat____setformat__rh   r   __subclasses__
__format____getnewargs_ex__c                s     f d d   } |  | _  | S)Nc                s     |  | |  S)Nr   )rg   r1   r   )r-   r   r   method  s    z_get_method.<locals>.method)r#   )r   r-   rC  r   )r-   r   r     s    	r   c             C   s   h  |  ] } d  |  q S)z__%s__r   )r   rC  r   r   r   r     s   	rm   r   r'   r   Z__prepare____instancecheck____subclasscheck____del____hash__c             C   s   t  j |   S)N)r   rF  )rg   r   r   r   r     s    r   __str__c             C   s   t  j |   S)N)r   rG  )rg   r   r   r   r     s    
__sizeof__c             C   s   t  j |   S)N)r   rH  )rg   r   r   r   r     s    __lt____gt____le____ge____int__r   r   __len__r  __complex__y              ?	__float__g      ?__bool__	__index__c                s     f d d   } | S)Nc                s0     j  j } | t k	 r | S  |  k r, d St S)NT)__eq__rr   r   NotImplemented)otherr   )rg   r   r   rS    s    z_get_eq.<locals>.__eq__r   )rg   rS  r   )rg   r   _get_eq  s    rV  c                s     f d d   } | S)Nc                s*     j  j t k	 r t S  |  k r& d St S)NF)__ne__rr   r   rT  )rU  )rg   r   r   rW    s
    z_get_ne.<locals>.__ne__r   )rg   rW  r   )rg   r   _get_ne  s    rX  c                s     f d d   } | S)Nc                 s,     j  j }  |  t k r" t g   St |   S)N)r   rr   r   r   )r   )rg   r   r   r     s    
z_get_iter.<locals>.__iter__r   )rg   r   r   )rg   r   	_get_iter  s    rY  rS  rW  r   c             C   s   t  j | t  } | t k	 r+ | | _ d  St j |  } | d  k	 r y | |   } Wn t k
 rv t |  } Yn X| | _ d  St j |  } | d  k	 r | |   | _ d  S)N)_return_valuesrG   r   rZ   _calculate_return_valuer(   _side_effect_methodsr`   )r7   rC  r   ZfixedZreturn_calulatorrZ   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   s1   |  j    t t |   j | |   |  j    d  S)N)_mock_set_magicsr   r^  r'   )rg   r1   r   r   r   r   r'     s    
zMagicMixin.__init__c             C   s   t  } t |  d d   d  k	 rv t  j |  j  } t   } t  | } x0 | D]( } | t |   j k rJ t |  |  qJ W| t t |   j  } t |   } x' | D] } t | | t	 | |    q Wd  S)Nr   )
_magicsr@   intersectionr   ro   r   rF   r   rz   
MagicProxy)rg   Zthese_magicsZremove_magicsr   r   r   r   r   r_    s    	
zMagicMixin._mock_set_magicsN)r#   r$   r%   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_  )rg   r   r   r   r   r   r   /  s    z"NonCallableMagicMock.mock_add_specN)r#   r$   r%   r   r   r   r   r   r   -  s   c               @   s   e  Z d  Z d d d  Z d S)r   Fc             C   s   |  j  | |  |  j   d  S)N)r   r_  )rg   r   r   r   r   r   r   E  s    zMagicMock.mock_add_specN)r#   r$   r%   r   r   r   r   r   r   :  s   c               @   sC   e  Z d  Z d d   Z d d   Z d d   Z d d d	  Z d S)
rb  c             C   s   | |  _  | |  _ d  S)N)r   r   )rg   r   r   r   r   r   r'   Q  s    	zMagicProxy.__init__c             O   s   |  j    } | | |   S)N)create_mock)rg   r1   r2   mr   r   r   r*   U  s    zMagicProxy.__call__c             C   sT   |  j  } |  j } | j d | d | d |  } t | | |  t | | |  | S)Nr   r   r   )r   r   r   rz   r]  )rg   r   r   rd  r   r   r   rc  Y  s    			zMagicProxy.create_mockNc             C   s
   |  j    S)N)rc  )rg   r   r   r   r   r   r3  b  s    zMagicProxy.__get__)r#   r$   r%   r'   r*   rc  r3  r   r   r   r   rb  P  s   	rb  c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)_ANYc             C   s   d S)NTr   )rg   rU  r   r   r   rS  j  s    z_ANY.__eq__c             C   s   d S)NFr   )rg   rU  r   r   r   rW  m  s    z_ANY.__ne__c             C   s   d S)Nz<ANY>r   )rg   r   r   r   rh   p  s    z_ANY.__repr__N)r#   r$   r%   rS  rW  rh   r   r   r   r   re  g  s   re  c             C   s   d |  } d } d j  d d   | D  } d j  d d   t | j    D  } | r` | } | r | rv | d 7} | | 7} | | S)Nz%s(%%s)r   z, c             S   s   g  |  ] } t  |   q Sr   )repr)r   r   r   r   r   r   z  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   r1   r2   r   Zformatted_argsargs_stringZkwargs_stringr   r   r   r   w  s    
"

r   c               @   s   e  Z d  Z f  d d d d d d  Z f  d d d 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 d S)r   r   NFTc             C   s  f  } i  } t  |  } | d k r6 | \ } } } n | d k r | \ }	 }
 t |	 t  r |	 } t |
 t  r{ |
 } q |
 } q |	 |
 } } nK | d k r | \ } t | t  r | } n t | t  r | } n | } | r t j |  | | f  St j |  | | | f  S)Nr   rc   r   )r   r   r%  rC   r   )r   rp   r   r   r   	from_kallr1   r2   _lenfirstsecondr   r   r   r     s.    					z_Call.__new__c             C   s   | |  _  | |  _ | |  _ d  S)N)r   r   rh  )rg   rp   r   r   r   rh  r   r   r   r'     s    		z_Call.__init__c             C   s  | t  k r d Sy t |  } Wn t k
 r8 d SYn Xd } t |   d k r` |  \ } } n |  \ } } } d } | d k r f  i  } } n | d k r | \ } } } n | d k r| \ }	 t |	 t  r |	 } i  } qt |	 t  r|	 } f  i  } } qf  } |	 } np | d k r| \ }
 } t |
 t  rr|
 } t | t  rb| i  } } qf  | } } q|
 | } } n d S| r| | k rd S| | f | | f k S)NTFr   rc   r   r   r   )r   r   r   r   rC   r%  )rg   rU  Z	len_otherZ	self_nameZ	self_argsZself_kwargsZ
other_nameZ
other_argsZother_kwargsrp   rj  rk  r   r   r   rS    sJ    				z_Call.__eq__c             O   sW   |  j  d  k r( t d | | f d d S|  j  d } t |  j  | | f d | d |  S)Nr   r   z()r   )r   r   )rg   r1   r2   r   r   r   r   r*     s    z_Call.__call__c             C   sN   |  j  d  k r" t d | d d  Sd |  j  | f } t d | d |  d d  S)Nr   rh  Fz%s.%sr   )r   r   )rg   r	  r   r   r   r   rm     s    z_Call.__getattr__c             O   s   |  j  d  | |   S)Nr   )rm   )rg   r1   r2   r   r   r   r     s    z_Call.countc             O   s   |  j  d  | |   S)Nindex)rm   )rg   r1   r2   r   r   r   rl    s    z_Call.indexc             C   s   |  j  s5 |  j p d } | j d  r1 d | } | St |   d k r\ d } |  \ } } nD |  \ } } } | sz d } n& | j d  s d | } n
 d | } t | | |  S)Nr   z()zcall%src   zcall.%s)rh  r   r   r   r   )rg   r   r1   r2   r   r   r   rh     s    	
	
z_Call.__repr__c             C   sN   g  } |  } x/ | d  k	 r= | j  r1 | j |  | j } q Wt t |   S)N)rh  r   r   rV   r   )rg   valsr   r   r   r   	call_list#  s    	z_Call.call_list)r#   r$   r%   r   r'   rS  r   rW  r*   rm   r   rl  rh   rn  r   r   r   r   r     s   3	r   rh  c             K   s  t  |   r t |   }  t |  t  } d |  i } | rH d |  i } n |  d  k rZ i  } | rp | rp d | d <| j |  t } t j |   r i  } n4 t |   s t } n | r | r t	 |   r t } | j
 d |  } | }	 | d  k r d }	 | d | d | d	 |	 d | |  }
 t |  t  r>t |
 |   }
 n t |  |
 | |  | d  k	 rq| rq|
 | j | <| r| rd
 | k rt |  | d d d d d |
 |
 _ x@t |   D]2} t |  rqy t |  |  } Wn t k
 rwYn Xd | i } | rd | i } t | t  sPt | | |
 | |  } | |
 j | <n~ |
 } t |  t  rn|
 j } t |  | |  } | | d <t d | d | d	 | d | |  } | |
 j | <t | | d | t | t  rt |
 | |  qW|
 S)Nr   r   Tr   r   r   r   r   r   rZ   r9   r  z()r   r   r8   )rD   r   r   r  r   r+   ZisdatadescriptorrA   r   rI   r   r)   rQ   r:   ra   r   rZ   r   re   r@   r(   r   r7   
_must_skiprz   )r   r   r9   r   r  r2   is_typer  r  r   r7   r   rM   r   r   r8   r   r   r   r   4  st    
			
	c             C   s   t  |  t  s4 | t |  d i   k r+ d S|  j }  xq |  j D]f } | j j | t  } | t k rh q> t  | t t	 f  r d St  t | d d   t
  r | Sd Sq> W| S)NrF   Fr3  )r   r   r@   r   rE   rF   rG   r   staticmethodclassmethodMethodWrapperTypes)r   r   rp  r   rN   r   r   r   ro    s    	ro  c             C   s.   y |  j  SWn t k
 r) t |   SYn Xd  S)N)r   r(   r   )r   r   r   r   r     s    r   c               @   s+   e  Z d  Z d d d d d d d  Z d S)r   FNc             C   s:   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ d  S)N)r   idsr   r   r9   r   )rg   r   r   r   r   rt  r9   r   r   r   r'     s    					z_SpecState.__init__)r#   r$   r%   r'   r   r   r   r   r     s   r   c             #   s   t  |  t  r d n d     f d d   |  j    D } | d   k r` | d  d  } n | d d  d	  | d
 <x | D] } | Vq Wd  S)Ns   

c                s   g  |  ] } |    q Sr   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                st    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 r t d d	 d
 t	  }  t d
 t      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 St   d  S)Nr   )	readlinesrZ   rB   )r1   r2   )_statehandler   r   _readlines_side_effect	  s    
z)mock_open.<locals>._readlines_side_effectc                 s6    j  j d  k	 r  j  j St     j   d  S)Nr   )readrZ   r   r   )r1   r2   )r~  r  rz  r   r   _read_side_effect	  s    
z$mock_open.<locals>._read_side_effectc              3   sW    j  j d  k	 r$ x  j  j Vq Wx   d D] }  |  Vq/ Wx t     VqA Wd  S)Nr   )readlinerZ   r   )r{  )r~  r  rz  r   r   _readline_side_effect	  s    	z(mock_open.<locals>._readline_side_effectr   r   openr   r   c                 sG   t     d < j j  d k rC      d < d  j _ t S)Nr   r   )r|  r  r`   r   )r1   r2   )r  r~  r  rz  r   r   
reset_data7	  s
    zmock_open.<locals>.reset_data)	file_spec_iorB   ro   r   TextIOWrapperunionBytesIOr   r  r  rZ   r|  writer  r  r}  r`   )r7   rz  r  r  r  r  r   )r  r~  r  rz  r   r    	  s.    3		c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)r   c             K   s
   t  |   S)N)r   )rg   r2   r   r   r   r   M	  s    zPropertyMock._get_child_mockc             C   s   |    S)Nr   )rg   r   Zobj_typer   r   r   r3  P	  s    zPropertyMock.__get__c             C   s   |  |  d  S)Nr   )rg   r   r   r   r   r   r4  R	  s    zPropertyMock.__set__N)r#   r$   r%   r   r3  r4  r   r   r   r   r   D	  s   	)s__all____version__r+   r   r  builtinstypesr   	functoolsr   r   r   r  BaseExceptionr   platformr   langZ	Throwabler	   superr   r   r    r   r!   r   r"   r~   ZDescriptorTypesr.   r:   r5   rA   rD   rI   rQ   rL   re   rf   ri   r   r   ZMISSINGr   ZDELETEDr   rq   r|   r   rB   rV   r   r   r   r
   r   r   r   r   r   r   r   r#  r$  r&  r   r'  r.  r0  rn   ZmultipleZstopallr  Zmagic_methodsZnumericsr   r   ZinplacerightZ_non_defaultsr   r`  r   r   r[  rT  rZ  rV  rX  rY  r\  r]  r^  r   r   rb  re  r   r   rC   r   r   r   ro  r   r   rS  r)   r3  rs  r  r|  r   r   r   r   r   r   <module>   s  			 +							  e5 +		1	Jv						""		%
		
			w	D