
    2Rj4                        d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZmZ ddlmZ eg ef   Z G d de	      Zd	Zed
ddfZddZ ed       G d d             Z G d d      Zdd	 	 	 	 	 ddZy)    )annotationsN)AnyLiteralMappingCallableProtocolcast)field	dataclass   )OpenAIErrorc                      e Zd ZddZy)_BotocoreSessionc                     y )N )selfs    `/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/openai/lib/_bedrock_auth.pyget_credentialsz _BotocoreSession.get_credentials   s        N)returnobject | None)__name__
__module____qualname__r   r   r   r   r   r      s    3r   r   authorizationzx-amz-content-sha256z
x-amz-datezx-amz-security-tokenc                 z    	 ddl m}  ddlm} ddlm} ddlm} | |||fS # t        $ r}t        d      |d }~ww xY w)Nr   )	SigV4Auth)Session)
AWSRequest)Credentialsz}Bedrock AWS authentication requires optional AWS dependencies. Install them with `pip install openai[bedrock]` and try again.)
botocore.authr   botocore.sessionr   botocore.awsrequestr   botocore.credentialsr    ImportErrorr   )r   r   r   r    excs        r   _load_botocorer'      sN    	+,24 j+w66  M
 	s     	:5:T)frozenc                      e Zd ZU ded<   ded<   dZded<   dZd	ed
<    edd      Zd	ed<    edd      Zd	ed<    edd      Z	d	ed<    eddd      Z
ded<   y)BedrockAwsAuthConfigstrregionz3Literal['static', 'profile', 'provider', 'default']sourceexplicitz-Literal['explicit', 'environment', 'profile']region_sourceN
str | NoneprofileF)defaultrepraccess_key_idsecret_access_keysession_token)r2   r3   compareAwsCredentialsProvider | Nonecredentials_provider)r   r   r   __annotations__r/   r1   r
   r4   r5   r6   r9   r   r   r   r*   r*   +   sm    K??CMM@MGZ %d ?M:?$)$U$CzC %d ?M:?:?SXbg:h7hr   r*   c                  P    e Zd ZddddZe	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       ZddZy)	BedrockAwsAuthNsessionc               x   t               \  }}}}|	  ||j                        }|J || _        || _        |j                  | _        |j                  4|j                  ( ||j                  |j                  |j                        nd | _        || _        || _        y # t        $ r}t        d      |d }~ww xY w)Nr1   Failed to resolve AWS credentials for Bedrock. Verify your AWS profile, environment variables, or runtime identity configuration and try again.)r'   r1   	Exceptionr   config_sessionr9   _credentials_providerr4   r5   r6   _explicit_credentials_aws_request_cls_sigv4_auth_cls)r   rC   r>   sigv4_auth_clsaws_request_clscredentials_clssession_clsr&   s           r   __init__zBedrockAwsAuth.__init__8   s    HVHXE+?%fnn= """%+%@%@" ##/F4L4L4X F00&2J2JFL`L`a 	"
 !0-!  !G s   B 	B9(B44B9c          
         t               \  }}}}	  ||      }	t        ||	      \  }
}|d}n|d}n|d}nd}t	        |
|||||||      } | ||	      S # t        $ r  t        $ r}t        d      |d }~ww xY w)	Nr@   r=   rA   staticr1   providerr2   )r,   r-   r/   r1   r4   r5   r6   r9   )r'   resolve_aws_region_with_sourcer   rB   r*   )clsr,   r1   r4   r5   r6   r9   _rL   r>   resolved_regionr/   r&   r-   rC   s                  r   resolvezBedrockAwsAuth.resolveP   s      ./1a		!'2G-KF\c-d*O] $F F!-FF%"''/'!5	
 67++9  	 	C 	s   A A;*A66A;c                  	 | j                   | j                         n'| j                  xs | j                  j                         }|t	        d      t        |dd       }t        |      r |       }|j                         D ci c]  \  }}|j                         t        vs||! }	}}t        j                  |xs d      j                         |	d<   | j                  ||||	      }
| j                  |d| j                  j                         j#                  |
       t'        |
j(                  j                               S c c}}w # t        $ r  t$        $ r}t	        d      |d }~ww xY w)NzCould 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.get_frozen_credentialsr   zX-Amz-Content-SHA256)methodurldataheaderszbedrock-mantlerA   )rE   rF   rD   r   r   getattrcallableitemslower_AWS_SIGNING_HEADERShashlibsha256	hexdigestrG   rH   rC   r,   add_authrB   dictr[   )r   rX   rY   r[   bodycredentialsrW   namevaluesigned_headersaws_requestr&   s               r   signzBedrockAwsAuth.sign~   s   "	 --9 **,//R4==3P3P3R 
 "!e  &-[:RTX%Y"./46 07}} +e$**,VjBjeN  6=^^DKC5P5Z5Z5\N12//&	 0 K   .>@R@RS\\]hi K''--/00'  	 	C 	s1   BE
 E$E)A8E
 E
 
E-E((E-)rC   r*   r>   z_BotocoreSession | Noner   None)r,   r0   r1   r0   r4   r0   r5   r0   r6   r0   r9   r8   r   r<   )
rX   r+   rY   r+   r[   zMapping[str, str]rf   zbytes | Noner   zdict[str, str])r   r   r   rM   classmethodrU   rl   r   r   r   r<   r<   7   sj    [_ .0 +, +, 	+,
 "+, &+, "+, <+, 
+, +,Z%1r   r<   r=   c                  | }d}||j                         sBt        j                  j                  d      xs t        j                  j                  d      }d}||j                         s.|,t	        |dd       }t        |      rt        d |d            }d}||j                         st        d	      |j                         |fS )
Nr.   
AWS_REGIONAWS_DEFAULT_REGIONenvironmentget_config_variabler0   r,   r1   zmBedrock requires an AWS region. Pass `region` to `bedrock(...)`, or set `AWS_REGION` or `AWS_DEFAULT_REGION`.)striposenvirongetr\   r]   r	   r   )
aws_regionr>   r,   r-   rs   s        r   rQ   rQ      s     F<FF~V\\^-U@T1Uflln'2E%g/DdK'(,(;H(EFFF~V\\^$
 	

 <<>6!!r   )r   ztuple[Any, Any, Any, Any])rx   r0   r>   r   r   z9tuple[str, Literal['explicit', 'environment', 'profile']])
__future__r   ru   ra   typingr   r   r   r   r   r	   dataclassesr
   r   _exceptionsr   objectAwsCredentialsProviderr   _AUTHORIZATIONr`   r'   r*   r<   rQ   r   r   r   <module>r      s    # 	  B B ( %!"f*- 4x 4 !	 7 $i i il1 l1` 9=""(5">"r   