File: //usr/lib64/python3.9/site-packages/borg/__pycache__/archive.cpython-39.pyc
a
HZ�h�� � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm Z d dl
mZmZ d dl
mZ d dlmZ d dlmZ d dlmZmZ d d lmZ d
dlmZmZmZmZ d
dlmZ e� Zd
d
lm Z d
dl!m"Z"m#Z# d
dl$m%Z% d
dl&m'Z'm(Z( d
dl)m*Z*m+Z+ d
dl,T d
dl-m.Z/ d
dl0m1Z1m2Z2m3Z3 d
dl4m5Z5 d
dl4m6Z6 d
dl4m7Z7m8Z8m9Z9 d
dl4m:Z:m.Z.m;Z; d
dl<m=Z=m>Z>m?Z?m@Z@ d
dl4mAZAmBZB d
dl4mCZCmDZDmEZEmFZFmGZG d
dl4mHZHmIZImJZJmKZK d
dl4mLZL d
dl4mMZM d
dl4mNZN d
d l4mOZOmPZPmQZQ d
d!l4mRZRmSZSmTZT d
d"l4mUZU d
d#l4mVZV d
d$l4mWZW d
d%l4mXZX d
d&lYmZZZ d
d'l[m\Z\m]Z]m^Z^ d
d(l_m`Z`maZambZb d
d)l<mcZcmdZdmeZemfZfmgZgmhZh d
d*limjZj d
d+lkmlZlmmZm ened,�ZoG d-d.� d.�Zpd/d0� ZqG d1d2� d2er�ZsG d3d4� d4er�ZtG d5d6� d6�Zueu� Zvd7d8� Zwd9d:� Zxe dddd;d<d=�d>d?��ZyG d@dA� dA�ZzG dBdC� dC�Z{G dDdE� dEe{�Z|ddd d dF�dGdH�Z}G dIdJ� dJ�Z~G dKdL� dL�ZeZdMdNdO� dP�Z�dQdR� Z�G dSdT� dT�Z�G dUdV� dV�Z�G dWdX� dX�Z�dYdZ� Z�G d[d\� d\�Z�G d]d^� d^�Z�G d_d`� d`�Z�dS )a� N)�OrderedDict)�contextmanager)�timezone� timedelta)�partial)�getuser)�BytesIO)�groupby�zip_longest)�get_terminal_size� )�is_win32�is_linux�
is_freebsd� is_darwin)�
create_logger)�xattr)�get_chunker�Chunk��ChunkListEntry)�key_factory�UnsupportedPayloadError)�
Compressor�CompressionSpec)�*)�IntegrityError)�
ChunkIndex�ChunkIndexEntry�CacheSynchronizer)�Manifest��hardlinkable)�ChunkIteratorFileWrapper�normalize_chunker_params� open_item)�Errorr �set_ec)�uid2user�user2uid� gid2group� group2gid)�parse_timestamp�to_localtime)�OutputTimestamp�format_timedelta�format_file_size�file_status�FileSize)�safe_encode�safe_decode�make_path_safe�remove_surrogates)�
StableDict)�
bin_to_hex)�safe_ns)�ellipsis_truncate�ProgressIndicatorPercent� log_multi)�os_open�flags_normal� flags_dir)�os_stat)�msgpack)�sig_int)�utcnow)�LRUCache)�PathPrefixPattern�FnmatchPattern� IECommand)�Item�ArchiveItem�ItemDiff)�acl_get�acl_set� set_flags� get_flags�swidth�hostname)�cache_if_remote)�
Repository�LIST_SCAN_LIMIT�linkc @ s� e Zd Zddd�Zddd�Zdd� ZdZd d
� Zdd� Zd
d� Z dd� Z
edd� �Ze
dd� �Ze
dd� �Ze
dd� �Zddd�ZdS )�
StatisticsFc C sF || _ || _d | _ | _ | _| _d | _ | _ | _| _ d| _
d S �Nr )�output_json�iec�osize�csize�usize�nfiles�osize_parts�csize_parts�usize_parts�nfiles_parts�
last_progress)�selfrW rX � rc �2/usr/lib64/python3.9/site-packages/borg/archive.py�__init__: s
zStatistics.__init__c C sf |s4| j |7 _ | j|7 _|rb| j|7 _n.| j|7 _| j|7 _|rb| j|7 _d S �N)rY rZ r[ r] r^ r_ )rb �sizerZ �unique�partrc rc rd �updateA s zStatistics.updatec C s� t |t�std��t| j| j�}| j|j |_| j|j |_| j|j |_| j|j |_| j |j |_ | j
|j
|_
| j|j |_| j|j |_|S )Nzcan only add Statistics objects)
�
isinstancerU � TypeErrorrW rX rY rZ r[ r\ r] r^ r_ r` )rb �other�statsrc rc rd �__add__M s
zStatistics.__add__zO{label:15} {stats.osize_fmt:>20s} {stats.csize_fmt:>20s} {stats.usize_fmt:>20s}c C s | j j| dd�S )Nz
This archive:)rn Zlabel)�summary�format�rb rc rc rd �__str__] s zStatistics.__str__c C s dj t| �jt| �| d�S )NzF<{cls} object at {hash:#x} ({self.osize}, {self.csize}, {self.usize})>)�cls�hashrb )rq �type�__name__�idrr rc rc rd �__repr__` s �zStatistics.__repr__c C s4 t | j| jd�t | j| jd�t | j| jd�| jd�S )N�rX )Z
original_sizeZcompressed_sizeZdeduplicated_sizer\ )r2 rY rX rZ r[ r\ rr rc rc rd �as_dictd s
�zStatistics.as_dictc C s | j | j| j| j| j| jd�S )N�rg rZ r\ �
size_partsr^ r` �rY rZ r\ r] r^ r` rr rc rc rd �as_raw_dictl s �zStatistics.as_raw_dictc K sF | � }|d |_ |d |_|d |_|d |_|d |_|d |_|S )Nrg rZ r\ r} r^ r` r~ )rt �kwrb rc rc rd �
from_raw_dictv s
zStatistics.from_raw_dictc C s t | j| jd�S �Nrz )r0 rY rX rr rc rc rd � osize_fmt� s zStatistics.osize_fmtc C s t | j| jd�S r� )r0 r[ rX rr rc rc rd � usize_fmt� s zStatistics.usize_fmtc C s t | j| jd�S r� )r0 rZ rX rr rc rc rd � csize_fmt� s zStatistics.csize_fmtNc
C s t �� }|d u s || j |k�r|| _| jrz|sP| �� }t|rD|jnd�|d<