o
    ­—Žj+  ã                   @  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r2d dlmZ G dd	„ d	ƒZdS )
é    )ÚannotationsN)ÚIOÚTYPE_CHECKINGÚAnyÚMappingÚcast)Úmsgpack)ÚCaseInsensitiveDict)ÚHTTPResponse)ÚPreparedRequestc                   @  sR   e Zd ZdZ	dddd„Zddd„Z	dddd„Z	dd dd„Z	dddd„ZdS )!Ú
SerializerÚ4NÚrequestr   Úresponser
   Úbodyúbytes | NoneÚreturnÚbytesc           	      C  sä   t |jƒ}|d u r|jdd�}t |¡|_t|ƒ|_d|dd„ |j ¡ D ƒ|j	|j
t|jƒ|jdœi}i |d< d|v rb|d  d¡}|D ]}t|ƒ ¡ }|j |d ¡}|d ur[t|ƒ}||d |< qDd	 d
| j› � ¡ |  |¡g¡S )NF)Údecode_contentr   c                 S  s   i | ]\}}t |ƒt |ƒ“qS © )Ústr)Ú.0ÚkÚvr   r   ú_/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.pyÚ
<dictcomp>)   s    z$Serializer.dumps.<locals>.<dictcomp>)r   ÚheadersÚstatusÚversionÚreasonr   Úvaryú,ó   ,ú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.dumpsr4   údict[str, Any]c                 C  s   t ttj|dd�ƒS )NT)Úuse_bin_type)r   r   r   r8   )r2   r4   r   r   r   r1   >   s   zSerializer.serializeÚ	body_fileúIO[bytes] | NoneúHTTPResponse | Nonec                 C  s>   |sd S |  d| j› d� ¡ ¡sd S |dd … }|  |||¡S )Nr#   r!   é   )Ú
startswithr/   r0   Ú	_loads_v4)r2   r   r4   r;   r   r   r   ÚloadsA   s   zSerializer.loadsÚcachedúMapping[str, Any]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 rQt |¡}n|}W n tye   t | d¡¡}Y nw |d  dd¡ t	d|ddœ|d ¤ŽS )z`Verify our vary headers match and construct a real urllib3
        HTTPResponse object.
        Ú*r    Nr   r   r   )r4   ztransfer-encodingÚ ÚchunkedÚutf8ÚstrictF)r   Úpreload_contentr   )
r-   r*   r   Úpopr	   r%   r&   Ú	TypeErrorr0   r
   )	r2   r   rB   r;   r6   ÚvalueÚbody_rawr   r   r   r   r   Úprepare_responseS   s.   ÿ
ÿ
€ù
zSerializer.prepare_responsec                 C  s6   z	t j|dd�}W n
 ty   Y d S w |  |||¡S )NF)Úraw)r   rA   Ú
ValueErrorrN   )r2   r   r4   r;   rB   r   r   r   r@   ‡   s   ÿzSerializer._loads_v4)N)r   r   r   r
   r   r   r   r   )r4   r9   r   r   )r   r   r4   r   r;   r<   r   r=   )r   r   rB   rC   r;   r<   r   r=   )	Ú__name__Ú
__module__Ú__qualname__r/   r8   r1   rA   rN   r@   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   