HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //proc/self/root/lib64/python2.7/site-packages/hgext/sqlitestore.pyo
�
1�3\c	@@s?dZddlmZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
ddlmZddlmZmZmZmZmZmZmZmZmZmZmZddlmZmZydd	lmZej Wne!k
r$e"ZnXiZ#ej$e#�Z$e$d
dderRd
nd�dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dddddddd e+gZ2e"d!�Z3d"�Z4d#ej5fd$��YZ6ej7d%e8fd&��Y�Z9ej:ej;�ej7d'e<�d(e8fd)��Y��Z=ej:ej>�ej7d*e<�d+e8fd,��Y��Z?ej:ej@�d-e8fd.��Y�ZAd/ejBfd0��YZCd1�ZDd2�ZEd3�ZFej:ejG�d4e8fd5��Y�ZHd6�ZId7�ZJd8�ZKd9�ZLd:�ZMdS(;smstore repository data in SQLite (EXPERIMENTAL)

The sqlitestore extension enables the storage of repository data in SQLite.

This extension is HIGHLY EXPERIMENTAL. There are NO BACKWARDS COMPATIBILITY
GUARANTEES. This means that repositories created with this extension may
only be usable with the exact version of this extension/Mercurial that was
used. The extension attempts to enforce this in order to prevent repository
corruption.

In addition, several features are not yet supported or have known bugs:

* Only some data is stored in SQLite. Changeset, manifest, and other repository
  data is not yet stored in SQLite.
* Transactions are not robust. If the process is aborted at the right time
  during transaction close/rollback, the repository could be in an inconsistent
  state. This problem will diminish once all repository data is tracked by
  SQLite.
* Bundle repositories do not work (the ability to use e.g.
  `hg -R <bundle-file> log` to automatically overlay a bundle on top of the
  existing repository).
* Various other features don't work.

This extension should work for basic clone/pull, update, and commit workflows.
Some history rewriting operations may fail due to lack of support for bundle
repositories.

