
    b\j                        S SK Jr  S SKrS SKJr        SS jrSS jrSS.           SS jjrSS.       SS	 jjrSS
 jr	SS.     SS jjr
SSS.         SS jjrg)    )annotationsN)Sequencec                X    U SLUSL:w  a   U b  SOSnU b  SOSn[        SU SU S35      eg)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       T/var/www/website/venv/lib/python3.13/site-packages/anthropic/lib/aws/_credentials.pyvalidate_credentialsr      s_     	d"d(BC'5'A#GW&4&@"FVz1' ;` a
 	
 D    c                 b    U  H)  n[         R                  R                  U5      nUc  M'  Us  $    g)zAReturn the first non-None value from the given env vars, or None.Nosenvironget)env_varsvarvalues      r   	_read_envr      s.    

s#L  r   )ANTHROPIC_AWS_API_KEY)api_key_env_varsc                6    U b  gUc  Ub  gUb  g[        U6 b  gg)uk  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                ,    U b  U $ U(       d  [        U6 $ g)z1Resolve the API key. Returns None if using SigV4.Nr   )r   	use_sigv4r   s      r   resolve_api_keyr!   A   s!     *++r   c                    U b  U $ [         R                  R                  S5      =(       d    [         R                  R                  S5      $ )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                   U b  U $ [        U6 $ )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    U b  U $ [        U6 nUb  U$ Ub  UR                  US9$ g)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   