
    6h                        S SK Jr  S SKrSSKJr  SSKJr  SSKJrJr  SSK	J
r
  \R                  r\R                  r " S S	5      rS
 rg)    )annotationsN   )_)open)pycompatutil)urlutilc                  6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
httpsendfile   zThis 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.
c                   Xl         [        U0 UD6U l        U R                  R                  U l        U R                  R                  U l        U R                  R
                  U l        [        R                  " U R                  R                  5       5      R                  U l
        SU l        U R                  5       U l        g )Nr   )uir   _dataseekclosewriteosfstatfilenost_sizelength_pos_makeprogress	_progress)selfr   argskwargss       :/usr/lib/python3/dist-packages/mercurial/httpconnection.py__init__httpsendfile.__init__'   s    4*6*
JJOO	ZZ%%
ZZ%%
hhtzz0023;;	++-    c                |    U R                   R                  [        S5      [        S5      U R                  S-  S-  S9$ )Ns   sendings   kb      )unittotal)r   makeprogressr   r   r   s    r   r   httpsendfile._makeprogress1   s=     ww##jM%1Dq1H $ 
 	
r!   c                   U R                   R                  " U0 UD6nU(       d  U R                  R                  5         U$ U =R                  [        U5      -  sl        U R                  R                  U R                  S-  5        U$ )Nr#   )r   readr   completer   lenupdate)r   r   r   rets       r   r+   httpsendfile.read;   sc    jjoot.v.NN##%J		SX	dii4/0
r!   c                    U $ N r(   s    r   	__enter__httpsendfile.__enter__D   s    r!   c                $    U R                  5         g r2   )r   )r   exc_typeexc_valexc_tbs       r   __exit__httpsendfile.__exit__G   s    

r!   )r   r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r+   r4   r:   __static_attributes__r3   r!   r   r   r      s     .
r!   r   c                   [         R                  " U5      n0 nU R                  S5       Hx  u  pEUS;   a  M  SU;  a  U R                  [	        S5      U-  5        M2  UR                  SS5      u  pgUR                  U0 5      nUS;   a  [        R                  " U5      nXXU'   Mz     UR                  SS5      u  pS nSnS nUR                  5        GHp  u  pnU(       a  X.R                  S	U5      :w  a  M$  UR                  S
5      nU(       d  M>  [        R                  " U5      nUR                  (       a  UR                  U:w  a  Mw  S Ul        [        U5      nUR                  SS5      n[!        U5      S:  a  US   /US   nnO(UR                  S5      =(       d    SR                  5       nUS:X  d  U
R#                  U5      (       d  M  [!        U5      U:  d%  [!        U5      U:X  d  GM  U(       a  GM'  S	U;   d  GM0  U	U;   d  GM9  [!        U5      nXn4nUR                  S	5      nU(       d  GMb  U(       a  GMl  X.S	'   GMs     U$ )Ns   auth)s
   cookiefile   .s!   ignoring invalid [auth] key '%s'
r   )   usernames   certs   keys   ://r   rD   s   prefixs   schemess   https   *)r   bytesurlconfigitemswarnr   rsplit
setdefaultr   
expandpathsplititemsgetr	   urluserbytesr-   
startswith)r   urirP   groupskeyvalgroupsettinggdictschemehostpathbestuserbestlenbestauthauthprefix	prefixurlpschemess                      r   readauthforurird   L   s   


C
 CFNN7+""s?GGA;<sBCD!,!!%,44//#&Cg , yy+FHGH||~DHH[$77 )$KK'	>>inn4  	y!LL#q6A: tfadVGVxx
+7x>>@Gt^x226::Fg%K7*$H#t+ '!&kG{Hxx,HtHH$([!S &T Or!   )
__future__r   r   i18nr   r   r    r   utilsr	   urlerrurlreqr   rd   r3   r!   r   <module>rk      sB    # 	  
 
	) )Z@r!   