
     <i                    <   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
 ddlmZ ddlmZ ej        e	j        gef         Z ej        e          Zdad+dZd,dZd-dZd.dZd/dZd0dZd1dZd2dZd3d4dZ d3d4dZ!d5d!Z"d6d"Z#d7d$Z$d% Z%d& Z&d7d'Z'd8d*Z(dS )9z1
Core API functions and initialization routines.
    )annotationsN   )backendcredentials)fail)	platform_keyringbackend.KeyringBackendreturnNonec                \    t          | t          j                  st          d          | adS )zSet current keyring backend.z1The keyring must be an instance of KeyringBackendN)
isinstancer   KeyringBackend	TypeError_keyring_backend)r	   s    /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/keyring/core.pyset_keyringr      s5     gw566 MKLLL    c                 t    t           t                       t          j        t          j        t                     S )zGet current keyring backend.)r   init_backendtypingcastr   r    r   r   get_keyringr       s'    ;w-/?@@@r   c                    t          j                    } 	 t          j        |            n# t          $ r Y nw xY wt          j                            | d          }t          j                            |          rd| }t          |          t          |dd          5 }|
                    d           ddd           dS # 1 swxY w Y   dS )z
    Configure the null keyring as the default.

    >>> fs = getfixture('fs')
    >>> disable()
    >>> disable()
    Traceback (most recent call last):
    ...
    RuntimeError: Refusing to overwrite...
    keyringrc.cfgzRefusing to overwrite wutf-8encodingz7[backend]
default-keyring=keyring.backends.null.KeyringN)platformconfig_rootosmakedirsOSErrorpathjoinexistsRuntimeErroropenwrite)rootfilenamemsgfiles       r   disabler0   '   s,    !!D
D   w||D/22H	w~~h  1x113	hg	.	.	. O$

MNNNO O O O O O O O O O O O O O O O O Os   * 
77CC	Cservice_namestrusername
str | Nonec                F    t                                          | |          S )z(Get password from the specified service.)r   get_passwordr1   r3   s     r   r6   r6   ?   s    ==%%lH===r   passwordc                L    t                                          | ||           dS )z3Set password for the user in the specified service.N)r   set_password)r1   r3   r8   s      r   r:   r:   D   s$    MM|Xx@@@@@r   c                J    t                                          | |           dS )z:Delete the password for the user in the specified service.N)r   delete_passwordr7   s     r   r<   r<   I   s"    MM!!,99999r   credentials.Credential | Nonec                F    t                                          | |          S )z+Get a Credential for the specified service.)r   get_credentialr7   s     r   r?   r?   N   s     ==''h???r   boolc                    | j         dk    S )Nr   )priority)r   s    r   recommendedrC   U   s    q  r   limitLimitCallable | Nonec                >    t          t          |                      dS )z"
    Load a detected backend.
    N)r   _detect_backendrD   s    r   r   r   Y   s      &&'''''r   c                    | t           _        t                      pYt                      pKt	          t          | t          j                              t          j                    t           j	                  S )z
    Return a keyring specified in the config file or infer the best available.

    Limit, if supplied, should be a callable taking a backend and returning
    True if that backend should be included for consideration.
    )defaultkey)
r   _limitload_envload_configmaxfilterget_all_keyringr   Keyringby_priorityrH   s    r   rG   rG   `   s_     GN

 	
==	
5'13344LNN#	
 
 
	r   keyring_nametype[backend.KeyringBackend]c                    |                      d          \  }}}t          |           t          j        |         }t	          ||          S )a  
    Load the keyring class indicated by name.

    These popular names are tested to ensure their presence.

    >>> popular_names = [
    ...      'keyring.backends.Windows.WinVaultKeyring',
    ...      'keyring.backends.macOS.Keyring',
    ...      'keyring.backends.kwallet.DBusKeyring',
    ...      'keyring.backends.SecretService.Keyring',
    ...  ]
    >>> list(map(_load_keyring_class, popular_names))
    [...]
    .)
rpartition
__import__sysmodulesgetattr)rT   module_namesep
class_namemodules        r   _load_keyring_classra   v   sH     $0#:#:3#?#? Kj{[%F6:&&&r   c                B    t          |           }|j          |            S )z
    Load the specified keyring by name (a fully-qualified name to the
    keyring, such as 'keyring.backends.file.PlaintextKeyring')
    )ra   rB   )rT   class_s     r   load_keyringrd      s#    
 !..F
OO688Or   backend.KeyringBackend | Nonec                 d    	 t          t          j        d                   S # t          $ r Y dS w xY w)z6Load a keyring configured in the environment variable.PYTHON_KEYRING_BACKENDN)rd   r#   environKeyErrorr   r   r   rM   rM      s?    BJ'?@AAA   tts   ! 
//c                 .    t          j                    dz  S )Nr   )r!   r"   r   r   r   _config_pathrk      s    !!O33r   c                L    |                                  st          |           | S N)r(   FileNotFoundError)r&   s    r   _ensure_pathro      s%    ;;== &%%%Kr   c                    t          j                    } 	 |                     t          t	                                d           n# t
          $ r Y dS w xY wt          |            	 |                     d          r)|                     dd          	                                }ndS nX# t           j
        t          f$ r? t          j        d          }|                    ddt	                       z              Y dS w xY wt          |          S )	z8Load a keyring using the config file in the config root.r   r   Nr   zdefault-keyringr	   z/Keyring config file contains incorrect values.
zConfig file: )configparserRawConfigParserreadro   rk   rn   _load_keyring_pathhas_sectiongetstripNoOptionErrorImportErrorlogging	getLoggerwarningrd   )configrT   loggers      r   rN   rN      s.    )++FL007CCCC   ttvi(( 	!::i1BCCIIKKLL4  &4   "9-->.lnn../	
 	
 	
 tt %%%s$   0A 
AA'>B( (AC=<C=r}   configparser.RawConfigParserc                   	 |                      dd                                          }t          j                            dt
          j                            |                     dS # t          j        t          j	        f$ r Y dS w xY w)z)load the keyring-path option (if present)r   zkeyring-pathr   N)
rv   rw   rZ   r&   insertr#   
expanduserrq   rx   NoSectionError)r}   r&   s     r   rt   rt      s    zz)^44::<<27--d3344444&(CD   s   A%A) )BB)r	   r
   r   r   )r   r
   )r   r   )r1   r2   r3   r2   r   r4   )r1   r2   r3   r2   r8   r2   r   r   )r1   r2   r3   r2   r   r   )r1   r2   r3   r4   r   r=   )r   r@   rm   )rD   rE   )rT   r2   r   rU   )rT   r2   r   r
   )r   re   )r}   r   r   r   ))__doc__
__future__r   rq   rz   r#   rZ   r    r   r   backendsr   utilr   r!   Callabler   r@   LimitCallabler{   __name__logr   r   r   r0   r6   r:   r<   r?   rC   r   rG   ra   rd   rM   rk   ro   rN   rt   r   r   r   <module>r      s,    # " " " " "      				 



  " " " " " " " "       ' ' ' ' ' '!7 8$ >?g!!    A A A AO O O O0> > > >
A A A A
: : : :
@ @ @ @! ! ! !( ( ( ( (    ,' ' ' '*      4 4 4  & & & &8     r   