§
    ½Ë”jâ  ã                   ó¤   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ ddl	m
Z
mZ  e j        e¦  «        Z G d„ d¦  «        Z G d	„ d
e
¦  «        ZdS )é    N)Úsuppress)ÚBytesIO)Ú	parse_qslÚurlparseé   )ÚCaseInsensitiveDictÚ_is_nonsequence_iteratorc                   ó‚  — e Zd ZdZd„ Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Z	e	j        d„ ¦   «         Z	d	„ Z
ed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zed„ ¦   «         ZdS )ÚRequestz,
    VCR's representation of a request.
    c                 óð  — || _         || _        t          |d¦  «        | _        t	          |¦  «        | _        | j        rmt          |d¦  «        rC|                     ¦   «         }|                     ¦   «         | _        | 	                    |¦  «         n=|                     ¦   «         | _        n#| j        rt          |¦  «        | _        n|| _        || _        t                               d| j        ¦  «         d S )NÚreadÚtellzInvoking Request %s)ÚmethodÚuriÚhasattrÚ	_was_filer	   Ú	_was_iterr   r   ÚbodyÚseekÚlistÚheadersÚlogÚdebug)Úselfr   r   r   r   r   s         ú9C:\Projects\DSCons\.venv\Lib\site-packages\vcr/request.pyÚ__init__zRequest.__init__   sÎ   € ØˆŒØˆŒÝ   vÑ.Ô.ˆŒÝ1°$Ñ7Ô7ˆŒØŒ>ð 
	Ý�t˜VÑ$Ô$ð (Ø—y’y‘{”{�Ø ŸIšI™KœK�”	Ø—	’	˜$‘”��à ŸIšI™KœK�”	�	ØŒ^ð 	Ý˜T™
œ
ˆDŒIˆIàˆDŒIØˆŒÝ�	Š	Ð'¨¬Ñ2Ô2Ð2Ð2Ð2ó    c                 ó   — | j         S ©N)Ú_uri©r   s    r   r   zRequest.uri$   s
   € àŒyÐr   c                 ó<   — || _         t          |¦  «        | _        d S r   )r    r   Ú
parsed_uri)r   r   s     r   r   zRequest.uri(   s   € àˆŒ	Ý" 3™-œ-ˆŒˆˆr   c                 ó   — | j         S r   )Ú_headersr!   s    r   r   zRequest.headers-   s
   € àŒ}Ðr   c                 ó\   — t          |t          ¦  «        st          |¦  «        }|| _        d S r   )Ú
