
    `f                         d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ dZd	gZd
ZdZ e	d          Zd Zd Z G d d          Zeeed dZ G d de          Zd	S )z-Memcached and in-memory cache result backend.    )bytes_to_strensure_bytes)cached_property)ImproperlyConfigured)LRUCache   )KeyValueStoreBackend)CacheBackendNzBThe Memcached backend requires either pylibmc or python-memcached.zYThe cache backend {0!r} is unknown,
Please use one of the following backends instead: {1}i  )limitc                      t           d         Vdt          }} 	 dd l}d} n8# t          $ r+ 	 dd l}n"# t          $ r t          t                    w xY wY nw xY w| ||ft           d<   t           d         S )Nr   FT)_impr   pylibmcImportErrormemcacher   REQUIRES_BACKEND)
is_pylibmcmemcache_key_tr   s      G/var/www/html/env/lib/python3.11/site-packages/celery/backends/cache.pyimport_best_memcacher      s    Aw%*LN
	=&&&&JJ 	= 	= 	== = = =*+;<<<=  	=
 x8Q7Ns#    
A/AAAAc                  P    t                      \  }}}|j        x}|sfd}||fS )Nc                  @    |                     dd             | i |S )N	behaviors)pop)argskwargs_Clients     r   Clientz!get_best_memcache.<locals>.Client2   s,    JJ{D)))7D+F+++    )r   r   )r   r   r   r   key_tr   r   s         @r   get_best_memcacher    +   sP     #7"8"8J%&FW ,	, 	, 	, 	, 	, 5=r   c                   :    e Zd Zd Zd Zd Zd Zd Zd
dZd Z	d	S )DummyClientc                     t           | _        d S N)_DUMMY_CLIENT_CACHEcache)selfr   r   s      r   __init__zDummyClient.__init__;   s    (


r   c                 6    | j                             |          S r$   )r&   getr'   keyr   r   s       r   r*   zDummyClient.get>   s    z~~c"""r   c                 .    | j         fd|D             S )Nc                 *    i | ]}|v ||         S  r/   ).0kr&   s     r   
<dictcomp>z)DummyClient.get_multi.<locals>.<dictcomp>C   s$    888Q%ZZ58ZZZr   r&   )r'   keysr&   s     @r   	get_multizDummyClient.get_multiA   s$    
8888T8888r   c                     || j         |<   d S r$   r3   )r'   r,   valuer   r   s        r   setzDummyClient.setE   s    
3r   c                 <    | j                             |d            d S r$   )r&   r   r+   s       r   deletezDummyClient.deleteH   s    
sD!!!!!r   r   c                 8    | j                             ||          S r$   )r&   incr)r'   r,   deltas      r   r<   zDummyClient.incrK   s    zsE***r   c                     d S r$   r/   )r'   r,   expires      r   touchzDummyClient.touchN   s    r   N)r   )
__name__
__module____qualname__r(   r*   r5   r8   r:   r<   r@   r/   r   r   r"   r"   9   s        ) ) )# # #9 9 9     " " "+ + + +    r   r"   c                      t           t          fS r$   )r"   r   r/   r   r   <lambda>rE   V   s    {L1 r   )r   	memcachedr   memoryc                        e Zd ZdZdZdZdZdZ	 	 d fd	Zd Z	d Z
d Zd Z fd	Zd
 Zd Zed             Zd fd	Zd Z xZS )r
   zCache result backend.NTc           	         |si n|} t                      j        |fi | || _        t          | j        j        j        fi || _        |p|p| j        j        j        | _	        | j	        rP| j	        
                    d          \  | _	        }}|                    d                              d          | _        |                     |t                    | _        	 t#          | j	                             \  | _        | _        nS# t(          $ rF t+          t,                              | j	        d                    t"                                        w xY w|                                  d S )N:///;)typez, )superr(   urldictappconfcache_backend_optionsoptionscache_backendbackend	partitionrstripsplitserversprepare_expiresintexpiresbackendsr   r   KeyErrorr   UNKNOWN_BACKENDformatjoin_encode_prefixes)
r'   rQ   r]   rV   rT   rO   r   _rZ   	__class__s
            r   r(   zCacheBackend.__init__b   si   #0""'''''DHM? ' '%' ' DgD)D< 	:'+|'='=e'D'D$DL!W">>#..44S99DL++G#+>>	4&.t|&<&>&>#DK 	4 	4 	4&'='=dii11(3 (3 4 4 4	4 	s   &D AEc                 6    | j                             |          S r$   )clientr*   r'   r,   s     r   r*   zCacheBackend.getw   s    {s###r   c                 6    | j                             |          S r$   )rg   r5   )r'   r4   s     r   mgetzCacheBackend.mgetz   s    {$$T***r   c                 D    | j                             ||| j                  S r$   )rg   r8   r]   r'   r,   r7   s      r   r8   zCacheBackend.set}   s    {sE4<888r   c                 6    | j                             |          S r$   )rg   r:   rh   s     r   r:   zCacheBackend.delete   s    {!!#&&&r   c                     |                      |d                   }| j                            |d| j                    t	                      j        ||fi |S )Nr   )time)get_key_for_chordrg   r8   r]   rN   _apply_chord_incr)r'   header_result_argsbodyr   	chord_keyre   s        r   rq   zCacheBackend._apply_chord_incr   se    **+=a+@AA		14<888(uww(0 0(.0 0 	0r   c                 6    | j                             |          S r$   )rg   r<   rh   s     r   r<   zCacheBackend.incr   s    {$$$r   c                 8    | j                             ||          S r$   )rg   r@   rl   s      r   r?   zCacheBackend.expire   s    {  e,,,r   c                 2     | j         | j        fi | j        S r$   )r   rZ   rT   )r'   s    r   rg   zCacheBackend.client   s     t{4<884<888r   r/   c                     |si n|}d                     | j                  }| j         d| d}|                    || j        | j        d           t                                          ||          S )NrL   rJ   rK   )rV   r]   rT   )rb   rZ   rV   updater]   rT   rN   
__reduce__)r'   r   r   rZ   rV   re   s        r   rz   zCacheBackend.__reduce__   s    !-v((4<((\00g000& &	' 	' 	' ww!!$///r   c                 P    d                     | j                  }| j         d| dS )zcReturn the backend as an URI.

        This properly handles the case of multiple servers.
        rL   rJ   rK   )rb   rZ   rV   )r'   r   r   rZ   s       r   as_urizCacheBackend.as_uri   s0    
 ((4<((,--7----r   )NNNN)r/   N)rA   rB   rC   __doc__rZ   supports_autoexpiresupports_native_joinimplements_incrr(   r*   rj   r8   r:   rq   r<   r?   r   rg   rz   r|   __classcell__)re   s   @r   r
   r
   Z   s       GO26#'           *$ $ $+ + +9 9 9' ' '0 0 0 0 0% % %- - - 9 9 _90 0 0 0 0 0. . . . . . .r   r
   )r}   kombu.utils.encodingr   r   kombu.utils.objectsr   celery.exceptionsr   celery.utils.functionalr   baser	   __all__r   r   r`   r%   r   r    r"   r^   r
   r/   r   r   <module>r      s=   3 3 ; ; ; ; ; ; ; ; / / / / / / 2 2 2 2 2 2 , , , , , , & & & & & &
v  hT***            4 "" 11	 I. I. I. I. I.' I. I. I. I. I.r   