HEX
Server: Apache
System: Linux p102.lithium.hosting 4.18.0-553.141.1.el8_10.x86_64 #1 SMP Fri Jul 10 17:48:02 UTC 2026 x86_64
User: bvzmoamr (9955)
PHP: 8.1.34
Disabled: syslog
Upload Files
File: //proc/self/root/usr/lib/python3.6/site-packages/pyzor/engines/__pycache__/redis_.cpython-36.pyc
3

�Ugb[�@s�dZddlZddlZddlZddlZyddlZdZWnek
rPdZdZYnXddlTdZ	de	Z
dd	�Zd
d�Zdd
�Z
Gdd�de�ZGdd�de�Zes�eddddd�Zneeeded�ZdS)zRedis database engine.�NTF)�*�1zpyzord.digest_v%scCs|dkrdSttj|j���S)z"Convert the date to Unix TimestampNr)�int�timeZmktimeZ	timetuple)Zdate�r�/usr/lib/python3.6/redis_.py�encode_datesrcCs t|�}|dkrdStjj|�S)z/Return a datetime object from a Unix Timestamp.rN)r�datetimeZ
fromtimestamp)Zstamprrr�decode_datesr
cs�fdd�}|S)z?Decorator that wraps a method for handling database operations.csVy�|f|�|�Stjjk
rP}z |jjd�j|�td��WYdd}~XnXdS)Nz Redis error while calling %s: %sz!Database temporarily unavailable.)�redis�
exceptionsZ
RedisError�log�error�__name__Z
DatabaseError)�self�args�kwargs�e)�frr�	wrapped_f's
zsafe_call.<locals>.wrapped_fr)rrr)rr�	safe_call$s
rc@s�eZdZdZdZejd�Zd%dd�Ze	dd��Z
e	d	d
��Zdd�Zd
d�Z
dd�Zdd�Ze	dd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd ��Zed&d!d"��Zd#d$�ZdS)'�
RedisDBHandleFTZpyzordNcCsd||_||_|jd�}|dp d|_|dp.d|_|dp<d|_|dpJd|_|j�|_|j	�dS)	N�,rZ	localhost�Z6379���0)
�max_age�_dsn�split�host�port�passwd�db_name�_get_new_connection�db�_check_version)r�fn�moderrrr�__init__:s

zRedisDBHandle.__init__cCs.|jt|j�t|j�|jt|j�t|j�d�S)N)�r_count�	r_entered�	r_updated�wl_count�
wl_entered�
wl_updated)r*rr+r,r-r.r/)�rrrr�_encode_recordHszRedisDBHandle._encode_recordc
Csf|s
t�Stt|jdd��t|jdd��t|jdd��t|jdd��t|jdd��t|jdd��d�S)	Nsr_countrs	r_entereds	r_updatedswl_counts
wl_entereds
wl_updated)r*r+r,r-r.r/)ZRecordr�getr
)r0rrr�_decode_recordRszRedisDBHandle._decode_recordccs2x,|jj|jd��D]}|jdd�dVqWdS)Nr�.r���)r%�keys�	_real_key�rsplit)r�keyrrr�__iter__]szRedisDBHandle.__iter__ccsXxR|D]J}y|||fVWqtk
rN}z|jjd||�WYdd}~XqXqWdS)NzInvalid record %s: %s)�	Exceptionr
Zwarning)rr9Zexrrr�
_iteritemsas

zRedisDBHandle._iteritemscCs|j�S)N)r<)rrrr�	iteritemshszRedisDBHandle.iteritemscCst|j��S)N)�listr<)rrrr�itemskszRedisDBHandle.itemscCsdt|fS)Nz%s.%s)�	NAMESPACE)r9rrrr7nszRedisDBHandle._real_keycCsFd|jkr$tj|jt|j�|jd�Stj|jt|j�t|j�|jd�S)N�/)Zunix_socket_pathr%�password)r r!r%rB)r rZStrictRedisrr#r"r!)rrrrr$rs

z!RedisDBHandle._get_new_connectioncCs|j|jj|j|���S)N)r3r%Zhgetallr7)rr9rrr�__getitem__zszRedisDBHandle.__getitem__cCs<|j|�}|jj||j|��|jdk	r8|jj||j�dS)N)r7r%Zhmsetr1r�expire)rr9�value�real_keyrrr�__setitem__~s

zRedisDBHandle.__setitem__cCs|jj|j|��dS)N)r%�deleter7)rr9rrr�__delitem__�szRedisDBHandle.__delitem__cCslttj��}xZ|D]R}|j|�}|jj|d�|jj|d|�|jj|d|�|jr|jj||j�qWdS)Nr*r+r,)	rrr7r%�hincrby�hsetnx�hsetrrD)rr6�nowr9rFrrr�report�s

zRedisDBHandle.reportcCslttj��}xZ|D]R}|j|�}|jj|d�|jj|d|�|jj|d|�|jr|jj||j�qWdS)Nr-r.r/)	rrr7r%rJrKrLrrD)rr6rMr9rFrrr�	whitelist�s

zRedisDBHandle.whitelistccsxtj||||d�VqWdS)z^Yields a number of database connections suitable for a Pyzor
        pre-fork server.
        )rN)�	functools�partial)�clsr'r(rrrr�get_prefork_connections�sz%RedisDBHandle.get_prefork_connectionscCsDt|jjd��}|r@d|j|jf}|jjd|�|jjd|�dS)z8Check if there are deprecated records and warn the user.zpyzord.digest.*z?pyzor-migrate --delete --se=redis_v0 --sd=%s --de=redis --dd=%szBYou have %s records in the deprecated version of the redis engine.z#Please migrate the records with: %rN)�lenr%r6rr
Zcritical)rZold_keys�cmdrrrr&�szRedisDBHandle._check_version)N)N)r�
__module__�__qualname__Zabsolute_sourceZhandles_one_step�loggingZ	getLoggerr
r)�staticmethodr1r3r:r<r=r?r7rr$rCrGrIrNrO�classmethodrSr&rrrrr4s(


rc@seZdZddd�ZdS)�ThreadedRedisDBHandleNcCstj||||d�dS)N)r)rr))rr'r(rZboundrrrr)�szThreadedRedisDBHandle.__init__)NN)rrVrWr)rrrrr[�sr[)Zsingle_threadedZmulti_threadedZmulti_processingZprefork)�__doc__rrXr	rPrZ
_has_redis�ImportErrorZpyzor.engines.common�VERSIONr@rr
rZ
BaseEnginerr[ZDBHandleZhandlerrrr�<module>s6
~