U
    ?fZ                  	   @  sr  d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	 d dl
Z
ddlmZmZmZ ddlm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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&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. dddddddddg	Z/G dd de+Z0G dd de,Z1G dd dZ2G dd dZ3G dd dZ4G d d! d!Z5e0Z6e1Z7dS )"    )annotationsN)AnyUnionMapping)Selfoverride   )	resources
_constants_exceptionsQuerystring)		NOT_GIVENOmitHeadersTimeoutNotGiven	TransportProxiesTypesAsyncTransportRequestOptions)is_givenget_async_library)__version__)StreamAsyncStream)APIStatusError)TokenizerTypesync_get_tokenizerasync_get_tokenizer)DEFAULT_MAX_RETRIESDEFAULT_CONNECTION_LIMITSSyncAPIClientAsyncAPIClientSyncHttpxClientWrapperAsyncHttpxClientWrapperr   r   r   r   r	   	AnthropicAsyncAnthropicClientAsyncClientc                      s  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< ejZejZdddeedddddddddddddddddddddd fddZ	e
edd d!d"Ze
ed#d d$d%Ze
d#d d&d'Ze
d#d d(d)Ze
ed*d  fd+d,Zed-d-dd.d/d0Zdddeddeddddi d1dddd2ddd3ddddd4d5d6d7d8ZeZd9dd:d;d<Zd=d d>d?Zed9d@dAdBdCdDdEZ  ZS )Fr&   zresources.Completionscompletionszresources.Messagesmessageszresources.BetabetaAnthropicWithRawResponsewith_raw_responseAnthropicWithStreamedResponsewith_streaming_response
str | Noneapi_key
auth_tokenNFr2   r3   base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client	transportproxiesconnection_pool_limits_strict_response_validationstr | httpx.URL | None%Union[float, Timeout, None, NotGiven]intMapping[str, str] | NoneMapping[str, object] | Nonezhttpx.Client | NonezTransport | NoneProxiesTypes | Nonehttpx.Limits | NoneboolNoner2   r3   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   returnc                  s   |dkrt jd}|| _|dkr.t jd}|| _|dkrHt jd}|dkrTd}t jt|||||	|
||||d t| _	t
| | _t
| | _t
| | _t| | _t| | _dS )a#  Construct a new synchronous anthropic client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `ANTHROPIC_API_KEY`
        - `auth_token` from `ANTHROPIC_AUTH_TOKEN`
        NANTHROPIC_API_KEYANTHROPIC_AUTH_TOKENANTHROPIC_BASE_URLhttps://api.anthropic.comversionr5   r7   r6   r:   r;   r<   Zlimitscustom_headersZcustom_queryr>   )osenvirongetr2   r3   super__init__r   r   _default_stream_clsr	   ZCompletionsr*   ZMessagesr+   Betar,   r-   r.   r/   r0   selfr2   r3   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   	__class__ T/home/ankuromar296_gmail_com/.local/lib/python3.8/site-packages/anthropic/_client.pyrU   I   s:    $
zAnthropic.__init__r   rI   c                 C  s
   t ddS Ncomma)Zarray_formatr   rY   r\   r\   r]   qs   s    zAnthropic.qsdict[str, str]c                 C  s   | j r| j S | jr| jS i S N_api_key_auth_bearer_authra   r\   r\   r]   auth_headers   s
    zAnthropic.auth_headersc                 C  s   | j }|d kri S d|iS N	X-Api-Keyr2   rY   r2   r\   r\   r]   rf      s    zAnthropic._api_key_authc                 C  s    | j }|d kri S dd| iS NAuthorizationzBearer r3   rY   r3   r\   r\   r]   rg      s    zAnthropic._bearer_authdict[str, str | Omit]c                   s   t  jddd| jS )Nfalse
