+
    it7                         R t ^ RIt]P                  ! ]4      t^ RIt^ RIHt R.tR t	^ RI
HtHtHt ]	! ]4       ! R R]4      4       t ! R R]4      tR# )	z1passlib.ifc - abstract interfaces used by PasslibN)deprecated_methodPasswordHashc                   a  V 3R lpV# )z5class decorator that re-creates class using metaclassc                    < S\        V 4      J d   V # S! V P                  V P                  V P                  P	                  4       4      # N)type__name__	__bases____dict__copy)clsmetas   &I/var/www/html/photoedit/myenv/lib/python3.14/site-packages/passlib/ifc.pybuilder(recreate_with_metaclass.<locals>.builder   s8    49JCLL#--1B1B1DEE     )r   r   s   f r   recreate_with_metaclassr      s    F Nr   )ABCMetaabstractmethodabstractpropertyc                   8  a  ] tR t^%t o RtRtRtRtRt]	]
R 4       4       t]! RRRR	7      ]	R
 4       4       t]	]
R 4       4       t]	]
RR l4       4       t]	RR l4       t]	]
R 4       4       t]! RRR7      ]	R 4       4       t]! RRR7      ]	R 4       4       tRtRtV tR# )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                    \        R4      h)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                &    V P                   ! V/ VB # )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                    \        R4      h)z.verify secret against hash, returns True/Falser   r   )r   r   r   context_kwdss   &&&,r   verifyPasswordHash.verify        ""CDDr   c                    \        R4      h)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                    R# )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                    \        R4      h)z8check if hash belongs to this scheme, returns True/Falser   r   r   r   s   &&r   identifyPasswordHash.identify   r-   r   )r    r!   c                ~    V P                   '       d   \        R4      hV P                  ! R/ VB P                  R4      # )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   r0   r   )r   setting_kwdss   &,r   	genconfigPasswordHash.genconfig   s9    $ %&GHHyy(<(--b11r   c                    \        R4      h)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+   r0   r3   r7   r<   rA   r    __static_attributes____classdictcell____classdict__s   @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                   L   a  ] tR tRt o RtRt]RR l4       t]R 4       tRt	V t
R# )	DisabledHashiD  zJ
extended disabled-hash methods; only need be present if .disabled = True
TNc                $    V P                  R4      # )z
return string representing a 'disabled' hash;
optionally including previously enabled hash
(this is up to the individual scheme).
r:   r$   r6   s   &&r   disableDisabledHash.disableK  s     xx|r   c                    \        R4      h)zn
given a disabled-hash string,
extract previously-enabled hash if one is present,
otherwise raises ValueError
zcannot restore original hash)
ValueErrorr6   s   &&r   enableDisabledHash.enableU  s     788r   r   r   )r   rC   rD   rE   rF   rG   rK   rS   rW   rL   rM   rN   s   @r   rQ   rQ   D  s7      K  9 9r   rQ   )rF   logging	getLoggerr   logsyspasslib.utils.decorr   __all__r   abcr   r   r   objectr   rQ   r   r   r   <module>ra      sm    7
 g''1 
 2  : 9 !q6 q "q|9< 9r   