o
    î6WjŒX  ã                   @  s@  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
mZmZmZ d dlmZ d dlmZmZ d dlZddlmZmZmZmZmZ ddlmZ dd	lmZmZ dd
lm Z  ddl!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m2Z5m3Z6 e	g e7f Z8e	g df Z9e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,e<e=f ƒZ?G dd„ de2ƒZ@G dd„ de5ƒZAG dd„ de/ƒZBG d d!„ d!e3ƒZCG d"d#„ d#e6ƒZDG d$d%„ d%e0ƒZEG d&d'„ d'e?ej:e$e f eƒZFG d(d)„ d)e?ej;e%e f eƒZGdS )*é    )ÚannotationsN)	ÚAnyÚUnionÚMappingÚTypeVarÚCallableÚSequenceÚ	AwaitableÚcastÚoverload)Úcached_property)ÚSelfÚoverrideé   )Ú	NOT_GIVENÚOmitÚHeadersÚTimeoutÚNotGiven)Úis_given)Ú	AnthropicÚAsyncAnthropic)Ú
model_copy)ÚFinalRequestOptions)ÚStreamÚAsyncStream)ÚAnthropicError)ÚMiddlewareInput)ÚDEFAULT_MAX_RETRIESÚ
BaseClientÚmerge_headers)ÚBetaÚ	AsyncBeta)ÚMessagesÚAsyncMessageszstr | Awaitable[str]Ú_HttpxClientT)ÚboundÚ_DefaultStreamTc                      s   e Zd Zd‡ fdd„Z‡  ZS )ÚMutuallyExclusiveAuthErrorÚreturnÚNonec                   s   t ƒ  d¡ d S )NznThe `api_key` and `azure_ad_token_provider` arguments are mutually exclusive; Only one can be passed at a time)ÚsuperÚ__init__©Úself©Ú	__class__© úd/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/anthropic/lib/foundry.pyr,   #   s   ÿz#MutuallyExclusiveAuthError.__init__©r)   r*   )Ú__name__Ú
__module__Ú__qualname__r,   Ú__classcell__r1   r1   r/   r2   r(   "   s    r(   c                   @  s   e Zd ZdS )ÚBaseFoundryClientN)r4   r5   r6   r1   r1   r1   r2   r8   )   s    r8   c                   @  ó   e Zd Zeeddd„ƒƒZdS )ÚMessagesFoundryr)   r*   c                 C  ó   dS ©z?Batches endpoint is not supported for Anthropic Foundry client.Nr1   r-   r1   r1   r2   Úbatches-   ó   zMessagesFoundry.batchesNr3   ©r4   r5   r6   r   r   r=   r1   r1   r1   r2   r:   ,   ó    r:   c                   @  r9   )ÚBetaFoundryMessagesr)   r*   c                 C  r;   r<   r1   r-   r1   r1   r2   r=   5   r>   zBetaFoundryMessages.batchesNr3   r?   r1   r1   r1   r2   rA   4   r@   rA   c                   @  r9   )ÚBetaFoundryr)   ÚBetaMessagesc                 C  ó
   t | jƒS ©zKReturn beta messages resource instance with excluded unsupported endpoints.)rA   Ú_clientr-   r1   r1   r2   Úmessages=   ó   
