Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib/python3.5/site-packages/requests_mock/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/requests_mock/__pycache__/adapter.cpython-35.pyc



��DX�#�@s�ddlZddlmZddlZddlmZddlmZddl	m
Z
ddlmZe
�ZGdd�de
�ZGd	d
�d
e�ZGdd�de�ZGd
d�dee�ZdgZdS)�N)�BaseAdapter)�parse)�
exceptions)�_RequestObjectProxy)�_MatcherResponsec@speZdZdd�Zdd�Zedd��Zedd��Zed	d
��Zedd��Z	d
S)�_RequestHistoryTrackercCs
g|_dS)N)�request_history)�self�r
�F/opt/alt/python35/lib/python3.5/site-packages/requests_mock/adapter.py�__init__sz_RequestHistoryTracker.__init__cCs|jj|�dS)N)r�append)r	�requestr
r
r�_add_to_historysz&_RequestHistoryTracker._add_to_historycCs,y|jdSWntk
r'dSYnXdS)z Retrieve the latest request sent�N���)r�
IndexError)r	r
r
r�last_request"s
z#_RequestHistoryTracker.last_requestcCs
|jdkS)Nr)�
call_count)r	r
r
r�called*sz_RequestHistoryTracker.calledcCs
|jdkS)Nr)r)r	r
r
r�called_once.sz"_RequestHistoryTracker.called_oncecCs
t|j�S)N)�lenr)r	r
r
rr2sz!_RequestHistoryTracker.call_countN)
�__name__�
__module__�__qualname__rr�propertyrrrrr
r
r
rrsrc@seZdZdZdS)�_RunRealHTTPa	A fake exception to jump out of mocking and allow a real request.

    This exception is caught at the mocker level and allows it to execute this
    request through the real requests mechanism rather than the mocker.

    It should never be exposed to a user.
    N)rrr�__doc__r
r
r
rr7srcsdeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	�S)�_Matcherz;Contains all the information about a provided URL to match.c	stt|�j�||_||_||_||_||_||_t	|t
j�r�tj|�}|j
j�|_|jj�|_|jp�d|_|j|_|s�|jj�|_|jj�|_n$d|_d|_d|_d|_dS)a2
        :param bool complete_qs: Match the entire query string. By default URLs
            match if all the provided matcher query arguments are matched and
            extra query arguments are ignored. Set complete_qs to true to
            require that the entire query string needs to match.
        �/N)�superrr�_method�_url�
_responses�_complete_qs�_request_headers�
_real_http�
isinstance�six�string_types�urlparse�scheme�lower�_scheme�netloc�_netloc�path�_path�query�_query)	r	�method�url�	responses�complete_qs�request_headers�	real_http�case_sensitiveZ	url_parts)�	__class__r
rrDs(									z_Matcher.__init__cCs9|jtkrdS|jj�|jj�kr5dSdS)NTF)r!�ANYr4r,)r	rr
r
r�
_match_methodgs
z_Matcher._match_methodc
Cs`|jtkrdSt|jd�r>|jj|j�dk	S|jrc|jj�|jkrcdS|jr�|j	j�|jkr�dS|j
p�d|jkr�dStj
|j�}tj
|j�}xdtj|�D]S\}}xD|D]<}y|j|g�j|�Wq�tk
r&dSYq�Xq�Wq�W|jr\x!tj|�D]}|rHdSqHWdS)NT�searchFr)r"r<�hasattrr>r5r-r+r,r/r.r0r1r*�parse_qsr2r3r(�	iteritems�get�remove�
ValueErrorr$�
itervalues)r	rZ
request_qsZ
matcher_qs�k�vals�vr
r
r�
_match_urlps.!!

	z_Matcher._match_urlcCs�x�tj|j�D]�\}}y|j|}Wn[tk
r�t|tj�sVdSy|j|jd�}Wntk
r�dSYnXYnX||krdSqWdS)NFzutf-8T)r(rAr%�headers�KeyErrorr'�	text_type�encode)r	rrFrG�headerr
r
r�_match_headers�s

z_Matcher._match_headerscCs+|j|�o*|j|�o*|j|�S)N)r=rIrO)r	rr
r
r�_match�sz_Matcher._matchcCsv|j|�sdS|jr%t��t|j�dkrO|jjd�}n
|jd}|j|�|j|�S)Nrr)rPr&rrr#�poprZget_response)r	rZresponse_matcherr
r
r�__call__�s		

z_Matcher.__call__)
rrrrrr=rIrOrPrRr
r
)r;rrAs#	%rcs^eZdZdZd�fdd�Zdd�Zdd�Zd	d
d�Zdd
�Z�S)�Adapterz:A fake adapter than can return predefined responses.

    Fcs)tt|�j�||_g|_dS)N)r rSr�_case_sensitive�	_matchers)r	r:)r;r
rr�s	zAdapter.__init__cKs�t|d|j|�}|j|�x|t|j�D]k}y||�}Wn'tk
rttj|�|_�YnX|dk	r5tj|�|_||_	|Sq5Wt
j|��dS)Nr:)rrTr�reversedrU�	Exception�weakref�refZ_matcher�
connectionrZ
NoMockAddress)r	r�kwargs�matcher�respr
r
r�send�s		

	zAdapter.sendcCsdS)Nr
)r	r
r
r�close�sz
Adapter.closeNc
Ks�|jdd�}|jdi�}|jdd�}|rQ|rQtd��n<|rr|sc|rrtd��n|s�|r�gn|g}dd�|D�}t|||d	|jd|d|d
|�}	|j|	�|	S)z�Register a new URI match and fake response.

        :param str method: The HTTP method to match.
        :param str url: The URL to match.
        r7Fr8r&zKYou should specify either a list of responses OR response kwargs. Not both.z?You should specify either response data OR real_http. Not both.cSsg|]}t|��qSr
)r)�.0rFr
r
r�
<listcomp>�s	z(Adapter.register_uri.<locals>.<listcomp>r:r9)rQ�RuntimeErrorrrT�add_matcher)
r	r4r5Z
response_listr[r7r8r9r6r\r
r
r�register_uri�s&		
zAdapter.register_uricCs|jj|�dS)z�Register a custom matcher.

        A matcher is a callable that takes a `requests.Request` and returns a
        `requests.Response` if it matches or None if not.

        :param callable matcher: The matcher to execute.
        N)rUr
)r	r\r
r
rrcszAdapter.add_matcher)	rrrrrr^r_rdrcr
r
)r;rrS�s$rS)rXZrequests.adaptersrr(Zsix.moves.urllibrr*Z
requests_mockrZrequests_mock.requestrZrequests_mock.responser�objectr<rrWrrrS�__all__r
r
r
r�<module>
s	
�O