
    q&f %                         d dl mZ d dlmZ d dlmZmZ d dlmZm	Z
 d dlmZ d dlmZmZ  e
j"                  ej$                         G d d             Z G d	 d
e      Zy)   )_)nullrev)errorrevlog)
repositoryutil)storageutil)	constantsrewritec                   8   e Zd Zd%dZd Zd Zd Zd Zd&dZd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd'dZd Zd Zd Zd Zdddej.                  ddfdZdej4                  dfdZ	 	 	 	 	 d(dZd Zd Zd)dZd Z d Z!d'dZ"d Z#d  Z$d! Z%d" Z&	 	 	 	 	 d*d#Z'd$ Z(y)+filelogFc                 $   t        j                   |t        j                  |fdj                  d|f      dd|      | _        || j                  _        | j                  j                  | _        |j                  }|j                  dd      | _	        y )N   /s   dataTF)targetradix
censorablecanonical_parent_order	try_splits   issue6528.fix-incoming)
r   revlog_constantsKIND_FILELOGjoin_revlogfilenamenullidoptionsget_fix_issue6528)selfopenerpathr   optss        3/usr/lib/python3/dist-packages/mercurial/filelog.py__init__zfilelog.__init__   sx    }}$1148))WdO,#(
 !%ll))~~"hh'@$G    c                     | j                   S )zreturn an actual revlog instance if any

        This exist because a lot of code leverage the fact the underlying
        storage is a revlog for optimization, so giving simple way to access
        the revlog instance helps such code.
        )r   r   s    r"   
get_revlogzfilelog.get_revlog-   s     ||r$   c                 ,    t        | j                        S N)lenr   r&   s    r"   __len__zfilelog.__len__6   s    4<<  r$   c                 6    | j                   j                         S r)   )r   __iter__r&   s    r"   r-   zfilelog.__iter__9   s    ||$$&&r$   c                     || j                   t        fv ry	 | j                  j                  |       y# t        t
        t        t        j                  f$ r Y yw xY w)NFT)	r   r   r   rev	TypeError
ValueError
IndexErrorr   LookupErrorr   nodes     r"   hasnodezfilelog.hasnode<   sQ    DKK))	LLT":z53D3DE 		s   3 #AANc                 <    | j                   j                  ||      S )N)startstop)r   revsr   r8   r9   s      r"   r:   zfilelog.revsF   s    ||  u4 88r$   c                 8    | j                   j                  |      S r)   )r   parentsr4   s     r"   r=   zfilelog.parentsI       ||##D))r$   c                 8    | j                   j                  |      S r)   )r   
parentrevsr   r/   s     r"   r@   zfilelog.parentrevsL       ||&&s++r$   c                 8    | j                   j                  |      S r)   )r   r/   r4   s     r"   r/   zfilelog.revO   s    ||%%r$   c                 8    | j                   j                  |      S r)   )r   r5   rA   s     r"   r5   zfilelog.nodeR   s    ||  %%r$   c                 l    t        j                  | j                  || j                  j                        S r)   )r	   fileidlookupr   
display_idr4   s     r"   lookupzfilelog.lookupU   s*    ''LL$ 7 7
 	
