
    4Rj                        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y)    )annotationsN)Sequencec                R    | du|duk7  r| dnd}| dnd}t        d| d| d      y)z?Raise if only one of aws_access_key/aws_secret_key is provided.Naws_access_keyaws_secret_key`z` was provided without `zT`. Both must be provided together, or neither (to use the default credential chain).)
ValueError)r   r   providedmissings       f/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/anthropic/lib/aws/_credentials.pyvalidate_credentialsr      s_     	d"d(BC'5'A#GW&4&@"FVz1' ;` a
 	
 D    c                 \    | D ]'  }t         j                  j                  |      }|%|c S  y)zAReturn the first non-None value from the given env vars, or None.Nosenvironget)env_varsvarvalues      r   	_read_envr      s3     

s#L r   )ANTHROPIC_AWS_API_KEY)api_key_env_varsc                ,    | y||y|yt        | yy)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
    FTr   )api_keyr   r   aws_profiler   s        r   resolve_auth_moder      s:    " !^%? "#/ r   c                     | | S |st        | S y)z1Resolve the API key. Returns None if using SigV4.Nr   )r   	use_sigv4r   s      r   resolve_api_keyr!   A   s!     *++r   c                    | | S t         j                  j                  d      xs t         j                  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.
    
AWS_REGIONAWS_DEFAULT_REGIONr   )
aws_regions    r   resolve_regionr&   R   s6    
 ::>>,'O2::>>:N+OOr   )ANTHROPIC_AWS_WORKSPACE_ID)workspace_id_env_varsc                   | | 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   )workspace_idr(   s     r   resolve_workspace_idr+   ]   s     +,,r   )ANTHROPIC_AWS_BASE_URLz/https://aws-external-anthropic.{region}.api.aws)base_url_env_varsurl_templatec               L    | | S t        | }||S ||j                  |      S y)zResolve the base URL from constructor arg, env var, or region.

    Returns None if no base URL is resolvable (caller should raise).
    N)region)r   format)base_urlr0   r-   r.   env_urls        r   resolve_base_urlr4   l   sB     *+G""&"11r   )r   
str | Noner   r5   returnNone)r   strr6   r5   )r   r5   r   r5   r   r5   r   r5   r   Sequence[str]r6   bool)r   r5   r    r:   r   r9   r6   r5   )r%   r5   r6   r5   )r*   r5   r(   r9   r6   r5   )
r2   r5   r0   r5   r-   r9   r.   r8   r6   r5   )
__future__r   r   typingr   r   r   r   r!   r&   r+   r4    r   r   <module>r>      s   " 	 

 
 
	
 'A  	
  $ 
L 'A	  $	
 "P ,K-- )- 	-& (CI  %	
  r   