zBetaFoundry.messagesN)r)   rC   ©r4   r5   r6   r   r   rG   r1   r1   r1   r2   rB   <   r@   rB   c                   @  r9   )ÚAsyncMessagesFoundryr)   r*   c                 C  r;   r<   r1   r-   r1   r1   r2   r=   E   r>   zAsyncMessagesFoundry.batchesNr3   r?   r1   r1   r1   r2   rJ   D   r@   rJ   c                   @  r9   )ÚAsyncBetaFoundryMessagesr)   r*   c                 C  r;   r<   r1   r-   r1   r1   r2   r=   M   r>   z AsyncBetaFoundryMessages.batchesNr3   r?   r1   r1   r1   r2   rK   L   r@   rK   c                   @  r9   )ÚAsyncBetaFoundryr)   ÚAsyncBetaMessagesc                 C  rD   rE   )rK   rF   r-   r1   r1   r2   rG   U   rH   zAsyncBetaFoundry.messagesN)r)   rM   rI   r1   r1   r1   r2   rL   T   r@   rL   c                      ó&  e Zd ZeddddeeddddddœdCdd„ƒZedddeeddddddœ
dDdd„ƒZ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dHd(d)„ƒƒZeddddededdddei d*œdId3d4„ƒZeZdJd5d6„ZedKd9d:„ƒZeedLd<d=„ƒƒZedMdAdB„ƒZ‡  ZS )NÚAnthropicFoundryNF©ÚresourceÚapi_keyÚazure_ad_token_providerÚwebhook_keyÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryÚhttp_clientÚ
middlewareÚ_strict_response_validationrQ   ú
str | NonerR   rS   úAzureADTokenProvider | NonerT   rU   ú!float | Timeout | None | NotGivenrV   ÚintrW   úMapping[str, str] | NonerX   úMapping[str, object] | NonerY   úhttpx.Client | NonerZ   ú Sequence[MiddlewareInput] | Noner[   Úboolr)   r*   c                C  ó   d S ©Nr1   ©r.   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r1   r1   r2   r,   `   ó   zAnthropicFoundry.__init__©
rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   Úbase_urlÚstrc                C  re   rf   r1   ©r.   rj   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r1   r1   r2   r,   q   rh   ©rQ   rR   rS   rT   rj   rU   rV   rW   rX   rY   rZ   r[   c                  óÀ   |dur|nt j d¡}|dur|nt j d¡}|dur|nt j d¡}|du r0|du r0tdƒ‚|du rC|du r<tdƒ‚d|› d�}n|durKtd	ƒ‚tƒ j|||||||	|
||d
�
 || _dS )a‡  Construct a new synchronous Anthropic Foundry client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `ANTHROPIC_FOUNDRY_API_KEY`
        - `resource` from `ANTHROPIC_FOUNDRY_RESOURCE`
        - `base_url` from `ANTHROPIC_FOUNDRY_BASE_URL`

        Args:
            resource: Your Foundry resource name, e.g. `example-resource` for `https://example-resource.services.ai.azure.com/anthropic/`
            azure_ad_token_provider: A function that returns an Azure Active Directory token, will be invoked on every request.
        NÚANTHROPIC_FOUNDRY_API_KEYÚANTHROPIC_FOUNDRY_RESOURCEÚANTHROPIC_FOUNDRY_BASE_URLú†Missing credentials. Please pass one of `api_key`, `azure_ad_token_provider`, or the `ANTHROPIC_FOUNDRY_API_KEY` environment variable.útMust provide one of the `base_url` or `resource` arguments, or the `ANTHROPIC_FOUNDRY_RESOURCE` environment variableúhttps://ú!.services.ai.azure.com/anthropic/ú,base_url and resource are mutually exclusive©
rR   rT   rj   rU   rV   rW   rX   rY   rZ   r[   ©ÚosÚenvironÚgetr   Ú
ValueErrorr+   r,   Ú_azure_ad_token_provider©r.   rQ   rR   rS   rT   rj   rU   rV   rW   rX   rY   rZ   r[   r/   r1   r2   r,   ‚   ó8   ÿÿö
c                 C  r;   )z>Models endpoint is not supported for Anthropic Foundry client.Nr1   r-   r1   r1   r2   Úmodels½   r>   zAnthropicFoundry.modelsr:   c                 C  ó
   t | d�S ©zFReturn messages resource instance with excluded unsupported endpoints.©Úclient)r:   r-   r1   r1   r2   rG   Ã   rH   zAnthropicFoundry.messagesr!   c                 C  s   t | ƒS )úBReturn beta resource instance with excluded unsupported endpoints.)rB   r-   r1   r1   r2   ÚbetaÉ   s   zAnthropicFoundry.beta©rR   rS   rT   rj   rU   rY   rV   rW   Úset_default_headersrX   Úset_default_queryrZ   Ú_extra_kwargsústr | httpx.URL | 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t|pS| j	ƒt