isinstanceÚHeadersDictr%   ©r   Úvalues     r   r   zRequest.headers1   s,   € å˜%¥Ñ-Ô-ð 	'Ý Ñ&Ô&ˆEØˆŒˆˆr   c                 ó|   — | j         rt          | j        ¦  «        S | j        rt	          | j        ¦  «        S | j        S r   )r   r   Ú_bodyr   Úiterr!   s    r   r   zRequest.body7   s>   € àŒ>ð 	'Ý˜4œ:Ñ&Ô&Ð&ØŒ>ð 	$Ý˜œ
Ñ#Ô#Ð#ØŒzÐr   c                 óh   — t          |t          ¦  «        r|                     d¦  «        }|| _        d S )Nzutf-8)r'   ÚstrÚencoder,   r)   s     r   r   zRequest.body?   s0   € å�e�SÑ!Ô!ð 	*Ø—L’L Ñ)Ô)ˆEØˆŒ
ˆ
ˆ
r   c                 óR   — t          j        dt          d¬¦  «         || j        |<   d S )NzKRequest.add_header is deprecated. Please assign to request.headers instead.é   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr   )r   Úkeyr*   s      r   Ú
add_headerzRequest.add_headerE   s8   € ÝŒØYÝØð	
ñ 	
ô 	
ð 	
ð
 "ˆŒ�SÑÐÐr   c                 ó   — | j         j        S r   )r#   Úschemer!   s    r   r:   zRequest.schemeM   s   € àŒÔ%Ð%r   c                 ó   — | j         j        S r   )r#   Úhostnamer!   s    r   ÚhostzRequest.hostQ   s   € àŒÔ'Ð'r   c                 ó¤   — | j         j        }|€At          t          ¦  «        5  dddœ| j         j                 }d d d ¦  «         n# 1 swxY w Y   |S )Ni»  éP   )ÚhttpsÚhttp)r#   Úportr   ÚKeyErrorr:   )r   rB   s     r   rB   zRequest.portU   s£   € àŒÔ#ˆØˆ<Ý�(Ñ#Ô#ð Jð JØ!$¨bÐ1Ð1°$´/Ô2HÔI�ðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð ˆs   £AÁA	ÁA	c                 ó   — | j         j        S r   )r#   Úpathr!   s    r   rE   zRequest.path^   s   € àŒÔ#Ð#r   c                 óR   — | j         j        }t          t          |¦  «        ¦  «        S r   )r#   ÚqueryÚsortedr   )r   Úqs     r   rG   zRequest.queryb   s    € àŒOÔ!ˆÝ•i ‘l”lÑ#Ô#Ð#r   c                 ó   — | j         S r   )r   r!   s    r   ÚurlzRequest.urlh   s	   € àŒxˆr   c                 ó   — | j         S r   )r:   r!   s    r   ÚprotocolzRequest.protocolm   s
   € àŒ{Ðr   c                 ó(   — d| j         › d| j        › d�S )Nz
<Request (z) ú>)r   r   r!   s    r   Ú__str__zRequest.__str__q   s   € Ø6˜DœKÐ6Ð6¨4¬8Ð6Ð6Ð6Ð6r   c                 ó*   — |                       ¦   «         S r   )rP   r!   s    r   Ú__repr__zRequest.__repr__t   s   € Ø�|Š|‰~Œ~Ðr   c                 óp   — | j         | j        | j        d„ | j                             ¦   «         D ¦   «         dœS )Nc                 ó   — i | ]	\  }}||g“Œ
S © rU   )Ú.0ÚkÚvs      r   ú
<dictcomp>z$Request._to_dict.<locals>.<dictcomp>|   s    € Ð@Ð@Ð@¡4 1 a˜˜A˜3Ð@Ð@Ð@r   )r   r   r   r   )r   r   r   r   Úitemsr!   s    r   Ú_to_dictzRequest._to_dictw   s?   € à”kØ”8Ø”IØ@Ð@¨4¬<×+=Ò+=Ñ+?Ô+?Ð@Ñ@Ô@ð	
ð 
ð 	
r   c                 ó   — t          di |¤ŽS )NrU   )r   )ÚclsÚdcts     r   Ú
_from_dictzRequest._from_dict   s   € åˆ~ˆ~˜ˆ~ˆ~Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   Úsetterr   r   r8   r:   r=   rB   rE   rG   rK   rM   rP   rR   r[   Úclassmethodr_   rU   r   r   r   r      sé  € € € € € ðð ð3ð 3ð 3ð& ðð ñ „Xðð 	„Zð(ð (ñ „Zð(ð ðð ñ „Xðð „^ðð ñ „^ðð
 ðð ñ „Xðð 
„[ðð ñ „[ðð
"ð "ð "ð ð&ð &ñ „Xð&ð ð(ð (ñ „Xð(ð ðð ñ „Xðð ð$ð $ñ „Xð$ð ð$ð $ñ „Xð$ð
 ðð ñ „Xðð ðð ñ „Xðð7ð 7ð 7ðð ð ð
ð 
ð 
ð ðð ñ „[ðð ð r   r   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )r(   aY  
    There is a weird quirk in HTTP.  You can send the same header twice.  For
    this reason, headers are represented by a dict, with lists as the values.
    However, it appears that HTTPlib is completely incapable of sending the
    same header twice.  This puts me in a weird position: I want to be able to
    accurately represent HTTP headers in cassettes, but I don't want the extra
    step of always having to do [0] in the general case, i.e.
    request.headers['key'][0]

    In addition, some servers sometimes send the same header more than once,
    and httplib *can* deal with this situation.

    Furthermore, I wanted to keep the request and response cassette format as
    similar as possible.

    For this reason, in cassettes I keep a dict with lists as keys, but once
    deserialized into VCR, I keep them as plain, naked dicts.
    c                 ó   •— t          |t          t          f¦  «        r|d         }| j                             |                     ¦   «         ¦  «        }|r|d         }t          ¦   «                              ||¦  «         d S )Nr   )r'   Útupler   Ú_storeÚgetÚlowerÚsuperÚ__setitem__)r   r7   r*   ÚoldÚ	__class__s       €r   rn   zHeadersDict.__setitem__˜   sp   ø€ Ý�e�e¥T˜]Ñ+Ô+ð 	Ø˜!”HˆEð Œk�oŠo˜cŸiši™kœkÑ*Ô*ˆØð 	Ø�a”&ˆCå‰Œ×Ò˜C Ñ'Ô'Ð'Ð'Ð'r   )r`   ra   rb   rc   rn   Ú__classcell__)rp   s   @r   r(   r(   „   sB   ø€ € € € € ðð ð&	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(r   r(   )Úloggingr4   Ú
contextlibr   Úior   Úurllib.parser   r   Úutilr   r	   Ú	getLoggerr`   r   r   r(   rU   r   r   ú<module>rx      sã   ðØ €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à€gÔ˜Ñ!Ô!€ðuð uð uð uð uñ uô uð uðp(ð (ð (ð (ð (Ð%ñ (ô (ð (ð (ð (r   