
    Ujh                         d dl Z de j        deddfdZdddeez  d	edefd
Zdddeez  d	edefdZ G d de j                  Zg dZ	dS )    Nvalue
param_namereturnc                 b    t          | t          t          f          st          | d          dS )z
    Validate that a value is a string or bytes.

    Args:
        value: The value to validate.
        param_name: The name of the parameter being validated.

    Raises:
        TypeError: If the value is not a string or bytes.
    z must be str or bytesN)
isinstancestrbytes	TypeError)r   r   s     W/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/pwdlib/hashers/base.pyvalidate_str_or_bytesr      s;     ec5\** >:<<<===> >    zutf-8)encodingvr   c                Z    t          | t                    r|                     |          n| S N)r   r	   decoder   r   s     r   
ensure_strr      s(    !+Au!5!5<188H1<r   c                Z    t          | t                    r|                     |          n| S r   )r   r   encoder   s     r   ensure_bytesr      s(    !+As!3!3:188H:r   c                       e Zd Zedeez  defd            Zdddeez  dedz  defdZdeez  deez  defd	Z	deez  defd
Z
dS )HasherProtocolhashr   c                     d S r    )clsr   s     r   identifyzHasherProtocol.identify   s    25#r   N)saltpasswordr   c                    d S r   r   )selfr    r   s      r   r   zHasherProtocol.hash         r   c                     d S r   r   )r"   r    r   s      r   verifyzHasherProtocol.verify!   r#   r   c                     d S r   r   )r"   r   s     r   check_needs_rehashz!HasherProtocol.check_needs_rehash#   r#   r   )__name__
__module____qualname__classmethodr   r	   boolr   r   r%   r'   r   r   r   r   r      s        5C%K5D555 [5BFSSSS5[S54<S3SSSSKsU{K#+K$KKKK@sU{@t@@@@@@r   r   )r   r   r   )
typingAnyr   r   r	   r   r   Protocolr   __all__r   r   r   <module>r1      s    > > > > > > > 3: = = =#+ =C =c = = = = 5< ; ; ;C%K ;c ; ; ; ; ;A A A A AV_ A A A D
C
Cr   