
    Cj?              
         S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	  S SK
JrJr  S SKrSSKJrJr  SSKJr  SSKJr  SS	KJrJrJr  SS
KJr  SSKJrJrJr  \/ S4   rSr \RB                  " S\RD                  5      r#S"S jr$S#S jr%S$S jr&S%S jr'S&S jr(S'S jr) " S S5      r* " S S5      r+\ " S S\5      5       r,\" SS9 " S S5      5       r-S\\SSSSSSS.	                   S(S  jjr./ S!Qr/g))    )annotationsN)LiteralCallable	Awaitablecast)field	dataclass   )	NOT_GIVENNotGiven)asyncify)FinalRequestOptions)	_Provider_create_provider_ProviderRuntime)OpenAIError)BedrockAwsAuthBedrockAwsAuthConfigAwsCredentialsProviderzstr | Awaitable[str])authorizationzx-amz-content-sha256z
x-amz-datezx-amz-security-tokenz(^bedrock-mantle\.([a-z0-9-]+)\.api\.aws$c                @    U c  g U R                  5       nU=(       d    S $ N)strip)value
normalizeds     j/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/openai/providers/bedrock.py_normalize_optional_stringr      s     }J    c                    [         R                  " U 5      nUR                  R                  S5      n[        R
                  " SU5      nUb  US UR                  5        nUR                  U=(       d    SS9$ )N/z/responses(?:/.*)?$)path)httpxURLr!   rstripresearchstart	copy_with)base_urlurlr!   responses_matchs       r   _normalize_base_urlr,   $   sd    
))H
C88??3Dii 6=O"-o++-.==dkc=**r   c                    U R                   U R                  U R                  4UR                   UR                  UR                  4:H  $ r   )schemehostport)leftrights     r   _same_originr3   .   s3    KKDII.5<<UZZ2XXXr   c                l     U R                   $ ! [        R                   a  n[        S5      UeS nAff = f)Nz}Bedrock SigV4 authentication requires a replayable request body. Buffer the body before sending or use bearer authentication.)contentr"   RequestNotReadr   )requestexcs     r   _body_for_signingr9   2   s?     K
 	s    3.3c                :    SU R                   ;   a  [        S5      eg )NAuthorizationzXBedrock provider authentication cannot be combined with a custom `Authorization` header.)headersr   )r7   s    r   #_assert_provider_owns_authorizationr=   <   s    '//)tuu *r   c                L    U R                   (       a  [        S5      eSU l         U $ )NzBedrock SigV4 authentication does not support automatic redirects. Send a new request to the redirect target so it can be signed again.F)follow_redirectsr   )optionss    r   _without_redirectsrA   A   s-    S
 	
  %GNr   c                  P    \ rS rSrS
