U
    „}ag  ã                   @  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 kr4|jdd�}t |¡|_t|ƒ|_d|dd„ |j ¡ D ƒ|j	|j
t|jƒ|jdœi}i |d< d|krÄ|d  d¡}|D ]:}t|ƒ ¡ }|j |d ¡}|d k	r¶t|ƒ}||d |< qˆd	 d
| j› � ¡ |  |¡g¡S )NF)Údecode_contentr   c                 S  s   i | ]\}}t |ƒt |ƒ“qS © )Ústr)Ú.0ÚkÚvr   r   úZ/var/www/html/publicvenv/lib/python3.8/site-packages/pip/_vendor/cachecontrol/serialize.pyÚ
<dictcomp>)   s      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ÚdataZvaried_headersÚheaderÚheader_valuer   r   r   Údumps   s4    ÿ
úÿzSerializer.dumpszdict[str, Any])r2   r   c                 C  s   t ttj|dd�ƒS )NT)Zuse_bin_type)r   r   r   r5   )r0   r2   r   r   r   r/   >   s    zSerializer.serializezIO[bytes] | NonezHTTPResponse | None)r   r2   Ú	body_filer   c                 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!   é   s   cc=0é   s   cc=ó   =éÿÿÿÿÚasciiZ_loads_v)r)   Ú
ValueErrorÚdecodeÚgetattrÚAttributeError)r0   r   r2   r6   ÚverZverstrr   r   r   ÚloadsA   s    
zSerializer.loadszMapping[str, Any])r   Úcachedr6   r   c           	      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r¢t |¡}n|}W n$ tk
rÌ   t | d¡¡}Y nX |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   )r2   ztransfer-encodingÚ ÚchunkedÚutf8ÚstrictF)r   Úpreload_content)
r+   r(   r   Úpopr	   r#   r$   Ú	TypeErrorr.   r
   )	r0   r   rB   r6   r3   ÚvalueZbody_rawr   r   r   r   r   Úprepare_responsed   s(    
ÿ
zSerializer.prepare_responseÚNonec                 C  s   d S ©Nr   ©r0   r   r2   r6   r   r   r   Ú	_loads_v0˜   s    	zSerializer._loads_v0c                 C  s   d S rN   r   rO   r   r   r   Ú	_loads_v1£   s    zSerializer._loads_v1c                 C  s   d S rN   r   rO   r   r   r   Ú	_loads_v2­   s    	zSerializer._loads_v2c                 C  s   d S rN   r   rO   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   rA   r<   rL   )r0   r   r2   r6   rB   r   r   r   Ú	_loads_v4Ã   s
    zSerializer._loads_v4)N)N)N)N)N)N)N)N)Ú__name__Ú
__module__Ú__qualname__r-   r5   r/   rA   rL   rP   rQ   rR   rS   rU   r   r   r   r   r      s$    ü* ü' ü8 ü ü ü ü ür   )Ú
__future__r   r#   Útypingr   r   r   r   r   Úpip._vendorr   Úpip._vendor.requests.structuresr	   Úpip._vendor.urllib3r
   Úpip._vendor.requestsr   r   r   r   r   r   Ú<module>   s   