
    0`Ff                     @   d dl mZmZmZmZ d dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ 	 d d
lmZmZ n# e$ r d d
lmZmZ Y nw xY w	 d dlmZ n# e$ r	 d dl mZ Y nw xY w	 d dl!m"Z" n# e$ r	 d dl m"Z" Y nw xY wej#        rd dl$m$Z$m%Z%m&Z&m'Z' d dl(m)Z) nd dl*m$Z$m%Z%m&Z&m'Z'm)Z) ej#        r	 d dlm+Z, n# e$ r	 d dlm-Z, Y n
w xY wd dl.m/Z, 	 d dl0m1Z2 n# e$ r d dl1Z2Y nw xY w	 e
j3        Z4n# e5$ r
 e
j4        Z4Y nw xY w	 d dl6m7Z7 n# e$ r e8Z7Y nw xY w e9            Z: edddg          Z;ej<        Z= e	j>        d          Z?d Z@d ZAd ZBd ZCd ZDd ZEdZFd  ZG G d! d"ee          ZHd# ZId$ ZJ e9            ZKd% ZLd& ZM G d' d(e9          ZN G d) d*eN          ZO G d+ d,eN          ZP G d- d.e9          ZQ G d/ d0e9          ZR eRd12          xZ1ZSg d3ZTeSjU        ZUeSjV        ZVeSjW        ZWeSjX        ZXeSjY        ZYeSjZ        ZZeSj[        Z[eSj\        Z\eSj]        Z]eSj^        Z^eSj_        Z_eSj`        Z`eSja        ZaeSjb        ZbeSjc        ZceSjd        ZdeSje        ZeeSjf        ZfeSjg        ZgeSjh        ZheSji        ZieSjj        ZjeSjk        ZkeSjl        ZldS )4    )absolute_importprint_functiondivisionunicode_literalsN)groupby)
namedtuple)update_wrapper)HTTPAdapter)ConnectionError)REDIRECT_STATI)cookiejar_from_dict)SequenceSized)HTTPResponse)HTTPHeaderDict)urlparse	parse_qslurlsplit
urlunsplit)quote)r   r   r   r   r   )	cStringIO)StringIO)BytesIO)mock)JSONDecodeErrorCallrequestresponse	responsesc                 6    t          | t          j                  S N)
isinstancesixstring_typesss    2lib/python3.11/site-packages/responses/__init__.py
_is_stringr(   H   s    a)***    c                 4    t          d | D                       S )Nc              3   <   K   | ]}t          |          d k    V  dS )   N)ord).0chars     r'   	<genexpr>z_has_unicode.<locals>.<genexpr>M   s,      --4s4yy3------r)   )anyr%   s    r'   _has_unicoder2   L   s    --1------r)   c                    t          t          |                     }|d         }t          |          r|                    d          }t	          |          D ]D\  }}t          |          r0d|                    d                              d          z   }|||<   Ed                    |          |d<   t          |          } t          |                     d          t          j                  r|                     d          } t          |           }t	          |          D ]*\  }}t          |          dk    rt          |          ||<   +d                    |          S )	N   .zxn--punycodeasciiutf8r,    )listr   r2   split	enumerateencodedecodejoinr   r"   r#   r$   r-   r   )urlurllistnetlocdomainsidcharsxs           r'   _clean_unicoderH   P   sA   8C==!!GQZFF ",,s##g&& 	 	DAqA QXXj1188AAA
XXg&&
!! #**V$$c&677 !jj  IIE%      1q66C<<QxxE!H775>>r)   c                 `    	 | j         S # t          $ r | j        t          v od| j        v cY S w xY w)Nlocation)is_redirectAttributeErrorstatus_coder   headers)r   s    r'   _is_redirectrO   h   sW    

## 
 
 
  N2 /h..	
 	
 	

s   	 !--c                     t           j        r1t          | t           j                  r|                     d          n| } | S Nutf-8)r#   PY2r"   	text_typer=   r%   s    r'   _ensure_strrU   v   s9    
w E!+As}!=!=DAHHW1Hr)   c                    	 dd l m} |                                }|                    | d                    d |                                D             }n\# t
          $ rO ddlm} |                    t          | d                             }d |                                D             }Y nw xY wt          |          S )Nr   z
