
    ]j                         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e	             Z G d d	      Z G d
 d      Zddee
eef      defdZy)    N)partial)AnyCallableClassVarOptionalProtocolUnionruntime_checkable   )import_attributec                   ,    e Zd ZdedefdZdedefdZy)
Serializerobjreturnc                     y N )selfr   s     8/root/env/lib/python3.12/site-packages/rq/serializers.pydumpszSerializer.dumps           datac                     y r   r   )r   r   s     r   loadszSerializer.loads   r   r   N)__name__
__module____qualname__r   bytesr   r   r   r   r   r   r   	   s    ..E./%/s/r   r   c                       e Zd ZU  eej
                  ej                        Zeee	ge
f      ed<   ej                  Zeee
ge	f      ed<   y)DefaultSerializer)protocolr   r   N)r   r   r   r   pickler   HIGHEST_PROTOCOLr   r   r   r   __annotations__r   r   r   r   r!   r!      sK    .5fllVMdMd.eE8HcUE\*+e.4llE8HeWc\*+:r   r!   c                   ,    e Zd Zed        Zed        Zy)JSONSerializerc                  J    t        j                  | i |j                  d      S Nzutf-8)jsonr   encode)argskwargss     r   r   zJSONSerializer.dumps   s!    zz4*6*11'::r   c                 R    t        j                  | j                  d      g|i |S r)   )r*   r   decode)sr,   r-   s      r   r   zJSONSerializer.loads   s$    zz!((7+=d=f==r   N)r   r   r   staticmethodr   r   r   r   r   r'   r'      s(    ; ; > >r   r'   
serializerr   c                     | 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)r2   s    r   resolve_serializerr7      sM       *c"%j1
*c***j*-!"RSSr   r   )r*   r#   	functoolsr   typingr   r   r   r   r   r	   r
   utilsr   r   r!   r'   r5   r7   r   r   r   <module>r;      sj       X X X # 0 0 0; ;
> >8E*c/,B#C z r   