ó
ŸçƒQc           @   s
  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d e f d „  ƒ  YZ d „  Z d e j f d „  ƒ  YZ d e j f d	 „  ƒ  YZ d
 „  Z d S(   iÿÿÿÿ(   t   _Nt   httprangereaderc           B   s8   e  Z d  „  Z d „  Z d d „ Z d „  Z d „  Z RS(   c         C   s(   | |  _  d |  _ | |  _ | |  _ d  S(   Ni    (   t   urlt   post   openert   name(   t   selfR   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   __init__   s    			c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   seek   s    c            sz  t  j |  j ƒ } d } | r2 |  j | d } n  |  j sA | ra | j d d |  j | f ƒ n  y@ |  j j | ƒ ‰  ˆ  j ƒ  } t ˆ  d ‡  f d †  ƒ ƒ  } Wnn t  j	 k
 ræ } | j
 d k rÎ t j pÑ d  } t | | ƒ ‚ n, t  j k
 r} t d  | j d ƒ ‚ n X| d k rN| r>| |  j |  j | !} qa| |  j } n | ra| |  } n  |  j t | ƒ 7_ | S(	   Nt    i   t   Ranges   bytes=%d-%st   getcodec              s   t  ˆ  d d ƒ S(   Nt   codeiÎ   (   t   getattr(    (   t   f(    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   <lambda>'   s    i”  iÈ   (   t   urllib2t   RequestR   R   t
   add_headerR   t   opent   readR   t	   HTTPErrorR   t   errnot   ENOENTt   Nonet   IOErrort   URLErrort   reasont   len(   R   t   bytest   reqt   endt   dataR   t   instt   num(    (   R   s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR      s.     "c         C   s   t  |  j ƒ  j d ƒ ƒ S(   Ni   (   t   iterR   t
   splitlines(   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   __iter__9   s    c         C   s   d  S(   N(    (   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   close;   s    N(   t   __name__t
   __module__R   R   R   R   R%   R&   (    (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR      s
   		!	c            sH   t  j |  | ƒ ‰  ˆ  j t j ƒ  ƒ d t j f ‡  f d †  ƒ  Y} | S(   Nt   statichttpvfsc              s/   e  Z d  „  Z d d ‡  f d † Z d „  Z RS(   c         S   s   | |  _  d  S(   N(   t   base(   R   R*   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR   D   s    t   rc            sI   | d k r t  d ƒ ‚ n  d j |  j t j | ƒ f ƒ } t | ˆ  ƒ S(   NR+   t   rbs   Permission deniedt   /(   R+   s   rb(   R   t   joinR*   t   urllibt   quoteR   (   R   t   patht   modet
   atomictempR   (   t	   urlopener(    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   __call__G   s    !c         S   s'   | r t  j j |  j | ƒ S|  j Sd  S(   N(   t   osR1   R.   R*   (   R   R1   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR.   M   s    N(   R'   R(   R   R   R5   R.   (    (   R4   (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR)   C   s   	(   R   R   t   add_handlert	   byteranget   HTTPRangeHandlert   scmutilt   abstractvfs(   t   uit   authinfoR)   (    (   R4   s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   build_opener>   s    t   statichttppeerc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   d  S(   N(   R   (   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   localV   s    c         C   s   t  S(   N(   t   False(   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   canpushX   s    (   R'   R(   R@   RB   (    (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR?   U   s   	t   statichttprepositoryc           B   sA   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z RS(   c   
      C   s  | |  _  | |  _ | |  _ t j | j d ƒ d ƒ } | j ƒ  \ |  _ } t | | ƒ } | |  j ƒ |  _	 |  j	 |  _
 g  |  _ y t j |  j	 |  j ƒ } Wn« t k
 rK} | j t j k rÈ ‚  n  t ƒ  } y* |  j	 d ƒ } | j d ƒ | j ƒ  WqLt k
 rG} | j t j k r%‚  n  t d ƒ | }	 t j |	 ƒ ‚ qLXn Xt j | |  j | ƒ |  _ |  j j |  _ |  j j	 |  _ |  j |  _ |  j j |  _ i  |  _ | |  _ t  j  |  j ƒ |  _  t! j! |  j ƒ |  _! d  |  _# d  |  _$ i  |  _% d  |  _& d  |  _' d  S(   NR-   s   /.hgs   00changelog.ii   s+   '%s' does not appear to be an hg repository((   t   _urlR<   t   roott   utilR   t   rstripR=   R1   R>   R   t   vfst   _phasedefaultsR:   t   readrequirest	   supportedR   R   R   t   setR   R&   R    t   errort	   RepoErrort   storet   spatht   sopenert   svfsR.   t   sjoint
   _filecachet   requirementst   manifestt	   changelogR   t   _tagst   nodetagscachet   _branchcachest
   encodepatst
   decodepats(
   R   R<   R1   t   uR=   R   RU   R!   t   fpt   msg(    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR   \   sL    											c         C   s   | j  d g ƒ S(   Nt   pushkey(   t
   difference(   R   t   caps(    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   _restrictcapabilities   s    c         C   s   |  j  S(   N(   RD   (   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR      s    c         C   s   t  S(   N(   RA   (   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyR@   “   s    c         C   s
   t  |  ƒ S(   N(   R?   (   R   (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   peer–   s    c         C   s   t  j t d ƒ ƒ ‚ d  S(   Ns"   cannot lock static-http repository(   RF   t   AbortR    (   R   t   wait(    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   lock™   s    (	   R'   R(   R   Rc   R   R@   Rd   t   TrueRg   (    (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyRC   [   s   	1				c         C   s/   | r t  j t d ƒ ƒ ‚ n  t |  | d ƒ S(   Ns(   cannot create new static-http repositoryi   (   RF   Re   R    RC   (   R<   R1   t   create(    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   instanceœ   s    (   t   i18nR    RW   R8   R   RM   t	   localrepoRV   RF   R:   RO   R/   R   R   R6   t   objectR   R>   t	   localpeerR?   t   localrepositoryRC   Rj   (    (    (    s<   /sys/lib/python2.7/site-packages/mercurial/statichttprepo.pyt   <module>
   s   0<0/	A