%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/duplicity/backends/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/azurebackend.cpython-312.pyc

�

�2e�����ddlZddlZddlZddlmZddlmZddlmZejd�Z	d�Z
Gd�dejj�Z
ejjd	e
�y)
�N)�config)�log)�BackendExceptionz)^[a-z0-9](?!.*--)[a-z0-9-]{1,61}[a-z0-9]$c�4�tj|�}|duS)z�
    Check, whether the given name conforms to the rules as defined in
    https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata
    for valid names.
    N)�_VALID_CONTAINER_NAME_RE�match)�namers  �A/usr/lib/python3/dist-packages/duplicity/backends/azurebackend.py�_is_valid_container_namer!s��
%�*�*�4�0�E�����c�F�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)�AzureBackendz0
    Backend for Azure Blob Storage Service
    c��tjjj||�	ddlm}|jjd�|_t|j�std��dtjvrtd��i}tj rtj |d<tj"rtj"|d	<tj$rtj"|d
<tjd}|j&|dfi|��|_|j+�y#t$r}tdt|�����d}~wwxYw)Nr)�BlobServiceClientzyAzure backend requires Microsoft Azure Storage SDK for Python
(https://pypi.org/project/azure-storage-blob/).
Exception: �/z*Invalid Azure Storage Blob container name.�AZURE_CONNECTION_STRINGz5AZURE_CONNECTION_STRING environment variable not set.�timeout�max_single_put_size�max_block_size)�	duplicity�backend�Backend�__init__�azure.storage.blobr�ImportErrorr�str�path�lstrip�container_namer�os�environrr�azure_max_single_put_size�azure_max_block_size�from_connection_string�blob_service�_get_or_create_container)�self�
parsed_urlr�e�kwargs�conn_strs      r
rzAzureBackend.__init__0s*�����!�!�*�*�4��<�	�<�)�o�o�4�4�S�9���'��(;�(;�<�"�#O�P�P�$�B�J�J�6�"�#Z�[�[����>�>� &���F�9���+�+�,2�,L�,L�F�(�)��&�&�'-�'G�'G�F�#�$��:�:�7�8��D�-�D�D�X�t�^�W]�^����%�%�'��9�	�"��!�!�f�X�'��
��	�s�D7�7	E�E�Ec�l�ddlm}	|jj|j�|_|j
j
�y#|$rYyt$rW}tjdt|�jdd�dztjj�Yd}~yd}~wwxYw)Nr)�ResourceExistsErrorz$Could not create Azure container: %s�
�)�azure.core.exceptionsr-r%�get_container_clientr�	container�create_container�	Exceptionr�
FatalErrorr�split�	ErrorCode�connection_failed)r'r-r)s   r
r&z%AzureBackend._get_or_create_containerTs���=�		�!�.�.�C�C�D�DW�DW�X�D�N��N�N�+�+�-��"�	���	��N�N�6��Q����d�A�9N�q�9Q�Q��
�
�/�/�
�
��	�s�AA
�
B3�B3�A
B.�.B3c�"�tj|�}i}tjrtj|d<|j	d�5}|j
j||fi|��ddd�|j|�y#1swY�xYw)N�max_concurrency�rb)r �fsdecoder�azure_max_connections�openr2�upload_blob�	_set_tier)r'�source_path�remote_filenamer*�datas     r
�_putzAzureBackend._putcs����+�+�o�6�����'�'�(.�(D�(D�F�$�%�
�
�
�d�
#�	H�t�&�D�N�N�&�&���G��G�	H�	
����'�	H�	H�s�B�Bc�z�tj�+|jjtj|�yy�N)r�azure_blob_tierr2�set_standard_blob_tier_blobs)r'rBs  r
r@zAzureBackend._set_tieros.���!�!�-��N�N�7�7��8N�8N�P_�`�.rc���|jj|�}|jd�5}|j|j	��ddd�y#1swYyxYw)N�wb)r2�
download_blobr>�write�readall)r'rB�
local_path�blob�
download_files     r
�_getzAzureBackend._getssM���~�~�+�+�O�<��
�_�_�T�
"�	0�m��������/�	0�	0�	0�s� A�Ac��g}|jj�}|D]}|j|��|D�cgc]}|j��c}Scc}wrF)r2�
list_blobs�appendr	)r'�blobs�	blob_listrOs    r
�_listzAzureBackend._listysN�����N�N�-�-�/�	��	�D��L�L���	�',�,�d��	�	�,�,��,s�Ac�`�|jjtj|��yrF)r2�delete_blobr r<)r'�filenames  r
�_deletezAzureBackend._delete�s�����"�"�2�;�;�x�#8�9rc��|jjtj|��}|j	�}dt|j�iS)N�size)r2�get_blob_clientr r<�get_blob_properties�intr])r'rZ�client�props    r
�_queryzAzureBackend._query�s@�����/�/����H�0E�F���)�)�+����D�I�I��'�'rc�6�tjjSrF)rr7�backend_not_found)r'�	operationr)s   r
�_error_codezAzureBackend._error_code�s���}�}�.�.�.rN)
�__name__�
__module__�__qualname__�__doc__rr&rDr@rQrWr[rcrg�rr
rr+s6���"(�H
�
(�a�0�-�:�(�
/rr�azure)r �re�duplicity.backendrrr�duplicity.errorsr�compilerrrrr�register_backendrlrr
�<module>rssc��,
�	����-�%�2�:�:�&R�S���a/�9�$�$�,�,�a/�H
���"�"�7�L�9r

Zerion Mini Shell 1.0