o
    ñ‘OjÁ  ã                   @   sv   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	m
Z
mZ dd„ Zdd	„ Zeƒ ZG d
d„ deƒZdS )é    N)Úmsgpack)ÚCaseInsensitiveDicté   )ÚHTTPResponseÚpickleÚ	text_typec                 C   s   t  |  d¡¡S )NÚascii)Úbase64Ú	b64decodeÚencode)Úb© r   úh/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.pyÚ_b64_decode_bytes   s   r   c                 C   s   t | ƒ d¡S )NÚutf8)r   Údecode)Úsr   r   r   Ú_b64_decode_str   s   r   c                   @   sZ   e Zd Zddd„Zddd„Zddd„Zddd	„Zdd
d„Zddd„Zdd„ Z	ddd„Z
dS )Ú
SerializerNc           	   	   C   sÚ   t |jƒ}|d u r|jdd�}t |¡|_d|tdd„ |j ¡ D ƒƒ|j|j	t
|jƒ|j|jdœi}i |d< d|v ra|d  d¡}|D ]}t
|ƒ ¡ }|j |d ¡}|d urZt
|ƒ}||d |< qCd	 d
tj|dd�g¡S )NF)Údecode_contentÚresponsec                 s   ó$   � | ]\}}t |ƒt |ƒfV  qd S ©N)r   ©Ú.0ÚkÚvr   r   r   Ú	<genexpr>0   s   € 
ÿz#Serializer.dumps.<locals>.<genexpr>)ÚbodyÚheadersÚstatusÚversionÚreasonÚstrictr   Úvaryú,ó   ,s   cc=4T)Úuse_bin_type)r   r   ÚreadÚioÚBytesIOÚ_fpÚdictÚitemsr    r!   r   r"   r#   r   ÚsplitÚstripÚgetÚjoinr   Údumps)	ÚselfÚrequestr   r   Úresponse_headersÚdataÚvaried_headersÚheaderÚheader_valuer   r   r   r2      s4   

ÿ÷ÿzSerializer.dumpsc                 C   s–   |sd S z
|  dd¡\}}W n ty   d}Y nw |d d… dkr(|| }d}|  dd¡d  d¡}zt| d	 |¡ƒ|||ƒW S  tyJ   Y d S w )
Nr&   r   s   cc=0é   s   cc=ó   =éÿÿÿÿr   z
_loads_v{})r.   Ú
ValueErrorr   ÚgetattrÚformatÚAttributeError)r3   r4   r6   Ú	body_fileÚverr   r   r   ÚloadsH   s    ÿýzSerializer.loadsc           	      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 t	d|ddœ|d ¤ŽS )z`Verify our vary headers match and construct a real urllib3
        HTTPResponse object.
        Ú*r$   Nr   r   r   )r6   ztransfer-encodingÚ Úchunkedr   F)r   Úpreload_contentr   )
r0   r-   r   Úpopr   r)   r*   Ú	TypeErrorr   r   )	r3   r4   ÚcachedrA   r8   ÚvalueÚbody_rawr   r   r   r   r   Úprepare_responsef   s(   ÿ
€ù	zSerializer.prepare_responsec                 C   ó   d S r   r   ©r3   r4   r6   rA   r   r   r   Ú	_loads_v0�   ó   zSerializer._loads_v0c                 C   s2   zt  |¡}W n
 ty   Y d S w |  |||¡S r   )r   rC   r=   rM   ©r3   r4   r6   rA   rJ   r   r   r   Ú	_loads_v1•   s   ÿzSerializer._loads_v1c              	   C   sÄ   |d u sJ ‚zt  t |¡ d¡¡}W n ttjfy    Y d S w t|d d ƒ|d d< tdd„ |d d  	¡ D ƒƒ|d d< t
|d d ƒ|d d< tdd„ |d	  	¡ D ƒƒ|d	< |  |||¡S )
Nr   r   r   c                 s   r   r   ©r   r   r   r   r   r   ¦   s
   € ÿ
ÿz'Serializer._loads_v2.<locals>.<genexpr>r   r"   c                 s   s0   � | ]\}}t |ƒ|d urt |ƒn|fV  qd S r   rT   r   r   r   r   r   «   s
   € ÿ
ÿr$   )ÚjsonrC   ÚzlibÚ
decompressr   r=   Úerrorr   r,   r-   r   rM   rR   r   r   r   Ú	_loads_v2�   s   ÿþ
þzSerializer._loads_v2c                 C   rN   r   r   rO   r   r   r   Ú	_loads_v3²   rQ   zSerializer._loads_v3c                 C   s6   z	t j|dd�}W n
 ty   Y d S w |  |||¡S )NF)Úraw)r   rC   r=   rM   rR   r   r   r   Ú	_loads_v4¸   s   ÿzSerializer._loads_v4r   )Ú__name__Ú
__module__Ú__qualname__r2   rC   rM   rP   rS   rY   rZ   r\   r   r   r   r   r      s    

,

)

r   )r	   r)   rU   rV   Úpip._vendorr   Úpip._vendor.requests.structuresr   Úcompatr   r   r   r   r   ÚobjectÚ_default_body_readr   r   r   r   r   Ú<module>   s   