set-cookiec                 $    i | ]\  }}||j         S  )value)r.   namevs      r'   
<dictcomp>z)_cookies_from_headers.<locals>.<dictcomp>   s     III'$agIIIr)   )Cookiesc                 b    i | ],\  }}|j         t          t          |j                            -S rX   )rZ   r   rU   rY   )r.   _r[   s      r'   r\   z)_cookies_from_headers.<locals>.<dictcomp>   s?     
 
 
48AqAFE+ag..//
 
 
r)   )
http.cookiescookiesSimpleCookieloaditemsImportErrorr]   from_requestrU   r   )rN   ra   resp_cookiecookies_dictr]   resp_cookiess         r'   _cookies_from_headersrj   |   s    
&&&&&&**,,.///II[5F5F5H5HIII 
 
 
######++K8M,N,NOO
 
<H<N<N<P<P
 
 
	
 |,,,s   AA AB/.B/zRdef wrapper%(wrapper_args)s:
    with responses:
        return func%(func_args)s
c                    t           j        rct          j        |           \  }}}}t          j        ||||          }t          | d          r
|dd          }t          j        |||d           }n"t          j        |           }|                    t          j        j	                  }t          | d          rIt          j
        dt          j
        j                  t          j
        dt          j
        j                  g}	n#d |j                                        D             }	|                    |	          }t          |          }d	 |j                                        D             }
|                    |
          }t          |          }| |d
}t          j        t"          ||dz  |           |d         }t%          ||            |S )N__self__r4   )return_annotation__wrapped__argskwargsc                 X    g | ]'}|                     t          j        j                   (S ))
annotationreplaceinspect	Parameteremptyr.   params     r'   
<listcomp>zget_wrapped.<locals>.<listcomp>   s<        ):)@AA  r)   )
parametersc                 x    g | ]7}|                     t          j        j        t          j        j                   8S ))rr   defaultrs   rx   s     r'   rz   zget_wrapped.<locals>.<listcomp>   sN     #
 #
 #
  MM",2G<M<S   #
 #
 #
r)   )funcr   )wrapper_args	func_argswrapper)r#   rS   ru   
getargspecformatargspechasattr	signaturert   	Signaturerw   rv   VAR_POSITIONALVAR_KEYWORDr{   valuesstrexec__wrapper_templater	   )r~   r   ro   akwdefaultsr   r   r   wrapper_paramsparams_without_defaultsevaldictr   s                r'   get_wrappedr      s   
w $# ' 24 8 8aX,T1b(CC 4$$ 	8D)$2t<<		%d++	%%8I8O%PP	
 4'' 		!&'*;*JKK!(G,=,IJJNN
 &188::  N %%%@@	9~~#
 #
 #-4466	#
 #
 #
 %%1H%II		NN	955HI\	RRR   y!G7D!!!Nr)   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )CallListc                     g | _         d S r!   _callsselfs    r'   __init__zCallList.__init__       r)   c                 *    t          | j                  S r!   )iterr   r   s    r'   __iter__zCallList.__iter__   s    DK   r)   c                 *    t          | j                  S r!   )lenr   r   s    r'   __len__zCallList.__len__   s    4;r)   c                     | j         |         S r!   r   )r   idxs     r'   __getitem__zCallList.__getitem__   s    {3r)   c                 V    | j                             t          ||                     d S r!   )r   appendr   )r   r   r   s      r'   addzCallList.add   s(    42233333r)   c                     g | _         d S r!   r   r   s    r'   resetzCallList.reset   r   r)   N)	__name__
__module____qualname__r   r   r   r   r   r   rX   r)   r'   r   r      sn          ! ! !          4 4 4    r)   r   c                     t          |           r<t          t          |                     }|d         dk    rd|d<   t          |          } | S )N   r9   /)r(   r:   r   r   )r@   	url_partss     r'   _ensure_url_default_pathr      sM    # $#''	Q<2IaL##Jr)   c                     t          | t          j                  r|                     d          } t          | t          j                  r| S t          |           S rQ   )r"   r#   rT   r=   _ioBufferedReaderBufferIO)bodys    r'   _handle_bodyr      sM    $&& ${{7##$*++ D>>r)   c                       fd}|S )Nc                     | d u n>t                                                    t          t          |                     k    S r!   )sortedrd   r   request_bodyparamss    r'   matchz(urlencoded_params_matcher.<locals>.match   sC     # dNN''6)L2I2I+J+JJ	
r)   rX   r   r   s   ` r'   urlencoded_params_matcherr      s#    
 
 
 
 
 Lr)   c                       fd}|S )Nc                     	 t          | t                    r|                     d          } | d u nt          j        |           k    S # t
          $ r Y dS w xY w)NrR   F)r"   bytesr>   json_moduleloadsr   r   s    r'   r   z"json_params_matcher.<locals>.match   s|    		,.. <+227;;  ' ${0>>>
  	 	 	55	s   AA 
AArX   r   s   ` r'   json_params_matcherr      s#    
 
 
 
 
 Lr)   c                   ^    e Zd ZdZdZdZeg fdZd Zd Z	d Z
