
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ÝPfˆ  ã               @   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mZm	Z	 dd„ Z
dd„ Zd	d
„ Zdd„ Zdd„ ZG dd„ deƒZdS )é    N)ÚCaseInsensitiveDicté   )ÚHTTPResponseÚpickleÚ	text_typec             C   s   t j| ƒjdƒS )NÚascii)Úbase64Z	b64encodeÚdecode)Úb© r   ú/usr/lib/python3.6/serialize.pyÚ_b64_encode_bytes   s    r   c             C   s   t | jdƒƒS )NÚutf8)r   Úencode)Úsr   r   r   Ú_b64_encode_str   s    r   c             C   s   t | tƒrt| ƒS t| ƒS )N)Ú
isinstancer   r   r   )r   r   r   r   Ú_b64_encode   s    
r   c             C   s   t j| jdƒƒS )Nr   )r   Z	b64decoder   )r
   r   r   r   Ú_b64_decode_bytes   s    r   c             C   s   t | ƒjdƒS )Nr   )r   r	   )r   r   r   r   Ú_b64_decode_str   s    r   c               @   s>   e Zd Zd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|ƒtdd„ |jjƒ D ƒƒ|j	|j
t|jƒ|j|jdœi}i |d< d|kr²|d jdƒ}x*|D ]"}|jƒ }|jj|d ƒ|d |< qŒW td	d„ |d jƒ D ƒƒ|d< d
jdtjtj|ddd�jdƒƒgƒS )NF)Údecode_contentÚresponsec             s   s"   | ]\}}t |ƒt |ƒfV  qd S )N)r   )Ú.0ÚkÚvr   r   r   ú	<genexpr>9   s   z#Serializer.dumps.<locals>.<genexpr>)ÚbodyÚheadersÚstatusÚversionÚreasonÚstrictr   Úvaryú,c             s   s.   | ]&\}}t |ƒ|d k	r t |ƒn|fV  qd S )N)r   )r   r   r   r   r   r   r   N   s   ó   ,s   cc=2ú:T)Z
separatorsZ	sort_keysr   )r$   r&   )r   r   ÚreadÚioÚBytesIOZ_fpr   ÚdictÚitemsr   r    r   r!   r"   r   ÚsplitÚstripÚgetÚjoinÚzlibÚcompressÚjsonÚdumpsr   )ÚselfÚrequestr   r   Zresponse_headersÚdataZvaried_headersÚheaderr   r   r   r3   #   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{0}éÿÿÿÿ)r,   Ú
ValueErrorr	   ÚgetattrÚformatÚAttributeError)r4   r5   r6   Zverr   r   r   Úloads[   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   )r6   ztransfer-encodingÚ Zchunkedr   F)r   Zpreload_content)
r.   r+   r   Úpopr   r(   r)   Ú	TypeErrorr   r   )r4   r5   Úcachedr7   ÚvalueZbody_rawr   r   r   r   r   Úprepare_responsex   s$    
zSerializer.prepare_responsec             C   s   d S )Nr   )r4   r5   r6   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?   r;   rF   )r4   r5   r6   rD   r   r   r   Ú	_loads_v1¦   s
    zSerializer._loads_v1c             C   s°   yt jtj|ƒjdƒƒ}W n tk
r.   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#   )r2   r?   r0   Z
decompressr	   r;   r   r*   r+   r   rF   )r4   r5   r6   rD   r   r   r   Ú	_loads_v2®   s    zSerializer._loads_v2)N)	Ú__name__Ú
__module__Ú__qualname__r3   r?   rF   rG   rH   rI   r   r   r   r   r   !   s   
8(r   )r   r(   r2   r0   Zpip._vendor.requests.structuresr   Úcompatr   r   r   r   r   r   r   r   Úobjectr   r   r   r   r   Ú<module>   s   