
    _vg                        d dl Z d dlZd dlmZ d dlmZ d dlmZ ddlm	Z	 g dZ
 G d d	          Z G d
 de          Z G d dee          Z G d de          Z G d de          Z G d de          ZeZ G d de          ZeZ G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Zeeeeeeeeeeeeed!Zd" Z e            ZdS )#    N)get_user_model)ImproperlyConfigured)import_string   )settings)
BasePackerShortPackerUnsignedShortPacker
LongPackerUnsignedLongPackerLongLongPackerUnsignedLongLongPacker
UUIDPackerBytesPacker	StrPackerpackerc                       e Zd ZdZd Zd ZdS )r   z+
    Abstract base class for packers.

    c                     dS )zn
        Create a short representation of the primary key of a user.

        Return :class:`bytes`.

        N )selfuser_pks     K/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/sesame/packers.pypack_pkzBasePacker.pack_pk             c                     dS )z
        Extract the primary key of a user from a signed token.

        ``data`` contains :class:`bytes`.

        Return the primary key and the remaining data as :class:`bytes`.

        Nr   )r   datas     r   	unpack_pkzBasePacker.unpack_pk'   r   r   N)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s<         
      r   r   c                        e Zd Z fdZ xZS )StructPackerMetac                     d|vr!d|v rt          j        |d                   |d<    t                      j        | |||fi |S )Nsizefmt)structcalcsizesuper__new__)clsnamebases	namespacekwds	__class__s        r   r+   zStructPackerMeta.__new__3   sU    ""u	'9'9 &	%0@ A AIfuwwsD%CCdCCCr   )r   r    r!   r+   __classcell__)r1   s   @r   r$   r$   2   sA        D D D D D D D D Dr   r$   c                   >    e Zd ZdZed             Zed             ZdS )StructPacker c                 6    t          j        | j        |          S N)r(   packr'   )r,   r   s     r   r   zStructPacker.pack_pk<   s    {37G,,,r   c                 v    t          j        | j        |d | j                           \  }||| j        d          fS r7   )r(   unpackr'   r&   )r,   r   r   s      r   r   zStructPacker.unpack_pk@   s8    ]37D38,<==
SXZZ(((r   N)r   r    r!   r'   classmethodr   r   r   r   r   r4   r4   9   sM        
C- - [- ) ) [) ) )r   r4   )	metaclassc                       e Zd ZdZdS )r	   z!hNr   r    r!   r'   r   r   r   r	   r	   F           
CCCr   r	   c                       e Zd ZdZdS )r
   z!HNr>   r   r   r   r
   r
   J   r?   r   r
   c                       e Zd ZdZdS )r   z!lNr>   r   r   r   r   r   N   r?   r   r   c                       e Zd ZdZdS )r   z!LNr>   r   r   r   r   r   U   r?   r   r   c                       e Zd ZdZdS )r   z!qNr>   r   r   r   r   r   \   r?   r   r   c                       e Zd ZdZdS )r   z!QNr>   r   r   r   r   r   `   r?   r   r   c                   :    e Zd Zed             Zed             ZdS )r   c                     | j         S r7   bytes)r   s    r   r   zUUIDPacker.pack_pke   s
    }r   c                 P    t          j        | d d                   | dd          fS )N   rG   )uuidUUID)r   s    r   r   zUUIDPacker.unpack_pki   s*    ytCRCy)))4944r   N)r   r    r!   staticmethodr   r   r   r   r   r   r   d   sH          \ 5 5 \5 5 5r   r   c                   >    e Zd ZdZed             Zed             ZdS )r   z
    Generic packer for bytestrings, from 0 to 255 bytes.

    In many cases, primary keys stored as bytes are likely to be fixed-length,
    which doesn't require a variable length encoding scheme.

    c                 v    t          |           }|dk    rt          d|z            t          |g          | z   S )N   z#primary key is too large (%d bytes))len
ValueErrorrH   r   lengths     r   r   zBytesPacker.pack_pkw   s=    WC<<BVKLLLfX((r   c                 F    | d         }| d|dz            | |dz   d          fS Nr   r   r   r   rT   s     r   r   zBytesPacker.unpack_pk~   s0    aA
N#T&1*,,%777r   Nr   r    r!   r"   rM   r   r   r   r   r   r   r   n   sT          ) ) \) 8 8 \8 8 8r   r   c                   >    e Zd ZdZed             Zed             ZdS )r   zI
    Generic packer for strings, from 0 to 255 UTF-8 encoded bytes.

    c                     |                                  } t          |           }|dk    rt          d|z            t          |g          | z   S )NrP   z)primary key is too large (%d UTF-8 bytes))encoderQ   rR   rH   rS   s     r   r   zStrPacker.pack_pk   sL    ..""WC<<H6QRRRfX((r   c                 j    | d         }| d|dz                                             | |dz   d          fS rV   )decoderW   s     r   r   zStrPacker.unpack_pk   s<    aA
N#**,,d6A:<<.@@@r   NrX   r   r   r   r   r      sY         
 ) ) \) A A \A A Ar   r   )SmallAutoFieldSmallIntegerFieldPositiveSmallIntegerField	AutoFieldIntegerFieldPositiveIntegerFieldBigAutoFieldBigIntegerFieldPositiveBigIntegerField	UUIDFieldBinaryField	CharField	TextFieldc                     t           j        t                      } t           j        dk    r| j        j        }nT| j                            t           j                  }|j        s)t          | j        j	         dt           j         d          |
                                }	 t          |         }n9# t          $ r t          |dz             w xY wt          t           j                  } |            S )Npk.z isn't uniquez primary keys aren't supported)r   PACKERr   PRIMARY_KEY_FIELD_metarl   	get_fielduniquer   labelget_internal_typePACKERSKeyErrorNotImplementedErrorr   )Userpk_fieldpk_typePackers       r   
get_packerr|      s    %--z}HHz++H,FGGH? *z'SS(*DSSS   ,,..	RW%FF 	R 	R 	R%g0P&PQQQ	R x//688Os   !B/ /C)r(   rK   django.contrib.authr   django.core.exceptionsr   django.utils.module_loadingr   r5   r   __all__r   typer$   r4   r	   r
   r   	IntPackerr   UnsignedIntPackerr   r   r   r   r   ru   r|   r   r   r   r   <module>r      s     . . . . . . 7 7 7 7 7 7 5 5 5 5 5 5               2D D D D Dt D D D
) 
) 
) 
) 
):)9 
) 
) 
) 
)    ,       ,           	        '     \       \   5 5 5 5 5 5 5 58 8 8 8 8* 8 8 8,A A A A A A A A, "$!4."%5% ,  * 
r   