|tƒr\| jn||pa| jt|ƒrg|n| j||t
|tƒrs| 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)
rR   rS   rT   rj   rU   rY   rV   rW   rX   rZ   r1   ©r|   Ú_custom_headersr    Ú_custom_queryr0   rR   r}   rT   rk   rj   Ú
isinstancer   rU   rF   r   rV   Ú_middleware©r.   rR   rS   rT   rj   rU   rY   rV   rW   rˆ   rX   r‰   rZ   rŠ   ÚheadersÚparamsr1   r1   r2   ÚcopyÏ   ó8   öõzAnthropicFoundry.copyc                 C  s8   | j }|d ur|ƒ }|rt|tƒstd|› �ƒ‚|S d S ©NzOExpected `azure_ad_token_provider` argument to return a string but it returned )r}   r”   rk   r|   ©r.   ÚproviderÚtokenr1   r1   r2   Ú_get_azure_ad_token  s   ÿz$AnthropicFoundry._get_azure_ad_tokenÚoptionsr   c                 C  sœ   t |jƒr
i |j¥ni }t|ƒ}||_|  ¡ }|d ur+| d¡d u r)d|› �|d< |S | jd urJ| d¡d u r<| j|d< | d¡d u rH| j|d< |S tdƒ‚©NÚAuthorizationzBearer z	x-api-keyzapi-keyzUnable to handle auth©r   r—   r   rŸ   r{   rR   r|   ©r.   r    r—   Úazure_ad_tokenr1   r1   r2   Ú_prepare_options  s   
ò

þz!AnthropicFoundry._prepare_optionsúdict[str, str]c                 C  ó   i S rf   r1   r-   r1   r1   r2   Úauth_headers-  s   
zAnthropicFoundry.auth_headersr—   r   Úcustom_headersc                 C  re   rf   r1   ©r.   r—   rª   r1   r1   r2   Ú_validate_headers9  r>   z"AnthropicFoundry._validate_headers)rQ   r\   rR   r\   rS   r]   rT   r\   rU   r^   rV   r_   rW   r`   rX   ra   rY   rb   rZ   rc   r[   rd   r)   r*   )rj   rk   rR   r\   rS   r]   rT   r\   rU   r^   rV   r_   rW   r`   rX   ra   rY   rb   rZ   rc   r[   rd   r)   r*   )rQ   r\   rR   r\   rS   r]   rT   r\   rj   r\   rU   r^   rV   r_   rW   r`   rX   ra   rY   rb   rZ   rc   r[   rd   r)   r*   r3   )r)   r:   )r)   r!   )rR   r\   rS   r]   rT   r\   rj   r‹   rU   r^   rY   rb   rV   rŒ   rW   r`   rˆ   r`   rX   ra   r‰   ra   rZ   r�   rŠ   rŽ   r)   r   ©r)   r\   ©r    r   r)   r   ©r)   r§   ©r—   r   rª   r   r)   r*   ©r4   r5   r6   r   r   r   r,   r   r   r€   rG   r†   r™   Úwith_optionsrŸ   r¦   Úpropertyr©   r¬   r7   r1   r1   r/   r2   rO   _   s�    óóò;ñ4

rO   c                      rN   )NÚAsyncAnthropicFoundryNFrP   rQ   r\   rR   rS   ú AsyncAzureADTokenProvider | NonerT   rU   r^   rV   r_   rW   r`   rX   ra   rY   úhttpx.AsyncClient | NonerZ   rc   r[   rd   r)   r*   c                C  re   rf   r1   rg   r1   r1   r2   r,   A  rh   zAsyncAnthropicFoundry.__init__ri   rj   rk   c                C  re   rf   r1   rl   r1   r1   r2   r,   R  rh   rm   c                  rn   )aˆ  Construct a new asynchronous Anthropic Foundry client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `ANTHROPIC_FOUNDRY_API_KEY`
        - `resource` from `ANTHROPIC_FOUNDRY_RESOURCE`
        - `base_url` from `ANTHROPIC_FOUNDRY_BASE_URL`

        Args:
            resource: Your Foundry resource name, e.g. `example-resource` for `https://example-resource.services.ai.azure.com/anthropic/`
            azure_ad_token_provider: A function that returns an Azure Active Directory token, will be invoked on every request.
        Nro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r~   r/   r1   r2   r,   c  r   c                 C  r;   )z<Models endpoint is not supported for Azure Anthropic client.Nr1   r-   r1   r1   r2   r€   ž  r>   zAsyncAnthropicFoundry.modelsrJ   c                 C  r�   r‚   )rJ   r-   r1   r1   r2   rG   ¤  rH   zAsyncAnthropicFoundry.messagesrL   c                 C  r�   )r…   rƒ   )rL   r-   r1   r1   r2   r†   ª  rH   zAsyncAnthropicFoundry.betar‡   r‹   rŒ   rˆ   r‰   r�   rŠ   rŽ   r   c                C  r�   r�   r‘   r–   r1   r1   r2   r™   °  rš   zAsyncAnthropicFoundry.copyc                 Ã  sX   �| j }|d ur*|ƒ }t |¡r|I d H }|rttt|ƒtƒs&td|› �ƒ‚t|ƒS d S r›   )r}   ÚinspectÚisawaitabler”   r
   r   rk   r|   rœ   r1   r1   r2   rŸ   ç  s   €