S jrSS jrSS jrSS jrSS jrSS jr	Sr
g	)_BedrockBearerAuthK   c                   Xl         X l        g r   )_token_provider	_base_url)selftoken_providerr)   s      r   __init___BedrockBearerAuth.__init__L   s    -!r   c                z    [        U5        [        UR                  U R                  5      (       d  [	        S5      eg )Nz`Refusing to authenticate a Bedrock request for an origin other than the configured provider URL.)r=   r3   r*   rG   r   rH   r7   s     r   _validate_request$_BedrockBearerAuth._validate_requestP   s4    +G4GKK88r  9r   c                    [        [        U R                  5       5      n[
        R                  " U5      (       a/  [        USS 5      n[        U5      (       a  U" 5         [        S5      e[        U[        5      (       a  UR                  5       (       d  [        S5      eU$ ! [         a    e [         a  n[        S5      UeS nAff = f)N2Failed to resolve a bearer credential for Bedrock.closez7An async Bedrock token provider requires `AsyncOpenAI`.FThe Bedrock bearer credential provider must return a non-empty string.)r   objectrF   r   	Exceptioninspectisawaitablegetattrcallable
isinstancestrr   )rH   tokenr8   rR   s       r   _resolve_token!_BedrockBearerAuth._resolve_tokenW   s    	]!5!5!78E u%%E7D1EWXX%%%U[[]]fgg  	 	]RSY\\	]s   B! !C5CCc                T  #     [        [        U R                  5       5      n[        R                  " U5      (       a
  UI S h  vN n[        U[        5      (       a  UR                  5       (       d  [        S5      eU$  N;! [
         a    e [         a  n[        S5      UeS nAff = f7f)NrQ   rS   )
r   rT   rF   rV   rW   r   rU   rZ   r[   r   )rH   r\   r8   s      r   _resolve_token_async'_BedrockBearerAuth._resolve_token_asynch   s     	]!5!5!78E""5))# %%%U[[]]fgg $ 	 	]RSY\\	]s:   B(>B  A>B  7B(>B   B%B  B%%B(c                f    U R                  U5        SU R                  5        3UR                  S'   g NzBearer r;   )rN   r]   r<   rM   s     r   prepare_request"_BedrockBearerAuth.prepare_requestv   s/    w'-4T5H5H5J4K+L(r   c                   #    U R                  U5        SU R                  5       I S h  vN  3UR                  S'   g  N7frc   )rN   r`   r<   rM   s     r   prepare_async_request(_BedrockBearerAuth.prepare_async_requestz   s8     w'-44;T;T;V5V4W+X(5Vs   &?=?)rG   rF   N)rI   BedrockTokenProviderr)   	httpx.URLreturnNoner7   httpx.Requestrk   rl   rk   r[   )__name__
__module____qualname____firstlineno__rJ   rN   r]   r`   rd   rg   __static_attributes__ r   r   rC   rC   K   s"    ""MYr   rC   c                  \    \ rS rSrSS.       S
S jjrSS jrSS jrSS jrSS jrS	r	g)_BedrockSigV4Auth   N)authc               (    Xl         X l        X0l        g r   )_configrG   _auth)rH   configr)   ry   s       r   rJ   _BedrockSigV4Auth.__init__   s     !
r   c                   [        U5        [        UR                  U R                  5      (       d  [	        S5      e[
        R                  UR                  R                  5      nUb^  UR                  S5      U R                  R                  :w  a5  [	        SUR                  S5       SU R                  R                   S35      e[        U5      $ )NzXRefusing to sign a Bedrock request for an origin other than the configured provider URL.   zThe Bedrock endpoint region `z#` does not match the SigV4 region `z`.)r=   r3   r*   rG   r   _CANONICAL_BEDROCK_HOST	fullmatchr/   groupr{   regionr9   )rH   r7   endpoint_region_matchs      r   rN   #_BedrockSigV4Auth._validate_request   s    +G4GKK88j  !8 A A'++BRBR S ,1F1L1LQ1OSWS_S_SfSf1f/0E0K0KA0N/O P!!%!4!4 5R9 
 !))r   c               D   [          H  nUR                  R                  US 5        M!     UR                  UR                  [        UR                  5      [        UR                  5      US9nUR                  R                  5         UR                  R                  U5        g N)methodr*   r<   body)
_AWS_SIGNING_HEADERSr<   popsignr   r[   r*   dictclearupdate)rH   r7   ry   r   headersigned_headerss         r   _sign_BedrockSigV4Auth._sign   s{    *FOO- + >>GKK )	 # 
 	~.r   c                    U R                  U5      nU R                  c  [        U R                  5      U l        U R	                  XR                  US9  g )N)ry   r   )rN   r|   r   r{   r   )rH   r7   r   s      r   rd   !_BedrockSigV4Auth.prepare_request   s@    %%g.::'5DJ

7$
7r   c           
     B  #    U R                  U5      nU R                  c,  [        [        5      " U R                  5      I S h  vN U l        [        U R                  R
                  5      " UR                  [        UR                  5      UR                  R                  5        VVs0 s H!  u  p4UR                  5       [        ;  d  M  X4_M#     snnUS9I S h  vN nUR                  R                  5         UR                  R                  U5        g  Ns  snnf  NB7fr   )rN   r|   r   r   r{   r   r   r[   r*   r<   itemslowerr   r   r   )rH   r7   r   namer   r   s         r   rg   '_BedrockSigV4Auth.prepare_async_request   s     %%g.::'7EEDJ'

8>>GKK /6/D/D/F/F$**,^rJr/F  
 
 	~. F

s7   ADDA$D(D
D
DD;DD)r|   rG   r{   )r}   r   r)   rj   ry   zBedrockAwsAuth | Nonerk   rl   r7   rn   rk   bytes)r7   rn   ry   r   r   r   rk   rl   rm   )
rp   rq   rr   rs   rJ   rN   r   rd   rg   rt   ru   r   r   rw   rw      sH     '+	 %	 		
 $	 
	* /8/r   rw   c                  $    \ rS rSr% SrS\S'   Srg)_BedrockProviderRuntime   N
