o
    î6WjäK  ã                   @  sú  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 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.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m4Z7m5Z8 dZ9dZ:edeej;ej<f d�Z=edee"e e#e f d�Z>G dd„ deƒZ?G dd„ de ƒZ@G dd„ de*e=e>f ƒZAd4d.d/„ZBG d0d1„ d1eAej;e"e f e+ƒZCG d2d3„ d3eAej<e#e f e,ƒZDdS )5é    )ÚannotationsN)ÚAnyÚUnionÚMappingÚTypeVarÚSequence)ÚSelfÚoverrideé   )Ú_exceptions©ÚQuerystring)Ú	NOT_GIVENÚOmitÚTimeoutÚNotGiven)Ú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d„ƒZdS )Ú
MantleBetaÚreturnÚBetaMessagesc                 C  ó
   t | jƒS ©N)r1   Ú_client©Úself© r7   úl/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/anthropic/lib/bedrock/_mantle.pyÚmessages0   ó   
zMantleBeta.messagesN)r0   r1   ©Ú__name__Ú
__module__Ú__qualname__r   r9   r7   r7   r7   r8   r/   /   ó    r/   c                   @  r.   )ÚAsyncMantleBetar0   ÚAsyncBetaMessagesc                 C  r2   r3   )rA   r4   r5   r7   r7   r8   r9   6   r:   zAsyncMantleBeta.messagesN)r0   rA   r;   r7   r7   r7   r8   r@   5   r?   r@   c                   @  s   e Zd Zedd	d
„ƒZdS )ÚBaseMantleClientÚerr_msgÚstrÚbodyÚobjectÚresponseúhttpx.Responser0   r   c                C  s  |j dkrtj|||d�S |j dkrtj|||d�S |j dkr'tj|||d�S |j dkr4tj|||d�S |j dkrAtj|||d�S |j dkrNtj|||d�S |j dkr[tj|||d�S |j d	krhtj	|||d�S |j d
krutj
|||d�S |j dkr‚tj|||d�S t|||d�S )Ni�  )rG   rE   i‘  i“  i”  i™  i�  i¦  i­  i  iô  )Ústatus_coder   ÚBadRequestErrorÚAuthenticationErrorÚPermissionDeniedErrorÚNotFoundErrorÚConflictErrorÚRequestTooLargeErrorÚUnprocessableEntityErrorÚRateLimitErrorÚOverloadedErrorÚInternalServerErrorr   )r6   rC   rE   rG   r7   r7   r8   Ú_make_status_error?   s*   









z#BaseMantleClient._make_status_errorN)rC   rD   rE   rF   rG   rH   r0   r   )r<   r=   r>   r	   rT   r7   r7   r7   r8   rB   >   r?   rB   Úapi_keyú
str | NoneÚaws_access_keyÚaws_secret_keyÚ
aws_regionÚaws_profileÚ	skip_authÚboolÚbase_urlústr | httpx.URL | NoneÚdefault_headersúMapping[str, str] | Noner0   ú8tuple[str | None, str | httpx.URL, bool, dict[str, str]]c                 C  s˜   |rd}d}	nt ||d� t| |||td�}t| |td�}	t|ƒ}
|du r+tj d¡}|du r=|
du r7tdƒ‚d|
› d	�}i }|rF| 	|¡ |	|||fS )
z‰Resolve and validate all Mantle client configuration.

    Returns (resolved_api_key, resolved_base_url, use_sigv4, merged_headers).
    FN)rW   rX   )rU   rW   rX   rZ   Úapi_key_env_vars)rU   Ú	use_sigv4rb   Ú!ANTHROPIC_BEDROCK_MANTLE_BASE_URLz×No 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)rU   rW   rX   rY   rZ   r[   r]   r_   rc   Úresolved_api_keyÚresolved_regionÚmerged_headersr7   r7   r8   Ú_resolve_mantle_configj   s:   ûýÿ
