U
    &%e                     @   sv   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e 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   a/var/www/html/Darija-Ai-API/env/lib/python3.8/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                   @   sZ   e Zd ZdddZdddZdddZddd	Zdd
dZdddZdd Z	d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	rt
|}||d |< qd	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>0   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   	body_fileverr   r   r   loadsH   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|dkrt|}n|}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   cachedr@   r7   valuebody_rawr   r   r   r   r   prepare_responsef   s"    
zSerializer.prepare_responsec                 C   s   d S r   r   r2   r3   r5   r@   r   r   r   	_loads_v0   s    zSerializer._loads_v0c                 C   s4   zt |}W n tk
r$   Y d S X | |||S r   )r   rB   r<   rL   r2   r3   r5   r@   rI   r   r   r   	_loads_v1   s
    zSerializer._loads_v1c              	   C   s   |d kst ztt|d}W n ttjfk
rB   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   rQ   r   r   r   r   r      s   r#   )AssertionErrorjsonrB   zlib
decompressr   r<   errorr   r+   r,   r   rL   rO   r   r   r   	_loads_v2   s    
zSerializer._loads_v2c                 C   s   d S r   r   rM   r   r   r   	_loads_v3   s    zSerializer._loads_v3c                 C   s8   zt j|dd}W n tk
r(   Y d S X | |||S )NF)raw)r   rB   r<   rL   rO   r   r   r   	_loads_v4   s
    zSerializer._loads_v4)N)N)N)N)N)N)N)__name__
__module____qualname__r1   rB   rL   rN   rP   rW   rX   rZ   r   r   r   r   r      s   
,

)


r   )r	   r(   rS   rT   pip._vendorr   Zpip._vendor.requests.structuresr   compatr   r   r   r   r   object_default_body_readr   r   r   r   r   <module>   s   