3
g                 @   sp   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d Zdd	 ZG d
d deZdS )    N)msgpack)CaseInsensitiveDict   )HTTPResponsepickle	text_typec             C   s   t j| jdS )Nascii)base64	b64decodeencode)b r   `/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/serialize.py_b64_decode_bytes   s    r   c             C   s   t | jdS )Nutf8)r   decode)sr   r   r   _b64_decode_str   s    r   c               @   sN   e Zd 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S )
SerializerNc       	   	   C   s   t |j}|d kr*|jdd}tj||_d|tdd |jj D |j|j	t
|j|j|jdi}i |d< d|kr|d jd}xB|D ]:}t
|j }|jj|d }|d k	rt
|}||d |< qW d	jd
tj|ddgS )NF)decode_contentresponsec             s   s"   | ]\}}t |t |fV  qd S )N)r   ).0kvr   r   r   	<genexpr>3   s    z#Serializer.dumps.<locals>.<genexpr>)bodyheadersstatusversionreasonstrictr   vary,   ,s   cc=4T)Zuse_bin_type)r   r   readioBytesIO_fpdictitemsr   r   r   r   r    r   splitstripgetjoinr   dumps)	selfrequestr   r   response_headersdataZvaried_headersheaderheader_valuer   r   r   r.      s.    


zSerializer.dumpsc             C   s   |sd S y|j dd\}}W n tk
r4   d}Y nX |d d dkrR|| }d}|j ddd	 jd}yt| dj|||S  tk
r   d S X d S )
Nr#   r   s   cc=0   s   cc=   =r   z
_loads_v{})r*   
ValueErrorr   getattrformatAttributeError)r/   r0   r2   verr   r   r   loadsJ   s    
zSerializer.loadsc             C   s   d|j di krdS x2|j di j D ]\}}|jj |d|kr&dS q&W |d jd}t|d d d}|j dd	d
kr|jd ||d d< ytj|}W n$ tk
r   tj|jd}Y nX t	f |dd|d S )z`Verify our vary headers match and construct a real urllib3
        HTTPResponse object.
        *r!   Nr   r   r   )r2   ztransfer-encoding chunkedr   F)r   preload_content)
r,   r)   r   popr   r%   r&   	TypeErrorr   r   )r/   r0   cachedr3   valueZbody_rawr   r   r   r   r   prepare_responseh   s    
zSerializer.prepare_responsec             C   s   d S )Nr   )r/   r0   r2   r   r   r   	_loads_v0   s    zSerializer._loads_v0c             C   s0   yt j|}W n tk
r"   d S X | j||S )N)r   r=   r8   rF   )r/   r0   r2   rD   r   r   r   	_loads_v1   s
    zSerializer._loads_v1c             C   s   yt jtj|jd}W n ttjfk
r4   d S X t|d d |d d< tdd |d d j	 D |d d< t
|d d |d d< td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   r   r   r   r      s   z'Serializer._loads_v2.<locals>.<genexpr>r   r   c             s   s.   | ]&\}}t ||d k	r t |n|fV  qd S )N)r   )r   r   r   r   r   r   r      s   r!   )jsonr=   zlib
decompressr   r8   errorr   r(   r)   r   rF   )r/   r0   r2   rD   r   r   r   	_loads_v2   s    zSerializer._loads_v2c             C   s   d S )Nr   )r/   r0   r2   r   r   r   	_loads_v3   s    zSerializer._loads_v3c             C   s4   yt j|dd}W n tk
r&   d S X | j||S )NF)raw)r   r=   r8   rF   )r/   r0   r2   rD   r   r   r   	_loads_v4   s
    zSerializer._loads_v4)N)__name__
__module____qualname__r.   r=   rF   rG   rH   rM   rN   rP   r   r   r   r   r      s   
4&r   )r	   r%   rI   rJ   pip._vendorr   pip._vendor.requests.structuresr   compatr   r   r   r   r   objectr   r   r   r   r   <module>   s   