U
    	f$:                  	   @  sJ  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 ddlmZ ddl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 m!Z! ddl"m#Z#m$Z$m%Z% dddddddddg	Z&G dd de$Z'G dd de%Z(G dd dZ)G dd dZ*G dd dZ+G dd  d Z,e'Z-e(Z.dS )!    )annotationsN)AnyUnionMapping)Selfoverride   )	resources_exceptionsQuerystring)	NOT_GIVENOmitTimeoutNotGiven	TransportProxiesTypesRequestOptions)is_givenget_async_library)__version__)StreamAsyncStream)	GroqErrorAPIStatusError)DEFAULT_MAX_RETRIESSyncAPIClientAsyncAPIClientr   r   r   r   r	   Groq	AsyncGroqClientAsyncClientc                      s  e Zd ZU ded< ded< ded< ded< d	ed
< ddee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ed!d fd"d#Zddededdddi d$
ddd%dd&ddddd'd(d)d*d+ZeZed	d,d-d.d/d0d1Z  ZS )2r   zresources.Chatchatzresources.ModelsmodelsGroqWithRawResponsewith_raw_responseGroqWithStreamedResponsewith_streaming_responsestrapi_keyNFr)   base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validation
str | Nonestr | httpx.URL | None%Union[float, Timeout, None, NotGiven]intMapping[str, str] | NoneMapping[str, object] | Nonezhttpx.Client | NoneboolNone	r)   r+   r,   r-   r.   r/   r0   r1   returnc          	   
     s   |dkrt jd}|dkr$td|| _|dkr>t jd}|dkrJd}t jt|||||||d t	| | _
t| | _t| | _t| | _dS )zConstruct a new synchronous groq client instance.

        This automatically infers the `api_key` argument from the `GROQ_API_KEY` environment variable if it is not provided.
        NGROQ_API_KEYThe api_key client option must be set either by passing api_key to the client or by setting the GROQ_API_KEY environment variableGROQ_BASE_URLhttps://api.groq.comversionr+   r-   r,   r0   Zcustom_headersZcustom_queryr1   )osenvirongetr   r)   super__init__r   r	   ZChatr"   ZModelsr#   r$   r%   r&   r'   	selfr)   r+   r,   r-   r.   r/   r0   r1   	__class__ O/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/groq/_client.pyrF   9   s2    
zGroq.__init__r   r;   c                 C  s
   t ddS Ncomma)Zarray_formatr   rH   rK   rK   rL   qso   s    zGroq.qsdict[str, str]c                 C  s   | j }dd| iS NAuthorizationzBearer r)   rH   r)   rK   rK   rL   auth_headerst   s    zGroq.auth_headersdict[str, str | Omit]c                   s   t  jddi| jS )NX-Stainless-Asyncfalse)rE   r.   _custom_headersrP   rI   rK   rL   r.   z   s     zGroq.default_headers
r)   r+   r,   r0   r-   r.   set_default_headersr/   set_default_query_extra_kwargs!float | Timeout | None | NotGivenint | NotGivenMapping[str, Any]r   r)   r+   r,   r0   r-   r.   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|	}|p| j}| jf |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 exclusive)r)   r+   r,   r0   r-   r.   r/   
ValueErrorr[   Z_custom_query_clientrJ   r)   r+   
isinstancer   r,   r   r-   rH   r)   r+   r,   r0   r-   r.   r]   r/   r^   r_   headersparamsrK   rK   rL   copy   s4    


z	Groq.copyobjecthttpx.Responser   err_msgbodyresponser;   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  )rr   rq   i  i  i  i  i  i  i  status_coder
   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorInternalServerErrorr   rH   rp   rq   rr   rK   rK   rL   _make_status_error   s"    







zGroq._make_status_error__name__
__module____qualname____annotations__r   r   rF   propertyr   rQ   rW   r.   rl   Zwith_optionsr   __classcell__rK   rK   rI   rL   r   0   sJ   
	&6
