
    g-?                       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 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'      Z. G d d      Z/ G d d      Z0 G d d      Z1 G d d      Z2e-Z3e.Z4y)    )annotationsN)AnyUnionMapping)Selfoverride   )_exceptionsQuerystring)	NOT_GIVENOmitTimeoutNotGiven	TransportProxiesTypesRequestOptions)is_givenget_async_library)__version__)models
embeddings)StreamAsyncStream)	GroqErrorAPIStatusError)DEFAULT_MAX_RETRIESSyncAPIClientAsyncAPIClient)chat)audio)r   r   r   r   Groq	AsyncGroqClientAsyncClientc                  f    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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   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          
         |t         j                  j                  d      }|t        d      || _        |t         j                  j                  d      }|d}t
        	|   t        |||||||       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versionr.   r0   r/   r3   custom_headerscustom_queryr4   )osenvirongetr   r,   super__init__r   r    Chatr   
Embeddingsr!   Audior   Modelsr'   r(   r)   r*   
selfr,   r.   r/   r0   r1   r2   r3   r4   	__class__s
            A/var/www/openai/venv/lib/python3.12/site-packages/groq/_client.pyrB   zGroq.__init__4   s    6 ?jjnn^4G? T  zz~~o6H-H##*&(C 	 		
 IIdO	$//5[[&
mmD)!4T!:'?'E$    c                    t        d      S Ncomma)array_formatr   rH   s    rJ   qszGroq.qsn        00rK   c                (    | j                   }dd| iS NAuthorizationzBearer r,   rH   r,   s     rJ   auth_headerszGroq.auth_headerss        ,,77)!455rK   c                <    i t         |   ddi| j                  S )NX-Stainless-Asyncfalse)rA   r1   _custom_headersrH   rI   s    rJ   r1   zGroq.default_headersy   s4    
g%

 ""
 	
rK   
r,   r.   r/   r3   r0   r1   set_default_headersr2   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,   r.   r/   r3   r0   r1   r2    
ValueErrorr]   _custom_query_clientrI   r,   r.   
isinstancer   r/   r   r0   rH   r,   r.   r/   r3   r0   r1   r`   r2   ra   rb   headersparamss                rJ   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# 	
 	
 		
rK   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   rH   err_msgrs   rr   s       rJ   _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DrK   )r,   
str | Noner.   str | httpx.URL | Noner/   %Union[float, Timeout, None, NotGiven]r0   intr1   Mapping[str, str] | Noner2   Mapping[str, object] | Noner3   httpx.Client | Noner4   boolreturnNoner   r   r   zdict[str, str]r   zdict[str, str | Omit])r,   r   r.   r   r/   !float | Timeout | None | NotGivenr3   r   r0   int | NotGivenr1   r   r`   r   r2   r   ra   r   rb   Mapping[str, Any]r   r   r   r+   rs   objectrr   zhttpx.Responser   r   __name__
__module____qualname____annotations__r   r   rB   propertyr   rQ   rX   r1   rn   with_optionsr   __classcell__rI   s   @rJ   r"   r"   )   s   
O%%**55 L
 #+/9B.4859 ,0 -2+8F 8F )	8F
 78F 8F 28F 38F )8F* &*+8F, 
-8Ft 1  1 6  6 
  
 #+/5>+/&/488<599=+--
 -
 )	-

 3-
 )-
 $-
 2-
 6-
 3-
 7-
 )-
 
-
b LEE 	E
 !E 
E ErK   r"   c                  f    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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   AsyncGroqWithRawResponser(   AsyncGroqWithStreamedResponser*   r+   r,   NFr-   c          
         |t         j                  j                  d      }|t        d      || _        |t         j                  j                  d      }|d}t
        	|   t        |||||||       t        j                  |       | _        t        j                  |       | _
        t        j                  |       | _        t        j                  |       | _        t!        |       | _        t%        |       | _        y)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.
        Nr6   r7   r8   r9   r:   )r>   r?   r@   r   r,   rA   rB   r   r    	AsyncChatr   AsyncEmbeddingsr!   
AsyncAudior   AsyncModelsr   r(   r   r*   rG   s
            rJ   rB   zAsyncGroq.__init__   s    6 ?jjnn^4G? T  zz~~o6H-H##*&(C 	 		
 NN4(	$44T:%%d+
((.!9$!?'DT'J$rK   c                    t        d      S rM   r   rP   s    rJ   rQ   zAsyncGroq.qs  rR   rK   c                (    | j                   }dd| iS rT   rV   rW   s     rJ   rX   zAsyncGroq.auth_headers!  rY   rK   c                R    i t         |   ddt                i| j                  S )Nr[   zasync:)rA   r1   r   r]   r^   s    rJ   r1   zAsyncGroq.default_headers'  s@    
g%
6*;*=)>!?
 ""
 	
rK   r_   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 rd   rf   rk   s                rJ   rn   zAsyncGroq.copy0  ro   rK   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 rq   rt   r~   s       rJ   r   zAsyncGroq._make_status_errorc  r   rK   )r,   r   r.   r   r/   r   r0   r   r1   r   r2   r   r3   httpx.AsyncClient | Noner4   r   r   r   r   r   r   )r,   r   r.   r   r/   r   r3   r   r0   r   r1   r   r`   r   r2   r   ra   r   rb   r   r   r   r   r   r   s   @rJ   r#   r#      s   
**//:: L
 #+/9B.4859 15 -2+8K 8K )	8K
 78K 8K 28K 38K .8K* &*+8K, 
-8Kt 1  1 6  6 
  
 #+/5>04&/488<599=+--
 -
 )	-

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