
    )h+                    |    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y)
    )annotationsN)IOTYPE_CHECKINGAnyMappingcast)msgpack)CaseInsensitiveDict)HTTPResponse)PreparedRequestc                      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y)
Serializer4Nc           
        t        |j                        }|<|j                  d      }t        j                  |      |_        t        |      |_        d||j                  j                         D ci c]  \  }}t        |      t        |       c}}|j                  |j                  t        |j                        |j                  di}i |d<   d|v re|d   j                  d      }|D ]L  }	t        |	      j                         }	|j                  j!                  |	d       }
|
t        |
      }
|
|d   |	<   N dj#                  d| j$                   j'                         | j)                  |      g      S c c}}w )	NF)decode_contentresponse)bodyheadersstatusversionreasonr   vary,   ,cc=)r
   r   readioBytesIO_fplenlength_remainingitemsstrr   r   r   r   splitstripgetjoinserde_versionencode	serialize)selfrequestr   r   response_headerskvdatavaried_headersheaderheader_values              U/var/www/html/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.pydumpszSerializer.dumps   sn    6I6
 < ===6D::d+HL(+D	H% 7?7G7G7M7M7OPtq!CFCFNP"//#++hoo."*"9"9	
 V%%-f5;;C@N( 4V**,&2264@+#&|#4L'3VV$4 yyC 2 234;;=t~~d?STUU' Qs   3E9
c                L    t        t        t        j                  |d            S )NT)use_bin_type)r   bytesr	   r5   )r+   r0   s     r4   r*   zSerializer.serialize>   s    E7==DABB    c                    |sy |j                  d| j                   dj                               sy |dd  }| j                  |||      S )Nr   r      )
startswithr(   r)   	_loads_v4)r+   r,   r0   	body_files       r4   loadszSerializer.loadsA   sR      T%7%7$8:AACDABx~~gtY77r9   c                N   d|j                  di       v ry|j                  di       j                         D ]&  \  }}|j                  j                  |d      |k7  s& y |d   j                  d      }t	        |d   d         }|j                  dd	      d
k(  r|j                  d       ||d   d<   	 |t        j                  |      }n|}|d   j                  dd       t        d|dd|d   S # t        $ r' t        j                  |j                  d            }Y Uw xY w)z`Verify our vary headers match and construct a real urllib3
        HTTPResponse object.
        *r   Nr   r   r   )r0   ztransfer-encoding chunkedutf8strictF)r   preload_content )
r&   r"   r   popr
   r   r   	TypeErrorr)   r   )	r+   r,   cachedr>   r2   valuebody_rawr   r   s	            r4   prepare_responsezSerializer.prepare_responseS   s8    &**VR(( $ZZ399; 	MFE""640E9	 *%))&1,?
#I.-
 ;;*B/9<KK+,(/z9%	7 zz(+  	zx.SuSz@RSS  	7 ::hoof56D	7s   4C4 4-D$#D$c                v    	 t        j                  |d      }| j                  |||      S # t        $ r Y y w xY w)NF)raw)r	   r?   
ValueErrorrM   )r+   r,   r0   r>   rJ   s        r4   r=   zSerializer._loads_v4   sB    	]]4U3F $$Wfi@@  		s   , 	88)N)r,   r   r   r   r   zbytes | Nonereturnr8   )r0   zdict[str, Any]rQ   r8   )r,   r   r0   r8   r>   IO[bytes] | NonerQ   HTTPResponse | None)r,   r   rJ   zMapping[str, Any]r>   rR   rQ   rS   )	__name__
__module____qualname__r(   r5   r*   r?   rM   r=   rG   r9   r4   r   r      s    M "	(V (V (V 	(V
 
(VTC '+	8 8 8 $	8
 
8, '+	2T 2T "2T $	2T
 
2Tp '+	A A A $	A
 
Ar9   r   )
__future__r   r   typingr   r   r   r   r   pip._vendorr	   pip._vendor.requests.structuresr
   pip._vendor.urllib3r   pip._vendor.requestsr   r   rG   r9   r4   <module>r]      s0    # 	 8 8  ? ,4AA AAr9   