rm   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œdE‡ fd#d$„ZeedFd&d'„ƒƒZ	eedGd)d*„ƒƒZ
eedH‡ fd,d-„ƒƒZedId1d2„ƒZedJd5d6„ƒZddddddddededdddei d7œdKd@dA„ZeZdLdCdD„Z‡  ZS )MÚAnthropicBedrockMantler'   r9   r/   ÚbetarV   rY   rW   rX   Úaws_session_tokenrZ   r\   r[   Ú
_use_sigv4NF©rW   rX   rq   rY   rZ   rU   r[   r]   ÚtimeoutÚmax_retriesr_   Údefault_queryÚhttp_clientÚ
middlewareÚ_strict_response_validationrU   r]   r^   rt   ú!float | Timeout | None | NotGivenru   Úintr_   r`   rv   úMapping[str, object] | Nonerw   úhttpx.Client | Nonerx   ú Sequence[MiddlewareInput] | Nonery   r0   ÚNonec                  óŽ   t ||||||||d�\}}}}t|ƒ}tƒ jt||	|
|||||d�	 || _|| _|| _|| _|| _	|| _
|| _|| _t| ƒ| _t| ƒ| _d S ©N)rU   rW   rX   rY   rZ   r[   r]   r_   )	Úversionr]   rt   ru   Úcustom_headersÚcustom_queryrw   rx   ry   )rm   r#   ÚsuperÚ__init__r   rU   rY   rW   rX   rq   rZ   r[   rr   r'   r9   r/   rp   ©r6   rW   rX   rq   rY   rZ   rU   r[   r]   rt   ru   r_   rv   rw   rx   ry   rj   Úresolved_base_urlrc   rl   rk   ©Ú	__class__r7   r8   r†   ±   ó@   ø÷
zAnthropicBedrockMantle.__init__r   c                 C  ó
   t dd�S ©NÚcomma)Úarray_formatr   r5   r7   r7   r8   Úqsé   ó   
zAnthropicBedrockMantle.qsúdict[str, str]c                 C  ó0   | j s| jri S | j}|d u ri S dd|› �iS ©NÚAuthorizationzBearer ©r[   rr   rU   ©r6   rU   r7   r7   r8   Úauth_headersî   ó   z#AnthropicBedrockMantle.auth_headersúdict[str, str | Omit]c                   ó   i t ƒ j¥dddœ¥| j¥S )NÚfalseú
2023-06-01©zX-Stainless-Asynczanthropic-version©r…   r_   Ú_custom_headersr5   r‰   r7   r8   r_   ø   ó   ÿýüz&AnthropicBedrockMantle.default_headersÚheadersr   rƒ   c                 C  ó   d S r3   r7   ©r6   r¢   rƒ   r7   r7   r8   Ú_validate_headers  ó   z(AnthropicBedrockMantle._validate_headersÚrequestúhttpx.Requestc                 C  s\   | j s| jsd S | ¡  ¡ }t|jt|jƒ|j| j	| j
| j| j| j|td�
}|j |¡ d S ©N)
ÚmethodÚurlr¢   rW   rX   rq   ÚregionÚprofileÚdataÚservice_name©r[   rr   ÚreadÚdecoder   rª   rD   r«   r¢   rW   rX   rq   rY   rZ   ÚDEFAULT_SERVICE_NAMEri   ©r6   r§   r®   r¢   r7   r7   r8   Ú_prepare_request  s    öz'AnthropicBedrockMantle._prepare_request©rU   rW   rX   rq   rY   rZ   r[   r]   rt   rw   ru   r_   Úset_default_headersrv   Úset_default_queryrx   Ú_extra_kwargsúbool | Noneúint | NotGivenr·   r¸   ú+Sequence[MiddlewareInput] | None | NotGivenr¹   úMapping[str, Any]r   c                C  ó  |dur|durt dƒ‚|dur|durt dƒ‚| j}|dur%t||ƒ}n|dur+|}| j}|dur9i |¥|¥}n|dur?|}| jd|pF| j|pJ| j|pN| j|pR| j|pV| j	|pZ| j
|dur`|n| j|pf| jt|	tƒrn| jn|	|
t|ƒrv|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.
        NzPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)rU   rW   rX   rq   rY   rZ   r[   r]   rt   rw   ru   r_   rv   rx   r7   ©Ú
