o
    î6Wjª  ã                   @  s„   d dl mZ d dlZd dlmZ d-d	d
„Zd.dd„Zddœd/dd„Zddœd0dd„Zd1dd„Z	ddœd2d"d#„Z
d$d%d&œd3d+d,„ZdS )4é    )ÚannotationsN)ÚSequenceÚaws_access_keyú
str | NoneÚaws_secret_keyÚreturnÚNonec                 C  sJ   | du|dukr#| durdnd}| durdnd}t d|› d|› d�ƒ‚dS )z?Raise if only one of aws_access_key/aws_secret_key is provided.Nr   r   ú`z` was provided without `zT`. Both must be provided together, or neither (to use the default credential chain).)Ú
ValueError)r   r   ÚprovidedÚmissing© r   úm/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/anthropic/lib/aws/_credentials.pyÚvalidate_credentials   s   ÿýr   Úenv_varsÚstrc                  G  s*   | D ]}t j |¡}|dur|  S qdS )zAReturn the first non-None value from the given env vars, or None.N©ÚosÚenvironÚget)r   ÚvarÚvaluer   r   r   Ú	_read_env   s   ÿr   )ÚANTHROPIC_AWS_API_KEY)Úapi_key_env_varsÚapi_keyÚaws_profiler   úSequence[str]Úboolc                 C  s@   | durdS |dus|durdS |durdS t |Ž durdS dS )u‡  Determine whether to use SigV4 auth. Returns True for SigV4, False for API key.

    Auth precedence:
    1. api_key constructor arg â†’ API key mode
    2. aws_access_key + aws_secret_key constructor args â†’ SigV4
    3. aws_profile constructor arg â†’ SigV4
    4. API key env var(s) â†’ API key mode (checked in order; first match wins)
    5. Default AWS credential chain â†’ SigV4
    NFT©r   )r   r   r   r   r   r   r   r   Úresolve_auth_mode   s   r    Ú	use_sigv4c                 C  s   | dur| S |st |Ž S dS )z1Resolve the API key. Returns None if using SigV4.Nr   )r   r!   r   r   r   r   Úresolve_api_keyA   s
   r"   Ú
aws_regionc                 C  s$   | dur| S t j d¡pt j d¡S )u‡   Resolve the AWS region from constructor arg or env var.

    Does not silently default â€” returns None if no region is available.
    NÚ
AWS_REGIONÚAWS_DEFAULT_REGIONr   )r#   r   r   r   Úresolve_regionR   s   r&   )ÚANTHROPIC_AWS_WORKSPACE_ID)Úworkspace_id_env_varsÚworkspace_idr(   c                C  s   | dur| S t |Ž S )zŠResolve the workspace ID from constructor arg or env var(s).

    Returns None if no workspace ID is available (caller should raise).
    Nr   )r)   r(   r   r   r   Úresolve_workspace_id]   s   	r*   )ÚANTHROPIC_AWS_BASE_URLz/https://aws-external-anthropic.{region}.api.aws)Úbase_url_env_varsÚurl_templateÚbase_urlÚregionr,   r-   c                C  s8   | dur| S t |Ž }|dur|S |dur|j|d�S dS )z‰Resolve the base URL from constructor arg, env var, or region.

    Returns None if no base URL is resolvable (caller should raise).
    N)r/   )r   Úformat)r.   r/   r,   r-   Úenv_urlr   r   r   Úresolve_base_urll   s   r2   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r!   r   r   r   r   r   )r#   r   r   r   )r)   r   r(   r   r   r   )
r.   r   r/   r   r,   r   r-   r   r   r   )Ú
__future__r   r   Útypingr   r   r   r    r"   r&   r*   r2   r   r   r   r   Ú<module>   s    

ú&ü
ýû