
Qc           @   s  d  d l  m Z 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  d l Z e j d k r d  d l Z n d  d l Z e j Z e j Z d d  Z d   Z d   Z d   Z d	   Z d
 e f d     YZ  d e f d     YZ! d e f d     YZ" d e" f d     YZ# e# Z$ d e f d     YZ% d e" e% f d     YZ& e& Z' d e" e% f d     YZ( d d  Z) e* d e* d  Z+ d   Z, d a- d   Z. d d  Z/ d   Z0 d Z1 d    Z2 d!   Z3 g  i  e* d" d#  Z4 g  i  e* d" d$  Z d%   Z5 d&   Z6 g  i  d d d'  Z7 e* d d(  Z8 d)   Z9 d* e f d+     YZ: d, e f d-     YZ; d. e f d/     YZ< e j= e d.  re j< Z< n  d0   Z> d S(1   i(   t   _(   t   nullrevNt   ntc         C   s   g  } | rn x_ | D]T } | | k r+ q n  | | } | j    t j k r | j   r | j |  q q Wn  | r |  j t d  t |   n |  j t d   d S(   sj   Report no changes for push/pull, excluded is None or a list of
    nodes excluded from the push/pull.
    s0   no changes found (ignored %d secret changesets)
s   no changes found
N(   t   phaset   phasest   secrett   extinctt   appendt   statusR    t   len(   t   uit   repot   excludedt
   secretlistt   nt   ctx(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   nochangesfound   s    
"c         C   s   | d k r( t  j t d  |   n  x6 d D]. } | | k r/ t  j t d	  |   q/ q/ Wy# t |  t  j t d
    Wn t k
 r n Xd  S(   Nt   tipt   .t   nulls   the name '%s' is reservedt   :t    s   
s   s   %r cannot be used in a names   cannot use an integer as a name(   R   R   R   (   R   s    s   
s   (   t   utilt   AbortR    t   intt
   ValueError(   R   t   lblt   kindt   c(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   checknewlabel+   s     
c         C   s8   d |  k s d |  k r4 t  j t d  |    n  d S(   sF   Check that the filename f is an acceptable filename for a tracked files   s   
s)   '\n' and '\r' disallowed in filenames: %rN(   R   R   R    (   t   f(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   checkfilename9   s    c         C   s   t  |  t |   \ } } | s( | r t j |  } | r d | | f } | re t j |   n  |  j t d  |  q n  d S(   sE   Check if filename f is portable and warn or abort depending on configs   %s: %rs   warning: %s
N(   R   t   checkportabilityalertR   t   checkwinfilenameR   t   warnR    (   R
   R   t   abortR"   t   msg(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   checkportable>   s    
c         C   s   |  j  d d d  } | j   } t j |  } t j d k pH | d k } | pZ | d k } | d k r | p~ | p~ | d k r t j t	 d  |   n  | | f S(	   s_   check if the user's config requests nothing, a warning, or abort for
    non-portable filenamesR
   t   portablefilenamesR"   R   R#   t   ignores,   ui.portablefilenames value is invalid ('%s')N(
   t   configt   lowerR   t	   parseboolt   ost   namet   Nonet   errort   ConfigErrorR    (   R
   t   valt   lvalt   bvalR#   R"   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR    J   s    %t   casecollisionauditorc           B   s   e  Z d    Z d   Z RS(   c         C   s^   | |  _  | |  _ d j | j  } t t j |  j d   |  _ | |  _	 t   |  _
 d  S(   NR   (   t   _uit   _abortt   joint   _mapt   sett   encodingR)   t   splitt   _loweredfilest	   _dirstatet	   _newfiles(   t   selfR
   R#   t   dirstatet   allfiles(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   __init__X   s    		!	c         C   s   t  j |  } | |  j k r | |  j k r | |  j k r t d  | } |  j rg t j |   n  |  j	 j
 t d  |  n  |  j j |  |  j j |  d  S(   Ns&   possible case-folding collision for %ss   warning: %s
(   R9   R)   R;   R<   R=   R    R5   R   R   R4   R"   t   add(   R>   R   t   flR$   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   __call__c   s    	(   t   __name__t
   __module__RA   RD   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR3   W   s   	t   pathauditorc           B   s,   e  Z d  Z d d  Z d   Z d   Z RS(   s  ensure that a filesystem path contains no banned components.
    the following properties of a path are checked:

    - ends with a directory separator
    - under top-level .hg
    - starts at the root of a windows drive
    - contains ".."
    - traverses a symlink (e.g. a/symlink_here/b)
    - inside a nested repository (a callback can be used to approve
      some nested repositories, e.g., subrepositories)
    c         C   sk   t    |  _ t    |  _ | |  _ | |  _ t j j |  r[ t j	 |  r[ t j
 |  _
 n d   |  _
 d  S(   Nc         S   s   |  S(   N(    (   t   x(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   <lambda>   s    (   R8   t   auditedt
   auditeddirt   roott   callbackR+   t   patht   lexistsR   t	   checkcaset   normcase(   R>   RL   RM   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA   {   s    		"c         C   s<  t  j |  } |  j |  } | |  j k r1 d St  j |  r\ t  j t d  |   n  t  j |  } t j	 j
 |  d s | d j   d k s t j | k r t  j t d  |   n  d | j   k r^g  | D] } | j   ^ q } xh d D]] } | | d k r | j |  } t j	 j | |    } t  j t d	  | | f   q q Wn  t  j |  } t |  t |  k st  | j   | j   g  }	 xp| rt j j |  }
 t j j |  } | |  j k rPn  t j	 j |  j |
  } y t j |  } Wn: t k
 rL} | j t j t j t j f k r  qn Xt j | j  rt  j t d
  | |
 f   nr t j | j  rt j	 j t j	 j | d   r|  j  s|  j  |  rt  j t d	  | |
 f   qn  |	 j! |  | j   | j   qW|  j j" |  |  j j# |	  d S(   sP   Check the relative path.
        path may contain a pattern (e.g. foodir/**.txt)Ns$   path ends in directory separator: %si    s   .hgs   .hg.t    s#   path contains illegal component: %si   s"   path '%s' is inside nested repo %rs"   path %r traverses symbolic link %r(   s   .hgs   .hg.RR   (   s   .hgs   .hg.($   R   t	   localpathRQ   RJ   t   endswithsepR   R    t	   splitpathR+   RN   t
   splitdriveR)   t   pardirt   indexR6   R	   t   AssertionErrort   popt   sepRK   RL   t   lstatt   OSErrort   errnot   ENOENTt   ENOTDIRt   EINVALt   statt   S_ISLNKt   st_modet   S_ISDIRt   isdirRM   R   RB   t   update(   R>   RN   t   normpatht   partst   pt   lpartst   post   baset	   normpartst   prefixest   prefixt
   normprefixt   curpatht   stt   err(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRD      sb    

	!
	!
c         C   s4   y |  |  t  SWn t t j f k
 r/ t SXd  S(   N(   t   TrueR]   R   R   t   False(   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   check   s
    
N(   RE   RF   t   __doc__R-   RA   RD   Rw   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRG   n   s   
	@t   abstractvfsc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d d  Z	 d d  Z
 d d  Z d e d	  Z d d d
  Z d d  Z d d d d  Z d   Z d   Z d   Z d d  Z RS(   s+   Abstract base class; cannot be instantiatedc         O   s    t  d t t |      d S(   s7   Prevent instantiation; don't call this from subclasses.s   attempted instantiating N(   t   NotImplementedErrort   strt   type(   R>   t   argst   kwargs(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA      s    c         C   sC   y |  j  |  SWn+ t k
 r> } | j t j k r?   q? n Xd S(   s3   gracefully return an empty string for missing filesRR   (   t   readt   IOErrorR^   R_   (   R>   RN   t   inst(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   tryread   s    
c         C   s/   |  | d  } z | j    SWd  | j   Xd  S(   Nt   rb(   R   t   close(   R>   RN   t   fp(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s2   |  | d  } z | j  |  SWd  | j   Xd  S(   Nt   wb(   t   writeR   (   R>   RN   t   dataR   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s2   |  | d  } z | j  |  SWd  | j   Xd  S(   Nt   ab(   R   R   (   R>   RN   R   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s   t  j j |  j |   S(   N(   R+   RN   t   existsR6   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s   t  j j |  j |   S(   N(   R+   RN   Rf   R6   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRf      s    c         C   s   t  j j |  j |   S(   N(   R+   RN   t   islinkR6   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s   t  j |  j |  |  S(   N(   R   t   makedirR6   (   R>   RN   t
   notindexed(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s   t  j |  j |  |  S(   N(   R   t   makedirsR6   (   R>   RN   t   mode(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s   t  j |  j |   S(   N(   R+   t   mkdirR6   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR      s    c         C   s   t  j |  j |  | |  S(   N(   t   osutilt   listdirR6   (   R>   RN   Rb   t   skip(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   readdir  s    c         C   s"   t  j |  j |  |  j |   S(   N(   R   t   renameR6   (   R>   t   srct   dst(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s    c         C   s   t  j |  j |   S(   N(   R+   t   readlinkR6   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR   	  s    c         C   s   t  j |  j |  | |  S(   N(   R   t   setflagsR6   (   R>   RN   t   lRH   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s    c         C   s   t  j |  j |   S(   N(   R+   Rb   R6   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRb     s    N(   RE   RF   Rx   RA   R   R   R   R   R-   R   Rf   R   Ru   R   R   R   R   R   R   R   Rb   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRy      s"   									t   vfsc           B   s   e  Z d  Z e e e d  Z d   Z d   Z e e e  Z	 e
 j d    Z e
 j d    Z d   Z d e e d  Z d	   Z d
   Z RS(   s   Operate files relative to a base directory

    This class is used to hide the details of COW semantics and
    remote file access from higher level code.
    c         C   s_   | r t  j |  } n  | r3 t j j |  } n  | |  _ |  j |  d  |  _ d  |  _	 d  S(   N(
   R   t
   expandpathR+   RN   t   realpathRm   t   _setmustauditR-   t
   createmodet   _trustnlink(   R>   Rm   t   auditR   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA     s    		c         C   s   |  j  S(   N(   t   _audit(   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   _getmustaudit"  s    c         C   s4   | |  _  | r$ t |  j  |  _ n t j |  _ d  S(   N(   R   RG   Rm   R   R   t   always(   R>   t   onoff(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR   %  s    	c         C   s   t  j |  j  S(   N(   R   t	   checklinkRm   (   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   _cansymlink.  s    c         C   s   t  j |  j  S(   N(   R   t	   checkexecRm   (   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   _chmod2  s    c         C   s8   |  j  d  k s |  j r d  St j | |  j  d @ d  S(   Ni  (   R   R-   R   R+   t   chmod(   R>   R,   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   _fixfilemode6  s    t   rc         C   s.  |  j  r= t j |  } | r= t j d | | f   q= n  |  j |  |  j |  } | ry d | k ry | d 7} n  d } | d
 k rt j |  \ } }	 |	 r| r t j | |  j  t j	 | | |  j  Syc d | k r t j
 |  d } n= t j |  }
 t j |  } | d k  r-d	 } n  |
 j   WnJ t t f k
 r} | j t j k rh  n  d } t j | |  j  n X| d k r|  j d  k r| d k pt j |  |  _ n  | d k s|  j rt j t j |  |  qqqn  t j | |  } | d k r*|  j |  n  | S(   Ns   %s: %rt   biR   R   t   wi    i   i   (   R   s   rb(   R   R   t   checkosfilenameR   R   R6   R:   t
   ensuredirsR   t   atomictempfilet   unlinkt	   posixfilet   nlinksR   R]   R   R^   R_   R   R-   t
   checknlinkR   t
   mktempcopyR   (   R>   RN   R   t   textt
   atomictempR   R   t   nlinkt   dirnamet   basenamet   fdt   eR   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRD   ;  sL    			!%c         C   s   |  j  |  |  j |  } y t j |  Wn t k
 r@ n Xt j t j j |  |  j	  |  j
 r y t j | |  Wq t k
 r } t | j t d  | | j f |   q Xn |  j | |  d  S(   Ns   could not symlink to %r: %s(   R   R6   R+   R   R]   R   R   RN   R   R   R   t   symlinkR^   R    t   strerrorR   (   R>   R   R   t   linknameRt   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR   j  s    	c         C   s'   | r t  j j |  j |  S|  j Sd  S(   N(   R+   RN   R6   Rm   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR6   }  s    (   RE   RF   Rx   Ru   Rv   RA   R   R   t   propertyt	   mustauditR   t   propertycacheR   R   R   RD   R   R6   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s   
			/	t   auditvfsc           B   s2   e  Z d    Z d   Z d   Z e e e  Z RS(   c         C   s   | |  _  d  S(   N(   R   (   R>   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA     s    c         C   s
   |  j  j S(   N(   R   R   (   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s    c         C   s   | |  j  _ d  S(   N(   R   R   (   R>   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s    (   RE   RF   RA   R   R   R   R   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s   			t	   filtervfsc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s4   Wrapper vfs for filtering filenames with a function.c         C   s   t  j |  |  | |  _ d  S(   N(   R   RA   t   _filter(   R>   R   t   filter(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA     s    c         O   s   |  j  |  j |  | |  S(   N(   R   R   (   R>   RN   R}   R~   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRD     s    c         C   s3   | r |  j  j |  j |   S|  j  j |  Sd  S(   N(   R   R6   R   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR6     s    (   RE   RF   Rx   RA   RD   R6   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s   		t   readonlyvfsc           B   s#   e  Z d  Z d   Z d d  Z RS(   s#   Wrapper vfs preventing any writing.c         C   s   t  j |  |  d  S(   N(   R   RA   (   R>   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA     s    R   c         O   s4   | d k r t  j d   n  |  j | | | |  S(   NR   R   s   this vfs is read only(   R   s   rb(   R   R   R   (   R>   RN   R   R}   t   kw(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRD     s    (   RE   RF   Rx   RA   RD   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s   	c   
      C   s  t  j |   r |  } n |  t j } | } t j j |  sX t j j |  | |  } n  t j j |  } | d k r t	 |   } n  | | k r | j
 |  r | t |  } | |  t  j |  S| |  k r d Sg  } x t ry t  j | |   } Wn t k
 rt } n X| rY| s&d S| j   t j j |   } | |  t  j |  St  j |  \ } }	 | j |	  | | k rPn  | } q Wt  j t d  | |  f   d S(   s7   return the canonical path of myname, given cwd and rootRR   s   %s not under root '%s'N(   R   RT   R+   R[   RN   t   isabsR6   Rh   R-   RG   t
   startswithR	   t   pconvertRu   t   samefileR]   Rv   t   reverseR:   R   R   R    (
   RL   t   cwdt   mynamet   auditort   rootsepR,   t   relt   sR   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt	   canonpath  sD    	
	



c         #   s    f d   } t  t j d d   | rH  d k	 rH  f d   } n t } | d k rv | rv g  } | |    n  x:t j   d t d | D]\ } } } | j   d | k r| Vt j j | d d  }	 t j j	 t j j |	 d   r |	 Vn  | r| j
 d  qg  | (q | r g  }
 xy | D]q } t j j | |  } | | |  r0t j j |  rx/ t | t |  D] } | VqWq|
 j |  q0q0W|
 | (q q Wd S(	   s   yield every hg repository under path, always recursively.
    The recurse flag will only control recursion into repo working dirsc            s   |  j    k r |   n  d  S(   N(   t   filename(   Rt   (   RN   (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt
   errhandler  s    t   samestatc            sZ   t  } t j |  } x' |  D] }   | |  r t } Pq q W| sU |  j |  n  | S(   N(   Rv   R+   Rb   Ru   R   (   t   dirlstR   t   matcht   dirstatt
   lstdirstat(   R   (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   adddir  s    t   topdownt   onerrors   .hgt   patchesN(   t   getattrR+   RN   R-   Rv   t   walkRu   t   sortR6   Rf   t   removeR   t	   walkreposR   (   RN   t	   followsymt	   seen_dirst   recurseR   R   RL   t   dirst   filest   qroott   newdirst   dt   fnamet   hgname(    (   RN   R   s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s8    +
!
c          C   sB   t    }  |  j t    g  |  D] } t j j |  ^ q  }  |  S(   s+   return default os-specific hgrc search path(   t   systemrcpatht   extendt
   userrcpathR+   RN   Rh   (   RN   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   osrcpath  s    	%c          C   s   t  d k r d t j k r g  a  x t j d j t j  D] }  |  sM q; n  t j |   }  t j j	 |   r x[ t
 j |   D]: \ } } | j d  r~ t  j t j j |  |   q~ q~ Wq; t  j |   q; Wq t   a  n  t  S(   s  return hgrc search path. if env var HGRCPATH is set, use it.
    for each item in path, if directory, use files ending in .rc,
    else use item.
    make HGRCPATH empty to only look in .hg/hgrc of current repo.
    if no HGRCPATH, use default os-specific path.t   HGRCPATHs   .rcN(   t   _rcpathR-   R+   t   environR:   t   pathsepR   R   RN   Rf   R   R   t   endswithR   R6   R   (   Rj   R   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   rcpath  s     &R   c         C   sV   | s |  | St  |  | g  } t |  d k  rJ t j t d    n  |  | d S(   Ni   s   empty revision seti(   t   revrangeR	   R   R   R    (   R   t   revspect   defaultR   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt	   revsingle.  s    c         C   s   | s |  j  j   d  f St |  |  } t |  d k rk | rX t j t d    n  |  j  j   d  f St |  d k r t |  d k r t | d k r |  j	 | d  d  f S|  j	 | d  |  j	 | d  f S(   Ni    s   empty revision rangei   i(
   R?   t   p1R-   R   R	   R   R   R    t   _revrangesept   lookup(   R   t   revsR   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   revpair7  s    4R   c      
   C   sO  d   } t    g  } } x/| D]'} | rB | rB t  |  } n  yt | t  rt | j |  | j |  w  n  t | k rv| j t d  \ } } | |  | d  } | |  | t |   d  } | t k r | d k r t } n  |  j	 j
 | |  } | r| rt |  } w  n  t  |  }	 | rK|	 j |  | j |	  n |	 } | j t |	 d | | k  w  nV | r| |  k r| |  | d  }
 |
 | k rw  n  | j |
  | j |
  w  n  Wn t j k
 rn Xt j |  j |  } g  | |  t |    D] } | | k r| ^ q} | j |  | j |  q  W| S(   sA   Yield revision as strings from a list of revision specifications.c         S   s1   | r# | d k r# | d  k	 r# | S|  | j   S(   Ni    (   R-   t   rev(   R   R0   t   defval(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   revfixL  s    i   i    R   N(   R8   t
   isinstanceR   RB   R   R   R:   R	   R   t	   changelogR  t   listt   difference_updateRg   R   t   sortedR-   R.   t   RepoLookupErrort   revsetR   R
   (   R   R  R  t   seenR   t   spect   startt   endt	   rangeitert   newrevsR  t   mR   t   dl(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR   I  sR    		
4c         C   s   t  j s t |   Sg  } x |  D] } t j | d   \ } } | d  k r y t j |  } Wn t j k
 r| | g } n X| r | j	 |  q  q n  | j
 |  q  W| S(   N(   R   t   expandglobsR  t   matchmodt	   _patsplitR-   t   globt   reR.   R   R   (   t   patst   retRj   R   R,   t   globbed(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt
   expandpats  s    	
	t   relpathc            s   | d k r g  } n  | r= | d k r= t  | p4 g   } n    j | | j d  | j d  |      f d   } |  _  | f S(   NRR   R  t   includet   excludec            s*     j  j j d  j |   | f  d  S(   Ns   %s: %s
(   t   _repoR
   R"   R   (   R   R$   (   R   R  (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   badfn  s    (   RR   (   R  R   t   gett   bad(   R   R  t   optsR  R   R"  (    (   R   R  s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   matchandpats  s    	!		c         C   s   t  |  | | | |  d S(   Ni    (   R&  (   R   R  R%  R  R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s    c         C   s   t  j |  j |  j    S(   N(   R  R   RL   t   getcwd(   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   matchall  s    c         C   s   t  j |  j |  j   |  S(   N(   R  t   exactRL   R'  (   R   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt
   matchfiles  s    c      
      s  | d  k r | j d  } n  | d  k rH t | j d  p? d  } n  g  g  g  g  f \ } } } } t |  j  }	 t |  d  | |  }
 g      f d   |
 _ |  d  } |  j } | j |
 t	 | j
  t t  } x | j   D] \ } } | | } | d k r%|	 j |  r%| j |  q | d k rH| rH| j |  q | d k rd| j |  q | d k r | j |  q q Wt |  } | j   } | j |  x t	 |  D] } |  j j s|
 j |  r|
 j |  } | | k rt d  | r| p| } n t d	  | r'| p*| } |  j j |  qqWi  } | d k r x t j |  | | | | |  D] \ } } } |  j j s|
 j |  s|
 j |  r|  j j t d
  |
 j |  |
 j |  | d f  n  | | | <qxWn  | sx|  d  } |  j   } zK | j |  | j |  x* | j   D] \ } } | j | |  qFWWd  | j   Xn  x$   D] } | |
 j   k rd SqWd S(   Nt   dry_runt
   similarityi    c            s     j  |   S(   N(   R   (   RH   t   y(   t   rejected(    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRI     s    t   ?R   t   as
   adding %s
s   removing %s
s7   recording removal of %s as rename to %s (%d%% similar)
id   i   (    R-   R#  t   floatRG   RL   R   R$  R?   R   R
  t   substateRu   Rv   t	   iteritemsRw   R   R8   t   copyRg   R
   t   verboseR)  R   R    R   t   similart   findrenamest   wlockt   forgetRB   t   releaseR   (   R   R  R%  R+  R,  t   addedt   unknownt   deletedt   removedt
   audit_pathR  R   R?   t   walkresultst   absRs   t   dstatet
   unknownsett   toprintR   R   t   copiest   oldt   newt   scoret   wctxR8  R   (    (   R.  s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt	   addremove  sj    
	!
$,*
c         C   s  | j  j |  p | } | | k rT | j  | d k r | r | j  j |  q n | j  | d k r | | k r |  j s |  j t d  | j | |  | j | |  f  n  | j  | d k r | r | j | g  q n | s | j | |  n  d S(   s   Update the dirstate to reflect the intent of copying src to dst. For
    different reasons it might not end with dst being marked as copied from src.
    t   mnR0  sF   %s has not been committed yet, so no copy data will be stored for %s.
s   ?rN(	   R?   t   copiedt   normallookupt   quietR"   R    t   pathtoRB   R4  (   R
   R   RI  R   R   t   dryrunR   t   origsrc(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   dirstatecopy  s    	)c         C   s   t  |  j d  j    } g  } xZ | D]R } | | k r( | sR | d j   rj t j t d    n  | j |  q( q( W| j   | r t j t d  d j	 |    n  | S(   sh   Reads and parses .hg/requires and checks if all entries found
    are in the list of supported features.t   requiresi    s   .hg/requires file is corruptsE   unknown repository format: requires features '%s' (upgrade Mercurial)s   ', '(
   R8   R   t
   splitlinest   isalnumR.   t   RequirementErrorR    R   R   R6   (   t   openert	   supportedt   requirementst   missingsR   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   readrequires  s    
	t   filecacheentryc           B   s>   e  Z e d   Z d   Z d   Z d   Z e d    Z RS(   c         C   sd   | |  _  d  |  _ d  |  _ | r` t j |  j   |  _ |  j rT |  j j   |  _ q` d  |  _ n  d  S(   N(   RN   R-   t	   cachestatt
   _cacheableR\  Rb   t	   cacheable(   R>   RN   Rb   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA     s    				c         C   s(   |  j    r$ t j |  j  |  _ n  d  S(   N(   R_  R\  Rb   RN   R]  (   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   refresh  s    c         C   s   |  j  d  k	 r |  j  St S(   N(   R^  R-   Ru   (   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR_  "  s    c         C   sz   |  j    s t St j |  j  } | rV |  j d  k rV | j    |  _ |  j sV t Sn  |  j | k rr | |  _ t St Sd  S(   N(	   R_  Ru   R\  Rb   RN   R^  R-   R]  Rv   (   R>   t   newstat(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   changed)  s    		c         C   sC   y t  j |   SWn+ t k
 r> } | j t j k r?   q? n Xd  S(   N(   R   R]  R]   R^   R_   (   RN   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRb   >  s
    (	   RE   RF   Ru   RA   R`  R_  Rb  t   staticmethodRb   (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR\    s
   			t	   filecachec           B   sG   e  Z d  Z d   Z d   Z d   Z d d  Z d   Z d   Z	 RS(   s?  A property like decorator that tracks a file under .hg/ for updates.

    Records stat info when called in _filecache.

    On subsequent calls, compares old stat info with new info, and recreates
    the object when needed, updating the new stat info in _filecache.

    Mercurial either atomic renames or appends for files under .hg,
    so to ensure the cache is reliable we need the filesystem to be able
    to tell us if a file has been replaced. If it can't, we fallback to
    recreating the object on every call (essentially the same behaviour as
    propertycache).c         C   s   | |  _  d  S(   N(   RN   (   R>   RN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA   S  s    c         C   s   | j  |  S(   s  Used to compute the runtime path of the cached file.

        Users should subclass filecache and provide their own version of this
        function to call the appropriate join function on 'obj' (an instance
        of the class that its member function was decorated).
        (   R6   (   R>   t   objR   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR6   V  s    c         C   s   | |  _  | j |  _ |  S(   N(   t   funcRE   R,   (   R>   Rf  (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRD   _  s    	c         C   s   |  j  | j k rA |  j  | j k s3 t |  j    | j |  j  S| j j |  j   } | r | j   r |  j |  | _ q nC |  j | |  j	  } t
 |  } |  j |  | _ | | j |  j  <| j | j |  j  <| j S(   N(   R,   t   __dict__t
   _filecacheRY   R#  Rb  Rf  Re  R6   RN   R\  (   R>   Re  R|   t   entryRN   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   __get__d  s    !c         C   sp   |  j  | j k rC t |  j | |  j  t  } | | j |  j  <n | j |  j  } | | _ | | j |  j  <d  S(   N(   R,   Rh  R\  R6   RN   Rv   Re  Rg  (   R>   Re  t   valuet   ce(    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   __set__|  s    	c         C   s8   y | j  |  j =Wn  t k
 r3 t |  j   n Xd  S(   N(   Rg  R,   t   KeyErrort   AttributeError(   R>   Re  (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt
   __delete__  s    N(
   RE   RF   Rx   RA   R6   RD   R-   Rj  Rm  Rp  (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRd  F  s   					R   c           B   s>   e  Z d  Z d d  Z d   Z d   Z d   Z d   Z RS(   s9   a multiset of directory names from a dirstate or manifestc         C   s   i  |  _  |  j } t j | d  rm | d  k	 rm xU | j   D]) \ } } | d | k r= | |  q= q= Wn x | D] } | |  qt Wd  S(   NR3  i    (   t   _dirst   addpathR   t   safehasattrR-   R3  (   R>   t   mapR   Rr  R   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRA     s    		c         C   sN   |  j  } x> t |  D]0 } | | k r< | | c d 7<d  Sd | | <q Wd  S(   Ni   (   Rq  t   finddirs(   R>   RN   R   Rm   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRr    s    	c         C   sO   |  j  } x? t |  D]1 } | | d k r@ | | c d 8<d  S| | =q Wd  S(   Ni   (   Rq  Ru  (   R>   RN   R   Rm   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   delpath  s    	c         C   s   |  j  j   S(   N(   Rq  t   iterkeys(   R>   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   __iter__  s    c         C   s   | |  j  k S(   N(   Rq  (   R>   R   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   __contains__  s    N(	   RE   RF   Rx   R-   RA   Rr  Rv  Rx  Ry  (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyR     s   			c         c   sD   |  j  d  } x. | d k r? |  |  V|  j  d d |  } q Wd  S(   Nt   /ii    (   t   rfind(   RN   Rl   (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyRu    s    	(?   t   i18nR    t   mercurial.nodeR   R   R.   R   R  R6  R9   R   t   parsersR   R  R+   R^   R  Rb   R  R,   t
   scmwindowst   scmplatformt   scmposixR   R   R-   R   R   R   R%   R    t   objectR3   RG   Ry   R   RW  R   R   t   filteropenerR   R   Rv   R   R   R   R   R   R  R   R   R  R&  R(  R*  RJ  RR  R[  R\  Rd  R   Rs  Ru  (    (    (    s5   /sys/lib/python2.7/site-packages/mercurial/scmutil.pyt   <module>   s\   `<						^Fq.0					:			A	7H$