o
    +iD                     @  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 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 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'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m-Z0m.Z1 e	g e2f Z3e	g df Z4edeej5ej6f dZ7edee"e e#e f dZ8G dd de%Z9G dd de(e7e8f Z:G dd de-Z;G dd de0Z<G dd de*Z=G dd  d e.Z>G d!d" d"e1Z?G d#d$ d$e+Z@G d%d& d&e:ej5e"e f eZAG d'd( d(e:ej6e#e f eZBdS ))    )annotationsN)AnyUnionMappingTypeVarCallable	Awaitablecastoverload)cached_property)Selfoverride   )	NOT_GIVENOmitTimeoutNotGiven)is_given)	AnthropicAsyncAnthropic)
model_copy)FinalRequestOptions)StreamAsyncStream)AnthropicError)DEFAULT_MAX_RETRIES
BaseClient)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__ R/var/www/html/psymed-ai/venv/lib/python3.10/site-packages/anthropic/lib/foundry.pyr(      s   z#MutuallyExclusiveAuthError.__init__r%   r&   )__name__
__module____qualname__r(   __classcell__r-   r-   r+   r.   r$      s    r$   c                   @  s   e Zd ZdS )BaseFoundryClientN)r0   r1   r2   r-   r-   r-   r.   r4   $   s    r4   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.Nr-   r)   r-   r-   r.   batches(      zMessagesFoundry.batchesNr/   r0   r1   r2   r   r   r9   r-   r-   r-   r.   r6   '       r6   c                   @  r5   )BetaFoundryMessagesr%   r&   c                 C  r7   r8   r-   r)   r-   r-   r.   r9   0   r:   zBetaFoundryMessages.batchesNr/   r;   r-   r-   r-   r.   r=   /   r<   r=   c                   @  r5   )BetaFoundryr%   BetaMessagesc                 C  
   t | jS zKReturn beta messages resource instance with excluded unsupported endpoints.)r=   _clientr)   r-   r-   r.   messages8      
zBetaFoundry.messagesN)r%   r?   r0   r1   r2   r   r   rC   r-   r-   r-   r.   r>   7   r<   r>   c                   @  r5   )AsyncMessagesFoundryr%   r&   c                 C  r7   r8   r-   r)   r-   r-   r.   r9   @   r:   zAsyncMessagesFoundry.batchesNr/   r;   r-   r-   r-   r.   rF   ?   r<   rF   c                   @  r5   )AsyncBetaFoundryMessagesr%   r&   c                 C  r7   r8   r-   r)   r-   r-   r.   r9   H   r:   z AsyncBetaFoundryMessages.batchesNr/   r;   r-   r-   r-   r.   rG   G   r<   rG   c                   @  r5   )AsyncBetaFoundryr%   AsyncBetaMessagesc                 C  r@   rA   )rG   rB   r)   r-   r-   r.   rC   P   rD   zAsyncBetaFoundry.messagesN)r%   rI   rE   r-   r-   r-   r.   rH   O   r<   rH   c                         e Zd Zedddeeddddd	d8ddZeddeedddddd9ddZddddeeddddd
d: fddZeed;dd Z	eed<d"d#Z
eed=d%d&Zeddddededdddi d'd> fd0d1ZeZd?d2d3Zed@d6d7Z  ZS )AAnthropicFoundryNF	resourceapi_keyazure_ad_token_providertimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationrM   
str | NonerN   rO   AzureADTokenProvider | NonerP   !float | Timeout | None | NotGivenrQ   intrR   Mapping[str, str] | NonerS   Mapping[str, object] | NonerT   httpx.Client | NonerU   boolr%   r&   c       	   
      C     d S Nr-   
r*   rM   rN   rO   rP   rQ   rR   rS   rT   rU   r-   r-   r.   r(   [      zAnthropicFoundry.__init__rN   rO   rP   rQ   rR   rS   rT   rU   base_urlstrc       	   
      C  r^   r_   r-   
r*   rc   rN   rO   rP   rQ   rR   rS   rT   rU   r-   r-   r.   r(   j   ra   
rM   rN   rO   rc   rP   rQ   rR   rS   rT   rU   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_URLMissing 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rN   rc   rP   rQ   rR   rS   rT   rU   osenvirongetr   
ValueErrorr'   r(   _azure_ad_token_providerr*   rM   rN   rO   rc   rP   rQ   rR   rS   rT   rU   r+   r-   r.   r(   y   4   

c                 C  r7   )z>Models endpoint is not supported for Anthropic Foundry client.Nr-   r)   r-   r-   r.   models   r:   zAnthropicFoundry.modelsr6   c                 C  
   t | dS zFReturn messages resource instance with excluded unsupported endpoints.client)r6   r)   r-   r-   r.   rC      rD   zAnthropicFoundry.messagesr   c                 C  s   t | S )BReturn beta resource instance with excluded unsupported endpoints.)r>   r)   r-   r-   r.   beta   s   zAnthropicFoundry.betarN   rO   