r$   c                 8    | j                   j                  |      S r)   )r   linkrevrA   s     r"   rJ   zfilelog.linkrevZ   s    ||##C((r$   c                 :    | j                   j                  ||      S r)   )r   commonancestorsheads)r   node1node2s      r"   rL   zfilelog.commonancestorsheads]   s    ||00>>r$   c                 8    | j                   j                  |      S r)   )r   descendants)r   r:   s     r"   rP   zfilelog.descendantsa   s    ||''--r$   c                 :    | j                   j                  ||      S r)   )r   headsr;   s      r"   rR   zfilelog.headsd   s    ||!!%..r$   c                 8    | j                   j                  |      S r)   )r   childrenr4   s     r"   rT   zfilelog.childrenh       ||$$T**r$   c                 8    | j                   j                  |      S r)   )r   
iscensoredrA   s     r"   rW   zfilelog.iscensoredk   rB   r$   c                 8    | j                   j                  |      S r)   )r   revisionr4   s     r"   rY   zfilelog.revisionn   rU   r$   c                 8    | j                   j                  |      S r)   )r   rawdatar4   s     r"   r[   zfilelog.rawdataq   r>   r$   c           	      F    | j                   j                  |||||||      S )N)
nodesorderrevisiondataassumehaveparentrevisions	deltamodesidedata_helpers
debug_info)r   emitrevisions)r   nodesr]   r^   r_   r`   ra   rb   s           r"   rc   zfilelog.emitrevisionst   s5     ||))!%&?-! * 
 	
r$   c	           
      H    | j                   j                  ||||||||      S )N)r5   flags
cachedelta)r   addrevision)	r   r^   transactionrJ   p1p2r5   rf   rg   s	            r"   rh   zfilelog.addrevision   s8     ||''! ( 	
 		
r$   c	           
      @   |rt        j                  t        d            | j                  j	                  |      5  | j
                  r t        j                  | j                  |      }| j                  j                  |||||||      cd d d        S # 1 sw Y   y xY w)Ns:   revlog storage does not support missing parents write mode)addrevisioncbduplicaterevisioncbrb   delta_base_reuse_policy)	r   Abortr   r   _writingr   r   filter_delta_issue6528addgroup)	r   deltas
linkmapperri   rm   rn   maybemissingparentsrb   ro   s	            r"   rs   zfilelog.addgroup   s     ++*  \\"";/ 	"" 77fM<<((+$7%(? ) 	 	 	s   ABBc                 8    | j                   j                  |      S r)   )r   getstrippoint)r   minlinks     r"   rx   zfilelog.getstrippoint   s    ||))'22r$   c                 :    | j                   j                  ||      S r)   )r   strip)r   ry   ri   s      r"   r{   zfilelog.strip   s    ||!!';77r$   c                 >    | j                   j                  |||      S )N)	tombstone)r   censorrevision)r   trr5   r}   s       r"   r~   zfilelog.censorrevision   s    ||**2ty*IIr$   c                 6    | j                   j                         S r)   )r   filesr&   s    r"   r   zfilelog.files   s    ||!!##r$   c                 J    t        j                  | j                  |            S r)   )r	   filtermetadatarY   r4   s     r"   readzfilelog.read   s    ))$--*=>>r$   c                     |s|j                  d      rt        j                  ||      }| j                  |||||      }| j	                  |      S )Ns   
)
startswithr	   packmetarh   r5   )r   textmetari   linkrj   rk   r/   s           r"   addzfilelog.add   sH    4??7+''d3Dt[$B?yy~r$   c                 .    t        j                  | |      S r)   )r	   filerevisioncopiedr4   s     r"   renamedzfilelog.renamed   s    --dD99r$   c                     | j                  |      }| j                  |      ry| j                  |      rt        | j	                  |            S | j
                  j                  |      S )z#return the size of a given revision    )r5   rW   r   r*   r   r   size)r   r/   r5   s      r"   r   zfilelog.size   sV     yy~??3<<tyy'' ||  %%r$   c                 2    t        j                  | ||       S )zpcompare text with a given file revision

        returns True if text is different than what is stored.
        )r	   filedataequivalentr   r5   r   s      r"   cmpzfilelog.cmp   s    
 11$dCCCr$   c                 8    | j                   j                  |      S r)   )r   verifyintegrity)r   states     r"   r   zfilelog.verifyintegrity   s    ||++E22r$   c                 B    | j                   j                  |||||      S )N)exclusivefilessharedfilesrevisionscounttrackedsize
storedsize)r   storageinfo)r   r   r   r   r   r   s         r"   r   zfilelog.storageinfo   s/     ||'')#)#! ( 
 	
r$   c                     t        |t              sd}||z  }t        j                  |       | j                  j
                  ||j                  fi |S )Ns#   expected filelog to clone(), not %r)
isinstancer   r   ProgrammingErrorr   clone)r   r   
destrevlogkwargsmsgs        r"   r   zfilelog.clone  sP    *g.8C:C((--!t||!!"j&8&8CFCCr$   F)r   N)NN)NNFNN)r$   )FFFFF))__name__
__module____qualname__r#   r'   r+   r-   r6   r:   r=   r@   r/   r5   rH   rJ   rL   rP   rR   rT   rW   rY   r[   r   CG_DELTAMODE_STDrc   r   REVIDX_DEFAULT_FLAGSrh   rs   rx   r{   r~   r   r   r   r   r   r   r   r   r    r$   r"   r   r      s    H"!'9*,&&

)?./+,+* "'--
6 ))
6  ! $ D38J$?:&D3
 
"Dr$   r   c                   >     e Zd ZdZd fd	Z fdZ fdZd Z xZS )narrowfilelogz0Filelog variation to be used with narrow stores.c                 @    t         t        |   |||       || _        y )N)r   )superr   r#   _narrowmatch)r   r   r    narrowmatchr   	__class__s        r"   r#   znarrowfilelog.__init__  s!    mT+FDI+N'r$   c                 \    t         t        |   |      }|r| j                  |d         sy |S )Nr   )r   r   r   r   )r   r5   resr   s      r"   r   znarrowfilelog.renamed  s2    M406  t((Q0
r$   c                     | j                  |      }t        t        |   |      rt	        | j                  |            S t        t        |   |      S r)   )r5   r   r   r   r*   r   r   )r   r/   r5   r   s      r"   r   znarrowfilelog.size'  sF     yy~-d3tyy''2377r$   c                 t    | j                  | j                  |            r|dk7  S | j                  |      |k7  S )Nr$   )rW   r/   r   r   s      r"   r   znarrowfilelog.cmp0  s5     ??488D>*3;yy$&&r$   r   )	r   r   r   __doc__r#   r   r   r   __classcell__)r   s   @r"   r   r   
  s    :(,8	'r$   r   N)i18nr   r5   r    r   r   
interfacesr   r   interfaceutilutilsr	   revlogutilsr
   r   r   implementerifilestorager   r   r   r$   r"   <module>r      s`       :223lD lD 4lD^/'G /'r$   