o
    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y=   Y nw G dd deZdS )    N   )KeyringBackend)PasswordSetError)PasswordDeleteError)KeyringLocked)KeyringError)
properties   )apic                   @   sH   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   A/usr/lib/python3/dist-packages/keyring/backends/macOS/__init__.pypriority   s
   
zKeyring.priorityc              
   C   st   |d u rd}zt | j||| W d S  t jy& } ztd|d }~w t jy9 } ztd|d }~ww )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y   Y d S  t jy- } ztd|d }~w t jy@ } ztd|d }~ww )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   sH   |d u rd}z	t | j||W S  t jy# } ztd|d }~ww )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    