
    ÁjK                       d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
mZ d dlZddlmZ ddlmZ ddlmZmZmZmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddlm%Z%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 ddl7m5Z8m6Z9 dZ:dZ; edeejx                  ejz                  f         Z> edee#e   e$e   f         Z? G d de       Z@ G d de!      ZA G d de+e>e?f         ZB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%d ZC G d! d"eBejx                  e#e   f   e,      ZD G d# d$eBejz                  e$e   f   e-      ZEy)&    )annotationsN)AnyUnionMappingTypeVarSequence)Selfoverride   )_exceptionsQuerystring)OmitTimeoutNotGiven	not_given)asyncifyis_given)cached_property)__version__   )get_auth_headers)SyncAPIResourceAsyncAPIResource)StreamAsyncStream)AnthropicErrorAPIStatusError)MiddlewareInput)DEFAULT_MAX_RETRIES
BaseClientSyncAPIClientAsyncAPIClientmerge_headers)resolve_regionresolve_api_keyresolve_auth_modevalidate_credentials)MessagesAsyncMessageszbedrock-mantle)AWS_BEARER_TOKEN_BEDROCKANTHROPIC_AWS_API_KEY_HttpxClientT)bound_DefaultStreamTc                      e Zd Zedd       Zy)
MantleBetac                ,    t        | j                        S N)BetaMessages_clientselfs    D/tmp/pip-target-k_scjv0h/lib/python/anthropic/lib/bedrock/_mantle.pymessageszMantleBeta.messages0   s    DLL))    N)returnr4   __name__
__module____qualname__r   r9    r:   r8   r1   r1   /   s    * *r:   r1   c                      e Zd Zedd       Zy)AsyncMantleBetac                ,    t        | j                        S r3   )AsyncBetaMessagesr5   r6   s    r8   r9   zAsyncMantleBeta.messages6   s     ..r:   N)r;   rD   r<   r@   r:   r8   rB   rB   5   s    / /r:   rB   c                  .    e Zd Ze	 	 	 	 	 	 	 	 dd       Zy)BaseMantleClientc               *   |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j
                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   d	k(  rt        j                  |||      S |j                   d
k(  rt        j                  |||      S |j                   dk\  rt        j                  |||      S t        |||      S )Ni  )responsebodyi  i  i  i  i  i  i  i  i  )status_coder   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorRequestTooLargeErrorUnprocessableEntityErrorRateLimitErrorOverloadedErrorInternalServerErrorr   )r7   err_msgrI   rH   s       r8   _make_status_errorz#BaseMantleClient._make_status_error?   sx    3&..wPTUU3&227XTXYY3&44WxVZ[[3&,,WxdSS3&,,WxdSS3&33GhUYZZ3&77(Y]^^3&--gtTT3&..wPTUU3&227XTXYYgtDDr:   N)rU   strrI   objectrH   zhttpx.Responser;   r   )r=   r>   r?   r
   rV   r@   r:   r8   rF   rF   >   s@    $E$E 	$E
 !$E 
$E $Er:   rF   c                .   |rd}d}	n3t        ||       t        | |||t              }t        | |t              }	t	        |      }
|t
        j                  j                  d      }||
t        d      d|
 d	}i }|r|j                  |       |	|||fS )
zResolve and validate all Mantle client configuration.

    Returns (resolved_api_key, resolved_base_url, use_sigv4, merged_headers).
    FN)aws_access_keyaws_secret_key)api_keyrZ   r[   aws_profileapi_key_env_vars)r\   	use_sigv4r^   !ANTHROPIC_BEDROCK_MANTLE_BASE_URLzNo AWS region or base URL found. Set `aws_region` in the constructor, the `AWS_REGION` / `AWS_DEFAULT_REGION` environment variable, or provide a `base_url` / `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` environment variable.zhttps://bedrock-mantle.z.api.aws/anthropic)
