U
    +|j³  ã                   @   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  |  d¡¡S )NÚascii)Úbase64Ú	b64decodeÚencode)Úb© r   újC:\Users\snmko\Desktop\web_content\django_cbt\venv\Lib\site-packages\pip/_vendor/cachecontrol/serialize.pyÚ_b64_decode_bytes   s    r   c                 C   s   t | ƒ 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 |¡|_d|tdd„ |j ¡ D ƒƒ|j|j	t
|jƒ|j|jdœi}i |d< d|krÂ|d  d¡}|D ]:}t
|ƒ ¡ }|j |d ¡}|d k	r´t
|ƒ}||d |< q†d	 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>2   s    z#Serializer.dumps.<locals>.<genexpr>)ÚbodyÚheadersÚstatusÚversionÚreasonÚstrictr   Úvaryú,ó   ,s   cc=4T)Ú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ÚdataÚvaried_headersÚheaderÚheader_valuer   r   r   r1      s4    

ÿ÷ÿzSerializer.dumpsc                 C   sœ   |sd S z|  dd¡\}}W n tk
r4   d}Y nX |d d… dkrR|| }d}|  dd¡d  d¡}zt| d	 |¡ƒ||ƒW S  tk
r–   Y d S X d S )
Nr%   r   s   cc=0é   s   cc=ó   =éÿÿÿÿr   z
_loads_v{})r-   Ú
ValueErrorr   ÚgetattrÚformatÚAttributeError)r2   r3   r5   Úverr   r   r   ÚloadsJ   s    
zSerializer.loadsc                 C   sØ   d|  di ¡krdS |  di ¡ ¡ D ] \}}|j  |d¡|kr$ dS q$|d  d¡}t|d d d�}|  dd	¡d
kr€| d¡ ||d d< zt |¡}W n$ tk
r¾   t | 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   )r5   ztransfer-encodingÚ Úchunkedr   F)r   Úpreload_content)
r/   r,   r   Úpopr   r(   r)   Ú	TypeErrorr   r   )r2   r3   Úcachedr7   ÚvalueÚbody_rawr   r   r   r   r   Úprepare_responseh   s    
zSerializer.prepare_responsec                 C   s   d S r   r   ©r2   r3   r5   r   r   r   Ú	_loads_v0Ž   s    zSerializer._loads_v0c                 C   s2   zt  |¡}W n tk
r$   Y d S X |  ||¡S r   )r   rA   r<   rK   ©r2   r3   r5   rH   r   r   r   Ú	_loads_v1”   s
    zSerializer._loads_v1c              	   C   s¸   zt  t |¡ d¡¡}W n ttjfk
r6   Y d S X t|d d ƒ|d d< tdd„ |d d  	¡ D ƒƒ|d d< t
|d d ƒ|d d< tdd„ |d	  	¡ D ƒƒ|d	< |  ||¡S )
Nr   r   r   c                 s   s"   | ]\}}t |ƒt |ƒfV  qd S 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 r   rP   r   r   r   r   r   ©   s   ÿr#   )ÚjsonrA   ÚzlibÚ
decompressr   r<   Úerrorr   r+   r,   r   rK   rN   r   r   r   Ú	_loads_v2œ   s    þ
þzSerializer._loads_v2c                 C   s   d S r   r   rL   r   r   r   Ú	_loads_v3°   s    zSerializer._loads_v3c                 C   s6   zt j|dd�}W n tk
r(   Y d S X |  ||¡S )NF)Úraw)r   rA   r<   rK   rN   r   r   r   Ú	_loads_v4¶   s
    zSerializer._loads_v4)N)Ú__name__Ú
__module__Ú__qualname__r1   rA   rK   rM   rO   rU   rV   rX   r   r   r   r   r      s   
4&r   )r	   r(   rQ   rR   Úpip._vendorr   Zpip._vendor.requests.structuresr   Úcompatr   r   r   r   r   Úobjectr   r   r   r   r   Ú<module>   s   