&1c                      s  e Zd ZU ded< ded< ded< ded< d	ed
< ddee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ed!d fd"d#Zddededdddi d$
ddd%dd&ddddd'd(d)d*d+ZeZed	d,d-d.d/d0d1Z  ZS )2r   zresources.AsyncChatr"   zresources.AsyncModelsr#   AsyncGroqWithRawResponser%   AsyncGroqWithStreamedResponser'   r(   r)   NFr*   r2   r3   r4   r5   r6   r7   zhttpx.AsyncClient | Noner8   r9   r:   c          	   
     s   |dkrt jd}|dkr$td|| _|dkr>t jd}|dkrJd}t jt|||||||d t	| | _
t| | _t| | _t| | _dS )zConstruct a new async groq client instance.

        This automatically infers the `api_key` argument from the `GROQ_API_KEY` environment variable if it is not provided.
        Nr<   r=   r>   r?   r@   )rB   rC   rD   r   r)   rE   rF   r   r	   Z	AsyncChatr"   ZAsyncModelsr#   r   r%   r   r'   rG   rI   rK   rL   rF      s2    
zAsyncGroq.__init__r   rM   c                 C  s
   t ddS rN   r   rP   rK   rK   rL   rQ     s    zAsyncGroq.qsrR   c                 C  s   | j }dd| iS rS   rU   rV   rK   rK   rL   rW     s    zAsyncGroq.auth_headersrX   c                   s   t  jddt  i| jS )NrY   zasync:)rE   r.   r   r[   rP   rI   rK   rL   r.   "  s     
zAsyncGroq.default_headersr\   r`   ra   rb   r   rc   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|	}|p| j}| jf |p| j|p| jt|tr| j	n||t
|r|n| j||d|
S rd   re   ri   rK   rK   rL   rl   +  s4    


zAsyncGroq.copyrm   rn   r   ro   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 rs   rt   r~   rK   rK   rL   r   ^  s"    







zAsyncGroq._make_status_errorr   rK   rK   rI   rL   r      sJ   
	&6
&1c                   @  s   e Zd ZdddddZdS )r$   r   r9   clientr;   c                 C  s    t |j| _t |j| _d S N)r	   ZChatWithRawResponser"   ZModelsWithRawResponser#   rH   r   rK   rK   rL   rF     s    zGroqWithRawResponse.__init__Nr   r   r   rF   rK   rK   rK   rL   r$     s   r$   c                   @  s   e Zd ZdddddZdS )r   r   r9   r   c                 C  s    t |j| _t |j| _d S r   )r	   ZAsyncChatWithRawResponser"   ZAsyncModelsWithRawResponser#   r   rK   rK   rL   rF     s    z!AsyncGroqWithRawResponse.__init__Nr   rK   rK   rK   rL   r     s   r   c                   @  s   e Zd ZdddddZdS )r&   r   r9   r   c                 C  s    t |j| _t |j| _d S r   )r	   ZChatWithStreamingResponser"   ZModelsWithStreamingResponser#   r   rK   rK   rL   rF     s    z!GroqWithStreamedResponse.__init__Nr   rK   rK   rK   rL   r&     s   r&   c                   @  s   e Zd ZdddddZdS )r   r   r9   r   c                 C  s    t |j| _t |j| _d S r   )r	   ZAsyncChatWithStreamingResponser"   Z AsyncModelsWithStreamingResponser#   r   rK   rK   rL   rF     s    z&AsyncGroqWithStreamedResponse.__init__Nr   rK   rK   rK   rL   r     s   r   )/
__future__r   rB   typingr   r   r   typing_extensionsr   r   httpx r	   r
   Z_qsr   _typesr   r   r   r   r   r   r   _utilsr   r   _versionr   Z
_streamingr   r   r   r   Z_base_clientr   r   r   __all__r   r   r$   r   r&   r   r    r!   rK   rK   rK   rL   <module>   s@   $	 ) )