o
    ÖèFhö  ã                   @  sr   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	Z	d dl
mZ d dlmZ er0d dlmZ G dd„ dƒZdS )	é    )ÚannotationsN)ÚIOÚTYPE_CHECKINGÚAnyÚMappingÚcast)Ú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   úO/var/www/html/loop/nvenv/lib/python3.10/site-packages/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.dumpsr3   údict[str, Any]c                 C  s   t ttj|dd�ƒS )NT)Úuse_bin_type)r   r   Úmsgpackr7   )r1   r3   r   r   r   r0   >   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.   r/   Ú	_loads_v4)r1   r   r3   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   )r3   ztransfer-encodingÚ ÚchunkedÚutf8ÚstrictF)r   Úpreload_contentr   )
r,   r)   r   Úpopr   r$   r%   Ú	TypeErrorr/   r	   )	r1   r   rB   r;   r5   Ú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   )r1   r   r3   r;   rB   r   r   r   r@   ‡   s   ÿzSerializer._loads_v4)N)r   r
   r   r	   r   r   r   r   )r3   r8   r   r   )r   r
   r3   r   r;   r<   r   r=   )r   r
   rB   rC   r;   r<   r   r=   )	Ú__name__Ú
__module__Ú__qualname__r.   r7   r0   rA   rN   r@   r   r   r   r   r      s    ü
*üü8ür   )Ú
__future__r   r$   Útypingr   r   r   r   r   r:   Úrequests.structuresr   Úurllib3r	   Úrequestsr
   r   r   r   r   r   Ú<module>   s   