auth_tokenrc   rP   rT   rQ   rR   set_default_headersrS   set_default_query_extra_kwargsr   str | httpx.URL | Noneint | NotGivenr   r   r   Mapping[str, Any]r   c                  0   t  j||||||||	|
|d|p| ji|dS z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        rO   )rN   r   rc   rP   rT   rQ   rR   r   rS   r   r   r'   copyrv   r*   rN   rO   r   rc   rP   rT   rQ   rR   r   rS   r   r   r+   r-   r.   r          
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 )rv   
isinstancerd   ru   r*   providertokenr-   r-   r.   _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rE|dd u rC| jd us>J | j|d< |S tdNAuthorizationzBearer zapi-keyzUnable to handle authr   headersr   r   rt   rN   ru   r*   r   r   azure_ad_tokenr-   r-   r.   _prepare_options   s   	

z!AnthropicFoundry._prepare_options)rM   rV   rN   rV   rO   rW   rP   rX   rQ   rY   rR   rZ   rS   r[   rT   r\   rU   r]   r%   r&   )rc   rd   rN   rV   rO   rW   rP   rX   rQ   rY   rR   rZ   rS   r[   rT   r\   rU   r]   r%   r&   )rM   rV   rN   rV   rO   rW   rc   rV   rP   rX   rQ   rY   rR   rZ   rS   r[   rT   r\   rU   r]   r%   r&   r/   )r%   r6   )r%   r   )rN   rV   rO   rW   r   rV   rc   r   rP   rX   rT   r\   rQ   r   rR   rZ   r   rZ   rS   r[   r   r[   r   r   r%   r   r%   rV   r   r   r%   r   r0   r1   r2   r
   r   r   r(   r   r   ry   rC   r   r   with_optionsr   r   r3   r-   r-   r+   r.   rK   Z   sx    7$
rK   c                      rJ   )AAsyncAnthropicFoundryNFrL   rM   rV   rN   rO    AsyncAzureADTokenProvider | NonerP   rX   rQ   rY   rR   rZ   rS   r[   rT   httpx.AsyncClient | NonerU   r]   r%   r&   c       	   
      C  r^   r_   r-   r`   r-   r-   r.   r(     ra   zAsyncAnthropicFoundry.__init__rb   rc   rd   c       	   
      C  r^   r_   r-   re   r-   r-   r.   r(     ra   rf   c       
      
     rg   )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.
        Nrh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rw   r+   r-   r.   r(   *  rx   c                 C  r7   )z<Models endpoint is not supported for Azure Anthropic client.Nr-   r)   r-   r-   r.   ry   a  r:   zAsyncAnthropicFoundry.modelsrF   c                 C  rz   r{   )rF   r)   r-   r-   r.   rC   g  rD   zAsyncAnthropicFoundry.messagesrH   c                 C  rz   )r~   r|   )rH   r)   r-   r-   r.   r   m  rD   zAsyncAnthropicFoundry.betar   r   r   r   r   r   r   r   r   c                  r   r   r   r   r+   r-   r.   r   s  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   )rv   inspectisawaitabler   r	   r   rd   ru   r   r-   r-   r.   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rI| jd us;J |dd u rG| j|d< |S tdr   r   r   r-   r-   r.   r     s   	

z&AsyncAnthropicFoundry._prepare_options)rM   rV   rN   rV   rO   r   rP   rX   rQ   rY   rR   rZ   rS   r[   rT   r   rU   r]   r%   r&   )rc   rd   rN   rV   rO   r   rP   rX   rQ   rY   rR   rZ   rS   r[   rT   r   rU   r]   r%   r&   )rM   rV   rN   rV   rO   r   rc   rV   rP   rX   rQ   rY   rR   rZ   rS   r[   rT   r   rU   r]   r%   r&   r/   )r%   rF   )r%   rH   )rN   rV   rO   r   r   rV   rc   r   rP   rX   rT   r   rQ   r   rR   rZ   r   rZ   rS   r[   r   r[   r   r   r%   r   r   r   r   r-   r-   r+   r.   r     sx    7$
r   )C
__future__r   rr   r   typingr   r   r   r   r   r   r	   r
   	functoolsr   typing_extensionsr   r   httpx_typesr   r   r   r   _utilsr   rB   r   r   _compatr   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   resources.betar   r   resources.messagesr   r    resources.beta.messagesr?   rI   rd   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr!   r#   r$   r4   r6   r=   r>   rF   rG   rH   rK   r   r-   r-   r-   r.   <module>   sB    (  $2