a
    ǏPf                     @  sv   d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZ erdd dlmZ G dd	 d	ZdS )
    )annotationsN)IOTYPE_CHECKINGAnyMappingcast)msgpack)CaseInsensitiveDict)HTTPResponse)PreparedRequestc                   @  s   e Zd ZdZd"ddddddd	Zd
ddddZd#dddddddZd$dddddddZd%dddddddZd&dddddddZ	d'dddddddZ
d(dddddddZd)dddddd d!ZdS )*
Serializer4Nr   r
   zbytes | Nonebytes)requestresponsebodyreturnc           	      C  s   t |j}|d u r4|jdd}t||_t||_d|dd |j D |j	|j
t|j|jdi}i |d< d|v r|d d}|D ]:}t| }|j|d }|d urt|}||d |< qd	d
| j  | |gS )NF)decode_contentr   c                 S  s   i | ]\}}t |t |qS  )str).0kvr   r   c/var/www/html/python-backend/venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py
<dictcomp>)       z$Serializer.dumps.<locals>.<dictcomp>)r   headersstatusversionreasonr   vary,   ,zcc=)r	   r   readioBytesIO_fplenlength_remainingitemsr   r   r   r   r   splitstripgetjoinserde_versionencode	serialize)	selfr   r   r   response_headersdatavaried_headersheaderheader_valuer   r   r   dumps   s4    
zSerializer.dumpszdict[str, Any])r3   r   c                 C  s   t ttj|ddS )NT)use_bin_type)r   r   r   r7   )r1   r3   r   r   r   r0   >   s    zSerializer.serializezIO[bytes] | NonezHTTPResponse | None)r   r3   	body_filer   c                 C  s   |sd S z| dd\}}W n ty2   d}Y n0 |d d dkrP|| }d}| ddd d}zt| d	| |||W S  ty   Y d S 0 d S )
Nr"      s   cc=0   s   cc=   =asciiZ_loads_v)r*   
ValueErrordecodegetattrAttributeError)r1   r   r3   r9   verZverstrr   r   r   loadsA   s    
zSerializer.loadszMapping[str, Any])r   cachedr9   r   c           	      C  s   d| di v 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u rt|}n|}W n" ty   t|d}Y n0 |d dd t	f |dd|d S )z`Verify our vary headers match and construct a real urllib3
        HTTPResponse object.
        *r    Nr   r   r   )r3   ztransfer-encoding chunkedutf8strictF)r   preload_content)
r,   r)   r   popr	   r$   r%   	TypeErrorr/   r
   )	r1   r   rE   r9   r5   valuebody_rawr   r   r   r   r   prepare_responsed   s(    

zSerializer.prepare_responseNonec                 C  s   d S Nr   r1   r   r3   r9   r   r   r   	_loads_v0   s    	zSerializer._loads_v0c                 C  s   d S rR   r   rS   r   r   r   	_loads_v1   s    zSerializer._loads_v1c                 C  s   d S rR   r   rS   r   r   r   	_loads_v2   s    	zSerializer._loads_v2c                 C  s   d S rR   r   rS   r   r   r   	_loads_v3   s    	zSerializer._loads_v3c                 C  s6   zt j|dd}W n ty&   Y d S 0 | |||S )NF)raw)r   rD   r?   rP   )r1   r   r3   r9   rE   r   r   r   	_loads_v4   s
    zSerializer._loads_v4)N)N)N)N)N)N)N)N)__name__
__module____qualname__r.   r7   r0   rD   rP   rT   rU   rV   rW   rY   r   r   r   r   r      s$    * ' 8     r   )
__future__r   r$   typingr   r   r   r   r   pip._vendorr   Zpip._vendor.requests.structuresr	   Zpip._vendor.urllib3r
   Zpip._vendor.requestsr   r   r   r   r   r   <module>   s   