d ZddZd	 Zd
 Zd Zd ZdS )BaseResponseNFc                     || _         t          |          | _        |                     |          | _        || _        d| _        d S Nr   )methodr   r@   _should_match_querystringmatch_querystringr   
call_count)r   r   r@   r   r   s        r'   r   zBaseResponse.__init__  sA    +C00!%!?!?@Q!R!R
r)   c                    t          |t                    sdS | j        |j        k    rdS t          | j        t                    r| j        j        n| j        }t          |j        t                    r|j        j        n|j        }||k    S NF)r"   r   r   r@   Patternpattern)r   otherself_url	other_urls       r'   __eq__zBaseResponse.__eq__  s~    %.. 	5;%,&&5
 (2$(G'D'DR48##$()3EIw)G)GVEI%%UY	9$$r)   c                 .    |                      |           S r!   )r   )r   r   s     r'   __ne__zBaseResponse.__ne__'  s    ;;u%%%%r)   c                     t          |          }t          |          }|d d         |d d         k    rdS t          t          |j                            }t          t          |j                            }||k    S )N   F)r   r   r   query)r   r@   r   
url_parsedother_parsedurl_qsl	other_qsls          r'   _url_matches_strictz BaseResponse._url_matches_strict*  st    c]]
bqb>\"1"---5:#344559\%78899	)##r)   c                     |t           ur|S t          | j        t                    rdS t	          t          | j                  j                  S r   )_unspecifiedr"   r@   r   boolr   r   )r   match_querystring_arguments     r'   r   z&BaseResponse._should_match_querystring6  sG    %\99--dh(( 	5HTX&&,---r)   c                    t          |          rt          |          rQt          |          }t          |t          j                  s(|                    d                              d          }|r|                     ||          S |	                    dd          d         }|	                    dd          d         }||k    S t          |t                    r|                    |          rdS dS )Nr7   r8   ?r4   r   TF)r(   r2   rH   r"   r#   rT   r=   r>   r   r;   r   r   )r   r@   r   r   url_without_qsother_without_qss         r'   _url_matcheszBaseResponse._url_matches@  s    c?? 	C   A$S))!%77 A!LL1188@@E  ://U;;; "%3!2!21!5#(;;sA#6#6q#9 %)999W%% 	#))E*:*: 	4 5r)   c                 ,    |D ]} ||          s dS dS )NFTrX   )r   r   r   matchers       r'   _body_matcheszBaseResponse._body_matchesT  s6     	 	G7<(( uu tr)   c                     t                      }| j        
| j        |d<   | j        r|                    | j                   |S )NContent-Type)r   content_typerN   extendr   rN   s     r'   get_headerszBaseResponse.get_headers[  sF     ""(&*&7GN#< 	)NN4<(((r)   c                     t           r!   )NotImplementedErrorr   r   s     r'   get_responsezBaseResponse.get_responsec  s    !!r)   c                     |j         | j         k    rdS |                     | j        |j        | j                  sdS |                     | j        |j                  sdS dS )N)FzMethod does not match)FzURL does not match)FzParameters do not match)Tr9   )r   r   r@   r   r   r   r   r   s     r'   matcheszBaseResponse.matchesf  se    >T[((11  7;8NOO 	/..!!$*gl;; 	433xr)   )F)r   r   r   r   rN   streamr   r   r   r   r   r   r   r   r   r   r   rX   r)   r'   r   r   
  s        LGF6B"    % % %& & &