To use, activate the extension and set the ``storage.new-repo-backend`` config
option to ``sqlite`` to enable new repositories to use SQLite for storage.
i(tabsolute_importN(t_(tnullidtnullrevtshort(tattr(tancestortdagopterrort
extensionst	localrepotmdifftpycompatt	registrart
repositorytutiltverify(t
interfaceutiltstorageutil(tzstdtstoragessqlite.compressiontdefaultRtzlibsships-with-hg-coresexp-sqlite-001sexp-sqlite-comp-001=zstdsexp-sqlite-comp-001=zlibsexp-sqlite-comp-001=nonesexp-sqlite-shallow-filesiiiis�CREATE TABLE delta (    id INTEGER PRIMARY KEY,     compression INTEGER NOT NULL,     hash BLOB UNIQUE ON CONFLICT ABORT,     delta BLOB NOT NULL )sKCREATE TABLE filepath (    id INTEGER PRIMARY KEY,     path BLOB NOT NULL )s8CREATE UNIQUE INDEX filepath_path     ON filepath (path)scCREATE TABLE fileindex (    id INTEGER PRIMARY KEY,     pathid INTEGER REFERENCES filepath(id),     revnum INTEGER NOT NULL,     p1rev INTEGER NOT NULL,     p2rev INTEGER NOT NULL,     linkrev INTEGER NOT NULL,     flags INTEGER NOT NULL,     deltaid INTEGER REFERENCES delta(id),     deltabaseid INTEGER REFERENCES fileindex(id),     node BLOB NOT NULL )sJCREATE UNIQUE INDEX fileindex_pathrevnum     ON fileindex (pathid, revnum)sFCREATE UNIQUE INDEX fileindex_pathnode     ON fileindex (pathid, node)s�CREATE VIEW filedata AS SELECT     fileindex.id AS id,     filepath.id AS pathid,     filepath.path AS path,     fileindex.revnum AS revnum,     fileindex.node AS node,     fileindex.p1rev AS p1rev,     fileindex.p2rev AS p2rev,     fileindex.linkrev AS linkrev,     fileindex.flags AS flags,     fileindex.deltaid AS deltaid,     fileindex.deltabaseid AS deltabaseid FROM filepath, fileindex WHERE fileindex.pathid=filepath.idsPRAGMA user_version=%dcC@sQ|jdjddjdgt|���t||gt|j����}g}d}x�|D]�\}	}
}|	}|
tkr�|j	|�}nC|
t
kr�|}n.|
tkr�tj	|�}nt
d|
��|j|�qcW||kr|||}n|j�}|j�tj||�}
t|
t�sMt|�}
n|
S(s&Resolve a delta chain for a file node.sWITH RECURSIVE     deltachain(deltaid, baseid) AS (        SELECT deltaid, deltabaseid FROM fileindex             WHERE pathid=? AND node=?         UNION ALL         SELECT fileindex.deltaid, deltabaseid             FROM fileindex, deltachain             WHERE                 fileindex.id=deltachain.baseid                 AND deltachain.baseid IS NOT NULL                 AND fileindex.id NOT IN ({stops})     ) SELECT deltachain.baseid, compression, delta FROM deltachain, delta WHERE delta.id=deltachain.deltaidtstopst,t?sunhandled compression type: %dN(texecutetformattjointlenttupletlisttkeystNonetCOMPRESSION_ZSTDt
decompresstCOMPRESSION_NONEtCOMPRESSION_ZLIBRtSQLiteStoreErrortappendtpoptreverseRtpatchest
isinstancetbytes(tdbtpathidtnodet
revisioncachetstopridstzstddctxtrestdeltastlastdeltabaseidtdeltabaseidtcompressiontdeltatbasetexttfulltext((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytresolvedeltachain�s2		%	

cC@sUy |jd|||f�jSWn.tjk
rP|jd|f�j�dSXdS(Ns=INSERT INTO delta (compression, hash, delta) VALUES (?, ?, ?)s!SELECT id FROM delta WHERE hash=?i(Rt	lastrowidtsqlite3tIntegrityErrortfetchone(R-R7thashR8((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytinsertdelta�sR&cB@seZRS((t__name__t
__module__(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR&st
revisionentrycB@steZej�Zej�Zej�Zej�Zej�Zej�Z	ej�Z
ej�Zej�ZRS((
RBRCRtibtridtrevR/tp1revtp2revtp1nodetp2nodetlinkrevtflags(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRDstslotstsqliterevisiondeltacB@szeZej�Zej�Zej�Zej�Zej�Zej�Z	ej�Z
ej�Zejdd�Z
RS(RN(RBRCRRER/RJRKtbasenodeRMtbaserevisionsizetrevisionR8R!tlinknode(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyROstfrozent
sqliteproblemcB@s>eZejdd�Zejdd�Zejdd�ZRS(RN(RBRCRRER!twarningRR/(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRU!stsqlitefilestorecB@s�eZdZd�Zd�Zd�Zd�Zd�Zdd%d�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd%d%d�Zd�Zd�Zeed�Zd�Zd�Zd�Zd%eeed�Zd�Zd%dd%d�Zd%ed�Zdd�Z d�Z!d�Z"d �Z#eeeeed!�Z$d"�Z%d%d%d#�Z&d%dd$�Z'RS(&s2Implements storage for an individual tracked path.cC@s�||_||_d|_i|_i|_i|_tjd�|_	||_
|dkr�tjdd�|_
tj�|_nd|_
d|_|j�dS(Ni
Rtleveli(t_dbt_pathR!t_pathidt
_revtonodet
_nodetorevt
_revisionsRtlrucachedictt_revisioncachet_compengineRtZstdCompressort_cctxtZstdDecompressort_dctxt
_refreshindex(tselfR-tpathR7((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt__init__,s									cC@s�i|_i|_i|_t|jjd|jf��}|sOd|_dS|dd|_|jjd|jf�}xt	|�D]�\}}|\}}}}}}	}
||kr�t
td���n|tkr�t
}n
|j|}|tkrt
}n
|j|}td|d|d|d|d	|d
|d|d|	d
|
�	}
||j|<||j|<|
|j|<q�WdS(Ns$SELECT id FROM filepath WHERE path=?isgSELECT id, revnum, node, p1rev, p2rev, linkrev, flags FROM fileindex WHERE pathid=? ORDER BY revnum ASCs1sqlite database has inconsistent revision numbersRFRGR/RHRIRJRKRLRM(R\R]R^RRYRRZR!R[t	enumerateR&RRRRD(RgR3titrowRFRGR/RHRIRLRMRJRKtentry((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRfFsF						
	
	

cC@s
t|j�S(N(RR^(Rg((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt__len__}scC@sttjt|j���S(N(titerRtxrangeRR^(Rg((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt__iter__�scC@s|tkrtS||jkS(N(RtFalseR](RgR/((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pythasnode�sicC@s"tjt|j�d|d|�S(Ntstarttstop(RtiterrevsRR^(RgRtRu((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytrevs�scC@sc|tkrttfS||jkrFtj||jtd���n|j|}|j|jfS(Nsno node(RR^RtLookupErrorRZRRJRK(RgR/Rm((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytparents�s
!
cC@sX|tkrttfS||jkr4t|��n|j|j|}|j|jfS(N(RR\t
IndexErrorR^RHRI(RgRGRm((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt
parentrevs�s
cC@sK|tkrtS||jkr@tj||jtd���n|j|S(Nsno node(RRR]RRxRZR(RgR/((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRG�s
!cC@s9|tkrtS||jkr.t|��n|j|S(N(RRR\Rz(RgRG((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR/�s
cC@stj|||j�S(N(RtfileidlookupRZ(RgR/((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytlookup�scC@sI|tkrtS||jkr.t|��n|j|j|}|jS(N(RR\RzR^RL(RgRGRm((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRL�scC@sG|tkrtS||jkr.t|��n|j|j|jt@S(N(RRrR\RzR^RMt
FLAG_CENSORED(RgRG((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt
iscensored�s
cC@sI|j|�}|j|�}tj|j||�}tj|j|�S(N(RGRtcommonancestorsheadsR{RtmaplistR/(Rgtnode1tnode2trev1trev2t	ancestors((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR��scC@stj||j|j�S(N(RtdescendantrevsRwR{(RgRw((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytdescendants�sc@s�|dkr.|dkr.t��s.tgSn|dk	rI�j|�nt}�fd�|pdgD�}tj�j�jd|d|�}g|D]}�j	|�^q�S(Nc@sh|]}�j|��qS((RG(t.0tn(Rg(s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pys	<setcomp>�s	tstartrevtstoprevs(
R!RRRGRRtheadrevssubsetRwR{R/(RgRtRuR�R�RwRG((Rgs7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytheads�s
!cC@sK|j|�}|jjd|j||f�}g|D]}|d^q7S(NsZSELECT  node   FROM filedata   WHERE path=? AND (p1rev=? OR p2rev=?)   ORDER BY revnum ASCi(RGRYRRZ(RgR/RGR3Rl((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytchildren�s
	cC@sp|tkrdS||jkr.t|��n|j|}|j|�r]t|j|��St|j|��S(Ni(RR\RztrenamedRtreadRR(RgRGR/((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytsize�s
c@s"|ttfkrdSt|t�r7�j|�}n|�jkrgtj|�jt	d���n|�j
kr��j
|S�fd��j
D�}|s�d|d<nt�j
�j|�j
|d�j�}�j|jttB@r�t}n|r�j||�|�j
|<n|S(Ntsno nodec@s#i|]}|�j|j�qS((R^RF(R�R�(Rg(s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pys
<dictcomp>s	i����R2(RRR+tintR/R]RRxRZRR`R!R;RYR[ReR^RMtFLAG_MISSING_P1tFLAG_MISSING_P2Rrt
_checkhash(RgR/trawt_verifyhashR1R:((Rgs7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRRs*!

	cC@stj|j|��S(N(RtfiltermetadataRR(RgR/((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�'scC@stj||�S(N(Rtfilerevisioncopied(RgR/((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�*scC@stj|||�S(N(Rtfiledataequivalent(RgR/R:((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytcmp-sc
c@s&|dkr"tjd|��ng|D]}|tkr)|^q)}|sQdS|jjddjdgt|��t|j	g|��}i}xF|D]>\}	}
|jjd|j	|
f�}|j
�d	||	<q�Wx@tj|||t
d
|jd|d|d
|�D]}|VqWdS(NtnodesRtlinears"unhandled value for nodesorder: %ssISELECT revnum, deltaid FROM fileindex WHERE pathid=?     AND node in (%s)RRs9SELECT revnum from fileindex WHERE pathid=? AND deltaid=?it
deltaparentfntrevisiondatatassumehaveparentrevisionst
deltaprevious(R�RR�N(R!RtProgrammingErrorRRYRRRRR[R?Rt
emitrevisionsROt__getitem__(RgR�t
nodesorderR�R�R�R�R3t
deltabasesRGtdeltaidR8((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�0s.	
%				
cC@sC|s|jd�r*tj||�}n|j|||||�S(Ns
(t
startswithRtpackmetataddrevision(RgtfiledatatmetattransactionRLtp1tp2((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytaddXsc	
C@s�|rttd���n|dk	}	|p?tj|||�}|	ra|j||||�n||jkrt|S|j||||||�}||j|<|S(Ns flags not supported on revisions(	R&RR!Rthashrevisionsha1R�R]t_addrawrevisionR`(
RgR�R�RLR�R�R/RMt
cachedeltatvalidatehash((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�^s
c@s9g}x,|D]$\}}}	}
}}}
d}|
tj@rH|tO}n|
tj@retd��n|r�|tkr��j|�r�t}|tO}n|	tkr��j|	�r�t}	|tO}q�n�j|�}|t	krm�j
|�rmtjd�}t
�j|dtdt��}t
|�|}|| tj||�krmtj�j|��qmn|t@r�tj||�fd��r�|tO}n||
�}|j|�|�jkr��j|}|jt@rF|tkrF||_�j||_|jtM_�jjd�j||j|j f�n|jt@r
|	tkr
|	|_!�j|	|_"|jtM_�jjd�j||j|j f�q
q
n|tkr�tj#d	|�}d}nd}||f}�j%||||||	d
|d|�|r
|�|�q
q
W|S(Nisunhandled revision flags>lllR�R�c@st�j|dt��S(NR�(RRRtTrue(tx(Rg(s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt<lambda>�R�s0UPDATE fileindex SET p1rev=?, flags=? WHERE id=?s0UPDATE fileindex SET p2rev=?, flags=? WHERE id=?R�t
storedeltaRM(&RtREVISION_FLAG_CENSOREDR~R&RRsR�R�RGRRtstructtcalcsizeRRRR�RrRtreplacediffheaderRtCensoredBaseErrorRZRtdeltaiscensoredR'R^RMRJR]RHRYRRFRKRItpatchR!R�(RgR4t
linkmapperR�t
addrevisioncbtmaybemissingparentsR�R/R�R�RSt	deltabaseR8t	wireflagst
storeflagstbaserevthlentoldlentnewlenRLRmttextR�((Rgs7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytaddgrouprsp"





		 		 	
R�c	C@s|tji|d6d�}t|�t|j|dt��krXtjtd���n|jj	d|j
|jf�j�d}t
|jj	d||f��}x:|D]2}|\}}}	t|j||	iidd6d	|j�}
tj|
�j�}|jd
kr+|jj|
�}t}
n[|jdkrRtj|
�}t}
n4|jdkrp|
}t}
ntjd
|j��t|�t|
�kr�|
}t}
nt|j|
||�}|jj	d||f�q�Wtj|�j�}t|jt||�}|j
|j}|tO}|jj	d|||j|f�|jj	d|f�|j �|j!j"�dS(NtcensoredR�R�s5censor tombstone must be no longer than censored datas(SELECT deltaid FROM fileindex WHERE id=?isGSELECT id, pathid, node FROM fileindex WHERE deltabaseid=? OR deltaid=?i����R2RRtnones unhandled compression engine: %ss;UPDATE fileindex SET deltaid=?, deltabaseid=NULL WHERE id=?sSUPDATE fileindex SET flags=?, deltaid=?, deltabaseid=NULL WHERE pathid=? AND node=?sDELETE FROM delta WHERE id=?(#RR�RRRR�RtAbortRRYRR^RFR?RR;R!Rethashlibtsha1tdigestRaRctcompressR"RR%R$R�RARMR~R[RfR`tclear(Rgttrt
censornodet	tombstonetcensoreddeltaidtrowsRlRFR.R/R:t	deltahasht	deltablobR7R�ttombstonedeltaidRM((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytcensorrevision�sX'	 
				
		
		

cC@sKtj|t|�dg|j�D]}|j|�^q#|j|j�S(Ni(RtresolvestripinfoRR�RGRLR{(RgtminlinkR�((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt
getstrippoints%cC@s�t|�sdS|j|�\}}|t|�kr;dSx<|j|�D]+}|jjd|j|j|�f�qKW|j�dS(Ns/DELETE FROM fileindex WHERE pathid=? AND node=?(RR�RwRYRR[R/Rf(RgR�R�RGt_ignored((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytstrip!s	cC@sgS(N((Rg((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytfiles7sc@s�i}|rg|d<n|r,g|d<n|rEt��|d<n|rqt�fd��jD��|d<n|r�d|d<n|S(Ntexclusivefilestsharedfilestrevisionscountc3@s$|]}t�j|��VqdS(N(RRR(R�R/(Rg(s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pys	<genexpr>Jsttrackedsizet
storedsize(RtsumR]R!(RgR�R�R�R�R�td((Rgs7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytstorageinfo:s


cc@s�t�|d<x|D]w}|j|�}y|j|�Wqtk
r�}tdtd�t|�|fd|�V|dj|�qXqWdS(NtskipreadRsunpacking %s: %sR/(tsetR/RRt	ExceptionRURRR�(RgtstateRGR/te((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytverifyintegritySs

cC@s�|dkr0|dkr0|j|�\}}n|tj|||�krOdSy|j|=Wntk
rpnXtj|�r�tj|j	||��nt
td�|j	��dS(Nsintegrity check failed on %s(R!RyRR�R`tKeyErrortiscensoredtextRtCensoredNodeErrorRZR&R(RgR:R/R�R�((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�ds
c	C@s�|jdkr9|jjd|jf�}	|	j|_n|ro|\}
}t|
t�r�|j|
�}
q�n?|}
|
t	kr�|}n$t
j|j|j
|
��|�}|
t	kr�d}n|j|
j}tj|�j�}
|jdkr|jj|�}t}n[|jdkr9tj|�}t}n4|jdkrW|}t}ntjd|j��t|�t|�kr�|}t}nt|j||
|�}t|�}|t	kr�t}n
|j|}|t	kr�t}n
|j|}|jjd|j||||||||f	�j}t d|d|d	|d
|d|d|d
|d|d|�	}||j|<||j!|<||j|<|S(Ns&INSERT INTO filepath (path) VALUES (?)RRR�s unhandled compression engine: %ss�INSERT INTO fileindex (    pathid, revnum, node, p1rev, p2rev, linkrev, flags,     deltaid, deltabaseid)     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)RFRGR/RHRIRJRKRLRM("R[R!RYRRZR<R+R�R/RRttextdiffRRRGR^RFR�R�R�RaRcR�R"RR%R$RR�RRARR]RDR\(RgR/R�R�RLR�R�R�RMR3R�R8tbaseidR�R�R7R�RGRHRIRFRm((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�vsr								
		
	
		


N((RBRCt__doc__RiRfRnRqRsR!RwRyR{RGR/R}RLRR�R�R�R�R�RrR�RRR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyRW(sP		7				
	
						
				
		&			'	US				tsqliterepositorycB@s)eZd�Zd�Zed��ZRS(cC@stS(N(Rr(Rg((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytcancopy�sc@sd�j�}tt��j||�}|r1|S�jjd��fd�}|jd|�|S(NsBEGIN TRANSACTIONc@s�jj�dS(N(t_dbconntcommit(R(Rg(s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytcommittransaction�stsqlitestore(tcurrenttransactiontsuperR�R�R�Rtaddfinalize(RgtargstkwargstcurrentR�R�((Rgs7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR��scC@sdtj�j}|jr9|jd|kr9|jdSnt|jjd��}||f|_|S(Niis	db.sqlite(t	threadingtcurrent_threadtidentRYtmakedbtsvfsR(RgttidR-((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR��s	(RBRCR�R�tpropertyR�(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR��s		cC@s�tj|�}t|_|jd�j�d}|dkrhxtD]}|j|�qDW|j�n$|tkrwnt	j
td���|jd�|S(s3Construct a database handle for a database at path.sPRAGMA user_versionis(sqlite database has unrecognized versionsPRAGMA journal_mode=WAL(R=tconnectR,ttext_factoryRR?t
CREATE_SCHEMAR�tCURRENT_SCHEMA_VERSIONRR�R(RhR-R3t	statement((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR�s	


cC@s^|jt�tr#|jt�n|jt�|jt�|jt�|jtj�dS(N(	R�tREQUIREMENTRtREQUIREMENT_ZSTDtREQUIREMENT_ZLIBtREQUIREMENT_NONEtREQUIREMENT_SHALLOW_FILESRtNARROW_REQUIREMENT(tuit	supported((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytfeaturesetups



cC@s�|ddkr|||�Sd|krAtjtd���ndddh}t|�|}|r�tjtd�djt|����nd	|d<|||�}|jt�|jd
d�}|dkr�t	r�tjtd
���n|dkr|jt
�nQ|dkr,|jt�n5|dkrH|jt�ntjtd�|��|j
d�r�|jt�n|S(Ntbackendtsqlitet
sharedrepos3shared repositories not supported with SQLite storetnarrowfilestshallowfilestores6SQLite store does not support repo creation option: %ss, trevlogv1Rssqlite.compressionRsjstorage.sqlite.compression set to "zstd" but zstandard compression not available to this Mercurial installRR�sDunknown compression engine defined in storage.sqlite.compression: %s(RR�RR�RtsortedR�RtconfigRRRRtgetR(torigRt
createoptstknowntunsupportedtrequirementsR7((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytnewreporequirements s8
	


tsqlitefilestoragecB@seZdZd�ZRS(s)Repository file storage backed by SQLite.cC@s�|ddkr|d}nt|jkr5d}nEt|jkrMd}n-t|jkred}ntjtd���t|j||�S(Nit/iRRR�sEunable to determine what compression engine to use for SQLite storage(	RR'RRRR�RRWR�(RgRhR7((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytfileWs
			(RBRCR�R+(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyR)TscK@sIt|kr/t|kr+|jtj�ntS|d|d||�SdS(s=Produce a type conforming to ``ilocalrepositoryfilestorage``.R'tfeaturesN(RRR�Rt!REPO_FEATURE_SHALLOW_FILE_STORAGER)(R#R'R,R((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytmakefilestoragegs
cK@sKt|kr;t|kr7tr7tjtd���ntS|d||�S(NsWrepository uses zstandard compression, which is not available to this Mercurial installR'(RRRRR�RR�(R#RR'R((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytmakemainqs
cO@s||||�t|_dS(N(Rrtwarnorphanstorefiles(R#RgRR((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytverifierinit{scC@sctjjt�tjtdt�tjtdt�tjtdt�tjt	j
dt�dS(NR(R.R/Ri(R
tfeaturesetupfuncsR�RR	twrapfunctionR(R.R/RtverifierR1(R((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pytextsetup�scC@st|t�rd|_ndS(N(R+R�R!RY(Rtrepo((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt	reposetup�s(NR�t
__future__RR�R=R�RRtmercurial.i18nRtmercurial.nodeRRRtmercurial.thirdpartyRt	mercurialRRRR	R
RRR
RRRtmercurial.utilsRRRt__version__tImportErrorR!tconfigtablet
configitemt
testedwithRRRRRRR$R"R%R~R�R�RR;RAtStorageErrorR&tstobjectRDtimplementertirevisiondeltaR�ROtiverifyproblemRUtifilestorageRWtlocalrepositoryR�RRR(tilocalrepositoryfilestorageR)R.R/R1R5R7(((s7/usr/lib64/python2.7/site-packages/hgext/sqlitestore.pyt<module>%s�	L


	

=		���%			4