o ]Lby@sddlmZddlmZddlmZddlmZddlm Z mZm Z m Z m Z ddlm Zd d Zd d ZGd ddeZddZdS))absolute_import)sha1nodeconstants)INDEX_ENTRY_V0)_)errornodepycompat revlogutilsutil)nodemapcCs t|d?S)Nintqr@/usr/lib/python3/dist-packages/mercurial/revlogutils/revlogv0.py getoffset rcCs t|d@S)Nirrrrrgettype!rrc seZdZdZejZejdde j e j e j e j e j dZ ejddZddZddZd d Zfd d Zfd dZddZddZddZddZZS)revlogoldindexr data_offsetdata_compressed_lengthdata_delta_baselink_rev parent_rev_1 parent_rev_2node_idcCs>ttjtji}tdt|D] }||d}|||<q|S)Nr) nodemaputilNodeMaprnullidr nullrevrangelen)selfr rnrrr_nodemap2s   zrevlogoldindex._nodemapcCs ||jvS)z*return True if the node exist in the indexr+r(r rrrhas_node:s zrevlogoldindex.has_nodecCs |j|S)zQreturn a revision for a node If the node is unknown, raise a RevlogErrorr,r-rrrrev>s zrevlogoldindex.revcCs |j|S)zIreturn a revision for a node If the node is unknown, return None)r+getr-rrrget_revDs zrevlogoldindex.get_revcs&t||j|d<tt||dS)Nr!)r'r+superrappend)r(tup __class__rrr3Jszrevlogoldindex.appendcsbt|tr|jdkr|jdurtdt|jt|D] }|j ||d=qt t | |dS)Ns.deleting slices only supports a:-1 with step 1r!) isinstanceslicestopstep ValueErrorr xrangestartr'r+r2r __delitem__)r(ir)r5rrr?Ns zrevlogoldindex.__delitem__cCs|jdddS)Nr+)__dict__pop)r(rrr clearcachesUszrevlogoldindex.clearcachescCs|dkr|jSt||S)Nr7) null_itemlist __getitem__)r(r@rrrrFXs zrevlogoldindex.__getitem__cCsdS)z!pack header information in binaryr)r(headerrrr pack_header]szrevlogoldindex.pack_headercCsn||}t|drttdt|d|d|d|d||dd||dd|df}tj|S) z4return the raw binary string representing a revisionrs'index entry flags need revlog version 1rr!)rr RevlogErrorrrrpack)r(r/entrye2rrr entry_binaryas   zrevlogoldindex.entry_binary)__name__ __module__ __qualname__rust_ext_compatrsize entry_sizer rPr r%rr$rDr propertycacher+r.r/r1r3r?rCrFrIrR __classcell__rrr5rr%s.   rc Cstj}g}ttjtji}d}}t|}|||krf||||}||7}t|} t j | d| d| d| d| | dtj| | dtj| dd} | | ||| d<|d7}|||kst |}|dfS) NrrrrJrKrLrMr)rrWr"r#r r$r%r'unpackr rPr0r3r) datainlinesindexr r*offlcurerQrrrparse_index_v0ts0    rdN) __future__rr r constantsri18nrrr r r r r"rrrErrdrrrrs      O