$ 
$ 
$. . .   (    " " "
 
 
 
 
r)   r   c                   8     e Zd Zdddddef fd	Zd Zd Z xZS )Responser9   N   Fc	                 J   |#|rJ t          j        |          }|t          u rd}|t          u r.t          |t          j                  rt          |          rd}nd}|| _        || _        || _	        || _
        || _         t          t          |           j        ||fi |	 d S )Nzapplication/jsonztext/plain; charset=utf-8
text/plain)r   dumpsUNSETr"   r#   rT   r2   r   statusrN   r   r   superr   r   )r   r   r@   r   jsonr  rN   r   r   rp   	__class__s             r'   r   zResponse.__init__t  s     OOO$T**Du$$15  $.. ,<3E3E ,:+	(&h&vs==f=====r)   c           	      B   | j         r!t          | j         t                    r| j         |                                 }| j        }t          | j                   }t          |t          j        j	        j
                            |          ||t          |          d          S )NFr  reasonr   rN   original_responsepreload_content)r   r"   	Exceptionr   r  r   r   r#   moveshttp_clientr   getOriginalResponseShim)r   r   rN   r  r   s        r'   r   zResponse.get_response  s    9 	DIy99 	)O""$$DI&&9(266v>>27;;!
 
 
 	
r)   c                     d                     | j        | j        | j        t	          j        | j                            S )NzY<Response(url='{url}' status={status} content_type='{content_type}' headers='{headers}')>)r@   r  r   rN   )formatr@   r  r   r   r   rN   r   s    r'   __repr__zResponse.__repr__  sE    BBH&H{!.#)$,77	 CI C C	
r)   )r   r   r   r  r   r   r  __classcell__r  s   @r'   r   r   s  sp        
 > > > > > >B
 
 
 	
 	
 	
 	
 	
 	
 	
r)   r   c                   (     e Zd Z	 d fd	Zd Z xZS )CallbackResponseFr   c                 v    || _         || _        || _         t          t          |           j        ||fi | d S r!   )callbackr   r   r  r  r   )r   r   r@   r  r   r   rp   r  s          r'   r   zCallbackResponse.__init__  sI     !(.%%.vsEEfEEEEEr)   c           	      ^   |                                  }|                     |          }t          |t                    r||\  }}}t          |t                    r|d}t          |t                    rd|v rd}n.t          |t
                    rt          d |D                       }|r|                    dd            t          |          }|	                    |           t          |t          j        j        j                            |          ||t!          |          d          S )NFr   Tc                 R    g | ]$}||d                                           dk    "|%S )r   zcontent-type)lower)r.   hs     r'   rz   z1CallbackResponse.get_response.<locals>.<listcomp>  s3    NNNqNqtzz||~/M/M/M/M/Mr)   r  )r   r  r"   r  dictr:   r1   popr   r   r   r#   r  r  r   r  r  )r   r   rN   resultr  	r_headersr   has_content_types           r'   r   zCallbackResponse.get_response  sB   ""$$w''fi(( 	L"(	4dI&& 	J
 !i&& 	>Y+F+F#	4(( 	"NNINNN     	.KK---D!!y!!!9(266v>>27;;!
 
 
 	
r)   Fr   )r   r   r   r   r   r  r  s   @r'   r  r    sU        @LF F F F F F"
 "
 "
 "
 "
 "
 "
r)   r  c                       e Zd ZdZd Zd ZdS )r  a  
    Shim for compatibility with older versions of urllib3

    requests cookie handling depends on responses having a property chain of
    `response._original_response.msg` which contains the response headers [1]

    Using HTTPResponse() for this purpose causes compatibility errors with
    urllib3<1.23.0. To avoid adding more dependencies we can use this shim.

    [1]: https://github.com/psf/requests/blob/75bdc998e2d/requests/cookies.py#L125
    c                     || _         d S r!   )msgr   s     r'   r   zOriginalResponseShim.__init__  s    r)   c                     dS )NTrX   r   s    r'   isclosedzOriginalResponseShim.isclosed  s    tr)   N)r   r   r   __doc__r   r'  rX   r)   r'   r  r    s<        
 
      r)   r  c                       e Zd ZdZdZdZdZdZdZdZ	dZ
	 	 	 	 d"dZd Z	 	 	 	 d#dZd Zd$dZd%dZd%dZ	 d&dZd Zed             Zd Zd Zd Zd Zd Zd Zd Zd'd Zd! ZdS )(RequestsMockDELETEGETHEADOPTIONSPATCHPOSTPUTNTrX   "requests.adapters.HTTPAdapter.sendc                     t                      | _        |                                  || _        || _        t          |          | _        || _        d S r!   )r   r   r   assert_all_requests_are_firedresponse_callbacktuplepassthru_prefixestarget)r   r4  r5  r7  r8  s        r'   r   zRequestsMock.__init__  sH     jj

