
    6h!                    t   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	J
r
JrJrJrJrJrJrJrJrJr  SSKJr  \R0                  r\R2                  r " S S	5      r " S
 S\5      r " S S\R:                  5      rS r " S S\R@                  5      r! " S S\RD                  \RF                  5      r$ SS jr%g)    )annotationsN   )_)sha1nodeconstants)	branchmap	changelogerror	localrepomanifest
namespacespathutilpycompatrequirementsurlutilvfs)urlutilc                  L    \ rS rSrS rS rS rS rSSS jjrS r	S r
S	 rS
rg)httprangereader&   c                6    Xl         SU l        X l        Xl        g )Nr   )r   posopenername)selfr   r   s      :/usr/lib/python3/dist-packages/mercurial/statichttprepo.py__init__httprangereader.__init__'   s    	    c                    U $ N r   s    r   	__enter__httprangereader.__enter__.   s    r   c                $    U R                  5         g r!   )close)r   exc_type	exc_value	tracebacks       r   __exit__httprangereader.__exit__1   s    

r   c                    Xl         g r!   )r   )r   r   s     r   seekhttprangereader.seek4   s    r   c                   [         R                  [        R                  " U R                  5      5      nSnUS:X  a  gUS:  a  SU R
                  U-   S-
  -  nU R
                  (       d  U(       a!  UR                  SSU R
                  U4-  5         U R                  R                  U5      nUR                  5       nUR                  nUS	:X  ai  US:  a8  U R
                  U-   ['        U5      :  a  XPR
                  U R
                  U-    nOIU R
                  ['        U5      :  a  XPR
                  S  nO!SnOSUs=:  a  ['        U5      :  a  O  OUS U nU =R
                  ['        U5      -  sl        U$ ! [        R                   aI  nUR                  S:H  =(       a    [        R                  =(       d    S n[        U[!        U5      5      eS nAf[        R"                   a  n[        S UR$                  5      eS nAff = f)
N r   r   z%dr   Rangezbytes=%d-%si     )urlreqrequestr   strurlr   r   
add_headerr   openreadcodeurlerr	httperrorerrnoENOENTOSErrorstrurlerrorreasonlen)	r   nreqendfdatar:   instnums	            r   r9   httprangereader.read7   s   nnX__TXX676U$((Q,*+C88sNN7MTXXsO$CD	-  %A668D66D 3; 1u$((Q,#d)3HHtxx!|4CI%HHJ'SY8DCI+  	*))s"3u||;tC #s4y)) 	-$,,	-s%   7E6 6H 
AGH %G;;H c                @    U R                  5       R                  S5      $ )NT)r9   
splitlinesr#   s    r   	readlineshttprangereader.readlines]   s    yy{%%d++r   c                4    [        U R                  5       5      $ r!   )iterrN   r#   s    r   __iter__httprangereader.__iter__`   s    DNN$%%r   c                    g r!   r"   r#   s    r   r'   httprangereader.closec       r   )r   r   r   r   N))rD   int)__name__
__module____qualname____firstlineno__r   r$   r+   r.   r9   rN   rR   r'   __static_attributes__r"   r   r   r   r   &   s+    $L,&r   r   c                      \ rS rSrSrSrg)_RangeErrorj   z6Error raised when an unsatisfiable range is requested.r"   N)rY   rZ   r[   r\   __doc__r]   r"   r   r   r_   r_   j   s    @r   r_   c                  $    \ rS rSrSrS rS rSrg)_HTTPRangeHandlern   zHandler that enables HTTP Range headers.

This was extremely simple. The Range header is a HTTP feature to
begin with so all this class does is tell urllib2 that the
"206 Partial Content" response from the HTTP server is what we
expected.
c                f    [         R                  X%UR                  5       5      nX6l        XFl        U$ r!   )r4   
addinfourlget_full_urlr:   msg)r   rE   fpr:   rh   hdrsrs          r   http_error_206 _HTTPRangeHandler.http_error_206w   s,    b(8(8(:;r   c                    [        S5      e)NzRequested Range Not Satisfiable)r_   )r   rE   ri   r:   rh   rj   s         r   http_error_416 _HTTPRangeHandler.http_error_416~   s    ;<<r   r"   N)rY   rZ   r[   r\   ra   rl   ro   r]   r"   r   r   rc   rc   n   s    =r   rc   c                   ^ [         R                  " X5      mTR                  [        5       5         " U4S jS[        R
                  5      nU$ )Nc                  <   > \ rS rSrS rSU 4S jjrS	S jrS rSrg)
#build_opener.<locals>.statichttpvfs   c                    Xl         0 U l        g r!   baseoptions)r   rw   s     r   r   ,build_opener.<locals>.statichttpvfs.__init__   s    IDLr   c                   > US;  a  [        S5      eSR                  U R                  [        R	                  U5      45      n[        UT5      $ )N)   rs   rbzPermission denied   /)r?   joinrw   r4   quoter   )r   pathmodeargskwrG   	urlopeners         r   __call__,build_opener.<locals>.statichttpvfs.__call__   sD    =(122		499fll4&89:A"1i00r   c                    [         er!   )NotImplementedError)r   r   r   s      r   
_auditpath.build_opener.<locals>.statichttpvfs._auditpath   s    %%r   c                l    U(       a"  [         R                  " U R                  U/UQ76 $ U R                  $ r!   )r   r}   rw   )r   r   insidefs      r   r}   (build_opener.<locals>.statichttpvfs.join   s)    }}TYY?w??yy r   rv   N)r{   )r   bytesr   r   returnNone)	rY   rZ   r[   r\   r   r   r   r}   r]   )r   s   r   statichttpvfsrs      s    		1	&	!r   r   )r   r   add_handlerrc   vfsmodabstractvfs)uiauthinfor   r   s      @r   build_openerr      s=    

