
    piD                       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   Z4 edeejj                  ejl                  f         Z7 edee"e   e#e   f         Z8 G d de%      Z9 G d de(e7e8f         Z: G d de-      Z; G d de0      Z< G d de*      Z= G d d e.      Z> G d! d"e1      Z? G d# d$e+      Z@ G d% d&e:ejj                  e"e   f   e      ZA G d' d(e:ejl                  e#e   f   e      ZBy))    )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                        e Zd Zd fdZ xZS )MutuallyExclusiveAuthErrorc                $    t         |   d       y )NznThe `api_key` and `azure_ad_token_provider` arguments are mutually exclusive; Only one can be passed at a time)super__init__)self	__class__s    W/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/anthropic/lib/foundry.pyr)   z#MutuallyExclusiveAuthError.__init__   s    |	
    returnNone)__name__
__module____qualname__r)   __classcell__r+   s   @r,   r&   r&      s    
 
r-   r&   c                      e Zd Zy)BaseFoundryClientN)r1   r2   r3    r-   r,   r7   r7   $   s    r-   r7   c                  (    e Zd Zeedd              Zy)MessagesFoundryc                     yz?Batches endpoint is not supported for Anthropic Foundry client.Nr8   r*   s    r,   batcheszMessagesFoundry.batches(        r-   Nr.   r1   r2   r3   r   r   r>   r8   r-   r,   r:   r:   '         r-   r:   c                  (    e Zd Zeedd              Zy)BetaFoundryMessagesc                     yr<   r8   r=   s    r,   r>   zBetaFoundryMessages.batches0   r?   r-   Nr.   r@   r8   r-   r,   rC   rC   /   rA   r-   rC   c                  (    e Zd Zeedd              Zy)BetaFoundryc                ,    t        | j                        S zKReturn beta messages resource instance with excluded unsupported endpoints.)rC   _clientr=   s    r,   messageszBetaFoundry.messages8   s     #4<<00r-   N)r/   BetaMessagesr1   r2   r3   r   r   rJ   r8   r-   r,   rF   rF   7   s    1  1r-   rF   c                  (    e Zd Zeedd              Zy)AsyncMessagesFoundryc                     yr<   r8   r=   s    r,   r>   zAsyncMessagesFoundry.batches@   r?   r-   Nr.   r@   r8   r-   r,   rN   rN   ?   rA   r-   rN   c                  (    e Zd Zeedd              Zy)AsyncBetaFoundryMessagesc                     yr<   r8   r=   s    r,   r>   z AsyncBetaFoundryMessages.batchesH   r?   r-   Nr.   r@   r8   r-   r,   rQ   rQ   G   rA   r-   rQ   c                  (    e Zd Zeedd              Zy)AsyncBetaFoundryc                ,    t        | j                        S rH   )rQ   rI   r=   s    r,   rJ   zAsyncBetaFoundry.messagesP   s     (55r-   N)r/   AsyncBetaMessagesrL   r8   r-   r,   rT   rT   O   s    6  6r-   rT   c                      e Zd Zedddeeddddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zddddeeddddd
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZeedd	              Z	eedd
              Z
eedd              Zeddddededdddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZddZedd       Z xZS )AnthropicFoundryNF	resourceapi_keyazure_ad_token_providertimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationc       	             y Nr8   
r*   rZ   r[   r\   r]   r^   r_   r`   ra   rb   s
             r,   r)   zAnthropicFoundry.__init__[        r-   r[   r\   r]   r^   r_   r`   ra   rb   c       	             y rd   r8   
