o
    ‹¨Êh�  ã                	   @   s€   zd dl Z e  dd¡ d dlmZ W n eefy   Y nw d dlZd dlmZ d dl	m
Z
mZ d dlmZ G dd	„ d	eƒZdS )
é    NÚGnomeKeyringz1.0)r   )ÚKeyringBackend)ÚPasswordSetErrorÚPasswordDeleteError)Ú
propertiesc                   @   s`   e Zd ZdZdZ	 eje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   úD/var/www/html/env/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 )ú5Get 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   s8   |   ||¡}|s
dS |d j}t|tjƒr|S | d¡S )r   Nr   úutf-8)r,   ÚsecretÚ
isinstanceÚsixÚ	text_typeÚ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||f ||d¡d }|tj	j
krItdƒ‚|tj	jkrTt|jƒ‚d	S )
z5Set password for the username of the service
        r   r   Úapplicationzpython-keyringzPassword for '%s' on '%s'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_passwordM   s*   



ÿ

ýý
ÿ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 )z=Delete 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_passwordb   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/   ÚstrÚencode)r   ÚsourceÚencodingr   r   r   r   p   s   

zKeyring._safe_string)F)r-   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚClassPropertyÚclassmethodr   Úpropertyr   r,   r3   r7   r<   r   r   r   r   r   r      s    

r   )ÚgiÚrequire_versionÚgi.repositoryr   ÚImportErrorÚ
ValueErrorr0   Úkeyring.backendr   Úkeyring.errorsr   r   Úkeyring.utilr   r   r   r   r   r   Ú<module>   s    ÿ