r(   r'   _MANTLE_API_KEY_ENV_VARSr&   r%   osenvirongetr   update)r\   rZ   r[   
aws_regionr]   	skip_authbase_urldefault_headersr_   resolved_api_keyresolved_regionmerged_headerss               r8   _resolve_mantle_configrm   j   s     	N>Z%))#5
	 +5
 %Z0O::>>"EF" [ 
 -_,==OP%'No.Xy.@@r:   c                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ddddddddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZeedd              Z	eedd              Z
eed fd              Zedd       Zedd       Zddddddddededdddei d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d dZeZd!dZ xZS )"AnthropicBedrockMantler)   r9   r1   beta
str | Nonerf   rZ   r[   aws_session_tokenr]   boolrg   
_use_sigv4NFrZ   r[   rr   rf   r]   r\   rg   rh   timeoutmax_retriesri   default_queryhttp_client
middleware_strict_response_validationc               4   t        ||||||||      \  }}}}t        |      }t        |   t        ||	|
|||||	       || _        || _        || _        || _        || _	        || _
        || _        || _        t        |       | _        t        |       | _        y N)r\   rZ   r[   rf   r]   rg   rh   ri   )	versionrh   rv   rw   custom_headerscustom_queryry   rz   r{   )rm   r%   super__init__r   r\   rf   rZ   r[   rr   r]   rg   rt   r)   r9   r1   rp   r7   rZ   r[   rr   rf   r]   r\   rg   rh   rv   rw   ri   rx   ry   rz   r{   rj   resolved_base_urlr_   rl   rk   	__class__s                        r8   r   zAnthropicBedrockMantle.__init__   s    & J`))!#+	J
F+Y )4&#)&#!(C 	 
	
 (),,!2&"# t$	r:   c                    t        d      S Ncomma)array_formatr   r6   s    r8   qszAnthropicBedrockMantle.qs        00r:   c                d    | j                   s| j                  ri S | j                  }|i S dd| iS NAuthorizationzBearer rg   rt   r\   r7   r\   s     r8   auth_headersz#AnthropicBedrockMantle.auth_headers   ;     >>T__I,,?I77)!455r:   c                >    i t         |   ddd| j                  S )Nfalse
2023-06-01zX-Stainless-Asynczanthropic-versionr   ri   _custom_headersr7   r   s    r8   ri   z&AnthropicBedrockMantle.default_headers   s5    
g%
!(!-
 ""	
 	
r:   c                     y r3   r@   r7   headersr   s      r8   _validate_headersz(AnthropicBedrockMantle._validate_headers      r:   c                   | j                   s| j                  sy |j                         j                         }t	        |j
                  t        |j                        |j                  | j                  | j                  | j                  | j                  | j                  |t        
      }|j                  j                  |       y N)
methodurlr   rZ   r[   rr   regionprofiledataservice_name)rg   rt   readdecoder   r   rW   r   r   rZ   r[   rr   rf   r]   DEFAULT_SERVICE_NAMEre   r7   requestr   r   s       r8   _prepare_requestz'AnthropicBedrockMantle._prepare_request  s    >>||~$$&">>GKK OO...."44??$$-
 	w'r:   r\   rZ   r[   rr   rf   r]   rg   rh   rv   ry   rw   ri   set_default_headersrx   set_default_queryrz   _extra_kwargsc               n   ||t        d      ||t        d      | j                  }|t        ||      }n||}| j                  }|i ||}n||} | j                  d|xs | j
                  |xs | j                  |xs | j                  |xs | j                  |xs | j                  |xs | j                  ||n| j                  |xs | j                  t        |	t              r| j                  n|	|
t!        |      r|n| j"                  ||t        |t              r| j$                  n|d|S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        zPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)r\   rZ   r[   rr   rf   r]   rg   rh   rv   ry   rw   ri   rx   rz   r@   
ValueErrorr   r$   _custom_queryr   r\   rZ   r[   rr   rf   r]   rg   rh   
isinstancer   rv   r   rw   _middlewarer7   r\   rZ   r[   rr   rf   r]   rg   rh   rv   ry   rw   ri   r   rx   r   rz   r   r   paramss                       r8   copyzAnthropicBedrockMantle.copy  U   0 &+>+Jopp$):)Fkll&&&#G_=G ,)G##$00-0F*&Ft~~ 
+t||)@T-@-@)@T-@-@/I43I3I!4T__#7t'7'7#,#8idnn.$.w$ADLLw#'/'<$BRBR# +5j(+Kt''Q[
 
 	
r:   c                B    | j                  g | j                  |      S zA new client with the given middleware appended after this client's middleware.

        Convenience for applying extra middleware to a single request:

        ```py
        client.with_middleware(my_middleware).messages.create(...)
        ```
        )rz   r   r   r7   rz   s     r8   with_middlewarez&AnthropicBedrockMantle.with_middlewareY  &     yy$Dd&6&6$D$DyEEr:   ) rZ   rq   r[   rq   rr   rq   rf   rq   r]   rq   r\   rq   rg   rs   rh   str | httpx.URL | Nonerv   !float | Timeout | None | NotGivenrw   intri   Mapping[str, str] | Nonerx   Mapping[str, object] | Nonery   httpx.Client | Nonerz    Sequence[MiddlewareInput] | Noner{   rs   r;   Noner;   r   r;   zdict[str, str]r;   zdict[str, str | Omit]r   r   r   r   r;   r   r   zhttpx.Requestr;   r   )$r\   rq   rZ   rq   r[   rq   rr   rq   rf   rq   r]   rq   rg   bool | Nonerh   r   rv   r   ry   r   rw   int | NotGivenri   r   r   r   rx   r   r   r   rz   +Sequence[MiddlewareInput] | None | NotGivenr   Mapping[str, Any]r;   r	   rz   r   r;   r	   r=   r>   r?   __annotations__r   r    r   propertyr
   r   r   ri   r   r   r   with_optionsr   __classcell__r   s   @r8   ro   ro      s   
!!O
 &*%)(,!%"&"+/5>.4859+/7;,1#6% #6% #	6%
 &6% 6%  6% 6% 6% )6% 36% 6% 26% 36% )6%  5!6%" &*#6%$ 
%6%p 1  1 6  6 
  
   ( (. #%)%)(,!%"&!%+/5>+/&/488<599=BK+-':
 :
 #	:

 #:
 &:
 :
  :
 :
 ):
 3:
 ):
 $:
 2:
 6:
  3!:
" 7#:
$ @%:
& )':
( 
):
x L	Fr:   ro   c                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ddddddddeedddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZeedd              Z	eedd              Z
eed fd              Zedd       Zedd       Zddddddddededdddei d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d dZeZd!dZ xZS )"AsyncAnthropicBedrockMantler*   r9   rB   rp   rq   rf   rZ   r[   rr   r]   rs   rg   rt   NFru   c               4   t        ||||||||      \  }}}}t        |      }t        |   t        ||	|
|||||	       || _        || _        || _        || _        || _	        || _
        || _        || _        t        |       | _        t        |       | _        y r}   )rm   r%   r   r   r   r\   rf   rZ   r[   rr   r]   rg   rt   r*   r9   rB   rp   r   s                        r8   r   z$AsyncAnthropicBedrockMantle.__init__u  s    & J`))!#+	J
