
    R1iB                       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 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mZ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l*m+Z+ ddl,m-Z- g dZ. G d de(      Z/ G d de)      Z0 G d d      Z1 G d d      Z2 G d d      Z3 G d d      Z4e/Z5e0Z6y)    )annotationsN)AnyUnionMapping)Selfoverride   )_exceptionsQuerystring)	NOT_GIVENOmitTimeoutNotGiven	TransportProxiesTypesRequestOptions)is_givenget_async_library)__version__)filesmodelsbatches
embeddings)StreamAsyncStream)	GroqErrorAPIStatusError)DEFAULT_MAX_RETRIESSyncAPIClientAsyncAPIClient)chat)audio)r   r   r   r   Groq	AsyncGroqClientAsyncClientc                  z    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<   ded<   de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  fd              Zddededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d!dZeZe	 	 	 	 	 	 	 	 d"d       Z xZS )#r$   z	chat.Chatr"   zembeddings.Embeddingsr   zaudio.Audior#   zmodels.Modelsr   zbatches.Batchesr   zfiles.Filesr   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_validationc          
     h   |t         j                  j                  d      }|t        d      || _        |t         j                  j                  d      }|d}t
        	|   t        |||||||       t        j                  |       | _        t        j                  |       | _
        t        j                  |       | _        t        j                  |       | _        t!        j"                  |       | _        t%        j&                  |       | _        t)        |       | _        t-        |       | _        y)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versionr0   r2   r1   r5   custom_headerscustom_queryr6   )osenvirongetr   r.   super__init__r   r"   Chatr   
Embeddingsr#   Audior   Modelsr   Batchesr   Filesr)   r*   r+   r,   
selfr.   r0   r1   r2   r3   r4   r5   r6   	__class__s
            P/home/cursorai/projects/iching/venv/lib/python3.12/site-packages/groq/_client.pyrD   zGroq.__init__3   s   6 ?jjnn^4G? T  zz~~o6H-H##*&(C 	 		
 IIdO	$//5[[&
mmD)t,[[&
!4T!:'?'E$    c                    t        d      S Ncomma)array_formatr   rL   s    rN   qszGroq.qso        00rO   c                (    | j                   }dd| iS NAuthorizationzBearer r.   rL   r.   s     rN   auth_headerszGroq.auth_headerst        ,,77)!455rO   c                <    i t         |   ddi| j                  S )NX-Stainless-Asyncfalse)rC   r3   _custom_headersrL   rM   s    rN   r3   zGroq.default_headersz   s4    
g%

 ""
 	
rO   
r.   r0   r1   r5   r2   r3   set_default_headersr4   set_default_query_extra_kwargsc       
           ||t        d      ||	t        d      | j                  }|i ||}n||}| j                  }|i ||}n|	|	}|xs | j                  } | j                  d|xs | j
                  |xs | 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.
        zPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)r.   r0   r1   r5   r2   r3   r4    
ValueErrorra   _custom_query_clientrM   r.   r0   
isinstancer   r1   r   r2   rL   r.   r0   r1   r5   r2   r3   rd   r4   re   rf   headersparamss                rN   copyz	Groq.copy       " &+>+Jopp$):)Fkll&&&44O4G ,)G##$00-0F*&F!1T\\t~~ 	
+t||.$.w$ADLLw#'/'<$BRBR# 	
 	
 		
rO   c                  |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j
                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   d	k\  rt        j                  |||      S t        |||      S 
Ni  )responsebodyi  i  i  i  i  i  i  status_coder
   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorInternalServerErrorr   rL   err_msgrw   rv   s       rN   _make_status_errorzGroq._make_status_error   0    3&..wPTUU3&227XTXYY3&44WxVZ[[3&,,WxdSS3&,,WxdSS3&77(Y]^^3&--gtTT3&227XTXYYgtDDrO   )r.   
str | Noner0   str | httpx.URL | Noner1   %Union[float, Timeout, None, NotGiven]r2   intr3   Mapping[str, str] | Noner4   Mapping[str, object] | Noner5   httpx.Client | Noner6   boolreturnNoner   r   r   zdict[str, str]r   zdict[str, str | Omit])r.   r   r0   r   r1   !float | Timeout | None | NotGivenr5   r   r2   int | NotGivenr3   r   rd   r   r4   r   re   r   rf   Mapping[str, Any]r   r   r   r-   rw   objectrv   zhttpx.Responser   r   __name__
__module____qualname____annotations__r   r   rD   propertyr   rU   r\   r3   rr   with_optionsr   __classcell__rM   s   @rN   r$   r$   &   s   
O%%**55 L
 #+/9B.4859 ,0 -2+:F :F )	:F
 7:F :F 2:F 3:F ):F* &*+:F, 
-:Fx 1  1 6  6 
  
 #+/5>+/&/488<599=+--
 -
 )	-

 3-
 )-
 $-
 2-
 6-
 3-
 7-
 )-
 
-
b LEE 	E
 !E 
E ErO   r$   c                  z    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<   ded<   de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  fd              Zddededdddi d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d!dZeZe	 	 	 	 	 	 	 	 d"d       Z xZS )#r%   zchat.AsyncChatr"   zembeddings.AsyncEmbeddingsr   zaudio.AsyncAudior#   zmodels.AsyncModelsr   zbatches.AsyncBatchesr   zfiles.AsyncFilesr   AsyncGroqWithRawResponser*   AsyncGroqWithStreamedResponser,   r-   r.   NFr/   c          
     h   |t         j                  j                  d      }|t        d      || _        |t         j                  j                  d      }|d}t
        	|   t        |||||||       t        j                  |       | _        t        j                  |       | _
        t        j                  |       | _        t        j                  |       | _        t!        j"                  |       | _        t%        j&                  |       | _        t)        |       | _        t-        |       | _        y)zConstruct a new async AsyncGroq client instance.

        This automatically infers the `api_key` argument from the `GROQ_API_KEY` environment variable if it is not provided.
        Nr8   r9   r:   r;   r<   )r@   rA   rB   r   r.   rC   rD   r   r"   	AsyncChatr   AsyncEmbeddingsr#   
