
    AHj                        U d dl mZ d dlZd dlZd dlmZ d dlmZ d dl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eZ G d d      ZeedZded<   dddZy)    )annotationsN)Callable)partial)AnyClassVarProtocolcastruntime_checkable   )import_attributec                      e Zd ZddZddZy)
Serializerc                    y N )selfobjs     F/root/tools/cai/cai_env/lib/python3.12/site-packages/rq/serializers.pydumpszSerializer.dumps           c                    y r   r   )r   datas     r   loadszSerializer.loads   r   r   N)r   r   returnbytes)r   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r   r      s    ./r   r   c                  v    e Zd ZU  eej
                  ej                        Zded<   ej                  Zded<   y)DefaultSerializer)protocolz ClassVar[Callable[[Any], bytes]]r   z ClassVar[Callable[[bytes], Any]]r   N)	r   r   r   r   pickler   HIGHEST_PROTOCOL__annotations__r   r   r   r   r!   r!      s-    .5fllVMdMd.eE+e.4llE+: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'   )r*   r#   zdict[str, Serializer]SERIALIZER_ALIASESc                    | st         S t        | t              r2| }t        j	                  |      } | st        t        t        |            } 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.)	PickleSerializer
isinstancestrr2   getr	   r   r   NotImplementedError)
serializerserializer_paths     r   resolve_serializerr;   +   s]     *c"$'++O<
j*:?*KLJj*-!"RSSr   r   )r9   zSerializer | str | Noner   r   )
__future__r   r*   r#   collections.abcr   	functoolsr   typingr   r   r   r	   r
   utilsr   r   r!   r4   r'   r2   r%   r;   r   r   r   <module>rA      sq    "   $  C C # 0 0 0; ;
 % > > - ) r   