-J*!2!&'8!9!9r)   c                 F    g | _         | j                                         d S r!   )_matchesr   r   r   s    r'   r   zRequestsMock.reset  s#    r)   r9   c           	          t          |t                    r| j                            |           dS ||                    d|           | j                            t          d|||d|           dS )a$  
        A basic request:

        >>> responses.add(responses.GET, 'http://example.com')

        You can also directly pass an object which implements the
        ``BaseResponse`` interface:

        >>> responses.add(Response(...))

        A JSON payload:

        >>> responses.add(
        >>>     method='GET',
        >>>     url='http://example.com',
        >>>     json={'foo': 'bar'},
        >>> )

        Custom headers:

        >>> responses.add(
        >>>     method='GET',
        >>>     url='http://example.com',
        >>>     headers={'X-Header': 'foo'},
        >>> )


        Strict query string matching:

        >>> responses.add(
        >>>     method='GET',
        >>>     url='http://example.com?foo=bar',
        >>>     match_querystring=True
        >>> )
        NrN   r   r@   r   rX   )r"   r   r:  r   
setdefaultr   )r   r   r@   r   adding_headersro   rp   s          r'   r   zRequestsMock.add  s    X fl++ 	M  (((F%i888XRV4RR6RRSSSSSr)   c                     t          |t                    st          |          rt          |          }| xj        |fz  c_        dS )a  
        Register a URL prefix or regex to passthru any non-matching mock requests to.

        For example, to allow any request to 'https://example.com', but require
        mocks for the remainder, you would add the prefix as so:

        >>> responses.add_passthru('https://example.com')

        Regex can be used like:

        >>> responses.add_passthru(re.compile('https://example.com/\w+'))
        N)r"   r   r2   rH   r7  )r   prefixs     r'   add_passthruzRequestsMock.add_passthruD  sN     &'** 	,|F/C/C 	,#F++F6)+r)   c                     t          |t                    r|}nt          ||          }|| j        v r%| j                            |           || j        v #dS dS )aT  
        Removes a response previously added using ``add()``, identified
        either by a response object inheriting ``BaseResponse`` or
        ``method`` and ``url``. Removes all matching responses.

        >>> response.add(responses.GET, 'http://example.org')
        >>> response.remove(responses.GET, 'http://example.org')
        r   r@   N)r"   r   r:  remove)r   method_or_responser@   r   s       r'   rD  zRequestsMock.removeU  sp     (,77 	H)HH#+=3GGGH$-''M  *** $-''''''r)   c                     t          |t                    r
|j        }|}nt          d|||d|}	 | j                            |          }n # t          $ r t          d|z            w xY w|| j        |<   dS )a  
        Replaces a response previously added using ``add()``. The signature
        is identical to ``add()``. The response is identified using ``method``
        and ``url``, and the first matching response is replaced.

        >>> responses.add(responses.GET, 'http://example.org', json={'data': 1})
        >>> responses.replace(responses.GET, 'http://example.org', json={'data': 2})
        r<  z%Response is not registered for URL %sNrX   )r"   r   r@   r   r:  index
ValueError)r   rE  r@   r   ro   rp   r   rG  s           r'   rt   zRequestsMock.replacef  s     (,77 	Y$(C)HHX'9sXXQWXXH	LM''11EE 	L 	L 	LDsJKKK	L'es   A A)c                 v    	  | j         |||g|R i | dS # t          $ r  | j        |||g|R i | Y dS w xY w)a  
        Replaces a response previously added using ``add()``, or adds the response
        if no response exists.  Responses are matched using ``method``and ``url``.
        The first matching response is replaced.

        >>> responses.add(responses.GET, 'http://example.org', json={'data': 1})
        >>> responses.upsert(responses.GET, 'http://example.org', json={'data': 2})
        N)rt   rH  r   )r   rE  r@   r   ro   rp   s         r'   upsertzRequestsMock.upsert{  s    	EDL+S$HHHHHHHHH 	E 	E 	EDH'dDTDDDVDDDDDD	Es    88Fr   c           	      ^    | j                             t          |||||                     d S )N)r@   r   r  r   r   )r:  r   r  )r   r   r@   r  r   r   s         r'   add_callbackzRequestsMock.add_callback  sI     	!)"3  	
 	
 	
 	
 	
