
    i                    x    d dl mZ d dlZd dlmZ d&d	Zd'dZddd(dZddd)dZd*dZ	ddd+dZ
ddd d,d%ZdS )-    )annotationsN)Sequenceaws_access_key
str | Noneaws_secret_keyreturnNonec                ^    | du|duk    r"| dnd}| 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missings       [/root/projects/qq-shell/venv/lib/python3.11/site-packages/anthropic/lib/aws/_credentials.pyvalidate_credentialsr      s~     	d"d(BCC'5'A##GW&4&@""FVa a a' a a a
 
 	
 DC    env_varsstrc                 Z    | D ]'}t           j                            |          }||c S (dS )zAReturn the first non-None value from the given env vars, or None.Nosenvironget)r   varvalues      r   	_read_envr      s=      
s##LLL 4r   )ANTHROPIC_AWS_API_KEY)api_key_env_varsapi_keyaws_profiler   Sequence[str]boolc                8    | dS ||dS |dS t          | 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   s        r   resolve_auth_moder$      sD    " u!^%?tt "#/u 4r   	use_sigv4c                $    | | S |s	t          | S dS )z1Resolve the API key. Returns None if using SigV4.Nr#   )r   r%   r   s      r   resolve_api_keyr'   A   s(      ,*++4r   
aws_regionc                    | | 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(   s    r   resolve_regionr,   R   s8    
 :>>,''O2:>>:N+O+OOr   )ANTHROPIC_AWS_WORKSPACE_ID)workspace_id_env_varsworkspace_idr.   c                   | | S t          | S )zResolve the workspace ID from constructor arg or env var(s).

    Returns None if no workspace ID is available (caller should raise).
    r#   )r/   r.   s     r   resolve_workspace_idr1   ]   s     +,,r   )ANTHROPIC_AWS_BASE_URLz/https://aws-external-anthropic.{region}.api.aws)base_url_env_varsurl_templatebase_urlregionr3   r4   c               X    | | S t          | }||S ||                    |          S dS )zResolve the base URL from constructor arg, env var, or region.

    Returns None if no base URL is resolvable (caller should raise).
    N)r6   )r   format)r5   r6   r3   r4   env_urls        r   resolve_base_urlr:   l   sG     *+G""&"1114r   )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   )
r5   r   r6   r   r3   r    r4   r   r   r   )
__future__r   r   typingr   r   r   r$   r'   r,   r1   r:    r   r   <module>r>      s   " " " " " " 				      
 
 
 
    'A     L 'A	     "P P P P ,K- - - - - -& (CI       r   