3 Pf@s|ddlZddlZddlZddlZddlmZddlmZmZm Z ddZ ddZ d d Z d d Z d dZGdddeZdS)N)CaseInsensitiveDict) HTTPResponsepickle text_typecCstj|jdS)Nascii)base64Z b64encodedecode)br /usr/lib/python3.6/serialize.py_b64_encode_bytes sr cCst|jdS)Nutf8)r encode)sr r r _b64_encode_strsrcCst|trt|St|S)N) isinstancerrr )rr r r _b64_encodes rcCstj|jdS)Nr)rZ b64decoder)r r r r _b64_decode_bytessrcCst|jdS)Nr)rr )rr r r _b64_decode_strsrc@s>eZdZdddZddZddZdd Zd d Zd d ZdS) SerializerNc Cst|j}|dkr*|jdd}tj||_dt|tdd|jjD|j |j t |j |j |jdi}i|d<d|kr|djd}x*|D]"}|j}|jj|d|d|<qWtd d|djD|d<d jd tjtj|dd djdgS)NF)decode_contentresponsecss"|]\}}t|t|fVqdS)N)r).0kvr r r 9sz#Serializer.dumps..)bodyheadersstatusversionreasonstrictrvary,css.|]&\}}t||dk r t|n|fVqdS)N)r)rrrr r r rNs,scc=2:T)Z separatorsZ sort_keysr)r$r&)rrreadioBytesIOZ_fpr dictitemsrr rr!r"rsplitstripgetjoinzlibcompressjsondumpsr)selfrequestrrZresponse_headersdataZvaried_headersheaderr r r r3#s:     zSerializer.dumpscCs|sdSy|jdd\}}Wntk r4d}YnX|dddkrR||}d}|jddd jd}yt|dj|||Stk rdSXdS) Nr%rscc=0scc==rz _loads_v{0})r, ValueErrorr getattrformatAttributeError)r4r5r6Zverr r r loads[s zSerializer.loadsc Csd|jdikrdSx2|jdijD]\}}|jj|d|kr&dSq&W|djd}t|ddd}|jdd d kr|jd||dd<ytj|}Wn$tk rtj|jd }YnXt f|d d |dS)z`Verify our vary headers match and construct a real urllib3 HTTPResponse object. *r#Nrrr)r6ztransfer-encodingZchunkedrF)rZpreload_content) r.r+rpoprr(r) TypeErrorrr)r4r5cachedr7valueZbody_rawrrr r r prepare_responsexs$  zSerializer.prepare_responsecCsdS)Nr )r4r5r6r r r _loads_v0szSerializer._loads_v0c Cs0ytj|}Wntk r"dSX|j||S)N)rr?r;rF)r4r5r6rDr r r _loads_v1s zSerializer._loads_v1c Csytjtj|jd}Wntk r.dSXt|dd|dd<tdd|ddjD|dd<t |dd|dd<tdd|d jD|d <|j ||S) Nrrrcss"|]\}}t|t|fVqdS)N)r)rrrr r r rsz'Serializer._loads_v2..rr!css.|]&\}}t||dk r t|n|fVqdS)N)r)rrrr r r rsr#) r2r?r0Z decompressr r;rr*r+rrF)r4r5r6rDr r r _loads_v2szSerializer._loads_v2)N) __name__ __module__ __qualname__r3r?rFrGrHrIr r r r r!s  8(r)rr(r2r0Zpip._vendor.requests.structuresrcompatrrrr rrrrobjectrr r r r s