r)   c                     | j         S r!   )r:  r   s    r'   
registeredzRequestsMock.registered  s
    }r)   c                     | j         S r!   r   r   s    r'   callszRequestsMock.calls  s
    {r)   c                 .    |                                   | S r!   )startr   s    r'   	__enter__zRequestsMock.__enter__  s    

r)   c                 b    |d u }|                      |           |                                  |S )N)allow_assert)stopr   )r   typerY   	tracebacksuccesss        r'   __exit__zRequestsMock.__exit__  s1    $,		w	'''

r)   c                 "    t          ||           S r!   )r   )r   r~   s     r'   activatezRequestsMock.activate  s    4&&&r)   c                     d }d }g }t          | j                  D ]Y\  }}|                    |          \  }}|r%||}|}&| j                            |          |fc S |                    |           Z||fS r!   )r<   r:  r   r  r   )	r   r   foundfound_matchmatch_failed_reasonsrD   r   match_resultr  s	            r'   _find_matchzRequestsMock._find_match  s    !!$-00 
	4 
	4HAu#(==#9#9 L& 4=E"'KK  =,,U335IIIII$++F3333000r)   c                     i }t          t          t          |          j                  d           D ]C\  }}t	          t          d |                    }t          |          dk    r|d         }|||<   D|S )Nc                     | d         S r   rX   )kvs    r'   <lambda>z4RequestsMock._parse_request_params.<locals>.<lambda>  s
    2a5 r)   c                     | d         S )Nr4   rX   )rG   s    r'   rf  z4RequestsMock._parse_request_params.<locals>.<lambda>  s
    ! r)   r4   r   )r   r   r   r   r:   mapr   )r   r@   r   keyvalr   s         r'   _parse_request_paramsz"RequestsMock._parse_request_params  s|    	(3--*= > >@P@PQQ 	! 	!HC#nnc2233F6{{a F3KKr)   c                    |                                \  }}| j        }|                     j                  _        |t          fd| j        D                       r1t                              ddj	        i           t          |fi |S dj        dj	        d}t          | j                  D ]/\  }}	|d                    |	j        |	j	        ||                   z  }0t          |          }
|
_        | j                            |
           |r ||
          n|
}
|
	 |                    |                                        }
nM# t*          $ r@}
|xj        d	z  c_        | j                            |
           |r ||
          n|
}
 d }
~
ww xY w|j        s|
j         |r ||
          n|
}
|xj        d	z  c_        | j                            |
           |
S )
Nc                     g | ]K}t          |t                    r|                    j                  nj                            |          LS rX   )r"   r   r   r@   
startswith)r.   pr   s     r'   rz   z,RequestsMock._on_request.<locals>.<listcomp>  s`         "!W--3AGGGK((( //22  r)   zrequest.allowed-passthrur@   )extraz[Connection refused by Responses - the call doesn't match any registered mock.

Request: 
-  z

Available matches:
z- {} {} {}
r4   )rb  r5  rk  path_urlr   r1   r7  loggerinfor@   
_real_sendr   r<   r:  r  r   r   r   r   build_responser   BaseExceptionr   r   content)r   adapterr   rp   r   r`  resp_callback	error_msgrD   mr   s     `        r'   _on_requestzRequestsMock._on_request  s^   &*&6&6w&?&?##.33G4DEE=    "3	    	> 6ugk>RSSS!'7==f===	>  +2...'+++	G  "$-00  1^22Hae%9!%<  		 'y11H&HKOOGX...2?M}}X...XHN	--gu7I7I'7R7RSSHH 	 	 	!KOOGX...2?M}}X...XH		 | 	.;I==***A***s   -)E 
F!!;FF!c                       fd}t          j         j        |           _         j                                         d S )Nc                 (     j         | |g|R i |S r!   )r}  )ry  r   r   rp   r   s       r'   unbound_on_sendz+RequestsMock.start.<locals>.unbound_on_send  s(    #4#GWCqCCCFCCCr)   )r8  new)std_mockpatchr8  _patcherrR  )r   r  s   ` r'   rR  zRequestsMock.start  sU    	D 	D 	D 	D 	D !dkOOOr)   c                     | j                                          | j        sd S |sd S d | j        D             }|r,t	          d                    d |D                                 d S )Nc                 (    g | ]}|j         d k    |S )r   )r   )r.   r|  s     r'   rz   z%RequestsMock.stop.<locals>.<listcomp>
  s$    DDDA!,!2C2Ca2C2C2Cr)   z)Not all requests have been executed {0!r}c                 *    g | ]}|j         |j        fS rX   rC  )r.   r   s     r'   rz   z%RequestsMock.stop.<locals>.<listcomp>  s!    GGG5elEI.GGGr)   )r  rV  r4  r:  AssertionErrorr  )r   rU  