ValueErrorr    r"   Ú_custom_queryrŠ   rU   rW   rX   rq   rY   rZ   r[   r]   Ú
isinstancer   rt   r   ru   Ú_middleware©r6   rU   rW   rX   rq   rY   rZ   r[   r]   rt   rw   ru   r_   r·   rv   r¸   rx   r¹   r¢   Úparamsr7   r7   r8   Úcopy  ó@   òñzAnthropicBedrockMantle.copyr   c                 G  ó   | j g | j¢|¢d�S ©zþA 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(...)
        ```
        )rx   ©rÇ   rÄ   ©r6   rx   r7   r7   r8   Úwith_middlewareY  ó   	z&AnthropicBedrockMantle.with_middleware) rW   rV   rX   rV   rq   rV   rY   rV   rZ   rV   rU   rV   r[   r\   r]   r^   rt   rz   ru   r{   r_   r`   rv   r|   rw   r}   rx   r~   ry   r\   r0   r   ©r0   r   ©r0   r’   ©r0   rš   ©r¢   r   rƒ   r   r0   r   ©r§   r¨   r0   r   )$rU   rV   rW   rV   rX   rV   rq   rV   rY   rV   rZ   rV   r[   rº   r]   r^   rt   rz   rw   r}   ru   r»   r_   r`   r·   r`   rv   r|   r¸   r|   rx   r¼   r¹   r½   r0   r   ©rx   r   r0   r   ©r<   r=   r>   Ú__annotations__r   r   r†   Úpropertyr	   r�   r˜   r_   r¥   rµ   rÇ   Úwith_optionsrÍ   Ú__classcell__r7   r7   r‰   r8   ro   ¤   óv   
 ï8í<ro   c                      rn   )MÚAsyncAnthropicBedrockMantler(   r9   r@   rp   rV   rY   rW   rX   rq   rZ   r\   r[   rr   NFrs   rU   r]   r^   rt   rz   ru   r{   r_   r`   rv   r|   rw   úhttpx.AsyncClient | Nonerx   r~   ry   r0   r   c                  r€   r�   )rm   r#   r…   r†   r   rU   rY   rW   rX   rq   rZ   r[   rr   r(   r9   r@   rp   r‡   r‰   r7   r8   r†   u  r‹   z$AsyncAnthropicBedrockMantle.__init__r   c                 C  rŒ   r�   r   r5   r7   r7   r8   r�   ­  r‘   zAsyncAnthropicBedrockMantle.qsr’   c                 C  r“   r”   r–   r—   r7   r7   r8   r˜   ²  r™   z(AsyncAnthropicBedrockMantle.auth_headersrš   c                   r›   )Nzasync:asyncior�   rž   rŸ   r5   r‰   r7   r8   r_   ¼  r¡   z+AsyncAnthropicBedrockMantle.default_headersr¢   r   rƒ   c                 C  r£   r3   r7   r¤   r7   r7   r8   r¥   Æ  r¦   z-AsyncAnthropicBedrockMantle._validate_headersr§   r¨   c                 Ã  s^   �| j s| js	d S | ¡  ¡ }t|jt|jƒ|j| j	| j
| j| j| j|td�
}|j |¡ d S r©   r°   r´   r7   r7   r8   rµ   Ê  s"   €öz,AsyncAnthropicBedrockMantle._prepare_requestr¶   rº   r»   r·   r¸   r¼   r¹   r½   r   c                C  r¾   r¿   rÀ   rÅ   r7   r7   r8   rÇ   ß  rÈ   z AsyncAnthropicBedrockMantle.copyr   c                 G  rÉ   rÊ   rË   rÌ   r7   r7   r8   rÍ     rÎ   z+AsyncAnthropicBedrockMantle.with_middleware) rW   rV   rX   rV   rq   rV   rY   rV   rZ   rV   rU   rV   r[   r\   r]   r^   rt   rz   ru   r{   r_   r`   rv   r|   rw   rÜ   rx   r~   ry   r\   r0   r   rÏ   rÐ   rÑ   rÒ   rÓ   )$rU   rV   rW   rV   rX   rV   rq   rV   rY   rV   rZ   rV   r[   rº   r]   r^   rt   rz   rw   rÜ   ru   r»   r_   r`   r·   r`   rv   r|   r¸   r|   rx   r¼   r¹   r½   r0   r   rÔ   rÕ   r7   r7   r‰   r8   rÛ   h  rÚ   rÛ   )rU   rV   rW   rV   rX   rV   rY   rV   rZ   rV   r[   r\   r]   r^   r_   r`   r0   ra   )EÚ
__future__r   rf   Útypingr   r   r   r   r   Útyping_extensionsr   r	   ÚhttpxÚ r   Ú_qsr   Ú_typesr   r   r   r   Ú_utilsr   Ú_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.messagesr1   rA   r³   re   ÚClientÚAsyncClientr+   r-   r/   r@   rB   rm   ro   rÛ   r7   r7   r7   r8   Ú<module>   s>    	
, : $E