str | Noner   ru   )rp   rq   rr   rs   r   __annotations__rt   ru   r   r   r   r      s    FJr   r   T)frozenc                     \ rS rSr% S\S'   S\S'   S\S'   \" SS	S
9rS\S'   \" SS	S	S9rS\S'   S	rS\S'   Sr	S\S'   \" SS	S
9r
S\S'   \" SS	S
9rS\S'   \" SS	S
9rS\S'   \" SS	S	S9rS\S'   \" SS	S9rS\S'   SS jrS S jrS!S jrSrg)"_BedrockProviderDefinition   r   configured_regionz)Literal['explicit', 'environment'] | Noneregion_sourcezhttpx.URL | Noneconfigured_base_urlNF)defaultreprapi_key)r   r   compareBedrockTokenProvider | NonerI   booluse_environment_bearerprofileaccess_key_idsecret_access_keysession_tokenAwsCredentialsProvider | Nonecredential_providerbedrock)r   initr[   r   c                X    U R                   b  gU R                  b  gU R                  b  gg)Nstaticr   providerr   )r   r   r   rH   s    r   _aws_source&_BedrockProviderDefinition._aws_source   s0    )<<###/r   c                   U R                   bo  [        U R                   U R                  5       U R                  =(       d    SU R                  U R
                  U R                  U R                  U R                  S9S 4$ [        R                  " S U R                  U R
                  U R                  U R                  U R                  S9nUR                  U4$ )Nexplicit)r   sourcer   r   r   r   r   credentials_provider)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   resolver}   )rH   ry   s     r   _resolve_aws_auth,_BedrockProviderDefinition._resolve_aws_auth   s    !!-$11++-"&"4"4"B
 LL"&"4"4&*&<&<"&"4"4)-)A)A	   %%LL,,"44,,!%!9!9
 {{D  r   c           	       ^  S
S jnS nS nT R                   b  U 4S jnT R                  nOT R                  b  T R                  nT R                  nOjT R                  (       a  UnT R                  nOJT R	                  5       u  pVUR
                  nT R                  =(       d    [        SU S35      n[        XWUS9nT R                  b  T R                  nOUb  [        SU S35      nO[        S5      eUb	  [        X7S9nUc   e[        U[        5      (       a0  [        T R                  UU[        UR                  UR                   S9$ [        T R                  UUUR                  UR                   S	9$ )Nc                 h    [         R                  R                  S5      n U (       d  [        S5      eU $ )NAWS_BEARER_TOKEN_BEDROCKzCould not find credentials for Bedrock. Pass a bearer credential or AWS credentials to `bedrock(...)`, set `AWS_BEARER_TOKEN_BEDROCK`, or configure the default AWS credential chain.)osenvirongetr   )r\   s    r   environment_token?_BedrockProviderDefinition.configure.<locals>.environment_token   s2    JJNN#=>E!u  Lr   c                 .   > T R                   =(       d    S$ )N )r   r   s   r   <lambda>6_BedrockProviderDefinition.configure.<locals>.<lambda>  s    dll&8b&8r   zhttps://bedrock-mantle.z.api.aws/openai/v1)r}   r)   ry   zmBedrock requires an AWS region. Pass `region` to `bedrock(...)`, or set `AWS_REGION` or `AWS_DEFAULT_REGION`.)r)   )r   r)   r   transform_requestrd   rg   )r   r)   r   rd   rg   ro   )r   r   rI   r   r   r   r   r,   rw   r   rC   rZ   r   r   rA   rd   rg   )rH   r   ry   bearer_providerr   
aws_configaws_authr)   s   `       r   	configure$_BedrockProviderDefinition.configure   s   	 ?C7;<<#8O++F  ,"11O++F((/O++F#'#9#9#; J&&F// 3F)&1CD4H %JPXYD##///H*-DVHL^+_`H( 
 &%oIDd-..*YY!"4 $ 4 4&*&@&@  ' 00"&"<"<
 	
r   ru   )rk   z3Literal['static', 'profile', 'provider', 'default'])rk   z2tuple[BedrockAwsAuthConfig, BedrockAwsAuth | None])rk   r   )rp   rq   rr   rs   r   r   r   rI   r   r   r   r   r   r   r   r   r   r   rt   ru   r   r   r   r      s    !!<<))59GZ9275Z_2`N/`#(D(GZ %d ?M:?$)$U$CzC %d ?M:?9>tRWaf9g6gie4D#4!4;
r   r   )	r   r)   r   rI   r   r   r   r   r   c        	           [        U 5      n	U b  U	c  [        S5      eSn
U	b  Sn
OS[        [        R                  R	                  S5      =(       d    [        R                  R	                  S5      5      n	U	b  Sn
[        U[        5      (       a=  [        [        R                  R	                  S5      5      nU(       a  [        U5      OSnOFUc  SnO@[        U[        5      (       a   UR                  5       (       d  [        S5      e[        U5      n[        U5      nUb  Uc  [        S	5      eUSL USL :w  d  Ub  Uc  [        S
5      eUbC  UR                  5       (       a#  [        [        U5      R                  5       (       d  [        S5      eUb   UR                  5       (       d  [        S5      e[        U[        5      (       + =(       a    USLnU(       a5  [        U[        5      (       a  UR                  5       (       d  [        S5      eU(       a  Ub  [        S5      eU=(       d    USLn[        USLUSLUSL45      nUS:  a  [        S5      eU(       a  U(       a  [        S5      e[        U[        5      (       + =(       a    USL nU(       + =(       aD    U(       + =(       a6    U(       + =(       a(    [        [        R                  R	                  S5      5      n[        [        U	U
UU(       a  [        SU5      OSUUUUUUUS95      $ )z?Configure the standard OpenAI client for Amazon Bedrock Mantle.Nz+The Bedrock AWS `region` must not be empty.r   
AWS_REGIONAWS_DEFAULT_REGIONenvironmentAWS_BEDROCK_BASE_URLz)The Bedrock `base_url` must not be empty.z,The Bedrock AWS `profile` must not be empty.zzStatic AWS credentials require both `access_key_id` and `secret_access_key`. A `session_token` may only be used with both.zXStatic AWS credentials require non-empty `access_key_id` and `secret_access_key` values.z=A static AWS `session_token` must not be empty when provided.z0The Bedrock bearer credential must not be empty.zVThe `api_key` and `token_provider` options are mutually exclusive. Configure only one.r   zBedrock authentication is ambiguous. Configure exactly one explicit AWS mode: static credentials, profile, or credential provider.zBedrock authentication is ambiguous. Configure exactly one explicit mode: bearer credential, static AWS credentials, profile, or credential provider.r   r   )r   r   r   r   rI   r   r   r   r   r   r   )r   r   r   r   r   rZ   r   r,   r[   r   r   sumr   r   r   )r   r)   r   rI   r   r   r   r   r   normalized_regionr   environment_base_urlr   normalized_profileexplicit_api_keyexplicit_bearer	aws_modesskip_environment_bearerr   s                      r   r   r   4  s    36:/7GHH?CM$"6JJNN<(PBJJNN;O,P
 ()M (H%%9"**..I_:`aK_12FGei		"h$$X^^-=-=IJJ1(;3G<19HII#4#<=-B[`m`u<
 	
  -*=*=*?*?tCQbGcGiGiGkGktuu )<)<)>)>YZZ%gx88PWD=PGS!9!9LMMN6rss&D.*DO%d*t+	
I 1}/
 	
 9G
 	

 #-Wh"??SGtO 	=M	=''	=  :;<	  "/' 33CDw/)#9&'/' 3	
 r   )r   ri   r   )r   r   rk   r   )r)   zstr | httpx.URLrk   rj   )r1   rj   r2   rj   rk   r   r   rm   )r@   r   rk   r   )r   r   r)   z!str | httpx.URL | None | NotGivenr   zstr | None | NotGivenrI   r   r   r   r   r   r   r   r   r   r   r   rk   r   )0
__future__r   r   r%   rV   typingr   r   r   r   dataclassesr   r	   r"   _typesr   r   _utilsr   _modelsr   	_providerr   r   r   _exceptionsr   lib._bedrock_authr   r   r   ri   r   compile
IGNORECASEr   r   r,   r3   r9   r=   rA   rC   rw   r   r   r   __all__ru   r   r   <module>r      sy   " 	 	  5 5 (  (  ) E E %   $: :; f **%PRTR_R_` +Yv
1Y 1Yh=/ =/@ .   $l
 l
 l
b 2;%.26 $$( $9=dd 0d #	d
 0d d "d d d 7d dN Hr   