not_calleds      r'   rV  zRequestsMock.stop  s    1 	F 	FDDDDD
 	 ;BBGGJGGG   	 	r)   c                     t          fd| j        D                       }||k    rdS t          d                    ||                    )Nc                 N    g | ]!}|j         j        t                    k    d "S )r4   )r   r@   r   )r.   callr@   s     r'   rz   z2RequestsMock.assert_call_count.<locals>.<listcomp>  s<       <#'?'D'DDD DDDr)   Tz<Expected URL '{0}' to be called {1} times. Called {2} times.)r   rP  r  r  )r   r@   countr   s    `  r'   assert_call_countzRequestsMock.assert_call_count  sx        J  
 

 4 NUU
   r)   )TNrX   r2  )NNr9   N)NN)NNr9   r"  )T)r   r   r   r+  r,  r-  r.  r/  r0  r1  r5  r   r   r   rA  rD  rt   rJ  rL  rN  propertyrP  rS  rZ  r\  rb  rk  r}  rR  rV  r  rX   r)   r'   r*  r*    s       F
CDGED
C '+3      3T 3T 3T 3Tj, , ,"+ + + +"( ( ( (*E E E E LX
 
 
 
      X    ' ' '1 1 1"  2 2 2h          r)   r*  F)r4  )r  r   r*  r\  r   rL  rA  r4  r  rP  r+  r,  r-  r.  r7  r/  r0  r1  rN  rD  rt   r   r5  rR  rV  r8  rJ  )m
__future__r   r   r   r   r   ru   r  r   loggingre	itertoolsr   r#   collectionsr   	functoolsr	   requests.adaptersr
   requests.exceptionsr   requests.sessionsr   requests.utilsr   collections.abcr   r   re   "requests.packages.urllib3.responser   urllib3.response$requests.packages.urllib3.connectionr   rS   r   r   r   r   urllibr   urllib.parser   r   r   ior   unittestr   r  _pattern_typer   rL   json.decoderr   rH  objectr  r   sendru  	getLoggerrs  r(   r2   rH   rO   rU   rj   r   r   r   r   r   r   r   r   r   r   r  r  r*  _default_mock__all__r\  r   rL  rA  r4  r  rP  r+  r,  r-  r.  r7  r/  r0  r1  rN  rD  rt   r   r5  rR  rV  r8  rJ  rX   r)   r'   <module>r     sf   R R R R R R R R R R R R 



       				       



 " " " " " " $ $ $ $ $ $ ) ) ) ) ) ) / / / / / / , , , , , , . . . . . .,///////// , , ,++++++++++,.??????? . . .--------.0CCCCCCC 0 0 0////////0 7 NBBBBBBBBBBBBMMMMMMMMMMMMMM7 '-------- - - -,,,,,,,,- '&&&&&)))))))   GG   jGGG!,,,,,,, ! ! ! OOO! 	z&9j122
		;	'	'+ + +. . .  0
 
 
  - - -$ . . .b    x   (     vxx     f f f f f6 f f fR;
 ;
 ;
 ;
 ;
| ;
 ;
 ;
|+
 +
 +
 +
 +
| +
 +
 +
\    6   (n n n n n6 n n nd	 $|%HHH H}  > !)) - K !3 		

!3 %
		

!3 				s~   A A)(A)-A4 4BBB BBC C#"C#-C4 4	D ?D D DDD& &D0/D0