^c~ddlZddlmZddlmZddlmZmZddlmZej Z ej Z GddZ d Z dS) N)_)open)pycompatutil)urlutilc0eZdZdZdZdZdZdZdZdS) httpsendfilezThis is a wrapper around the objects returned by python's "open". Its purpose is to send file-like objects via HTTP. It do however not define a __len__ attribute because the length might be more than Py_ssize_t can handle. cF||_t|i||_|jj|_|jj|_|jj|_t j|jj |_ d|_ | |_ dS)Nr)uir_dataseekclosewriteosfstatfilenost_sizelength_pos _makeprogress _progress)selfr argskwargss :/usr/lib/python3/dist-packages/mercurial/httpconnection.py__init__zhttpsendfile.__init__%s4*6** JO Z% Z% htz002233;  ++--c|jtdtd|jdzdzS)Nssendingskb)unittotal)r makeprogressrrrs rrzhttpsendfile._makeprogress/sB w## jMM%1Dq1H$   rc|jj|i|}|s|j|S|xjt |z c_|j|jdz|S)Nr )r readrcompleterlenupdate)rrrrets rr'zhttpsendfile.read9ssdjot.v..  N # # % % %J SXX  di4/000 rc|SNr%s r __enter__zhttpsendfile.__enter__Bs rc.|dSr-)r)rexc_typeexc_valexc_tbs r__exit__zhttpsendfile.__exit__Es rN) __name__ __module__ __qualname____doc__rrr'r/r4r.rrr r si...   rr cxtj|}i}|dD]\}}|dvr d|vr&|t d|z4|dd\}}||i}|dvrtj|}|||<| dd\} } d} d} d} | D]X\}}|r|| d |kr#| d }|s;tj |}|jr |j|krbd|_t|}| dd}t!|dkr|dg|d}}n)| d pd }|d ks| |rat!|| kst!|| kr;| s9d |vr5| |vr1t!|} ||f} | d } |r| s||d <Z| S)Nsauth)s cookiefile.s!ignoring invalid [auth] key '%s' r)usernamescertskeys://rr;sprefixsschemesshttps*)rbytesurl configitemswarnrrsplit setdefaultr expandpathsplititemsgetrurluserbytesr) startswith)r urirGgroupskeyvalgroupsettinggdictschemehostpathbestuserbestlenbestauthauthprefix prefixurlpschemess rreadauthforurir[Js  C C FNN7++  S " " "  s?? GGA;< in44  y!! LL # # q66A:: tfadVGGxx ++7x>>@@G t^^x226::^F g%%KK7**$+#t++'!!&kkGd{Hxx ,,H )H )$([! Or) ri18nrrrrutilsrurlerrurlreqr r[r.rrras   ))))))))Z@@@@@r