o
    /i                     @   s   d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZ ddlmZ eG dd de	ZG dd	 d	ZG d
d dZddee
eef  defddZdS )    N)partial)AnyCallableClassVarOptionalProtocolUnionruntime_checkable   )import_attributec                   @   s0   e Zd ZdedefddZdedefddZdS )	
Serializerobjreturnc                C      d S N )selfr   r   r   N/var/www/html/flask_server/venv/lib/python3.10/site-packages/rq/serializers.pydumps       zSerializer.dumpsdatac                C   r   r   r   )r   r   r   r   r   loads   r   zSerializer.loadsN)__name__
__module____qualname__r   bytesr   r   r   r   r   r   r   	   s    r   c                   @   sP   e Zd ZU eejejdZeee	ge
f  ed< ejZeee
ge	f  ed< dS )DefaultSerializer)protocolr   r   N)r   r   r   r   pickler   HIGHEST_PROTOCOLr   r   r   r   __annotations__r   r   r   r   r   r      s   
 & r   c                   @   s$   e Zd Zedd Zedd ZdS )JSONSerializerc                  O   s   t j| i |dS Nzutf-8)jsonr   encode)argskwargsr   r   r   r      s   zJSONSerializer.dumpsc                 O   s   t j| dg|R i |S r"   )r#   r   decode)sr%   r&   r   r   r   r      s   zJSONSerializer.loadsN)r   r   r   staticmethodr   r   r   r   r   r   r!      s
    
r!   
serializerr   c                 C   s>   | st S t| trt| } t| trJ t| tstd| S )a  This function checks the user defined serializer for ('dumps', 'loads') methods
    It returns a default pickle serializer if not found else it returns a MySerializer
    The returned serializer objects implement ('dumps', 'loads') methods
    Also accepts a string path to serializer that will be loaded as the serializer.

    Args:
        serializer (Callable): The serializer to resolve.

    Returns:
        serializer (Callable): An object that implements the SerializerProtocol
    z.Serializer should have (dumps, loads) methods.)r   
isinstancestrr   r   NotImplementedError)r*   r   r   r   resolve_serializer   s   

r.   r   )r#   r   	functoolsr   typingr   r   r   r   r   r   r	   utilsr   r   r   r!   r,   r.   r   r   r   r   <module>   s    $$
