o
    l>j                  
   @   sz   zd dl Z e dd d dlmZ W n eeefy   Y nw d dlmZ d dl	m
Z
 d dlmZmZ G dd	 d	e
ZdS )
    NGnomeKeyringz1.0)r   )
properties)KeyringBackend)PasswordDeleteErrorPasswordSetErrorc                   @   s\   e Zd ZdZdZ	 ejdd Zedd Z	ddd	Z
d
d Zdd Zdd ZdddZdS )KeyringzGnome KeyringNc                 C   s8   dt  vr	tdt d }|tjjkrt|jdS )Nr   zGnomeKeyring module requiredr      )globalsRuntimeErrorr   get_default_keyring_syncResultOK
value_name)clsresult r   G/home/thesage/.local/lib/python3.10/site-packages/keyrings/alt/Gnome.pypriority   s   

zKeyring.priorityc                 C   s   t  d }| jp
|S )Nr   )r   r   KEYRING_NAME)selfsystem_defaultr   r   r   keyring_name    s   
zKeyring.keyring_nameFc           	      C   s   g }|  |}|  |}dD ]G}tj }tj||d | tj||d | ttjj|\}}|tjj	kr>||7 }q|rU|tjj
krJtd|tjjkrUt|jq|S ),Get password of the username for the service))usernameservice)userdomainr   r   Cancelled by user)_safe_stringr   	Attributelist_newlist_append_stringfind_items_syncItemTypeNETWORK_PASSWORDr   r   	CANCELLEDr   NO_MATCHr   )	r   r   r   deleting	passwordsattrs_tupleattrsr   itemsr   r   r   _find_passwords%   s&   




zKeyring._find_passwordsc                 C   s6   |  ||}|s
dS |d j}t|tr|S |dS )r   Nr   utf-8)r,   secret
isinstancestrdecode)r   r   r   r+   r.   r   r   r   get_password;   s
   
zKeyring.get_passwordc              	   C   s   |  |}|  |}|  |}tj }tj|d| tj|d| tj|dd t| jtjjd| d| d||dd	 }|tj	j
krLtd
|tj	jkrWt|jdS )z,Set password for the username of the servicer   r   applicationzpython-keyringzPassword for 'z' on ''Tr   r   N)r   r   r   r    r!   item_create_syncr   r#   r$   r   r%   r   r   r   )r   r   r   passwordr*   r   r   r   r   set_passwordD   s0   




zKeyring.set_passwordc                 C   sd   | j ||dd}|std|D ]}t|j|j}|tjjkr$td|tjjkr/t|j	qdS )z4Delete the password for the username of the service.T)r'   zPassword not foundr   N)
r,   r   r   item_delete_synckeyringitem_idr   r%   r   r   )r   r   r   r+   currentr   r   r   r   delete_password]   s   
zKeyring.delete_passwordr-   c                 C   s   t |ts
||S t|S )z:Convert unicode to string as gnomekeyring barfs on unicode)r/   r0   encode)r   sourceencodingr   r   r   r   i   s   

zKeyring._safe_string)F)r-   )__name__
__module____qualname____doc__r   r   classpropertyr   propertyr   r,   r2   r7   r<   r   r   r   r   r   r      s    


	r   )girequire_versiongi.repositoryr   ImportError
ValueErrorAttributeErrorjaraco.classesr   keyring.backendr   keyring.errorsr   r   r   r   r   r   r   <module>   s    