3
ãde„  ã               @   sj   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ejddœdd„Zejfee	j
eddœdd„Ze	je	jd	œd
d„Zejfe	jeedœdd„Zee	jdœdd„ZdS )ÚBaseSerializerzúThis 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.
    N)ÚeÚreturnc             C   s   t jd|› �ƒ d S )Nz:An exception has been raised during a pickling operation: )ÚloggingÚwarning)Úselfr   © r   úK/var/www/agendate/envp3/lib/python3.6/site-packages/cachelib/serializers.pyÚ_warn   s    zBaseSerializer._warn)ÚvalueÚfÚprotocolr   c             C   sL   yt j|||ƒ W n4 t jt jfk
rF } z| j|ƒ W Y d d }~X nX d S )N)ÚpickleÚdumpÚPickleErrorÚPicklingErrorr
   )r   r   r   r   r   r   r   r	   r      s    zBaseSerializer.dump)r   r   c             C   sD   yt j|ƒ}W n, t jk
r: } z| j|ƒ d S d }~X nX |S d S )N)r   Úloadr   r
   )r   r   Údatar   r   r   r	   r      s    
zBaseSerializer.load)r   r   r   c             C   sJ   yt j||ƒ}W n4 t jt jfk
rD } z| j|ƒ W Y d d }~X nX |S )N)r   Údumpsr   r   r
   )r   r   r   Z
serializedr   r   r   r	   r   )   s
    zBaseSerializer.dumps)Úbvaluer   c             C   sD   yt j|ƒ}W n, t jk
r: } z| j|ƒ d S d }~X nX |S d S )N)r   Úloadsr   r
   )r   r   r   r   r   r   r	   r   0   s    
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               @   s   e Zd ZdZdS )ÚUWSGISerializerz"Default serializer for UWSGICache.N)r   r   r   r   r   r   r   r	   r"   C   s   r"   c               @   s   e Zd ZdZdS )ÚSimpleSerializerz#Default serializer for SimpleCache.N)r   r   r   r   r   r   r   r	   r#   G   s   r#   c               @   s   e Zd ZdZdS )ÚFileSystemSerializerz'Default serializer for FileSystemCache.N)r   r   r   r   r   r   r   r	   r$   K   s   r$   c               @   sB   e Zd ZdZejfejee	dœdd„Z
eje	 ejdœdd„ZdS )	ÚRedisSerializerz"Default serializer for RedisCache.)r   r   r   c             C   s,   t t|ƒtƒrt|ƒjdƒS dtj||ƒ S )z�Dumps an object into a string for redis. By default it serializes
        integers as regular string and pickle dumps everything else.
        Úasciió   !)Ú
isinstanceÚtyper   ÚstrÚencoder   r   )r   r   r   r   r   r	   r   R   s    zRedisSerializer.dumps)r   r   c             C   sb   |dkrdS |j dƒr@ytj|dd… ƒS  tjk
r>   dS X yt|ƒS  tk
r\   |S X dS )zUThe reversal of :meth:`dump_object`. This might be called with
        None.
        Nr'   é   )Ú
startswithr   r   r   r   Ú
ValueError)r   r   r   r   r	   r   Z   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   =