
    h
                     v    d Z ddlmZ ddlmZ ddlmZ 	 ddlZddlZdZ
 G d d	e      Zy# e	$ r dZdZY w xY w)
zs3 result store backend.    )bytes_to_str)ImproperlyConfigured   )KeyValueStoreBackendN)	S3Backendc                   @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )r   a0  An S3 task result store.

    Raises:
        celery.exceptions.ImproperlyConfigured:
            if module :pypi:`boto3` is not available,
            if the :setting:`aws_access_key_id` or
            setting:`aws_secret_access_key` are not set,
            or it the :setting:`bucket` is not set.
    c                    t        |   d	i | t        rt        st	        d      | j
                  j                  }|j                  dd       | _        |j                  dd       | _	        |j                  dd       | _
        |j                  dd       | _        |j                  dd       | _        | j                  st	        d      |j                  dd       | _        | j                         | _        y )
Nz'You must install boto3to use s3 backends3_endpoint_url	s3_regions3_access_key_ids3_secret_access_key	s3_bucketzMissing bucket names3_base_path )super__init__boto3botocorer   appconfgetendpoint_url
aws_regionaws_access_key_idaws_secret_access_keybucket_name	base_path_connect_to_s3_s3_resource)selfkwargsr   	__class__s      N/var/www/Befach/backend/env/lib/python3.12/site-packages/celery/backends/s3.pyr   zS3Backend.__init__   s    "6"H& (; < <xx}} HH%6=((;5!%*<d!C%)XX.Dd%K"88K6&'<==.$7 //1    c                     | j                   r| j                   |z   n|}| j                  j                  | j                  |      S N)r   r   Objectr   )r    keykey_bucket_paths      r#   _get_s3_objectzS3Backend._get_s3_object5   s7    26..$..3.c  ''(8(8/JJr$   c                 d   t        |      }| j                  |      }	 |j                          |j                         d   j	                         }| j
                  dk(  r|S |j                  d      S # t        j                  j                  $ r!}|j                  d   d   dk(  rY d }~y |d }~ww xY w)NBodybinaryzutf-8ErrorCode404)r   r*   loadr   readcontent_encodingdecoder   
exceptionsClientErrorresponse)r    r(   	s3_objectdataerrors        r#   r   zS3Backend.get9   s    3'',		NN==?6*//1D00H<4V$++gBVV"".. 	~~g&v.%7K	s$   AA1  A1 1B/B*(B**B/c                 `    t        |      }| j                  |      }|j                  |       y )N)r,   )r   r*   put)r    r(   valuer8   s       r#   setzS3Backend.setE   s*    3'',	5!r$   c                 \    t        |      }| j                  |      }|j                          y r&   )r   r*   delete)r    r(   r8   s      r#   r@   zS3Backend.deleteJ   s(    3'',	r$   c                     t        j                  | j                  | j                  | j                        }|j                         t        d      |j                  d| j                        S )N)r   r   region_namezMissing aws s3 credss3)r   )	r   Sessionr   r   r   get_credentialsr   resourcer   )r    sessions     r#   r   zS3Backend._connect_to_s3O   sb    --"44"&"<"<

 ""$,&'=>>43D3DEEr$   )__name__
__module____qualname____doc__r   r*   r   r>   r@   r   __classcell__)r"   s   @r#   r   r      s(    2,K
"

Fr$   r   )rK   kombu.utils.encodingr   celery.exceptionsr   baser   r   r   ImportError__all__r   r   r$   r#   <module>rR      sO     - 2 & CF$ CF  EHs   , 	88