F+Y )4&#)&#!(C 	 
	
 (),,!2&"#%d+#D)	r:   c                    t        d      S r   r   r6   s    r8   r   zAsyncAnthropicBedrockMantle.qs  r   r:   c                d    | j                   s| j                  ri S | j                  }|i S dd| iS r   r   r   s     r8   r   z(AsyncAnthropicBedrockMantle.auth_headers  r   r:   c                >    i t         |   ddd| j                  S )Nzasync:asyncior   r   r   r   s    r8   ri   z+AsyncAnthropicBedrockMantle.default_headers  s5    
g%
!0!-
 ""	
 	
r:   c                     y r3   r@   r   s      r8   r   z-AsyncAnthropicBedrockMantle._validate_headers  r   r:   c                  K   | j                   s| j                  sy |j                         j                         } t	        t
              |j                  t        |j                        |j                  | j                  | j                  | j                  | j                  | j                  |t        
       d {   }|j                  j!                  |       y 7  wr   )rg   rt   r   r   r   r   r   rW   r   r   rZ   r[   rr   rf   r]   r   re   r   s       r8   r   z,AsyncAnthropicBedrockMantle._prepare_request  s     >>||~$$&2!12>>GKK OO...."44??$$-
 
 	w'
s   B7C9C:!Cr   c               n   ||t        d      ||t        d      | j                  }|t        ||      }n||}| j                  }|i ||}n||} | j                  d|xs | j
                  |xs | j                  |xs | j                  |xs | j                  |xs | j                  |xs | j                  ||n| j                  |xs | j                  t        |	t              r| j                  n|	|
t!        |      r|n| j"                  ||t        |t              r| j$                  n|d|S r   r   r   s                       r8   r   z AsyncAnthropicBedrockMantle.copy  r   r:   c                B    | j                  g | j                  |      S r   r   r   s     r8   r   z+AsyncAnthropicBedrockMantle.with_middleware  r   r:   ) rZ   rq   r[   rq   rr   rq   rf   rq   r]   rq   r\   rq   rg   rs   rh   r   rv   r   rw   r   ri   r   rx   r   ry   httpx.AsyncClient | Nonerz   r   r{   rs   r;   r   r   r   r   r   r   )$r\   rq   rZ   rq   r[   rq   rr   rq   rf   rq   r]   rq   rg   r   rh   r   rv   r   ry   r   rw   r   ri   r   r   r   rx   r   r   r   rz   r   r   r   r;   r	   r   r   r   s   @r8   r   r   h  s   
!!O
 &*%)(,!%"&"+/5>.4859047;,1#6* #6* #	6*
 &6* 6*  6* 6* 6* )6* 36* 6* 26* 36* .6*  5!6*" &*#6*$ 
%6*p 1  1 6  6 
  
   ( (. #%)%)(,!%"&!%+/5>04&/488<599=BK+-':
 :
 #	:

 #:
 &:
 :
  :
 :
 ):
 3:
 .:
 $:
 2:
 6:
  3!:
" 7#:
$ @%:
& )':
( 
):
x L	Fr:   r   )r\   rq   rZ   rq   r[   rq   rf   rq   r]   rq   rg   rs   rh   r   ri   r   r;   z8tuple[str | None, str | httpx.URL, bool, dict[str, str]])F
__future__r   rb   typingr   r   r   r   r   typing_extensionsr	   r
   httpx r   _qsr   _typesr   r   r   r   _utilsr   r   _compatr   _versionr   	aws._authr   	_resourcer   r   
_streamingr   r   r   r   r   r   _base_clientr    r!   r"   r#   r$   aws._credentialsr%   r&   r'   r(   resources.messagesr)   r*   resources.beta.messagesr4   rD   r   ra   ClientAsyncClientr-   r/   r1   rB   rF   rm   ro   r   r@   r:   r8   <module>r      s   " 	 9 9 ,    8 8 ( & # ( : - 9 *   : c' P uU\\5CTCT5T/UV+5kRUFV9V3WX* */& /&Ez-"@A &EX4A4A 4A 	4A
 4A 4A 4A %4A .4A >4At~F-ellF3K.GH- ~FH~F"253D3DkRUFV3V"WYg ~Fr:   