
    	^c:                     |    d dl mZ ddlmZ d dlmZ d dlmZm Z mZm	Z	 ddlm
Z d Zd Z G d	 d
e          Zd ZdS )   )sha1nodeconstants   )INDEX_ENTRY_V0)_)errornoderevlogutilsutil)nodemapc                 &    t          | dz	            S )N   intqs    @/usr/lib/python3/dist-packages/mercurial/revlogutils/revlogv0.py	getoffsetr      s    qBw<<    c                 &    t          | dz            S )Ni  r   r   s    r   gettyper      s    q6z??r   c            	            e Zd ZdZej        Z ej        dde	j
        e	j
        e	j
        e	j
        ej                  Zej        d             Zd Zd Zd Z fdZ fdZd	 Zd
 Zd Zd Z xZS )revlogoldindex    data_offsetdata_compressed_lengthdata_delta_baselink_revparent_rev_1parent_rev_2node_idc                     t          j        t          j        t          j        i          }t          dt          |                     D ]}| |         d         }|||<   |S )Nr      )nodemaputilNodeMapr   nullidr   nullrevrangelen)selfr   rns       r   _nodemapzrevlogoldindex._nodemap0   sY    %'8'?&NOOq#d))$$ 	 	AQ
AGAJJr   c                     || j         v S )z*return True if the node exist in the indexr-   r*   r   s     r   has_nodezrevlogoldindex.has_node8   s    t}$$r   c                     | j         |         S )zQreturn a revision for a node

        If the node is unknown, raise a RevlogErrorr/   r0   s     r   revzrevlogoldindex.rev<   s     }T""r   c                 6    | j                             |          S )zIreturn a revision for a node

        If the node is unknown, return None)r-   getr0   s     r   get_revzrevlogoldindex.get_revB   s     }  &&&r   c                     t          |           | j        |d         <   t          t          |                               |           d S )Nr#   )r)   r-   superr   append)r*   tup	__class__s     r   r9   zrevlogoldindex.appendH   s=     #D		c!fnd##**3/////r   c                 6   t          |t                    r|j        dk    r|j        t	          d          t          |j        t          |                     D ]}| j        | |         d         = t          t          |                               |           d S )Ns.   deleting slices only supports a:-1 with step 1r#   )
isinstanceslicestopstep
ValueErrorr(   startr)   r-   r8   r   __delitem__)r*   ir+   r;   s      r   rD   zrevlogoldindex.__delitem__L   s    !U## 	P16R<<16;MNOOOqwD		** 	* 	*Ad1gaj))nd##//22222r   c                 <    | j                             dd            d S )Nr-   )__dict__pop)r*   s    r   clearcacheszrevlogoldindex.clearcachesS   s     *d+++++r   c                 R    |dk    r| j         S t                              | |          S )Nr=   )	null_itemlist__getitem__)r*   rE   s     r   rM   zrevlogoldindex.__getitem__V   s)    77>!a(((r   c                     dS )z!pack header information in binaryr    )r*   headers     r   pack_headerzrevlogoldindex.pack_header[   s    sr   c                 J   | |         }t          |d                   r!t          j        t          d                    t	          |d                   |d         |d         |d         | |d                  d         | |d                  d         |d         f}t          j        | S )	z4return the raw binary string representing a revisionr   s'   index entry flags need revlog version 1r            r#      )r   r   RevlogErrorr   r   r   pack)r*   r3   entrye2s       r   entry_binaryzrevlogoldindex.entry_binary_   s    S	58 	#<==   eAh!H!H!HqN1qN1!H
 "B''r   )__name__
__module____qualname__rust_ext_compatr   size
entry_sizer	   rY   r   r'   r   r&   rK   r
   propertycacher-   r1   r3   r6   r9   rD   rI   rM   rQ   r[   __classcell__)r;   s   @r   r   r   #   s       O$J!! \\!(  I 
  % % %# # #' ' '0 0 0 0 03 3 3 3 3, , ,) ) )
  ( ( ( ( ( ( (r   r   c                 z   t           j        }g }t          j        t          j        t          j        i          }dx}}t          |           }||z   |k    r| |||z            }||z  }t          j        |          }	t          j
        |	d         |	d         |	d         |	d         |                    |	d         t          j                  |                    |	d         t          j                  |	d                   }
|                    |
           |||	d         <   |dz  }||z   |k    t          |          }|d fS )	Nr   r   r   rS   rT   rU   rV   r   )r   r`   r$   r%   r   r&   r'   r)   unpackr	   rY   r5   r9   r   )datainlinesindexr   r,   offlcurerZ   s              r   parse_index_v0rn   r   s.   AE!4;"=>>GKAD		A
'Q,,3q=!q!#&&!#$Q4aDqT QqT4<88 QqT4<88aD
 
 
 	R!	Q! 'Q,,$ 5!!E$;r   N)r   r   	constantsr   i18nr    r   r	   r
   r   r$   r   r   rL   r   rn   rO   r   r   <module>rr      s   % $ $ $ $ $                           
    L( L( L( L( L(T L( L( L(^    r   