r*   base_urlr[   r\   r]   r^   r_   r`   ra   rb   s
             r,   r)   zAnthropicFoundry.__init__j   rf   r-   
rZ   r[   r\   rj   r]   r^   r_   r`   ra   rb   c       
   
     x   ||nt         j                  j                  d      }||nt         j                  j                  d      }||nt         j                  j                  d      }||t        d      ||t	        d      d| d}n|t	        d	      t
        |   |||||||	|

       || _        y)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r[   rj   r]   r^   r_   r`   ra   rb   osenvirongetr   
ValueErrorr(   r)   _azure_ad_token_providerr*   rZ   r[   r\   rj   r]   r^   r_   r`   ra   rb   r+   s              r,   r)   zAnthropicFoundry.__init__y       2 %0'bjjnnE`6a'38Hd9e'38Hd9e?6>  Y    K  "(+LMH!KLL#+'#(C 	 		
 )@%r-   c                     y)z>Models endpoint is not supported for Anthropic Foundry client.Nr8   r=   s    r,   modelszAnthropicFoundry.models   r?   r-   c                    t        |       S zFReturn messages resource instance with excluded unsupported endpoints.client)r:   r=   s    r,   rJ   zAnthropicFoundry.messages   s     d++r-   c                    t        |       S )BReturn beta resource instance with excluded unsupported endpoints.)rF   r=   s    r,   betazAnthropicFoundry.beta   s     4  r-   r[   r\   
auth_tokenrj   r]   ra   r^   r_   set_default_headersr`   set_default_query_extra_kwargsc               \    t         |   ||||||||	|
|d|xs | j                  i|      S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        r\   )r[   r   rj   r]   ra   r^   r_   r   r`   r   r   r(   copyr{   r*   r[   r\   r   rj   r]   ra   r^   r_   r   r`   r   r   r+   s                r,   r   zAnthropicFoundry.copy   W    ( w|!##+ 3'/)+B+cdFcFc  
 	
r-   c                r    | j                   }|) |       }|rt        |t              st        d|       |S y NzOExpected `azure_ad_token_provider` argument to return a string but it returned )r{   
isinstancestrrz   r*   providertokens      r,   _get_azure_ad_tokenz$AnthropicFoundry._get_azure_ad_token   sI    00JE
5# 6 efkelm  Lr-   c                X   t        |j                        ri |j                  ni }t        |      }||_        | j                         }||j	                  d      d| |d<   |S | j
                  0|j	                  d      | j
                  J | j
                  |d<   |S t        d      NAuthorizationzBearer zapi-keyzUnable to handle authr   headersr   r   ry   r[   rz   r*   optionsr   azure_ad_tokens       r,   _prepare_optionsz!AnthropicFoundry._prepare_options   s    @H@Y)<GOO)<_aW%!113%{{?+3-4^4D+E(  \\%{{9%-||///%)\\	"
  455r-   )rZ   
str | Noner[   r   r\   AzureADTokenProvider | Noner]   !float | Timeout | None | NotGivenr^   intr_   Mapping[str, str] | Noner`   Mapping[str, object] | Nonera   httpx.Client | Nonerb   boolr/   r0   )rj   r   r[   r   r\   r   r]   r   r^   r   r_   r   r`   r   ra   r   rb   r   r/   r0   )rZ   r   r[   r   r\   r   rj   r   r]   r   r^   r   r_   r   r`   r   ra   r   rb   r   r/   r0   r.   )r/   r:   )r/   r   )r[   r   r\   r   r   r   rj   str | httpx.URL | Noner]   r   ra   r   r^   int | NotGivenr_   r   r   r   r`   r   r   r   r   Mapping[str, Any]r/   r   r/   r   r   r   r/   r   r1   r2   r3   r   r   r   r)   r   r   r   rJ   r   r   with_optionsr   r   r4   r5   s   @r,   rX   rX   Z   s     $"?C5>.4859+/,1  	
 "= 3  2 3 ) &* 
  
 #?C5>.4859+/,1  	
 "= 3  2 3 ) &* 
 "  $"?C#5>.4859+/,15@ 5@ 	5@
 "=5@ 5@ 35@ 5@ 25@ 35@ )5@ &*5@ 
5@n    ,  , !  !  #?C!%+/5>+/&/488<599=+-"
 "
 "=	"

 "
 )"
 3"
 )"
 $"
 2"
 6"
 3"
 7"
 )"
 
"
 "
H L
  r-   rX   c                      e Zd Zedddeeddddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeddeeddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zddddeeddddd
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZeedd	              Z	eedd
              Z
eedd              Zeddddededdddi d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd       ZeZddZedd       Z xZS )AsyncAnthropicFoundryNFrY   c       	             y rd   r8   re   s
             r,   r)   zAsyncAnthropicFoundry.__init__  rf   r-   rg   c       	             y rd   r8   ri   s
             r,   r)   zAsyncAnthropicFoundry.__init__  rf   r-   rk   c       
   
     x   ||nt         j                  j                  d      }||nt         j                  j                  d      }||nt         j                  j                  d      }||t        d      ||t	        d      d| d}n|t	        d	      t
        |   |||||||	|

       || _        y)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.
        Nrm   rn   ro   rp   rq   rr   rs   rt   ru   rv   r|   s              r,   r)   zAsyncAnthropicFoundry.__init__*  r}   r-   c                     y)z<Models endpoint is not supported for Azure Anthropic client.Nr8   r=   s    r,   r   zAsyncAnthropicFoundry.modelsa  r?   r-   c                    t        |       S r   )rN   r=   s    r,   rJ   zAsyncAnthropicFoundry.messagesg  s     $400r-   c                    t        |       S )r   r   )rT   r=   s    r,   r   zAsyncAnthropicFoundry.betam  s      t,,r-   r   c               \    t         |   ||||||||	|
|d|xs | j                  i|      S r   r   r   s                r,   r   zAsyncAnthropicFoundry.copys  r   r-   c                   K   | j                   }|_ |       }t        j                  |      r
| d {   }|rt        t	        t
        |      t              st        d|       t        |      S y 7 >wr   )r{   inspectisawaitabler   r
   r   r   rz   r   s      r,   r   z)AsyncAnthropicFoundry._get_azure_ad_token  ss     00JE""5)#
4U+;S A efkelm  u: $s   0A3A1?A3c                t  K   t        |j                        ri |j                  ni }t        |      }||_        | j                          d {   }||j	                  d      d| |d<   |S | j
                  0| j
                  J |j	                  d      | j
                  |d<   |S t        d      7 hwr   r   r   s       r,   r   z&AsyncAnthropicFoundry._prepare_options  s     @H@Y)<GOO)<_aW%!#7799%{{?+3-4^4D+E(  \\%<<+++{{9%-%)\\	"
  455 :s   AB8B6A)B8)rZ   r   r[   r   r\    AsyncAzureADTokenProvider | Noner]   r   r^   r   r_   r   r`   r   ra   httpx.AsyncClient | Nonerb   r   r/   r0   )rj   r   r[   r   r\   r   r]   r   r^   r   r_   r   r`   r   ra   r   rb   r   r/   r0   )rZ   r   r[   r   r\   r   rj   r   r]   r   r^   r   r_   r   r`   r   ra   r   rb   r   r/   r0   r.   )r/   rN   )r/   rT   )r[   r   r\   r   r   r   rj   r   r]   r   ra   r   r^   r   r_   r   r   r   r`   r   r   r   r   r   r/   r   r   r   r   r5   s   @r,   r   r     s     $"DH5>.485904,1  	
 "B 3  2 3 . &* 
  
 #DH5>.485904,1  	
 "B 3  2 3 . &* 
 "  $"DH#5>.485904,15@ 5@ 	5@
 "B5@ 5@ 35@ 5@ 25@ 35@ .5@ &*5@ 
5@n    1  1 -  -  #DH!%+/5>04&/488<599=+-"
 "
 "B	"

 "
 )"
 3"
 ."
 $"
 2"
 6"
 3"
 7"
 )"
 
"
 "
H L  r-   r   )C
__future__r   rw   r   typingr   r   r   r   r   r	   r
   r   	functoolsr   typing_extensionsr   r   httpx_typesr   r   r   r   _utilsr   rI   r   r   _compatr   _modelsr   
_streamingr   r   _exceptionsr   _base_clientr   r   resources.betar   r   resources.messagesr    r!   resources.beta.messagesrK   rV   r   AzureADTokenProviderAsyncAzureADTokenProviderClientAsyncClientr"   r$   r&   r7   r:   rC   rF   rN   rQ   rT   rX   r   r8   r-   r,   <module>r      sZ   " 	  T T T % ,  7 7  /   ) , ( : , 8 bC( $R)?%?@ uU\\5CTCT5T/UV+5kRUFV9V3WX
 
 I
=/#AB Hh , 1$ 1= 0 6y 6n(vc{)BCY nbp-e.?.?SAQ.QRTb pr-   