AsyncAudior   AsyncModelsr   AsyncBatchesr   
AsyncFilesr   r*   r   r,   rK   s
            rN   rD   zAsyncGroq.__init__   s   6 ?jjnn^4G? T  zz~~o6H-H##*&(C 	 		
 NN4(	$44T:%%d+
((.++D1%%d+
!9$!?'DT'J$rO   c                    t        d      S rQ   r   rT   s    rN   rU   zAsyncGroq.qs!  rV   rO   c                (    | j                   }dd| iS rX   rZ   r[   s     rN   r\   zAsyncGroq.auth_headers&  r]   rO   c                R    i t         |   ddt                i| j                  S )Nr_   zasync:)rC   r3   r   ra   rb   s    rN   r3   zAsyncGroq.default_headers,  s@    
g%
6*;*=)>!?
 ""
 	
rO   rc   c       
           ||t        d      ||	t        d      | j                  }|i ||}n||}| j                  }|i ||}n|	|	}|xs | j                  } | j                  d|xs | j
                  |xs | j                  t        |t              r| j                  n||t        |      r|n| j                  ||d|
S rh   rj   ro   s                rN   rr   zAsyncGroq.copy5  rs   rO   c                  |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j
                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   dk(  rt        j                  |||      S |j                   d	k\  rt        j                  |||      S t        |||      S ru   rx   r   s       rN   r   zAsyncGroq._make_status_errorh  r   rO   )r.   r   r0   r   r1   r   r2   r   r3   r   r4   r   r5   httpx.AsyncClient | Noner6   r   r   r   r   r   r   )r.   r   r0   r   r1   r   r5   r   r2   r   r3   r   rd   r   r4   r   re   r   rf   r   r   r   r   r   r   s   @rN   r%   r%      s   
**!!//:: L
 #+/9B.4859 15 -2+:K :K )	:K
 7:K :K 2:K 3:K .:K* &*+:K, 
-:Kx 1  1 6  6 
  
 #+/5>04&/488<599=+--
 -
 )	-

 3-
 .-
 $-
 2-
 6-
 3-
 7-
 )-
 
-
b LEE 	E
 !E 
E ErO   r%   c                      e Zd ZddZy)r)   c                   t        j                  |j                         | _         t        j                  |j                        | _        t	        j
                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _
        y N)r"   ChatWithRawResponser   EmbeddingsWithRawResponser#   AudioWithRawResponser   ModelsWithRawResponser   BatchesWithRawResponser   FilesWithRawResponserL   clients     rN   rD   zGroqWithRawResponse.__init__  s    ,,V[[9	$>>v?P?PQ//=
226==A55fnnE//=
rO   Nr   r$   r   r   r   r   r   rD   ri   rO   rN   r)   r)     s    >rO   r)   c                      e Zd ZddZy)r   c                   t        j                  |j                         | _         t        j                  |j                        | _        t	        j
                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _
        y r   )r"   AsyncChatWithRawResponser   AsyncEmbeddingsWithRawResponser#   AsyncAudioWithRawResponser   AsyncModelsWithRawResponser   AsyncBatchesWithRawResponser   AsyncFilesWithRawResponser   s     rN   rD   z!AsyncGroqWithRawResponse.__init__  s    11&++>	$CCFDUDUV44V\\B
77F::6>>J44V\\B
rO   Nr   r%   r   r   r   ri   rO   rN   r   r     s    CrO   r   c                      e Zd ZddZy)r+   c                   t        j                  |j                         | _         t        j                  |j                        | _        t	        j
                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _
        y r   )r"   ChatWithStreamingResponser   EmbeddingsWithStreamingResponser#   AudioWithStreamingResponser   ModelsWithStreamingResponser   BatchesWithStreamingResponser   FilesWithStreamingResponser   s     rN   rD   z!GroqWithStreamedResponse.__init__  s    226;;?	$DDVEVEVW55fllC
88G;;FNNK55fllC
rO   Nr   r   ri   rO   rN   r+   r+     s    DrO   r+   c                      e Zd ZddZy)r   c                   t        j                  |j                         | _         t        j                  |j                        | _        t	        j
                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j                        | _
        y r   )r"   AsyncChatWithStreamingResponser   $AsyncEmbeddingsWithStreamingResponser#   AsyncAudioWithStreamingResponser    AsyncModelsWithStreamingResponser   !AsyncBatchesWithStreamingResponser   AsyncFilesWithStreamingResponser   s     rN   rD   z&AsyncGroqWithStreamedResponse.__init__  s    77D	$II&J[J[\::6<<H
==fmmL@@P::6<<H
rO   Nr   r   ri   rO   rN   r   r     s    IrO   r   )7
__future__r   r@   typingr   r   r   typing_extensionsr   r   httpx r
   _qsr   _typesr   r   r   r   r   r   r   _utilsr   r   _versionr   	resourcesr   r   r   r   
_streamingr   r   r   r   _base_clientr   r    r!   resources.chatr"   resources.audior#   __all__r$   r%   r)   r   r+   r   r&   r'   ri   rO   rN   <module>r      s    # 	 & & ,      0 ! 9 9 D 2 
 ! "
roE= oEdoE oEd> >C CD DI I 
rO   