o
    Vh                     @  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   j/var/www/html/construction_image-detection-poc/venv/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   