2023-06-01zX-Stainless-Asynczanthropic-version)rT   r8   _custom_headersra   rZ   r\   r]   r8      s    zAnthropic.default_headersr   headersrP   rI   c                 C  s\   | j r|drd S t|dtr(d S | jr<|dr<d S t|dtrPd S tdd S Nrj   rn   z"Could not resolve authentication method. Expected either api_key or auth_token to be set. Or for one of the `X-Api-Key` or `Authorization` headers to be explicitly omitted"r2   rS   
isinstancer   r3   	TypeErrorrY   rw   rP   r\   r\   r]   _validate_headers   s    zAnthropic._validate_headersr2   r3   r5   r6   r:   r=   r7   r8   set_default_headersr9   set_default_query_extra_kwargs!float | Timeout | None | NotGivenint | NotGivenMapping[str, Any]r   r2   r3   r5   r6   r:   r=   r7   r8   r   r9   r   r   rI   c                C  s   |dk	r|	dk	rt d|
dk	r0|dk	r0t d| j}|dk	rH||}n|	dk	rT|	}| j}|
dk	rl||
}n|dk	rx|}|dk	r|dk	rt dt| jtst dd}n | jtk	r| j}nd}|p| j}| jf |p| j	|p| j
|p| jt|tr| jn|||t|r|n| j||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 exclusivezNThe 'http_client' argument is mutually exclusive with 'connection_pool_limits'zfA custom HTTP client has been set and is mutually exclusive with the 'connection_pool_limits' argument)	r2   r3   r5   r6   r:   r=   r7   r8   r9   )
ValueErrorru   _custom_queryrz   _clientr$   _limitsr!   r[   r2   r3   r5   r   r6   r   r7   rY   r2   r3   r5   r6   r:   r=   r7   r8   r   r9   r   r   rw   paramsr\   r\   r]   copy   sN    




zAnthropic.copystrtextrI   c                 C  s   |   }||}t|jS ))  Count the number of tokens in a given string.

        Note that this is only accurate for older models, e.g. `claude-2.1`. For newer
        models this can only be used as a _very_ rough estimate, instead you should rely
        on the `usage` property in the response for exact counts.
        get_tokenizerencodelenZidsrY   r   Z	tokenizerZencoded_textr\   r\   r]   count_tokens  s    
zAnthropic.count_tokensr   c                 C  s   t  S rd   )r   ra   r\   r\   r]   r     s    zAnthropic.get_tokenizerobjecthttpx.Responser   err_msgbodyresponserI   c                C  s   |j dkrtj|||dS |j dkr4tj|||dS |j dkrNtj|||dS |j dkrhtj|||dS |j dkrtj|||dS |j dkrtj|||dS |j dkrtj|||dS |j d	krtj	|||dS t
|||dS 
Ni  )r   r   i  i  i  i  i  i  i  status_coder   ZBadRequestErrorAuthenticationErrorZPermissionDeniedErrorZNotFoundErrorZConflictErrorZUnprocessableEntityErrorZRateLimitErrorZInternalServerErrorr   rY   r   r   r   r\   r\   r]   _make_status_error   s"    







zAnthropic._make_status_error__name__
__module____qualname____annotations__r
   ZHUMAN_PROMPTZ	AI_PROMPTr   r    rU   propertyr   rb   rh   rf   rg   r8   r}   r   Zwith_optionsr   r   r   __classcell__r\   r\   rZ   r]   r&   :   sn   
	.G*Fc                      s  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< ejZejZdddeedddddddddddddddddddddd fddZ	e
edd d!d"Ze
ed#d d$d%Ze
d#d d&d'Ze
d#d d(d)Ze
ed*d  fd+d,Zed-d-dd.d/d0Zdddeddeddddi d1dddd2ddd3ddddd4d5d6d7d8ZeZd9dd:d;d<Zd=d d>d?Zed9d@dAdBdCdDdEZ  ZS )Fr'   zresources.AsyncCompletionsr*   zresources.AsyncMessagesr+   zresources.AsyncBetar,   AsyncAnthropicWithRawResponser.   "AsyncAnthropicWithStreamedResponser0   r1   r2   r3   NFr4   r?   r@   rA   rB   rC   zhttpx.AsyncClient | NonezAsyncTransport | NonerD   rE   rF   rG   rH   c                  s   |dkrt jd}|| _|dkr.t jd}|| _|dkrHt jd}|dkrTd}t jt|||||	|
||||d t| _	t
| | _t
| | _t
| | _t| | _t| | _dS )a  Construct a new async anthropic client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `ANTHROPIC_API_KEY`
        - `auth_token` from `ANTHROPIC_AUTH_TOKEN`
        NrJ   rK   rL   rM   rN   )rQ   rR   rS   r2   r3   rT   rU   r   r   rV   r	   ZAsyncCompletionsr*   ZAsyncMessagesr+   Z	AsyncBetar,   r   r.   r   r0   rX   rZ   r\   r]   rU   Q  s:    $
