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__/_cf_pyrax.cpython-310.pyc
o

�~�_z�@sXddlmZddlZddlZddlmZddlmZddlmZGdd�dej	j
�ZdS)�)�strN)�log)�util)�BackendExceptionc@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�PyraxBackendz8
    Backend for Rackspace's CloudFiles using Pyrax
    c
Cs<tjj�||�zddl}Wnty"}ztdt|���d}~ww|�dd�i}dt	j
vr4td��dt	j
vr=td��t	j
d|d	<t	j
d|d
<dt	j
vrWt	j
d|d<|j�d
�}z
|j
di|��Wn#ty�}zt�d|jjt�|�ftjj�WYd}~nd}~ww|jj|_|jj|_z
|j�|�|_WdS|jjy�}zt�d|jjt�|�fdddtjj �WYd}~dSd}~w|jj!�y}zDz	|j�"|�|_Wn,|jj�y
}zt�d|jjt�|�fdddtjj �WYd}~nd}~wwWYd}~dSWYd}~dSd}~ww)NrzPPyrax backend requires the pyrax library available from Rackspace.
Exception: %s�
identity_type�	rackspace�CLOUDFILES_USERNAMEz0CLOUDFILES_USERNAME environment variablenot set.�CLOUDFILES_APIKEYz/CLOUDFILES_APIKEY environment variable not set.�username�api_key�CLOUDFILES_REGION�region�/z7Connection failed, please check your credentials: %s %sz	%s : %s 
z,Container may exist, but access was denied.
zKIf this container exists, please check its X-Container-Read/Write headers.
z9Otherwise, please check your credentials and permissions.z3Container does not exist, but creation was denied.
zKYou may be using a read-only user that can view but not create containers.
z.Please check your credentials and permissions.�)#�	duplicity�backend�Backend�__init__�pyrax�ImportErrorrr�set_setting�os�environ�path�lstrip�set_credentials�	Exceptionr�
FatalError�	__class__�__name__r�uexc�	ErrorCode�connection_failed�
exceptions�ClientException�
client_exc�NoSuchObject�nso_exc�
cloudfiles�
get_container�	container�	Forbidden�backend_permission_denied�NoSuchContainer�create_container)�self�
parsed_urlr�e�conn_kwargsr+rr�>/usr/lib/python3/dist-packages/duplicity/backends/_cf_pyrax.pyr"s����


����

��������������zPyraxBackend.__init__cCsZt||j�r
tjjSt||j�r|jdkrtjjSdSt|d�r)|jdkr+tjjSdSdS)Ni��http_status)	�
isinstancer(rr"�backend_not_foundr&�code�hasattrr5)r0�	operationr2rrr4�_error_code^s
�

�zPyraxBackend._error_codecCs|j�|j|�dS�N)r+�upload_file�name)r0�source_path�remote_filenamerrr4�_puthszPyraxBackend._putcCsL|j�|�}t|jd��}|�|���Wd�dS1swYdS)N�wb)r+�
get_object�openr>�write�get)r0r@�
local_path�sobject�frrr4�_getks"�zPyraxBackend._getcCsD|j��}|}t|�dkr |jj|dd�}||7}t|�dks
|S)Ni'���)�marker)r+�get_object_names�len)r0�objs�keysrrr4�_listps
�zPyraxBackend._listcCs|j�|�dSr<)r+�
delete_object)r0�filenamerrr4�_deletezszPyraxBackend._deletecCs|j�|�}d|jiS)N�size)r+rC�total_bytes)r0rSrHrrr4�_query}s
zPyraxBackend._queryN)r �
__module__�__qualname__�__doc__rr;rArJrQrTrWrrrr4rs<

r)�builtinsrr�duplicity.backendrrr�duplicity.errorsrrrrrrrr4�<module>s