
     ht7                         d Z ddlZ ej                  e      ZddlZddlmZ dgZd Z	ddl
mZmZmZ  e	e       G d de             Z G d d	e      Zy)
z1passlib.ifc - abstract interfaces used by Passlib    N)deprecated_methodPasswordHashc                       fd}|S )z5class decorator that re-creates class using metaclassc                     t        |       u r| S  | j                  | j                  | j                  j	                               S N)type__name__	__bases____dict__copy)clsmetas    M/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/passlib/ifc.pybuilderz(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                       e Zd ZdZdZdZdZdZee	d               Z
 eddd	      ed
               Zee	d               Zee	dd              Zedd       Zee	d               Z edd      ed               Z edd      ed               ZdZy)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                     t        d      )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   hashzPasswordHash.hashr   s    6 ""CDDr   z1.7z2.0z.hash())
deprecatedremovedreplacementc                 &     | j                   |i |S )a  
        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   encryptzPasswordHash.encrypt   s     sxx&&&r   c                     t        d      )z.verify secret against hash, returns True/Falser   r   )r   r   r   context_kwdss       r   verifyzPasswordHash.verify        ""CDDr   c                     t        d      )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   usingzPasswordHash.using   s    & ""CDDr   c                      y)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_updatezPasswordHash.needs_update   s    ( r   c                     t        d      )z8check if hash belongs to this scheme, returns True/Falser   r   r   r   s     r   identifyzPasswordHash.identify   r*   r   )r   r    c                 r    | j                   rt        d       | j                  di |j                  d      S )a  
        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   r-   r   )r   setting_kwdss     r   	genconfigzPasswordHash.genconfig   s8    $ %&GHHsyy(<(--b11r   c                     t        d      )a1  
        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   genhashzPasswordHash.genhash   s     ""CDDr   )Fr   )r	   
__module____qualname____doc__is_disabledtruncate_sizetruncate_errortruncate_verify_rejectclassmethodr   r   r   r&   r)   r-   r/   r2   r6   r:   r   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                   6    e Zd ZdZdZedd       Zed        Zy)DisabledHashzR
    extended disabled-hash methods; only need be present if .disabled = True
    TNc                 $    | j                  d      S )z
        return string representing a 'disabled' hash;
        optionally including previously enabled hash
        (this is up to the individual scheme).
        r4   r#   r1   s     r   disablezDisabledHash.disableK  s     xx|r   c                     t        d      )z
        given a disabled-hash string,
        extract previously-enabled hash if one is present,
        otherwise raises ValueError
        zcannot restore original hash)
ValueErrorr1   s     r   enablezDisabledHash.enableU  s     788r   r   )r	   r;   r<   r=   r>   rB   rF   rI   r   r   r   rD   rD   D  s4     K  9 9r   rD   )r=   logging	getLoggerr	   logsyspasslib.utils.decorr   __all__r   abcr   r   r   objectr   rD   r   r   r   <module>rR      sp    7
 'g''1 
 2  : 9 !q6 q "q|9< 9r   