
    Djh                     N    d dl Z d dlmZ d dlmZ d dlmZ  G d de          ZdS )    N)
properties)errors)KeyringBackendc                   L    e Zd ZdZd	dZej        d             Zd Zd Z	d Z
dS )
MultipartKeyringWrapperzA wrapper around an existing keyring that breaks the password into
    smaller parts to handle implementations that have limits on the maximum
    length of passwords i.e. Windows Vault
       c                 "    || _         || _        d S )N)_keyring_max_password_size)selfkeyringmax_password_sizes      M/home/thesage/.hermes/venv/lib/python3.11/site-packages/keyrings/alt/multi.py__init__z MultipartKeyringWrapper.__init__   s    "3    c                     dS )Nr    )clss    r   priorityz MultipartKeyringWrapper.priority   s    qr   c                     | j                             ||          }|rZ|g}d}	 | j                             |d||fz            }|r|                    |           |dz  }nn?d                    |          S dS )z,Get password of the username for the service   Tz%s{{part_%d}} N)r
   get_passwordappendjoin)r   serviceusername	init_partpartsi	next_parts          r   r   z$MultipartKeyringWrapper.get_password   s    M..wAA	 	"KEA M66_!}< 	  LL+++FAA 775>>!tr   c                      t          dt                     j                  } fd|D             }t          |          D ]1\  }}|}|dk    r|d|z  z  } j                            |||           2dS )z,Set password for the username of the servicer   c                 4    g | ]}||j         z            S r   )r   ).0r    passwordr   s     r   
<listcomp>z8MultipartKeyringWrapper.set_password.<locals>.<listcomp>+   s+    VVV(1q4+B'B#BCVVVr   z{{part_%d}}N)rangelenr   	enumerater
   set_password)	r   r   r   r%   segmentspassword_partsr    password_partcurr_usernames	   `  `     r   r*   z$MultipartKeyringWrapper.set_password(   s    CMM4+BCCVVVVVXVVV ). 9 9 	N 	NA}$M1uu!22M&&w}MMMM		N 	Nr   c                    | j                             ||           t          j        d          }	 dt	          ddt          |          it                      z  }	 | j                             ||           n# t          j        $ r Y d S w xY w^)Nr   Tz%(username)s{{part_%(index)d}}indexr   )	r
   delete_password	itertoolscountdictnextvarsr   PasswordDeleteError)r   r   r   r3   	part_names        r   r1   z'MultipartKeyringWrapper.delete_password2   s    %%gx888""	84 < <5kk<%)VV< < I--gyAAAA-   	s   A8 8B
BN)r   )__name__
__module____qualname____doc__r   r   classpropertyr   r   r*   r1   r   r   r   r   r      s         
4 4 4 4     $N N N
 
 
 
 
r   r   )r2   jaraco.classesr   r   r   keyring.backendr   r   r   r   r   <module>r@      s{        % % % % % %       * * * * * *4 4 4 4 4n 4 4 4 4 4r   