ÿz)AsyncAnthropicFoundry._get_azure_ad_tokenr    r   c                 Ã  s¤   �t |jƒri |j¥ni }t|ƒ}||_|  ¡ I d H }|d ur/| d¡d u r-d|› �|d< |S | jd urN| d¡d u r@| j|d< | d¡d u rL| j|d< |S tdƒ‚r¡   r£   r¤   r1   r1   r2   r¦   õ  s    €
õ

þz&AsyncAnthropicFoundry._prepare_optionsr§   c                 C  r¨   rf   r1   r-   r1   r1   r2   r©     s   z"AsyncAnthropicFoundry.auth_headersr—   r   rª   c                 C  re   rf   r1   r«   r1   r1   r2   r¬     s   z'AsyncAnthropicFoundry._validate_headers)rQ   r\   rR   r\   rS   rµ   rT   r\   rU   r^   rV   r_   rW   r`   rX   ra   rY   r¶   rZ   rc   r[   rd   r)   r*   )rj   rk   rR   r\   rS   rµ   rT   r\   rU   r^   rV   r_   rW   r`   rX   ra   rY   r¶   rZ   rc   r[   rd   r)   r*   )rQ   r\   rR   r\   rS   rµ   rT   r\   rj   r\   rU   r^   rV   r_   rW   r`   rX   ra   rY   r¶   rZ   rc   r[   rd   r)   r*   r3   )r)   rJ   )r)   rL   )rR   r\   rS   rµ   rT   r\   rj   r‹   rU   r^   rY   r¶   rV   rŒ   rW   r`   rˆ   r`   rX   ra   r‰   ra   rZ   r�   rŠ   rŽ   r)   r   r­   r®   r¯   r°   r±   r1   r1   r/   r2   r´   @  s�    óóò;ñ4
r´   )HÚ
__future__r   ry   r·   Útypingr   r   r   r   r   r   r	   r
   r   Ú	functoolsr   Útyping_extensionsr   r   ÚhttpxÚ_typesr   r   r   r   r   Ú_utilsr   rF   r   r   Ú_compatr   Ú_modelsr   Ú
_streamingr   r   Ú_exceptionsr   r•   r   Ú_base_clientr   r   r    Úresources.betar!   r"   Úresources.messagesr#   r$   Úresources.beta.messagesrC   rM   rk   ÚAzureADTokenProviderÚAsyncAzureADTokenProviderÚClientÚAsyncClientr%   r'   r(   r8   r:   rA   rB   rJ   rK   rL   rO   r´   r1   r1   r1   r2   Ú<module>   sD    ,  $b