ó
Ę1@]c           @   s   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 d d l m	 Z	 m
 Z
 m Z d   Z d   Z d e f d	     YZ d S(
   i’’’’N(   t   msgpack(   t   CaseInsensitiveDicti   (   t   HTTPResponset   picklet	   text_typec         C   s   t  j |  j d   S(   Nt   ascii(   t   base64t	   b64decodet   encode(   t   b(    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt   _b64_decode_bytes   s    c         C   s   t  |   j d  S(   Nt   utf8(   R
   t   decode(   t   s(    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt   _b64_decode_str   s    t
   Serializerc           B   sS   e  Z d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c   	      C   s]  t  | j  } | d  k rB | j d t  } t j |  | _ n  i i | d 6t d   | j j	   D  d 6| j
 d 6| j d 6t | j  d 6| j d 6| j d	 6d
 6} i  | d <d | k r;| d j d  } xa | D]V } t |  j   } | j j | d   } | d  k	 r&t |  } n  | | d | <qŽ Wn  d j d t j | d t g  S(   Nt   decode_contentu   bodyc         s   s-   |  ]# \ } } t  |  t  |  f Vq d  S(   N(   R   (   t   .0t   kt   v(    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pys	   <genexpr>3   s    u   headersu   statusu   versionu   reasonu   strictu   decode_contentu   responseu   varyt   ,s   cc=4t   use_bin_type(   R   t   headerst   Nonet   readt   Falset   iot   BytesIOt   _fpt   dictt   itemst   statust   versionR   t   reasont   strictR   t   splitt   stript   gett   joinR    t   dumpst   True(	   t   selft   requestt   responset   bodyt   response_headerst   datat   varied_headerst   headert   header_value(    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyR'      s0    	



c         C   s¾   | s
 d  Sy | j  d d  \ } } Wn t k
 r? d } n X| d  d k rc | | } d } n  | j  d d  d j d  } y# t |  d	 j |   | |  SWn t k
 r¹ d  SXd  S(
   NR   i   s   cc=0i   s   cc=t   =i’’’’R   s
   _loads_v{}(   R#   t
   ValueErrorR   t   getattrt   formatt   AttributeError(   R)   R*   R.   t   ver(    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt   loadsJ   s    

	#c         C   s  d | j  d i   k r d SxE | j  d i   j   D]+ \ } } | j j  | d  | k r5 d Sq5 W| d j d  } t d | d d  } | j  d d	  d
 k r¶ | j d  n  | | d d <y t j |  } Wn) t k
 rt j | j	 d   } n Xt
 d | d t | d  S(   s`   Verify our vary headers match and construct a real urllib3
        HTTPResponse object.
        t   *t   varyNR+   R,   R.   R   s   transfer-encodingt    t   chunkedR   t   preload_content(   R%   R   R   R   t   popR   R   R   t	   TypeErrorR   R   R   (   R)   R*   t   cachedR0   t   valuet   body_rawR   R,   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt   prepare_responseh   s    %c         C   s   d  S(   N(    (   R)   R*   R.   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt	   _loads_v0   s    c         C   s8   y t  j |  } Wn t k
 r' d  SX|  j | |  S(   N(   R   R8   R3   RC   (   R)   R*   R.   R@   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt	   _loads_v1   s
    c         C   sŪ   y% t  j t j |  j d   } Wn t t j f k
 rB d  SXt | d d  | d d <t d   | d d j	   D  | d d <t
 | d d  | d d <t d   | d j	   D  | d <|  j | |  S(	   NR   R+   R,   c         s   s-   |  ]# \ } } t  |  t  |  f Vq d  S(   N(   R   (   R   R   R   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pys	   <genexpr>£   s   R   R!   c         s   s?   |  ]5 \ } } t  |  | d  k	 r0 t  |  n | f Vq d  S(   N(   R   R   (   R   R   R   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pys	   <genexpr>Ø   s   R:   (   t   jsonR8   t   zlibt
   decompressR   R3   t   errorR
   R   R   R   RC   (   R)   R*   R.   R@   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt	   _loads_v2   s    %#c         C   s   d  S(   N(    (   R)   R*   R.   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt	   _loads_v3®   s    c         C   s>   y t  j | d d } Wn t k
 r- d  SX|  j | |  S(   Nt   encodings   utf-8(   R    R8   R3   RC   (   R)   R*   R.   R@   (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt	   _loads_v4“   s
    N(   t   __name__t
   __module__R   R'   R8   RC   RD   RE   RJ   RK   RM   (    (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyR      s   4		$				(   R   R   RF   RG   t   pip._vendorR    t   pip._vendor.requests.structuresR   t   compatR   R   R   R
   R   t   objectR   (    (    (    sA   lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.pyt   <module>   s   		