3 �Pf��@s|ddlZddlZddlZddlZddlmZddlmZmZm Z dd�Z dd�Z d d �Z d d �Z d d�ZGdd�de�ZdS)�N)�CaseInsensitiveDict�)� HTTPResponse�pickle� text_typecCstj|�jd�S)N�ascii)�base64Z b64encode�decode)�b�r �/usr/lib/python3.6/serialize.py�_b64_encode_bytes sr cCst|jd��S)N�utf8)r �encode)�sr r r �_b64_encode_strsrcCst|t�rt|�St|�S)N)� isinstancerrr )rr r r � _b64_encodes rcCstj|jd��S)Nr)rZ b64decoder)r r r r �_b64_decode_bytessrcCst|�jd�S)Nr)rr )rr r r �_b64_decode_strsrc@s>eZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �ZdS)� SerializerNc Cs�t|j�}|dkr*|jdd�}tj|�|_dt|�tdd�|jj�D��|j |j t |j �|j |jd�i}i|d<d|kr�|djd�}x*|D]"}|j�}|jj|d�|d|<q�Wtd d�|dj�D��|d<d jd tjtj|dd d�jd��g�S)NF)�decode_content�responsecss"|]\}}t|�t|�fVqdS)N)r)�.0�k�vr r r � 9sz#Serializer.dumps..)�body�headers�status�version�reason�strictr�vary�,css.|]&\}}t|�|dk r t|�n|fVqdS)N)r)rrrr r r rNs�,scc=2�:T)Z separatorsZ sort_keysr)r$r&)rr�read�io�BytesIOZ_fpr �dict�itemsrr rr!r"r�split�strip�get�join�zlib�compress�json�dumpsr)�self�requestrrZresponse_headers�dataZvaried_headers�headerr r r r3#s:     zSerializer.dumpscCs�|sdSy|jdd�\}}Wntk r4d}YnX|dd�dkrR||}d}|jdd�d jd�}yt|dj|��||�Stk r�dSXdS) Nr%rscc=0�scc=�=rz _loads_v{0}�����)r,� ValueErrorr �getattr�format�AttributeError)r4r5r6Zverr r r �loads[s zSerializer.loadsc Cs�d|jdi�krdSx2|jdi�j�D]\}}|jj|d�|kr&dSq&W|djd�}t|ddd�}|jdd �d kr�|jd�||dd<ytj|�}Wn$tk r�tj|jd ��}YnXt f|d d �|d��S)z`Verify our vary headers match and construct a real urllib3 HTTPResponse object. �*r#Nrrr)r6ztransfer-encoding�ZchunkedrF)rZpreload_content) r.r+r�poprr(r)� TypeErrorrr)r4r5�cachedr7�valueZbody_rawrrr r r �prepare_responsexs$  zSerializer.prepare_responsecCsdS)Nr )r4r5r6r r r � _loads_v0�szSerializer._loads_v0c Cs0ytj|�}Wntk r"dSX|j||�S)N)rr?r;rF)r4r5r6rDr r r � _loads_v1�s zSerializer._loads_v1c Cs�ytjtj|�jd��}Wntk r.dSXt|dd�|dd<tdd�|ddj�D��|dd<t |dd�|dd<tdd�|d j�D��|d <|j ||�S) Nrrrcss"|]\}}t|�t|�fVqdS)N)r)rrrr r r r�sz'Serializer._loads_v2..rr!css.|]&\}}t|�|dk r t|�n|fVqdS)N)r)rrrr r r r�sr#) r2r?r0Z decompressr r;rr*r+rrF)r4r5r6rDr r r � _loads_v2�szSerializer._loads_v2)N) �__name__� __module__� __qualname__r3r?rFrGrHrIr r r r r!s  8(r)rr(r2r0Zpip._vendor.requests.structuresr�compatrrrr rrrr�objectrr r r r �s