
    s,g/                         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	 ddl
mZ erd dlmZ  G d de      Z G d	 d
      Z G d d      Zddee	ed   ef      ded   fdZy)    N)partial)TYPE_CHECKINGCallableOptionalTypeUnion   )import_attribute)Protocolc                   6    e Zd ZU edef   ed<   edef   ed<   y)
Serializer.dumpsloadsN)__name__
__module____qualname__r   bytes__annotations__object     h/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/rq/serializers.pyr   r      s     U
##V$$r   r   c                       e Zd ZU  eej
                  ej                        Zedef   e	d<   ej                  Z
edef   e	d<   y)DefaultSerializer)protocol.r   r   N)r   r   r   r   pickler   HIGHEST_PROTOCOLr   r   r   r   r   r   r   r   r   r      s=    ")&,,AXAX"YE8CJY#)<<E8CK /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   
serializerreturnc                     | st         S t        | t              rt        |       } t        | t              rJ d}|D ]  }t	        | |      r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
    )r   r   z.Serializer should have (dumps, loads) methods.)r   
isinstancestrr
   hasattrNotImplementedError)r*   default_serializer_methodsinstance_methods      r   resolve_serializerr3      sf       *c"%j1
*c***!35 Xz?3%&VWWX r   )N)r"   r   	functoolsr   typingr   r   r   r   r   utilsr
   typing_extensionsr   r   r   r   r.   r3   r   r   r   <module>r8      sk       A A #*%X %
0 0
> >8E$|2Dc2I,J#K W[\hWi r   