o
    ;h                     @   s|   d dl Z d dlZd dlZG dd dZ	 G dd deZG dd deZG dd	 d	eZG d
d deZG dd deZ	dS )    Nc                	   @   s   e Zd ZdZdejddfddZejfdede	j
d	eddfd
dZde	jde	jfddZ	 ejfde	jd	edefddZdede	jfddZdS )BaseSerializerzThis is the base interface for all default serializers.

    BaseSerializer.load and BaseSerializer.dump will
    default to pickle.load and pickle.dump. This is currently
    used only by FileSystemCache which dumps/loads to/from a file stream.
    ereturnNc                 C   s   t d|  d S )Nz:An exception has been raised during a pickling operation: )loggingwarning)selfr    r   G/var/www/html/venv/lib/python3.10/site-packages/cachelib/serializers.py_warn   s   zBaseSerializer._warnvaluefprotocolc              
   C   sN   z
t ||| W d S  t jt jfy& } z| | W Y d }~d S d }~ww N)pickledumpPickleErrorPicklingErrorr
   )r   r   r   r   r   r   r   r	   r      s   zBaseSerializer.dumpc              
   C   D   zt |}W |S  t jy! } z| | W Y d }~d S d }~ww r   )r   loadr   r
   )r   r   datar   r   r   r	   r         
zBaseSerializer.loadc              
   C   sL   z	t ||}W |S  t jt jfy% } z| | W Y d }~|S d }~ww r   )r   dumpsr   r   r
   )r   r   r   Z
serializedr   r   r   r	   r   )   s   zBaseSerializer.dumpsbvaluec              
   C   r   r   )r   loadsr   r
   )r   r   r   r   r   r   r	   r   0   r   zBaseSerializer.loads)__name__
__module____qualname____doc__r   r   r
   HIGHEST_PROTOCOLint_tIOr   BinaryIOAnyr   bytesr   r   r   r   r   r	   r      s"    
	r   c                   @      e Zd ZdZdS )UWSGISerializerz"Default serializer for UWSGICache.Nr   r   r   r   r   r   r   r	   r&   C       r&   c                   @   r%   )SimpleSerializerz#Default serializer for SimpleCache.Nr'   r   r   r   r	   r)   G   r(   r)   c                   @   r%   )FileSystemSerializerz'Default serializer for FileSystemCache.Nr'   r   r   r   r	   r*   K   r(   r*   c                   @   sH   e Zd ZdZejfdejdede	fddZ
deje	 dejfddZd	S )
RedisSerializerz"Default serializer for RedisCache.r   r   r   c                 C   s   dt || S )zADumps an object into a string for redis, using pickle by default.   !)r   r   )r   r   r   r   r   r	   r   R   s   zRedisSerializer.dumpsc                 C   sd   |du rdS | dr!z
t|dd W S  tjy    Y dS w zt|W S  ty1   | Y S w )UThe reversal of :meth:`dump_object`. This might be called with
        None.
        Nr,      )
startswithr   r   r   r   
ValueErrorr   r   r   r   r	   r   V   s   

zRedisSerializer.loadsN)r   r   r   r   r   r   r    r#   r   r$   r   Optionalr   r   r   r   r	   r+   O   s    r+   c                       s.   e Zd ZdZdejdejf fddZ  ZS )DynamoDbSerializerz%Default serializer for DynamoDbCache.r   r   c                    s   |j }t |S )r-   )r   superr   r1   	__class__r   r	   r   k   s   zDynamoDbSerializer.loads)r   r   r   r   r    r#   r   __classcell__r   r   r5   r	   r3   h   s    "r3   )
r   r   typingr    r   r&   r)   r*   r+   r3   r   r   r   r	   <module>   s    4	