2(I+-.!** !( r   c                       \ rS rSrS rS rSrg)statichttppeer   c                    g r!   r"   r#   s    r   localstatichttppeer.local   s    r   c                    gNFr"   r#   s    r   canpushstatichttppeer.canpush       r   r"   N)rY   rZ   r[   r\   r   r   r]   r"   r   r   r   r      s    r   r   c                     ^  \ rS rSr% \R
                  R                  rS\S'   S r	U 4S jr
S rS rSS jrSS	 jrSS
 jrS rSrU =r$ )statichttprepository   zmanifest.manifestlogmanifestlogc                   X l         Xl        X l        [        R                  " UR                  S5      S-   5      nUR                  5       u  U l        n[        X5      nU" U R                  5      U l	        U" U R                  R                  S5      5      U l        / U l        [        R                  " 5       U l        S U l        S U l        [#        5       U l        [#        5       U l         [#        U R                  R)                  S5      R+                  5       5      n[4        R6                  U;   aL  U" U R                  R                  S5      5      n	U[#        U	R)                  S5      R+                  5       5      -  n[8        R:                  " U5      n
[8        R<                  " Xj5        [8        R>                  " X5        [@        U l!        U RB                  RD                  U l"        [8        RF                  " X`R                  U5      U l$        U RH                  R                  U l%        U RH                  RL                  U l'        S	U RN                  l(        U RH                  R                  U l)        0 U l*        X`l+        [X        RZ                  " U RB                  U RN                  5      n[X        R\                  " U RN                  XU R_                  5       5      U l.        [`        R`                  " U RN                  5      U l0        S U l1        S U l2        [f        Rh                  " 5       U l5        S U l6        S U l7        S U l8        S U l9        S U l:        g ! [,         a    [#        5       n U R                  S5       nUR)                  S5        S S S 5         GMr  ! , (       d  f        GN= f! [,         a%    [/        S5      U-  n[0        R2                  " U5      ef = ff = f)
Nr|   s   /.hgs   caches   requiress   00changelog.ir   s+   '%s' does not appear to be an hg repositorys   storeF);_urlr   rootr   r   rstripr   r   r   r   r}   cachevfs_phasedefaultsr   names
filtername_extrafilteridset_wanted_sidedatafeaturesr9   rM   FileNotFoundErrorr   r	   	RepoErrorrequirementsmodSHARESAFE_REQUIREMENTr
   gathersupportedrequirementsensurerequirementsrecognizedensurerequirementscompatibler   nodeconstantsnullid	makestorestorespathr   svfsrust_compatiblesjoin
_filecacher   r   manifestrevlogr   narrowmatchr   _tagsnodetagscacher   BranchMapCache_branchcaches_revbranchcache
encodepats
decodepats	_transref	_dirstate)r   r   r   ur   vfsclassr   ri   rh   storevfssupportedrequirementsrootmanifests               r   r   statichttprepository.__init__   s   		KKD)G34jjl	8-DII& x!89 **,
" #	+txx}}[9DDFGL 00L@h 78HCk : E E GHHL ) E Eb I..	
 	..r@.((// ((yy(K
ZZ__
JJ%%	 %*		!ZZ__
(..t/A/A499M#//IIt4+;+;+=
 #,,TYY7
!&557#] ! 
	+5L+XX./2GGAJ 0///$ +FG$Nooc**+
	+s<   )2M	 	ON /NN 
N	N N  /OOc                F   > [         TU ]  U5      nUR                  S/5      $ )Ns   pushkey)super_restrictcapabilities
difference)r   caps	__class__s     r   r   *statichttprepository._restrictcapabilities   s#    w,T2
|,,r   c                    U R                   $ r!   )r   r#   s    r   r   statichttprepository.url   s    yyr   c                    gr   r"   r#   s    r   r   statichttprepository.local   r   r   c                    [        XUS9$ )Nr   remotehidden)r   )r   r   r   s      r   peerstatichttprepository.peer   s    dLIIr   c                    [         R                  " S[        R                  " [	        S5      5      S[	        S5      5      eNr   s   lock not availables   locks"   cannot lock static-http repositoryr	   LockUnavailabler   sysstrr   r   wait
steal_froms      r   wlockstatichttprepository.wlock   6    ##OOA34534	
 	
r   c                    [         R                  " S[        R                  " [	        S5      5      S[	        S5      5      er   r   r   s      r   lockstatichttprepository.lock  r   r   c                    g r!   r"   r#   s    r   _writecaches!statichttprepository._writecaches  rV   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )TN)rY   rZ   r[   r\   r
   localrepository_basesupported	supported__annotations__r   r   r   r   r   r   r   r   r]   __classcell__)r   s   @r   r   r      sL     ))88I%%CJ-J

 r   r   c                    U(       a  [         R                  " [        S5      5      eUR                  SS  n[	        X5      R                  XS9$ )Ns(   cannot create new static-http repository   r   )r	   Abortr   locr   r   )r   r   createintents
createoptsr   r   s          r   	make_peerr     sK     kk!GHII
((12,C(-- .  r   )NNF)&
__future__r   r=   i18nr   noder   r1   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   utilsr   r;   r4   r   IOErrorr_   basehandlerrc   r   	localpeerr   r   revlogfilestorager   r   r"   r   r   <module>r	     s    #   #    
	> >HA' A=** =*8Y(( jy::j\ CHr   