o 7]h@svddlZddlZddlZddlZddlmZddlmZddlm Z m Z m Z ddZ dd Z eZGd d d eZdS) N)msgpack)CaseInsensitiveDict) HTTPResponsepickle text_typecCst|dS)Nascii)base64 b64decodeencode)br D/usr/lib/python3/dist-packages/pip/_vendor/cachecontrol/serialize.py_b64_decode_bytessrcCst|dS)Nutf8)rdecode)sr r r_b64_decode_strsrc@sNeZdZdddZddZddZdd Zd d Zd d ZddZ ddZ dS) SerializerNc Cst|j}|dur|jdd}t||_d|tdd|jD|j|j t |j |j |j di}i|d<d|vra|dd}|D]}t |}|j|d}|durZt |}||d|<qCd d tj|d d gS) NF)decode_contentresponsecs$|] \}}t|t|fVqdSN)r.0kvr r r 0s z#Serializer.dumps..)bodyheadersstatusversionreasonstrictrvary,,scc=4T) use_bin_type)rrreadioBytesIO_fpdictitemsr r!rr"r#rsplitstripgetjoinrdumps) selfrequestrrresponse_headersdatavaried_headersheader header_valuer r rr2s4     zSerializer.dumpscCs|sdSz |dd\}}Wn tyd}Ynw|dddkr(||}d}|dddd}z t|d |||WStyIYdSw) Nr&rscc=0scc==rz _loads_v{})r. ValueErrorrgetattrformatAttributeError)r3r4r6verr r rloadsHs   zSerializer.loadscCsd|divr dS|diD]\}}|j|d|kr"dSq|dd}t|ddd}|dd d kr@|d||dd<zt|}Wnty^t|d }Ynwt d|d d |dS)z`Verify our vary headers match and construct a real urllib3 HTTPResponse object. *r$Nrrr)r6ztransfer-encodingchunkedrF)rpreload_contentr ) r0r-rpoprr)r* TypeErrorr r)r3r4cachedr8valuebody_rawrrr r rprepare_responsefs"    zSerializer.prepare_responsecCdSrr r3r4r6r r r _loads_v0zSerializer._loads_v0cCs0zt|}Wn tyYdSw|||Sr)rrBr=rLr3r4r6rIr r r _loads_v1s   zSerializer._loads_v1c Csz tt|d}Wn ttjfyYdSwt|dd|dd<tdd|dd D|dd<t |dd|dd<tdd|d  D|d <| ||S) Nrrrcsrrrrr r rrs  z'Serializer._loads_v2..rr"css0|]\}}t||durt|n|fVqdSrrSrr r rrs  r$) jsonrBzlib decompressrr=errorrr,r-rrLrQr r r _loads_v2s  zSerializer._loads_v2cCrMrr rNr r r _loads_v3rPzSerializer._loads_v3cCs4z tj|dd}Wn tyYdSw|||S)NF)raw)rrBr=rLrQr r r _loads_v4s   zSerializer._loads_v4r) __name__ __module__ __qualname__r2rBrLrOrRrXrYr[r r r rrs ,& r)r r)rTrU pip._vendorrpip._vendor.requests.structuresrcompatrrrrrobject_default_body_readrr r r rs