HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/jottacloudbackend.cpython-310.pyc
o

K�a.�@s~ddlZddlZddlmZddlmZddlZdd�Zdd�Zdd	�Z	d
d�Z
dd
�ZGdd�dejj
�Zej�de�dS)�N)�log)�BackendExceptioncCs"d}|jD]	}|jdkr|}q|S)N�Jotta)�devices�name)�jfs�jottadev�j�r
�F/usr/lib/python3/dist-packages/duplicity/backends/jottacloudbackend.py�get_jotta_device"s

�rcCst|�}|jd}|S)N�Archive)r�mountPoints)rr�root_dirr
r
r�get_root_dir*s
rcCst�d�}|�tt|��dS�N�jottalib)�logging�	getLogger�setLevel�getattr)�	log_level�loggerr
r
r�set_jottalib_logging_level0s
rcCs"t�d�}|D]}|�|�qdSr)rr�
addHandler)�handlersr�handlerr
r
r�set_jottalib_log_handlers5s
�rcCst�t���}|dkr
d}|S)zI Get the current duplicity log level as a stdlib-compatible logging level�NOTICE�INFO)r�	LevelName�getverbosity)�duplicity_log_levelr
r
r�get_duplicity_log_level;sr#c@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�JottaCloudBackendz,Connect to remote store using JottaCloud APIcCs�tjj�||�zddlm}ddlm}m}Wnt	y#t
d��wt�}t|�t
tjj�|��|_|�|j�d��|_t�d|jj�dS)Nr)�JFS)�JFSNotFoundError�JFSIncompleteFilezQJottaCloud backend requires jottalib (see https://pypi.python.org/pypi/jottalib).�/z#Jottacloud folder for duplicity: %r)�	duplicity�backend�Backend�__init__rr%�jottalib.JFSr&r'�ImportErrorrr#rrr�_loggerr�client�get_or_create_directory�path�lstrip�folder�Debug)�self�
parsed_urlr%r&r'r"r
r
rr,Is�
zJottaCloudBackend.__init__cCsDt|j�}t�|j|�}z|j�|�WSty!|�|�YSw�N)rr0�	posixpath�joinr2�	getObjectr&�mkdir)r6�directory_name�root_directory�	full_pathr
r
rr1as
�z)JottaCloudBackend.get_or_create_directorycCs,|j�|��|�}t�d|j||f�dS)Nzjottacloud.put(%s,%s): %s)r4�up�openrr5r)r6�source_path�remote_filename�respr
r
r�_putiszJottaCloudBackend._putcCsx|j�t�|jj|��}t�d||j|f�t	|jd��}|�
�D]}|�|�q"Wd�dS1s5wYdS)Nzjottacloud.get(%s,%s): %s�wb)r0r;r9r:r4r2rr5rrA�stream�write)r6rC�
local_path�remote_file�to_file�chunkr
r
r�_getos�"�zJottaCloudBackend._getcCstdd�|j��D��S)NcSs$g|]}|��s|jdkr|j�qS)�
INCOMPLETE)�
is_deleted�stater)�.0�fr
r
r�
<listcomp>|s�
�z+JottaCloudBackend._list.<locals>.<listcomp>)�listr4�files�r6r
r
r�_listxszJottaCloudBackend._listcCs>t�|jj|�}|j�|�}t�d|t|�f�|�	�dS)Nz#jottacloud.delete deleting: %s (%s))
r9r:r4r2r0r;rr5�type�delete�r6�filename�remote_pathrJr
r
r�_deleteszJottaCloudBackend._deletecCsTt�d|�t�|jj|�}z|j�|�}Wn
ty$ddiYSwd|j	iS)zGet size of filenamezQuerying size of %s�size���)
r�Infor9r:r4r2r0r;r&r^rZr
r
r�_query�s��zJottaCloudBackend._querycCsdSr8r
rVr
r
r�_close�szJottaCloudBackend._closeN)�__name__�
__module__�__qualname__�__doc__r,r1rErMrWr]rarbr
r
r
rr$Fs	r$�
jottacloud)rr9r)r�duplicity.errorsr�duplicity.backendrrrrr#r*r+r$�register_backendr
r
r
r�<module>sU