
    gt7                         S r SSKr\R                  " \5      rSSKrSSKJr  S/rS r	SSK
JrJrJr  \	" \5       " S S\5      5       r " S S	\5      rg)
z1passlib.ifc - abstract interfaces used by Passlib    N)deprecated_methodPasswordHashc                    ^  U 4S jnU$ )z5class decorator that re-creates class using metaclassc                    > T[        U 5      L a  U $ T" U R                  U R                  U R                  R	                  5       5      $ N)type__name__	__bases____dict__copy)clsmetas    D/home/matz/Project1/venv/lib/python3.13/site-packages/passlib/ifc.pybuilder(recreate_with_metaclass.<locals>.builder   s8    49JCLL#--1B1B1DEE     )r   r   s   ` r   recreate_with_metaclassr      s    F Nr   )ABCMetaabstractmethodabstractpropertyc                      \ rS rSrSrSrSrSrSr\	\
S 5       5       r\" SSS	S
9\	S 5       5       r\	\
S 5       5       r\	\
SS j5       5       r\	SS j5       r\	\
S 5       5       r\" SSS9\	S 5       5       r\" SSS9\	S 5       5       rSrSrg)r   %   zThis class describes an abstract interface which all password hashes
in Passlib adhere to. Under Python 2.6 and up, this is an actual
Abstract Base Class built using the :mod:`!abc` module.

See the Passlib docs for full documentation.
FNTc                     [        S5      e)a  
Hash secret, returning result.
Should handle generating salt, etc, and should return string
containing identifier, salt & other configuration, as well as digest.

:param \\*\\*settings_kwds:

    Pass in settings to customize configuration of resulting hash.

    .. deprecated:: 1.7

        Starting with Passlib 1.7, callers should no longer pass settings keywords
        (e.g. ``rounds`` or ``salt`` directly to :meth:`!hash`); should use
        ``.using(**settings).hash(secret)`` construction instead.

        Support will be removed in Passlib 2.0.

:param \\*\\*context_kwds:

    Specific algorithms may require context-specific information (such as the user login).
must be implemented by subclassNotImplementedError)r   secretsetting_and_context_kwdss      r   hashPasswordHash.hashr   s    6 ""CDDr   z1.7z2.0z.hash())
deprecatedremovedreplacementc                 &    U R                   " U0 UD6$ )z
Legacy alias for :meth:`hash`.

.. deprecated:: 1.7
    This method was renamed to :meth:`!hash` in version 1.7.
    This alias will be removed in version 2.0, and should only
    be used for compatibility with Passlib 1.3 - 1.6.
r    )r   argskwdss      r   encryptPasswordHash.encrypt   s     xx&&&r   c                     [        S5      e)z.verify secret against hash, returns True/Falser   r   )r   r   r    context_kwdss       r   verifyPasswordHash.verify        ""CDDr   c                     [        S5      e)a  
Return another hasher object (typically a subclass of the current one),
which integrates the configuration options specified by ``kwds``.
This should *always* return a new object, even if no configuration options are changed.

.. todo::

    document which options are accepted.

:returns:
    typically returns a subclass for most hasher implementations.

.. todo::

    add this method to main documentation.
r   r   )r   relaxedr(   s      r   usingPasswordHash.using   s    & ""CDDr   c                     g)a  
check if hash's configuration is outside desired bounds,
or contains some other internal option which requires
updating the password hash.

:param hash:
    hash string to examine

:param secret:
    optional secret known to have verified against the provided hash.
    (this is used by some hashes to detect legacy algorithm mistakes).

:return:
    whether secret needs re-hashing.

.. versionadded:: 1.7
Fr   )r   r    r   s      r   needs_updatePasswordHash.needs_update   s    ( r   c                     [        S5      e)z8check if hash belongs to this scheme, returns True/Falser   r   r   r    s     r   identifyPasswordHash.identify   r/   r   )r"   r#   c                 |    U R                   (       a  [        S5      eU R                  " S0 UD6R                  S5      $ )am  
compile settings into a configuration string for genhash()

.. deprecated:: 1.7

    As of 1.7, this method is deprecated, and slated for complete removal in Passlib 2.0.

    For all known real-world uses, hashing a constant string
    should provide equivalent functionality.

    This deprecation may be reversed if a use-case presents itself in the mean time.
r    r   )r,   r   r2   r    )r   setting_kwdss     r   	genconfigPasswordHash.genconfig   s6    $ %&GHHyy(<(--b11r   c                     [        S5      e)a	  
generated hash for secret, using settings from config/hash string

.. deprecated:: 1.7

    As of 1.7, this method is deprecated, and slated for complete removal in Passlib 2.0.

    This deprecation may be reversed if a use-case presents itself in the mean time.
r   r   )r   r   configcontexts       r   genhashPasswordHash.genhash   s     ""CDDr   r   )Fr   )r	   
__module____qualname____firstlineno____doc__is_disabledtruncate_sizetruncate_errortruncate_verify_rejectclassmethodr   r    r   r)   r-   r2   r5   r9   r>   rC   r"   __static_attributes__r   r   r   r   r   %   s&   ( K M N "6 E  E6 %IN	'  O	' E  E E  E,  0 E  E %72  82( %7E  8E@ Jr   c                   @    \ rS rSrSrSr\SS j5       r\S 5       rSr	g)	DisabledHashiD  zJ
extended disabled-hash methods; only need be present if .disabled = True
TNc                 $    U R                  S5      $ )z
return string representing a 'disabled' hash;
optionally including previously enabled hash
(this is up to the individual scheme).
r<   r&   r8   s     r   disableDisabledHash.disableK  s     xx|r   c                     [        S5      e)zn
given a disabled-hash string,
extract previously-enabled hash if one is present,
otherwise raises ValueError
zcannot restore original hash)
ValueErrorr8   s     r   enableDisabledHash.enableU  s     788r   r   r   )
r	   rE   rF   rG   rH   rI   rM   rR   rV   rN   r   r   r   rP   rP   D  s4     K  9 9r   rP   )rH   logging	getLoggerr	   logsyspasslib.utils.decorr   __all__r   abcr   r   r   objectr   rP   r   r   r   <module>r`      sm    7
 g''1 
 2  : 9 !q6 q "q|9< 9r   