
    if                        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rd dlmZ  G d d	          ZdS )
    )annotationsN)IOTYPE_CHECKINGAnyMappingcast)msgpack)CaseInsensitiveDict)HTTPResponse)PreparedRequestc                  z    e Zd ZdZ	 dddZ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!dZ	 dddZdS )"
Serializer4Nrequestr   responser   bodybytes | Nonereturnbytesc                   t          |j                  }|C|                    d          }t          j        |          |_        t          |          |_        d|d |j                                        D             |j	        |j
        t          |j                  |j        di}i |d<   d|v rx|d                             d          }|D ]Z}t          |                                          }|j                            |d           }|t          |          }||d         |<   [d                    d	| j                                         |                     |          g          S )
NF)decode_contentr   c                N    i | ]"\  }}t          |          t          |          #S  )str).0kvs      T/var/www/html/env/lib/python3.11/site-packages/pip/_vendor/cachecontrol/serialize.py
<dictcomp>z$Serializer.dumps.<locals>.<dictcomp>)   s*    PPPtq!CFFCFFPPP    )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datavaried_headersheaderheader_values	            r   dumpszSerializer.dumps   sx    6I6
 6
 < ===66D:d++HL(+D		H% PPx7G7M7M7O7OPPP"/#+ho.."*"9 	
 V%%%-f5;;C@@N( 4 4V**,,&2264@@+#&|#4#4L'3VV$$yy4 244;;==t~~d?S?STUUUr    r8   dict[str, Any]c                T    t          t          t          j        |d                    S )NT)use_bin_type)r   r   r	   r<   )r6   r8   s     r   r5   zSerializer.serialize>   s!    E7=DAAABBBr    	body_fileIO[bytes] | NoneHTTPResponse | Nonec                L   |sd S 	 |                     dd          \  }}n# t          $ r d}Y nw xY w|d d         dk    r||z   }d}|                     dd          d                             d          }	  t          | d	|           |||          S # t          $ r Y d S w xY w)
Nr'      s   cc=0   s   cc=   =ascii_loads_v)r/   
ValueErrordecodegetattrAttributeError)r6   r   r8   r@   ververstrs         r   loadszSerializer.loadsA   s      	4	

4++IC 	 	 	CCC	
 rr7f:DC 4##B'..w77	574!4F!4!455gtYOOO 	 	 	 44	s     //7B 
B#"B#cachedMapping[str, Any]c                   d|                     di           v rdS |                     di                                           D ]'\  }}|j                             |d          |k    r dS (|d                             d          }t	          |d         d                   }|                     dd	          d
k    r|                    d           ||d         d<   	 |t          j        |          }n|}n7# t          $ r* t          j        |                    d                    }Y nw xY 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!   )r8   ztransfer-encoding chunkedutf8strictF)r   preload_contentr   )
r1   r.   r!   popr
   r)   r*   	TypeErrorr4   r   )	r6   r   rQ   r@   r:   valuebody_rawr!   r   s	            r   prepare_responsezSerializer.prepare_responsed   s    &**VR((((4 $ZZ3399;; 	 	MFE""6400E99tt : *%))&11,?
#I.-
 -
 -
 ;;*B//9<<KK+,,,(/z9%	7 z(++  	7 	7 	7 :hoof5566DDD	7 	zx...SuSSz@RSSSs   C7 71D+*D+Nonec                    d S Nr   r6   r   r8   r@   s       r   	_loads_v0zSerializer._loads_v0   	     tr    c                    d S ra   r   rb   s       r   	_loads_v1zSerializer._loads_v1   s	     tr    c                    d S ra   r   rb   s       r   	_loads_v2zSerializer._loads_v2   rd   r    c                    d S ra   r   rb   s       r   	_loads_v3zSerializer._loads_v3   rd   r    c                    	 t          j        |d          }n# t          $ r Y d S w xY w|                     |||          S )NF)raw)r	   rP   rJ   r^   )r6   r   r8   r@   rQ   s        r   	_loads_v4zSerializer._loads_v4   sY    	]4U333FF 	 	 	44	 $$Wfi@@@s    
''ra   )r   r   r   r   r   r   r   r   )r8   r=   r   r   )r   r   r8   r   r@   rA   r   rB   )r   r   rQ   rR   r@   rA   r   rB   )r   r   r8   r   r@   rA   r   r_   )__name__
__module____qualname__r3   r<   r5   rP   r^   rc   rf   rh   rj   rm   r   r    r   r   r      s5       M "	(V (V (V (V (VTC C C C '+	! ! ! ! !N '+	2T 2T 2T 2T 2Tp '+		 	 	 	 	 '+	     '+		 	 	 	 	 '+		 	 	 	 	 '+	A A A A A A Ar    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   <module>rw      s    # " " " " " 				 8 8 8 8 8 8 8 8 8 8 8 8 8 8       ? ? ? ? ? ? , , , , , , 5444444}A }A }A }A }A }A }A }A }A }Ar    