a
    7a(                     @   s   d dl Z d dlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 zd	d
lmZ W n eyz   Y n0 G dd deZdS )    N   )KeyringBackend)PasswordSetError)PasswordDeleteError)KeyringLocked)KeyringError)
properties   )apic                   @   sF   e Zd ZdZejdZej	e
dd Zdd Zdd Zd	d
 ZdS )KeyringzmacOS KeychainZKEYCHAIN_PATHc                 C   s*   t  dkrtddt vr&tddS )z7
        Preferred for all macOS environments.
        ZDarwinzmacOS requiredr
   zSecurity API unavailable   )platformsystemRuntimeErrorglobals)cls r   >lib/python3.9/site-packages/keyring/backends/macOS/__init__.pypriority   s
    
zKeyring.priorityc              
   C   s   |d u rd}zt | j||| W nf t jyV } ztd|W Y d }~n<d }~0  t jy } ztd|W Y d }~n
d }~0 0 d S )N z$Can't store password on keychain: {})r
   Zset_generic_passwordkeychainKeychainDeniedr   formatErrorr   )selfserviceusernameZpassworder   r   r   set_password#   s    "zKeyring.set_passwordc              
   C   s   |d u rd}zt | j||W S  t jy2   Y nf t jyd } ztd|W Y d }~n<d }~0  t jy } ztd|W Y d }~n
d }~0 0 d S )Nr   z$Can't get password from keychain: {})	r
   Zfind_generic_passwordr   ZNotFoundr   r   r   r   r   r   r   r   r   r   r   r   get_password.   s    "zKeyring.get_passwordc              
   C   sX   |d u rd}zt | j||W S  t jyR } ztd|W Y d }~n
d }~0 0 d S )Nr   z%Can't delete password in keychain: {})r
   Zdelete_generic_passwordr   r   r   r   r   r   r   r   delete_password;   s    zKeyring.delete_passwordN)__name__
__module____qualname____doc__osenvirongetr   r   ZClassPropertyclassmethodr   r   r    r!   r   r   r   r   r      s   
r   )r   r&   Zbackendr   errorsr   r   r   r   utilr   r   r
   	Exceptionr   r   r   r   r   <module>   s   