^cQxddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZm Z mZmZmZmZddlmZejZejZejZdZGd d Zd Zd ZGd de jZdZGddej Z!Gddej"Z#dZ$dej%fdZ&ddZ'dS)N)futures)_)getattr)bundle2errorhttpconnectionpycompatstatichttprepourlutilwireprotov1peer)urlutilc Ztj|dz}|t|dzz tdz }g}d}tdt||D]K}|dz }||t |ztj||||zfL|S)acEncode a string value into multiple HTTP headers. ``value`` will be encoded into 1 or more HTTP headers with the names ``header-`` where ```` is an integer starting at 1. Each header name + value will be at most ``limit`` bytes long. Returns an iterable of 2-tuples consisting of header names and values as native strings. z-%s000s: rr)r strurllenrangeappendstr)valueheaderlimitfmtvaluelenresultnis 4/usr/lib/python3/dist-packages/mercurial/httppeer.pyencodevalueinheadersr $s /& ! !F *C s3;'''#i..8H F A 1c%jj( + +PP Q sSVV|X_U1q8|;K5L%M%MNOOOO McFeZdZdZedZddZejfdZ dS) _multifilec|D]5}tj|dstdt||6||_d|_dS)NlengthsO_multifile only supports file objects that have a length but this one does not:r)r safehasattr ValueErrortype _fileobjs_index)selffileobjsfs r__init__z_multifile.__init__Bsb  A#Ay11  <GG  " r!c>td|jDS)Nc3$K|] }|jV dSN)length.0r-s r z$_multifile.length..Ps$4418444444r!)sumr)r+s rr2z_multifile.lengthNs!44T^444444r!Nc|dkr$dd|jDSg}|r|jt|jkr||j|j|t|d}||kr|xjdz c_||z}|r|jt|jkd|S)Nrr!c3>K|]}|VdSr1)readr3s rr5z"_multifile.read..Ts*==AFFHH======r!r)joinr)r*rrr:)r+amtpartsgots rr:z_multifile.readRs !8888==dn===== = dkC$7$777 LL 499#>> ? ? ?eBi..CSyy q 3JC  dkC$7$777 xxr!c|tjkrtd|dkrtd|jD]}|dd|_dS)NsP_multifile does not support anything other than os.SEEK_SET for whence on seek()rsQ_multifile only supports seeking to start, but that could be fixed if you need it)osSEEK_SETNotImplementedErrorr)seekr*)r+offsetwhencer-s rrDz_multifile.seek^sw R[ %:  Q;;%1   A FF1IIII r!r1) __name__ __module__ __qualname__r.propertyr2r:rArBrDr!rr#r#Asm   55X5    #%+      r!r#c|dkrd|d<|dd}|di}|d|zd|fg} d} |duod |v} | r|rtt |} |s| }nwt |tr*tj |} t|| _ | }tj | }t| |_ t||}t| |d <n|r|d ksJ|d }|r)t|d dd} | dkrVtt |}t|d| D] \}}|||< n$| t |z } dt| z}d||fz}d}t!j|dr|j }n|t|}| d|vrd|d<t%}t%}|Y|d}|r7|dt%|d }|dd|vr|dd|vri|dr^dt jt jD}|dd |z|r@tdt |d| pd}|D] \}}|||< g}|D]>}|d r||?|r%d!t ||d"<|t7j|||}|1|d#|z|d$d%|z|||fS)&aWMake an HTTP request to run a command for a version 1 client. ``caps`` is a set of known server capabilities. The value may be None if capabilities are not yet known. ``capablefn`` is a function to evaluate a capability. ``cmd``, ``args``, and ``data`` define the command, its arguments, and raw data to pass to it. spushkeyr!sdataNsheadersssending %s command scmdr httppostargsz X-HgArgs-Post capabilitiess httpheader,rsX-HgArgs?%ss%s%sr% Content-Typeapplication/mercurial-0.1s httpmediatypes0.1s partial-pulls0.2txs0.2s compressionc@g|]}|jSrK)wireprotosupportname)r4es r z(makev1commandrequest..s7       %   r!scomp=%s s X-HgProtozx-hg,Varyssending %d bytes zContent-Lengthz%d)popdebugurlreq urlencodesorteditems isinstancebytesioBytesIOrr2r#intsplitr r r&setadd compenginessupportedwireengines CLIENTROLEr<lower startswithrr radd_unredirected_header)uirequestbuildercaps capablefn repobaseurlcmdargsdataheadersq headersize postargsokstrargsrargsio httpheader encoded_argsrrqscusize protoparams mediatypesmtcomps protoheaders varyheadersreqs rmakev1commandrequestrns jW 88GT " "Dhhz2&&GHH $s *+++ #AJT!=o&=J &d &""6$**,,#7#788 ,DD$&& Jt$$t99Z((FLLFMfd++D#&w<<  &o%%%%Y}--  ;Z--dA66q9::J >>!++F4::<<,@,@AAL!5j*"" ( ( #( (  %% %A &""1%% %B K$ $B D i(({ 4yy N'99"=%%KJ  Y' ( (  - OOF # # #RXXd^^,,J(((::))N";";  %::4?KK     TYYu%5%55666$+ IIf[)) * *L*:L  * $ $MFE#GFOOK'' <<>> $ $V , , '   v & & &8((6+#6#677 .,,dG < .csBBBc!ffBBBr!.s+'%s' sent a broken Content-Type header (%s))rrszlib)rBrs'%s' uses newer protocol %s) r rgeturlendswithrrstripquietwarnr getheaderAttributeErrorrwgetrrrmrOutOfBandErrorr:r\r RepoErrorrftupler'r ridecompressorreaderstructunpack readexactly forwiretype)robaseurlrequrlrresp compressible redirectedr qsdroppedprotosafeurlrsubtype version_infoelenenameengines rparsev1commandresponser8s]J ..G*SWWH*%  ~~dw~~d3333 x 6 GGA)**W4 5 5 5H!$.."D"DEE HHH!$,"2"2>2"F"FGGH"7++G /000"499;;///   5 6 6 ' )G,@,H,HHIII /  e11499T?? CD  ') '%c733 3/#&& & ++dA&&q)BBgmmD.A.ABBBCC    o < = =%@P P    v  F#G,??EED   }T4#3D!#<#<==a@ t,,!--e44((..o , - -'0B B    E4 s6(C7DD=AI1I7cdeZdZdZdZdZdZdZdZdZ dZ dd Z d Z d Z d ZdZdZdS)httppeerct||_||_||_||_|duod|v|_||_||_dS)NrM)ro_path_url_capslimitedarguments _urlopener_requestbuilder)r+ropathr rrprqs rr.zhttppeer.__init__sJ   $D 0 P_D5P -r!c|jjD]0}|t|dd1dS)N close_allcdSr1rKrKr!rz"httppeer.__del__..sDr!)rhandlerscloser)r+hs r__del__zhttppeer.__del__sL) 4 4A GGIII 1GA{LL 1 1 3 3 3 3 4 4r!c|jSr1)rr7s rr z httppeer.url zr!cdSr1rKr7s rlocalzhttppeer.localtr!c|Sr1rKr7s rpeerz httppeer.peers r!cdS)NTrKr7s rcanpushzhttppeer.canpushrr!c |jj|jj|jj}}}n#t$rYdSwxYw|jtd|||fzdS)NsE(sent %d HTTP requests and %d bytes; received %d bytes in responses) )r requestscountsentbytescountreceivedbytescountrronoter)r+reqssentrecvs rrzhttppeer.closes -.2$DD     FF   5  T4  !     s $' 55c|jSr1)rr7s r capabilitieszhttppeer.capabilitiesrr!Fc tj|}t|j|j|j|j|j||\}}}t|j|j |}t|j|j||||\|_}}|Sr1) r byteskwargsrrorrcapablerrrr) r+rt _compressiblerurrrrcts r _callstreamzhttppeer._callstreams#D))* G  J L I    R47DOS994 GTYBm   2t r!c |j|fi|} ||S#|wxYwr1)rr:r)r+rtrufps r_callzhttppeer._callsO T c * *T * * 7799 HHJJJJBHHJJJJs 8Ac |d} |d}n#t$rdg}YnwxYw|D]}|tjvr|}ntj|j|d|}tj|j|d}ddi} |j |f|| d|} | dd } t| d kr"tj td | | |tj|S#t"j$rt&j $rx} | jd t*jt*jfvr/tjtd | jd ztj| jd d} ~ wwxYw#|tj|wxYw)NsunbundlerOr!rbrPrQrvrw rrsunexpected response:rspush failed: %s)rrfrr bundletypes writebundleror httpsendfilerrr ResponseErrorrrrAunlinkrrsocketruerrno ECONNRESETEPIPEr) r+rtcgrutypesxr(tempnamerrwrvalserrs r _callpushzhttppeer._callpushs [)) KK%%EE   EEEE     AG'''(&twD$??  ((E B B!#>?  3ARAADAAA775!$$D4yy1}})!,C*D*DaHHH HHJJJ Ih        | + + +x{u/===k!$6"7"7#(1+"EFFF+chqk** * + HHJJJ Ih    s2- ==ADF/7A3F**F//F22*Gc Fd} tjdd\}}tj|d5}|d}|r,|||d}|,dddn #1swxYwYt j|j|d5}ddi} |j |f|| d |cddd|tj |SS#1swxYwY |tj |dSdS#|tj |wwxYw) Ns hg-bundle-s.hg)prefixsuffixwbirrPrQr) r mkstemprAfdopenr:writer r rorr ) r+rtrrufilenamefdfhdfp_rws r_calltwowaystreamzhttppeer._calltwowaystreams $#+=PPPLB2t$$ &GGDMM&HHQKKK A& & & & & & & & & & & & & & & &  ,TWhFF P#)+FG't'O#wOO$OO P P P P P P P# (####$  P P P P P P P P P# (#####$#x# (####$sS.DAB6 DBD B D(C!= D!C%%D(C%)DD c "|j|fddi|S)NrT)r)r+rtrus r_callcompressablezhttppeer._callcompressable s"t@@4@4@@@r!c|r1rK)r+ exceptions r_abortzhttppeer._abortsr!N)F)rGrHrIr.rr rrrrrrrrr$r&r)rKr!rrrs...444   * *& & & P$$$$AAAr!rceZdZdZddZdS)queuedcommandfuturez@Wraps result() on command futures to trigger submission on call.Nc|r tj||S|j||Sr1)donerFuturer _peerexecutor sendcommands)r+timeouts rrzqueuedcommandfuture.resultsS 99;; 8>((w77 7 ''))){{7###r!r1)rGrHrI__doc__rrKr!rr+r+s.JJ$$$$$$r!r+c d}d}i}t|||||d|\}}} t|||} t|||| | d\} } } n_#t$rR} t||||| jd|\}}} t|||} t|||| | d\} } } Yd} ~ nd} ~ wwxYw | }| n#| wxYw| dstj d| zdt| i}| |fS)Nc*tjd)Nsshould not be called)rProgrammingError)rs rrz!performhandshake..capable's$%<===r!rNF)rrsunexpected content-type: %sv1capabilities) rrrrrr:rrmrr5rgrf)ror rrprqrrurrrrrrrUrawdatainfos rperformhandshaker9"s D>>> D* ND'3OC r63 ' 'D  2 VRE   TT    . gqy/4  VR2vs++2 VRE   TTTTTT  ))++  ==2 3 3J$%Cb%HIII s7==??33 4D D=s$A B)AB$$B)-CC,c tj|}|js|jr0t jt d|jp|jz|\}}|d|z|ptj ||}t||||\}}t||||||dS)a-Construct an appropriate HTTP peer instance. ``opener`` is an ``url.opener`` that should be used to establish connections, perform HTTP requests. ``requestbuilder`` is the type used for constructing HTTP requests. It exists as an argument so extensions can override the default. sunsupported URL component: "%s"s using %s r6) rr queryfragmentrrrauthinfor\rrr9r) rorrrpur r=rr8s rmakepeerr?Ws  DAw !* k 0 1 1QW5J K   JJLLMCHH]S !!!  2v}R22F$RfnEEMGT  D'6>48I3J  r!c|r!tjtd |dr-tjs!tjtdt ||}|S#tj$r]} tj |d|z|}| td|cYd}~S#tj$r|wxYwd}~wwxYw)Ns!cannot create new http repositoryshttps:s1Python support for SSL and HTTPS is not installedsstatic-s(falling back to static-http) ) rrrrmr has_httpsr?rr instancer)rorcreateintents createoptsr httpexceptionrs rrBrBss  Ck!@AABBB ??9 % % f.> +FGG D!! ?    'J,=vFFA GGA899 : : :HHHHHH      s*AA99C% rLsA                      ,  :********ZyyyxEEEP%/ D D D NRRRRR'RRRj $ $ $ $ $'. $ $ $222j#6>8      r!