o
    ]f-                     @   sl   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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   M/home/ubuntu/webapp/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   
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 )zDumps an object into a string for redis. By default it serializes
        integers as regular string and pickle dumps everything else.
           !)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 )zUThe reversal of :meth:`dump_object`. This might be called with
        None.
        Nr-      )
startswithr   r   r   r    
ValueError)r   r   r   r   r	   r   X   s   

zRedisSerializer.loadsN)r   r   r   r   r   r   r!   r$   r    r%   r   Optionalr   r   r   r   r	   r,   O   s    r,   )	r   r   typingr!   r   r'   r*   r+   r,   r   r   r   r	   <module>   s    4	