
    Ki,                        d dl mZ d dlZd dlZ G d dej                        Z G d de      Z G d d	e      Z G d
 de      Zy)    )annotationsNc                  d    e Zd ZdZej
                  dd       Zej
                  dd       ZddZy)
Credentialz$Abstract class to manage credentialsc                     y N selfs    _/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/keyring/credentials.pyusernamezCredential.username
       "    c                     y r   r   r	   s    r   passwordzCredential.password   r   r   c                D    t        | j                  | j                        S )N)r   r   )dictr   r   r	   s    r   _varszCredential._vars   s    T]]T]]CCr   Nreturnstrr   zdict[str, str])	__name__
__module____qualname____doc__abcabstractpropertyr   r   r   r   r   r   r   r      s3    ." "" "Dr   r   )	metaclassc                  <    e Zd ZdZddZedd       Zedd       Zy)SimpleCredentialz!Simple credentials implementationc                     || _         || _        y r   )	_username	_password)r
   r   r   s      r   __init__zSimpleCredential.__init__   s    !!r   c                    | j                   S r   )r"   r	   s    r   r   zSimpleCredential.username       ~~r   c                    | j                   S r   r#   r	   s    r   r   zSimpleCredential.password   r&   r   N)r   r   r   r   r   )r   r   r   r   r$   propertyr   r   r   r   r   r    r       s2    +"    r   r    c                  .    e Zd ZddZedd       ZddZy)AnonymousCredentialc                    || _         y r   r(   )r
   r   s     r   r$   zAnonymousCredential.__init__%   s	    !r   c                    t        d      )Nz$Anonymous credential has no username)
ValueErrorr	   s    r   r   zAnonymousCredential.username(   s    ?@@r   c                .    t        | j                        S )N)r   )r   r   r	   s    r   r   zAnonymousCredential._vars,   s    T]]++r   N)r   r   r   r   )r   r   r   r$   r)   r   r   r   r   r   r+   r+   $   s"    " A A,r   r+   c                  L    e Zd ZdZddZd	dZd
dZedd       Zedd       Z	y)EnvironCredentialaA  
    Source credentials from environment variables.

    Actual sourcing is deferred until requested.

    Supports comparison by equality.

    >>> e1 = EnvironCredential('a', 'b')
    >>> e2 = EnvironCredential('a', 'b')
    >>> e3 = EnvironCredential('a', 'c')
    >>> e1 == e2
    True
    >>> e2 == e3
    False
    c                     || _         || _        y r   )user_env_varpwd_env_var)r
   r3   r4   s      r   r$   zEnvironCredential.__init__A   s    (&r   c                0    t        |       t        |      k(  S r   )vars)r
   others     r   __eq__zEnvironCredential.__eq__E   s    DzT%[((r   c                d    t         j                  j                  |      }|st        d|       |S )z&Helper to read an environment variablezMissing environment variable:)osenvirongetr.   )r
   env_varvalues      r   _get_envzEnvironCredential._get_envH   s/    

w'<WIFGGr   c                8    | j                  | j                        S r   )r?   r3   r	   s    r   r   zEnvironCredential.usernameO   s    }}T..//r   c                8    | j                  | j                        S r   )r?   r4   r	   s    r   r   zEnvironCredential.passwordS   s    }}T--..r   N)r3   r   r4   r   )r7   objectr   bool)r=   r   r   r   r   )
r   r   r   r   r$   r8   r?   r)   r   r   r   r   r   r1   r1   0   s>     ') 0 0 / /r   r1   )	
__future__r   r   r:   ABCMetar   r    r+   r1   r   r   r   <module>rF      sE    " 
 	
D3;; 
Dz  	,* 	,%/
 %/r   