zAsyncAnthropic.__init__r   r^   c                 C  s
   t ddS r_   r   ra   r\   r\   r]   rb     s    zAsyncAnthropic.qsrc   c                 C  s   | j r| j S | jr| jS i S rd   re   ra   r\   r\   r]   rh     s
    zAsyncAnthropic.auth_headersc                 C  s   | j }|d kri S d|iS ri   rk   rl   r\   r\   r]   rf     s    zAsyncAnthropic._api_key_authc                 C  s    | j }|d kri S dd| iS rm   ro   rp   r\   r\   r]   rg     s    zAsyncAnthropic._bearer_authrq   c                   s   t  jdt  dd| jS )Nzasync:rs   rt   )rT   r8   r   ru   ra   rZ   r\   r]   r8     s    
zAsyncAnthropic.default_headersr   rv   c                 C  s\   | j r|drd S t|dtr(d S | jr<|dr<d S t|dtrPd S tdd S rx   ry   r|   r\   r\   r]   r}     s    z AsyncAnthropic._validate_headersr~   r   r   r   r   r   c                C  s   |dk	r|	dk	rt d|
dk	r0|dk	r0t d| j}|dk	rH||}n|	dk	rT|	}| j}|
dk	rl||
}n|dk	rx|}|dk	r|dk	rt dt| jtst dd}n | jtk	r| j}nd}|p| j}| jf |p| j	|p| j
|p| jt|tr| jn|||t|r|n| j||d	|S r   )r   ru   r   rz   r   r%   r   r!   r[   r2   r3   r5   r   r6   r   r7   r   r\   r\   r]   r     sN    




zAsyncAnthropic.copyr   r   c                   s"   |   I dH }||}t|jS )r   Nr   r   r\   r\   r]   r     s    
zAsyncAnthropic.count_tokensr   c                   s   t  I d H S rd   )r   ra   r\   r\   r]   r   %  s    zAsyncAnthropic.get_tokenizerr   r   r   r   c                C  s   |j dkrtj|||dS |j dkr4tj|||dS |j dkrNtj|||dS |j dkrhtj|||dS |j dkrtj|||dS |j dkrtj|||dS |j dkrtj|||dS |j d	krtj	|||dS t
|||dS r   r   r   r\   r\   r]   r   (  s"    







z!AsyncAnthropic._make_status_errorr   r\   r\   rZ   r]   r'   B  sn   
	.G*Fc                   @  s   e Zd ZdddddZdS )r-   r&   rG   clientrI   c                 C  s.   t |j| _t |j| _t |j| _d S rd   )r	   ZCompletionsWithRawResponser*   ZMessagesWithRawResponser+   ZBetaWithRawResponser,   rY   r   r\   r\   r]   rU   K  s    z!AnthropicWithRawResponse.__init__Nr   r   r   rU   r\   r\   r\   r]   r-   J  s   r-   c                   @  s   e Zd ZdddddZdS )r   r'   rG   r   c                 C  s.   t |j| _t |j| _t |j| _d S rd   )r	   ZAsyncCompletionsWithRawResponser*   ZAsyncMessagesWithRawResponser+   ZAsyncBetaWithRawResponser,   r   r\   r\   r]   rU   R  s    z&AsyncAnthropicWithRawResponse.__init__Nr   r\   r\   r\   r]   r   Q  s   r   c                   @  s   e Zd ZdddddZdS )r/   r&   rG   r   c                 C  s.   t |j| _t |j| _t |j| _d S rd   )r	   Z CompletionsWithStreamingResponser*   ZMessagesWithStreamingResponser+   ZBetaWithStreamingResponser,   r   r\   r\   r]   rU   Y  s    z&AnthropicWithStreamedResponse.__init__Nr   r\   r\   r\   r]   r/   X  s   r/   c                   @  s   e Zd ZdddddZdS )r   r'   rG   r   c                 C  s.   t |j| _t |j| _t |j| _d S rd   )r	   Z%AsyncCompletionsWithStreamingResponser*   Z"AsyncMessagesWithStreamingResponser+   ZAsyncBetaWithStreamingResponser,   r   r\   r\   r]   rU   `  s    z+AsyncAnthropicWithStreamedResponse.__init__Nr   r\   r\   r\   r]   r   _  s   r   )8
__future__r   rQ   typingr   r   r   Ztyping_extensionsr   r   Zhttpx r	   r
   r   Z_qsr   _typesr   r   r   r   r   r   r   r   r   _utilsr   r   _versionr   Z
_streamingr   r   r   Z_tokenizersr   r   r   Z_base_clientr    r!   r"   r#   r$   r%   __all__r&   r'   r-   r   r/   r   r(   r)   r\   r\   r\   r]   <module>   sF   , 
  
  
