File: //lib/python3/dist-packages/hgext/remotefilelog/__pycache__/contentstore.cpython-310.pyc
o
�]Lb�3 � @ s� d dl mZ d dlZd dlmZmZ d dlmZ d dlm Z m
Z
mZ ddlm
Z
mZmZ G dd � d e�ZG d
d� de
j�ZG dd
� d
e
j
�ZG dd� de�ZG dd� de�ZdS )� )�absolute_importN)�hex�sha1nodeconstants)�getattr)�mdiff�pycompat�revlog� )� basestore� constants�shallowutilc @ s$ e Zd ZdZdZdZdZdZdZdS )�
ChainIndiciesz>A static class for easy reference to the delta chain indicies.r r � � � N) �__name__�
__module__�__qualname__�__doc__�NAME�NODE�BASENAME�BASENODE�DATA� r r �B/usr/lib/python3/dist-packages/hgext/remotefilelog/contentstore.pyr
s r
c s� e Zd Z� fdd�Zdd� Zejjdd� �Zdd� Z ejjd d
� �Z
dd� Zejjd
d� �Zdd� Z
dd� Zdd� Zddd�Z� ZS )�unioncontentstorec s: t t| �j|i |�� || _|�d�| _|�dd�| _d S )N�
writestore�allowincompleteF)�superr �__init__�stores�getr r ��self�args�kwargs�� __class__r r r ) s zunioncontentstore.__init__c C sj | � ||�}|d tj tjkrt|t|�f��|�� tj }|}|r3|�� tj }t �
||g�}|s#|S )a Fetches the full text revision contents of the given name+node pair.
If the full text doesn't exist, throws a KeyError.
Under the hood, this uses getdeltachain() across all the stores to build
up a full chain to produce the full text.
���)�
getdeltachainr
r r �nullid�KeyErrorr �popr r �patches)r$ �name�node�chain�fulltext�text�deltar r r r"