+
    Z8i_                    |   ^ RI Ht ^ RIt^ RIHt ^RIHt ^RIHt ^RI	H
t
 ^RIHt ]! 4       ;_uu_ 4       t ^ RIHtHt ]P"                   RRR4       ]P&                  ! ]4      t ! R	 R
4      t ! R R]4      t ! R R]4      tR#   ] d    ^ RIt^ RIt]P"                    LYi ; i  + '       g   i     Le; i)    )annotationsN)ExceptionTrap)KeyringBackend)
properties)SimpleCredential)PasswordDeleteError)
pywintypes	win32credc                  &    ] tR t^tRR ltR tRtR# )PersistenceNc                	8    \        VR \        P                  4      # )_persist)getattrr
   CRED_PERSIST_ENTERPRISE)selfkeyringtypes   &&&8lib/python3.14/site-packages/keyring/backends/Windows.py__get__Persistence.__get__   s    w
I,M,MNN    c                    \        V\        4      '       d8   RVP                  RR4      P                  4       ,           p\	        \
        V4      pW!n        R# )z
Set the persistence value on the Keyring. Value may be
one of the win32cred.CRED_PERSIST_* constants or a
string representing one of those constants. For example,
'local machine' or 'session'.
CRED_PERSIST_ _N)
isinstancestrreplaceupperr   r
   r   )r   r   valueattrs   &&& r   __set__Persistence.__set__"   sA     eS!!"U]]3%<%B%B%DDDIt,E r    N)__name__
__module____qualname____firstlineno__r   r"   __static_attributes__r$   r   r   r   r      s    O
!r   r   c                  &    ] tR t^/t]R 4       tRtR# )DecodingCredentialc                    V R,          p VP                  R4      #   \         d,    TP                  R4      p\        P                  R4       Tu # i ; i)z=
Attempt to decode the credential blob as UTF-16 then UTF-8.
CredentialBlobzutf-16zutf-8zjRetrieved a UTF-8 encoded credential. Please be aware that this library only writes credentials in UTF-16.)decodeUnicodeDecodeErrorlogwarning)r   creddecoded_cred_utf8s   &  r   r    DecodingCredential.value0   s[    
 $%	%;;x((! 	% $G 4KKB %$	%s    3AAr$   N)r&   r'   r(   r)   propertyr    r*   r$   r   r   r,   r,   /   s    % %r   r,   c                      ] tR t^AtRt]! 4       t]P                  R R l4       t	]
R 4       tR tR R ltR tR	 tR
 tR tR tR tRtR# )WinVaultKeyringa6  
WinVaultKeyring stores encrypted passwords using the Windows Credential
Manager.

Requires pywin32

This backend does some gymnastics to simulate multi-user support,
which WinVault doesn't support natively. See
https://github.com/jaraco/keyring/issues/47#issuecomment-75763152
for details on the implementation, but here's the gist:

Passwords are stored under the service name unless there is a collision
(another password with the same service name but different user name),
in which case the previous password is moved into a compound name:
{username}@{service}
c                   V ^8  d   QhRR/# )   returnfloatr$   )formats   "r   __annotate__WinVaultKeyring.__annotate__V   s       r   c                4    \         '       d   \        R4      h^# )z1
If available, the preferred backend on Windows.
zRequires Windows and pywin32)missing_depsRuntimeError)clss   &r   priorityWinVaultKeyring.priorityU   s    
 <=>>r   c                	    V  R V 2# )@r$   )usernameservices   &&r   _compound_nameWinVaultKeyring._compound_name^   s    1WI&&r   c                	P    V P                  W4      pT;'       d    VP                  # r%   )_resolve_credentialr    r   rI   rH   ress   &&& r   get_passwordWinVaultKeyring.get_passwordb   s$    &&w9  syy r   c               $    V ^8  d   QhRRRRRR/# )r:   rI   r   rH   z
str | Noner;   zDecodingCredential | Noner$   )r=   s   "r   r>   r?   f   s$      &0	"r   c                	    V P                  V4      pV'       d   V'       d/   VR ,          V8w  d!   V P                  V P                  W!4      4      pV# UserName)_read_credentialrJ   rN   s   &&& r   rM   #WinVaultKeyring._resolve_credentialf   sD     ##G,h3z?h#>''(;(;H(NOC
r   c                	     \         P                  ! \         P                  VR 7      p\        T4      #   \        P                   d/   pTP
                  R8X  d   TP                  R8X  d    Rp?R# h Rp?ii ; i)Type
TargetName  CredReadN)r
   r]   CRED_TYPE_GENERICr	   errorwinerrorfuncnamer,   )r   targetrO   es   &&  r   rV    WinVaultKeyring._read_credentialp   sd    	$$00VC "#&&	  	zzT!ajjJ&>	s   &3 A6"A10A11A6c                	    V P                  V4      pV'       d8   VR ,          pV P                  WQ4      pV P                  VVVP                  4       V P                  W\	        V4      4       R# )rU   N)rV   rJ   _set_passwordr    r   )r   rI   rH   passwordexisting_pwexisting_usernamerb   s   &&&&   r   set_passwordWinVaultKeyring.set_password{   sd    ++G4 +J 7(():DF!!!
 	7c(m<r   c           	     	    \        \        P                  VVVR V P                  R7      p\        P                  ! V^ 4       R# )zStored using python-keyring)rZ   r[   rU   r.   CommentPersistN)dictr
   r^   persist	CredWrite)r   rb   rH   rg   
credentials   &&&& r   rf   WinVaultKeyring._set_password   s:    ,,#1LL

 	J*r   c                	    V P                  W!4      pR pW3 FA  pV P                  V4      pV'       g   K  VR,          V8X  g   K.  RpV P                  V4       KC  	  V'       g   \        V4      hR# )FrU   TN)rJ   rV   _delete_passwordr   )r   rI   rH   compounddeletedrb   rh   s   &&&    r   delete_passwordWinVaultKeyring.delete_password   sm    &&x9'F//7K{{:6(B%%f-	 (
 %g.. r   c                	     \         P                  ! \         P                  VR 7       R#   \        P                   d/   pTP
                  R8X  d   TP                  R8X  d    Rp?R# h Rp?ii ; i)rY   r\   
CredDeleteN)r
   r{   r^   r	   r_   r`   ra   )r   rb   rc   s   && r   ru    WinVaultKeyring._delete_password   sP    	  i&A&AfU 	zzT!ajjL&@	s   &* A-"A('A((A-c                	r    V P                  W4      pT;'       d    \        VR ,          VP                  4      # rT   )rM   r   r    rN   s   &&& r   get_credentialWinVaultKeyring.get_credential   s0    &&w9CC'JCCr   r$   N)r&   r'   r(   r)   __doc__r   rp   r   classpropertyrD   staticmethodrJ   rP   rM   rV   rj   rf   rx   ru   r~   r*   r$   r   r   r8   r8   A   se    " mG  ' '!	'=	+	/Dr   r8   )
__future__r   loggingjaraco.contextr   backendr   compatr   credentialsr   errorsr   rA   win32ctypes.pywin32r	   r
   r&   ImportError	getLoggerr1   r   ro   r,   r8   r$   r   r   <module>r      s    "  ( $  * (__= 	  !! !"% %$gDn gD]   	 _s(   B+B

B(%B+'B((B++B;	