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/django/core/cache/backends/__pycache__/memcached.cpython-310.pyc
o

3�aR$�@s�dZddlZddlZddlZddlZddlmZmZmZm	Z	ddl
mZddlm
Z
Gdd�de�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZdS)zMemcached cache backend�N)�DEFAULT_TIMEOUT�	BaseCache�InvalidCacheKey�memcache_key_warnings)�RemovedInDjango41Warning)�cached_propertycs�eZdZ�fdd�Zedd��Zedd��Zefdd�Z	ed	fd
d�Z
d%dd
�Zed	fdd�Zed	fdd�Z
d&dd�Zd&dd�Zdd�Zd'dd�Zd'dd�Zed	fdd�Zd&dd �Zd!d"�Zd#d$�Z�ZS)(�BaseMemcachedCachecsTt��|�t|t�rt�d|�|_n||_||_||_|j	|_
|�d�p&i|_dS)Nz[;,]�OPTIONS)
�super�__init__�
isinstance�str�re�split�_servers�LibraryValueNotFoundException�_lib�Client�_class�get�_options)�self�server�params�library�value_not_found_exception��	__class__��F/usr/lib/python3/dist-packages/django/core/cache/backends/memcached.pyrs
zBaseMemcachedCache.__init__cCs|jS�N)r�rrrr�client_serverssz!BaseMemcachedCache.client_serverscCs|j|jfi|j��S)zQ
        Implement transparent thread-safe access to a memcached client.
        )rr"rr!rrr�_cache#szBaseMemcachedCache._cachecCsJ|tkr|j}|dur
dSt|�dkrd}|dkr!|tt���7}t|�S)z�
        Memcached deals with long (> 30 days) timeouts in a special
        way. Call this function to obtain a safe value for your timeout.
        Nr���i�')r�default_timeout�int�time)r�timeoutrrr�get_backend_timeout*sz&BaseMemcachedCache.get_backend_timeoutNcCs.|j||d�}|�|�|j�|||�|��S�N��version)�make_key�validate_keyr#�addr)�r�key�valuer(r,rrrr/Es
zBaseMemcachedCache.addcCs&|j||d�}|�|�|j�||�Sr*�r-r.r#r)rr1�defaultr,rrrrJs
zBaseMemcachedCache.getcCsB|j||d�}|�|�|j�|||�|��s|j�|�dSdSr*)r-r.r#�setr)�deleter0rrrr5Os

�zBaseMemcachedCache.setcCs0|j||d�}|�|�t|j�||�|���Sr*)r-r.�boolr#�touchr)�rr1r(r,rrrr8Vs
zBaseMemcachedCache.touchcCs(|j||d�}|�|�t|j�|��Sr*)r-r.r7r#r6�rr1r,rrrr6[s
zBaseMemcachedCache.deletecsN��fdd�|D���D]}��|�q�j�����}�fdd�|��D�S)Ncsi|]
}�j|�d�|�qS�r+�r-��.0r1�rr,rr�
<dictcomp>asz/BaseMemcachedCache.get_many.<locals>.<dictcomp>csi|]	\}}�||�qSrr)r>�k�v)�key_maprrr@e�)r.r#�	get_multi�keys�items)rrFr,r1�retr)rCrr,r�get_many`s
zBaseMemcachedCache.get_manycK�|j��dSr )r#�disconnect_all�r�kwargsrrr�closegszBaseMemcachedCache.close�cC�t|j||d�}|�|�|dkr|j�||�Sz	|j�||�}Wn|jy-d}Ynw|dur8td|��|S�Nr+rzKey '%s' not found)r-r.r#�decr�incrr�
ValueError�rr1�deltar,�valrrrrSk�
�zBaseMemcachedCache.incrcCrPrQ)r-r.r#rSrRrrTrUrrrrR|rXzBaseMemcachedCache.decrc	shi}i�|��D]\}}|j||d�}|�|�|||<|�|<q|j�||�|��}�fdd�|D�S)Nr+csg|]}�|�qSrr)r>rA��
original_keysrr�
<listcomp>�sz/BaseMemcachedCache.set_many.<locals>.<listcomp>)rGr-r.r#�	set_multir))	r�datar(r,�	safe_datar1r2�safe_key�failed_keysrrYr�set_many�s

zBaseMemcachedCache.set_manycs8��fdd�|D�}|D]}��|�q�j�|�dS)Ncsg|]	}�j|�d��qSr;r<r=r?rrr[�rDz2BaseMemcachedCache.delete_many.<locals>.<listcomp>)r.r#�delete_multi)rrFr,r1rr?r�delete_many�szBaseMemcachedCache.delete_manycCrJr )r#�	flush_allr!rrr�clear�szBaseMemcachedCache.clearcCst|�D]}t|��dSr )rr)rr1�warningrrrr.�s�zBaseMemcachedCache.validate_key�NNr )rON)�__name__�
__module__�__qualname__r�propertyr"rr#rr)r/rr5r8r6rIrNrSrRrarcrer.�
__classcell__rrrrrs(







rcs8eZdZdZdZ�fdd�Zd	dd�Zd
dd�Z�ZS)�MemcachedCachez;An implementation of a cache binding using python-memcachedNcsBtjdtdd�ddl}t�j|||td�dtji|j	�|_	dS)NzJMemcachedCache is deprecated in favor of PyMemcacheCache and PyLibMCCache.�)�
stacklevelr�rr�pickleProtocol)
�warnings�warnr�memcacher
rrT�pickle�HIGHEST_PROTOCOLr)rrrrtrrrr�s�zMemcachedCache.__init__cCs4|j||d�}|�|�|j�|�}|dur|S|Sr*r3)rr1r4r,rWrrrr�s
zMemcachedCache.getcCs.|j||d�}|�|�t|j�dgd|��S)Nr+sDELETEDr6)r-r.r7r#�_deletetouchr:rrrr6�s
zMemcachedCache.deletergr )	rhrirj�__doc__�_missing_keyrrr6rlrrrrrm�s
rmcsBeZdZdZ�fdd�Zedd��Zedfdd�Zd	d
�Z	�Z
S)�PyLibMCCachez2An implementation of a cache binding using pylibmccs"ddl}t�j||||jd�dS)Nrrp)�pylibmcr
r�NotFound)rrrr{rrrr�szPyLibMCCache.__init__cCs4g}|jD]}|�|�d�r|dd�n|�q|S)Nzunix:�)r�append�
startswith)r�outputrrrrr"�s
"zPyLibMCCache.client_serversNcCs@|j||d�}|�|�|dkr|j�|�S|j�||�|��S)Nr+r)r-r.r#r6r8r)r9rrrr8�s

zPyLibMCCache.touchcKsdSr rrLrrrrN�szPyLibMCCache.close)rhrirjrxrrkr"rr8rNrlrrrrrz�s
rzcs eZdZdZ�fdd�Z�ZS)�PyMemcacheCachez6An implementation of a cache binding using pymemcache.csBddl}t�j|||td�|jj|_dd|jjd�|j	�|_	dS)NrrpTF)�allow_unicode_keys�default_noreply�serde)
�pymemcache.serder
r�KeyErrorr�
HashClientrr��pickle_serder)rrr�
pymemcacherrrr�s
�
�zPyMemcacheCache.__init__)rhrirjrxrrlrrrrr��sr�)rxrurr'rr�django.core.cache.backends.baserrrr�django.utils.deprecationr�django.utils.functionalrrrmrzr�rrrr�<module>s'