
    `f
                         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n# e	$ r dZdZY nw xY wdZ
 G d d	e          ZdS )
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                      j        d	i | t          rt          st	          d          | j        j        }|                    dd           | _        |                    dd           | _	        |                    dd           | _
        |                    dd           | _        |                    dd           | _        | j        st	          d          |                    dd           | _        |                                 | _        d S )
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      D/var/www/html/env/lib/python3.11/site-packages/celery/backends/s3.pyr   zS3Backend.__init__   s   ""6""" 	<H 	<& (; < < <x} HH%6==((;55!%*<d!C!C%)XX.Dd%K%K"88K66 	>&'<===.$77 //11    c                 h    | j         r
| j         |z   n|}| j                            | j        |          S N)r   r   Objectr   )r    keykey_bucket_paths      r#   _get_s3_objectzS3Backend._get_s3_object5   s6    26.I$.3..c ''(8/JJJr$   c                    t          |          }|                     |          }	 |                                 |                                d                                         }| j        dk    r|n|                    d          S # t          j        j	        $ r$}|j
        d         d         dk    rY d }~d S |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*//11D0H<<44$++gBVBVV". 	 	 	~g&v.%77tttttK	s   A!B C B;9B;;C c                 z    t          |          }|                     |          }|                    |           d S )N)r,   )r   r*   put)r    r(   valuer8   s       r#   setzS3Backend.setE   s<    3'',,	5!!!!!r$   c                 v    t          |          }|                     |          }|                                 d S r&   )r   r*   delete)r    r(   r8   s      r#   r@   zS3Backend.deleteJ   s:    3'',,	r$   c                     t          j        | j        | j        | j                  }|                                t          d          |                    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   sh    -"4"&"<
 
 

 ""$$,&'=>>>43DEEEr$   )__name__
__module____qualname____doc__r   r*   r   r>   r@   r   __classcell__)r"   s   @r#   r   r      s         2 2 2 2 2,K K K
 
 
" " "
  
F F F F F F Fr$   r   )rK   kombu.utils.encodingr   celery.exceptionsr   baser   r   r   ImportError__all__r   r   r$   r#   <module>rR      s      - - - - - - 2 2 2 2 2 2 & & & & & &LLLOOOO   EHHH
 CF CF CF CF CF$ CF CF CF CF CFs    	++