o
    ni])                 	   @  s|  U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dl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mZmZmZmZmZmZmZmZ d dl m!Z!m"Z"m#Z#m$Z$ d dl%Z%d dl&Z&d dl'Z'd dl(Z(d dl&m)Z) d dl(m*Z* d	d
l+m,Z, d	dl-m.Z. d	dl/m0Z0m1Z1 d	dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d	dlDmEZEmFZFmGZGmHZHmIZImJZJmKZK d	dlLmMZMmNZNmOZO d	dlPmQZQmRZRmSZSmTZT d	dlUmVZVmWZWmXZXmYZY d	dlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZa d	dlbmcZcmdZdmeZemfZf d	dl,mgZgmhZhmiZimjZjmkZk d	dllmmZm d	dlnmoZo e	peqZrdesd< erteE  edddZuedddZvedZwedd d!Zxed"ece dZyed#eee dZzerpd d$l{m|Z| e|Z}nzd d$l{m|Z} W n e~y   e7d%Z}Y nw G d&d' d'ZG d(d) d)eQeew ZG d*d+ d+eew eew ZG d,d- d-eewevf ZG d.d/ d/eew eew Zed0ee&je&jf dZed1eece eee f dZG d2d3 d3eeef ZG d4d5 d5e&jZere&jZneZG d6d7 d7eZG d8d9 d9ee&jece f ZG d:d; d;e&jZzd dlZW n e~y0   G d<d= d=e&jZY n
w G d>d= d=ejZerEe&jZ	 e&jZneZeZG d?d@ d@eZG dAdB dBee&jeee f ZdddddeCeCddCdwdUdVZG dWdX dXeedf ZG dYdZ dZZeee"d[ f Zdxd]d^ZeJdd_dydedfZG dgdh dhZeee"di f ZdzdjdkZdzdldmZd{dodpZd|dudvZdS )}    )annotationsN)TracebackType)random)TYPE_CHECKINGAnyDictTypeUnionGenericMappingTypeVarIterableIteratorOptional	GeneratorAsyncIteratorcastoverload)UnpackLiteraloverride
get_origin)URL)PrivateAttr   )_exceptionsQuerystring)to_httpx_filesasync_to_httpx_files)BodyOmitQueryHeadersTimeoutNotGiven	ResponseT
AnyMapping
PostParserBinaryTypesRequestFilesHttpxSendArgsRequestOptionsAsyncBinaryTypesHttpxRequestFilesModelBuilderProtocol	not_given)SensitiveHeadersFilteris_dictis_listasyncifyis_given	lru_cache
is_mapping)PYDANTIC_V1
model_copy
model_dump)GenericModelFinalRequestOptionsvalidate_typeconstruct_type)APIResponseBaseAPIResponseAsyncAPIResponseextract_response_type)DEFAULT_TIMEOUTMAX_RETRY_DELAYDEFAULT_MAX_RETRIESINITIAL_RETRY_DELAYRAW_RESPONSE_HEADEROVERRIDE_CAST_TO_HEADERDEFAULT_CONNECTION_LIMITS)Stream
SSEDecoderAsyncStreamSSEBytesDecoder)OpenAIErrorAPIStatusErrorAPITimeoutErrorAPIConnectionErrorAPIResponseValidationError)openapi_dumps)LegacyAPIResponsezlogging.Loggerlog	SyncPageTzBaseSyncPage[Any])bound
AsyncPageTzBaseAsyncPage[Any]_T_T_coT)	covariant_StreamT_AsyncStreamT)DEFAULT_TIMEOUT_CONFIGg      @c                   @  sv   e Zd ZU dZded< ded< ded< edddZedddZedddZeeeddddZedddZ	dS )PageInfozStores the necessary information to build the request to retrieve the next page.

    Either `url` or `params` must be set.
    URL | NotGivenurlQuery | NotGivenparamsBody | NotGivenjsonr   returnNonec                C     d S N selfra   rj   rj   S/var/www/html/arapca_proje/venv/lib/python3.10/site-packages/openai/_base_client.py__init__      zPageInfo.__init__r"   c                C  rh   ri   rj   )rl   rc   rj   rj   rm   rn      ro   r    c                C  rh   ri   rj   )rl   re   rj   rj   rm   rn      ro   ra   re   rc   c                C  s   || _ || _|| _d S ri   rp   )rl   ra   re   rc   rj   rj   rm   rn      s   
strc                 C  sN   | j r| jj d| j  dS | jr| jj d| j dS | jj d| j dS )Nz(url=)z(json=z(params=)ra   	__class____name__re   rc   rl   rj   rj   rm   __repr__   s
   zPageInfo.__repr__N)ra   r   rf   rg   )rc   r"   rf   rg   )re   r    rf   rg   )ra   r`   re   rd   rc   rb   rf   rg   rf   rq   )
rt   
__module____qualname____doc____annotations__r   rn   r0   r   rv   rj   rj   rj   rm   r_   y   s"   
 	r_   c                   @  s`   e Zd ZU dZe Zded< e Zded< ddd	ZdddZ	dddZ
dddZdddZdS )BasePagea<  
    Defines the core interface for pagination.

    Type Args:
        ModelT: The pydantic model that represents an item in the response.

    Methods:
        has_next_page(): Check if there is another page available
        next_page_info(): Get the necessary information to make a request for the next page
    r<   _optionsType[_T]_modelrf   boolc                 C  s   |   }|sdS |  d uS )NF)_get_page_itemsnext_page_info)rl   itemsrj   rj   rm   has_next_page   s   zBasePage.has_next_pageOptional[PageInfo]c                 C  rh   ri   rj   ru   rj   rj   rm   r      s    zBasePage.next_page_infoIterable[_T]c                 C  rh   ri   rj   ru   rj   rj   rm   r         zBasePage._get_page_itemsra   r   httpx.QueryParamsc                 C  s   t tt| jj|jS ri   )httpxQueryParamsr   r   r}   rc   mergerk   rj   rj   rm   _params_from_url   s   zBasePage._params_from_urlinfor_   c                 C  s   t | j}|  t|jtsi |j|j|_|S t|jts:| |j}|jj|d}t	|j|_t
||_|S t|jtsht|jsItd|jsTi |j|_|S t|js]tdi |j|j|_|S td)N)rc   z*Pagination is only supported with mappingszUnexpected PageInfo state)r9   r}   _strip_raw_response_header
isinstancerc   r%   ra   r   	copy_withdictrq   re   r7   	TypeError	json_data
ValueError)rl   r   optionsrc   ra   rj   rj   rm   _info_to_options   s,   



zBasePage._info_to_optionsNrf   r   )rf   r   )rf   r   )ra   r   rf   r   )r   r_   rf   r<   )rt   rx   ry   rz   r   r}   r{   r   r   r   r   r   r   rj   rj   rj   rm   r|      s   
 



r|   c                   @  F   e Zd ZU e Zded< dd
dZdddZdddZ	dddZ
dS )BaseSyncPageSyncAPIClient_clientclientmodelr~   r   r<   rf   rg   c                 C  s0   t st| dd d u ri | _|| _|| _|| _d S N__pydantic_private__r8   getattrr   r   r   r}   )rl   r   r   r   rj   rj   rm   _set_private_attributes   
   
z$BaseSyncPage._set_private_attributesIterator[_T]c                 c  s(    |   D ]}| D ]}|V  qqd S ri   
iter_pagesr   rl   pageitemrj   rj   rm   __iter__  s   zBaseSyncPage.__iter__rl   rV   Iterator[SyncPageT]c                 c  s&    | }	 |V  |  r| }nd S qri   r   get_next_pagerl   r   rj   rj   rm   r     s   
zBaseSyncPage.iter_pagesc                 C  s4   |   }|s
td| |}| jj| j| j|dS NzYNo next page expected; please check `.has_next_page()` before calling `.get_next_page()`.)r   r   r   RuntimeErrorr   r   _request_api_listr   rs   rl   r   r   rj   rj   rm   r     s   
zBaseSyncPage.get_next_pageN)r   r   r   r~   r   r<   rf   rg   )rf   r   )rl   rV   rf   r   )rl   rV   rf   rV   )rt   rx   ry   pydanticr   r   r{   r   r   r   r   rj   rj   rj   rm   r      s   
 


	r   c                   @  s4   e Zd ZdddZdddZdddZdddZdS )AsyncPaginatorr   AsyncAPIClientr   r<   page_clsType[AsyncPageT]r   r~   rf   rg   c                 C  s   || _ || _|| _|| _d S ri   )r   r   r}   	_page_cls)rl   r   r   r   r   rj   rj   rm   rn     s   
zAsyncPaginator.__init__ Generator[Any, None, AsyncPageT]c                 C  s   |    S ri   )	_get_page	__await__ru   rj   rj   rm   r   '  s   zAsyncPaginator.__await__rX   c                   s0   d fdd}| j _ j j j I d H S )NresprX   rf   c                   s   | j  j j jd | S )N)r   r   r   )r   r   r}   r   r   ru   rj   rm   _parser+  s   z)AsyncPaginator._get_page.<locals>._parser)r   rX   rf   rX   )r}   post_parserr   requestr   )rl   r   rj   ru   rm   r   *  s   zAsyncPaginator._get_pageAsyncIterator[_T]c                 C s0   t t| I d H }|2 z	3 d H W }|V  q6 d S ri   )r   rX   r   rj   rj   rm   	__aiter__7  s   zAsyncPaginator.__aiter__N)
r   r   r   r<   r   r   r   r~   rf   rg   )rf   r   )rf   rX   rf   r   )rt   rx   ry   rn   r   r   r   rj   rj   rj   rm   r     s
    


r   c                   @  r   )BaseAsyncPager   r   r   r~   r   r   r<   rf   rg   c                 C  s0   t st| dd d u ri | _|| _|| _|| _d S r   r   )rl   r   r   r   rj   rj   rm   r   D  r   z%BaseAsyncPage._set_private_attributesr   c                 C s2   |   2 z3 d H W }| D ]}|V  qq6 d S ri   r   r   rj   rj   rm   r   Q  s   zBaseAsyncPage.__aiter__rl   rX   AsyncIterator[AsyncPageT]c                 C s,   | }	 |V  |  r| I d H }nd S qri   r   r   rj   rj   rm   r   V  s   zBaseAsyncPage.iter_pagesc                   s<   |   }|std| |}| jj| j| j|dI d H S r   r   r   rj   rj   rm   r   _  s   
zBaseAsyncPage.get_next_pageN)r   r~   r   r   r   r<   rf   rg   r   )rl   rX   rf   r   )rl   rX   rf   rX   )rt   rx   ry   r   r   r   r{   r   r   r   r   rj   rj   rj   rm   r   A  s   
 


	r   _HttpxClientT_DefaultStreamTc                   @  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< dZded< eeddddtddZdud d!Zdvd%d&Z	dwd+d,Z
d-d.dxd3d4Zdyd5d6Zdzd8d9Zd-d.d{d;d<Zd|d@dAZd}dDdEZd~dGdHZddJdKZeddMdNZeddPdQZeddSdTZeddVdWZeddXdYZdd\d]Zedd^d_Zedd`daZejddcdaZddedfZdddjdkZ	dddndoZddpdqZ ddrdsZ!dS )
BaseClientr   r   rq   _versionr   	_base_urlintmax_retrieszUnion[float, Timeout, None]timeoutr   _strict_response_validation
str | None_idempotency_headerNztype[_DefaultStreamT] | None_default_stream_cls)r   r   custom_headerscustom_queryversionbase_url	str | URLfloat | Timeout | Noner   Mapping[str, str] | Noner   Mapping[str, object] | Nonerf   rg   c                C  s\   || _ | t|| _|| _|| _|pi | _|pi | _|| _d | _	d | _
|d u r,tdd S )Nzmax_retries cannot be None. If you want to disable retries, pass `0`; if you want unlimited retries, pass `math.inf` or a very high number; if you want the default behavior, pass `openai.DEFAULT_MAX_RETRIES`)r   _enforce_trailing_slashr   r   r   r   _custom_headers_custom_queryr   r   	_platformr   )rl   r   r   r   r   r   r   r   rj   rj   rm   rn   x  s   

zBaseClient.__init__ra   c                 C  s"   |j dr|S |j|j d dS )N   /raw_path)r   endswithr   rk   rj   rj   rm   r     s   z"BaseClient._enforce_trailing_slashresponsehttpx.ResponserO   c                 C  s   |j r|jsd }d|j }n)|j }|}zt|}d|j d| }W n ty7   |p4d|j }Y nw | j|||dS )NzError code: z - )bodyr   )		is_closedis_stream_consumedstatus_codetextstripre   loads	Exception_make_status_error)rl   r   r   err_msgerr_textrj   rj   rm    _make_status_error_from_response  s   

z+BaseClient._make_status_error_from_responser   r   object_exceptions.APIStatusErrorc                C  s   t  ri   )NotImplementedError)rl   r   r   r   rj   rj   rm   r     s   zBaseClient._make_status_errorr   retries_takenr   r<   r   httpx.Headersc          	      C  s   |j pi }t| j|}| || t|}| j}|r'|jr'||vr'|j||< dd |D }d|vr8t||d< d|vrZt	|j
trE| j
n|j
}t	|trP|j}|d urZt||d< |S )Nc                 S  s   g | ]}|  qS rj   )lower).0headerrj   rj   rm   
<listcomp>  s    z-BaseClient._build_headers.<locals>.<listcomp>zx-stainless-retry-countzx-stainless-read-timeout)headers_merge_mappingsdefault_headers_validate_headersr   r#   r   idempotency_keyrq   r   r   r%   r$   read)	rl   r   r   r   headers_dictr   idempotency_headerlower_custom_headersr   rj   rj   rm   _build_headers  s"   



zBaseClient._build_headersc                 C  s4   t |}|jr| jj|jd }| jj|dS |S )z
        Merge a URL argument together with any 'base_url' on the client,
        to create the URL used for the outgoing request.
        r   r   )r   is_relative_urlr   r   lstripr   )rl   ra   	merge_urlmerge_raw_pathrj   rj   rm   _prepare_url  s
   zBaseClient._prepare_urlSSEDecoder | SSEBytesDecoderc                 C     t  S ri   )rK   ru   rj   rj   rm   _make_sse_decoder  s   zBaseClient._make_sse_decoderhttpx.Requestc                C  s  t tjrt dt|dtrdhni d i }|j}|jd ur@|d u r+t	t
|j}nt|r6t||j}n
tdt| d| j||d}t| j|j}|d}|j}|d ur|d	rd
|vrh|d |rt|sxtdt| d| ||d< |st	tt }| |j}	|r|	jri t|	j |}|	j |	j!"ddd d}	d|	j#v rd|	j#$ddi|d< |j%& dk}
|
r|j'd ur|d urtd|j'd ur|d urtd|j'd ur|j'|d< nt(|t)r||d< n|st*|r|d urt+|nd |d< ||d< n|dd  |dd  | j,j-d|t(|j.t/r(| j.n|j.|j%|	|r=| j01t	t2t3t4f |nd d|S )NzRequest options: %sTcontent)exclude_unsetexcludezUnexpected JSON data type, z , cannot merge with `extra_body`r   Content-Typezmultipart/form-databoundaryzGExpected query input to be a dictionary for multipart requests but got z	 instead.data   ?r   r   r   _sni_hostname-
extensionsgetz7Passing both `content` and `json_data` is not supportedz3Passing both `content` and `files` is not supportedfiles)r   r   methodra   rc   rj   )5rU   isEnabledForloggingDEBUGdebugr:   r8   r   
extra_jsonr   r    r7   r   r   typer  default_queryrc   r  r  
startswithpopr2   r   _serialize_multipartformr.   ForceMultipartDictr	  ra   queryr   r   r   r   splithostreplacer  r   r  r   bytesr5   rS   r   build_requestr   r%   qs	stringifyr   rq   r   )rl   r   r   kwargsr   r   rc   content_typer  prepared_urlis_body_allowedrj   rj   rm   _build_request  s   







$
"
zBaseClient._build_requestr  Mapping[object, object]dict[str, object]c                 C  s^   | j j|dd}i }|D ] \}}||}|s|||< qt|r&|| q||g||< q|S )Nbrackets)array_format)r-  stringify_itemsr  r3   append)rl   r  r   
serializedkeyvalueexistingrj   rj   rm   r%  L  s   

z#BaseClient._serialize_multipartformcast_totype[ResponseT]c                 C  sD   t |js|S t|j}|tt}t |r ||_ttt |S |S ri   )	r5   r   r   r$  rH   r0   r   r   r&   )rl   r>  r   r   override_cast_torj   rj   rm   _maybe_override_cast_toj  s   

z"BaseClient._maybe_override_cast_tor   c                 C  s   |j tdkS Nstream)r   r  rG   rl   r   rj   rj   rm   _should_stream_response_body{  s   z'BaseClient._should_stream_response_bodyr&   c             
   C  s   |d u r	t td S |tu rt t|S z,t|r(t|tr(t t|j||dW S | jr5t tt	||dW S t tt
||dW S  tjyR } zt||d|d }~ww )N)r   r  )type_r<  )r   r   )r   r&   r   inspectisclass
issubclassr/   buildr   r=   r>   r   ValidationErrorrR   )rl   r  r>  r   errrj   rj   rm   _process_response_data~  s   

z!BaseClient._process_response_datar   c                 C  r  ri   r   ru   rj   rj   rm   r-       zBaseClient.qshttpx.Auth | Nonec                 C  rh   ri   rj   ru   rj   rj   rm   custom_auth     zBaseClient.custom_authdict[str, str]c                 C  s   i S ri   rj   ru   rj   rj   rm   auth_headers  rQ  zBaseClient.auth_headersdict[str, str | Omit]c                 C  s"   dd| j d|  | j| jS )Nzapplication/json)Acceptr  z
User-Agent)
user_agentplatform_headersrS  r   ru   rj   rj   rm   r     s   zBaseClient.default_headersc                 C  s
   i | j S ri   )r   ru   rj   rj   rm   r"    s   zBaseClient.default_queryr   r#   c                 C     dS )zaValidate the given default headers and custom headers.

        Does nothing by default.
        Nrj   )rl   r   r   rj   rj   rm   r        	zBaseClient._validate_headersc                 C  s   | j j d| j S )Nz/Python )rs   rt   r   ru   rj   rj   rm   rV    s   zBaseClient.user_agentc                 C  s   | j S ri   )r   ru   rj   rj   rm   r     rN  zBaseClient.base_url	URL | strc                 C  s"   |  t|tr	|nt|| _d S ri   )r   r   r   r   rk   rj   rj   rm   r     s   "Dict[str, str]c                 C  s   t | j| jdS )N)platform)rW  r   r   ru   rj   rj   rm   rW    s   zBaseClient.platform_headersresponse_headersOptional[httpx.Headers]float | Nonec              	   C  s   |du rdS z| dd}t|d W S  ttfy   Y nw | d}zt|W S  ttfy4   Y nw tj|}|du rAdS tj|}t|t  S )a@  Returns a float of the number of seconds (not milliseconds) to wait after retrying, or None if unspecified.

        About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
        See also  https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After#syntax
        Nzretry-after-ms  zretry-after)	r  floatr   r   emailutilsparsedate_tz	mktime_tztime)rl   r]  retry_ms_headerretry_headerretry_date_tuple
retry_daterj   rj   rm   _parse_retry_after_header  s&   

z$BaseClient._parse_retry_after_headerremaining_retriesra  c           
      C  s~   | | j}| |}|d urd|  k rdkr|S  t|| d}tttd| t}ddt   }|| }	|	dkr=|	S dS )Nr   <   r`  g       @r   g      ?)get_max_retriesr   rk  minrF   powrD   r   )
rl   rl  r   r]  r   retry_after
nb_retriessleep_secondsjitterr   rj   rj   rm   _calculate_retry_timeout  s   
z#BaseClient._calculate_retry_timeoutc                 C  s   |j d}|dkrtd dS |dkrtd dS |jdkr*td	|j dS |jd
kr8td	|j dS |jdkrFtd	|j dS |jdkrTtd	|j dS td dS )Nzx-should-retrytruez4Retrying as header `x-should-retry` is set to `true`Tfalsez9Not retrying as header `x-should-retry` is set to `false`Fi  zRetrying due to status code %ii  i  i  zNot retrying)r   r  rU   r  r   )rl   r   should_retry_headerrj   rj   rm   _should_retry
  s*   






zBaseClient._should_retryc                 C  s   dt   S )Nzstainless-python-retry-)uuiduuid4ru   rj   rj   rm   _idempotency_key-  s   zBaseClient._idempotency_key)r   rq   r   r   r   r   r   r   r   r   r   r   r   r   rf   rg   )ra   r   rf   r   )r   r   rf   rO   )r   rq   r   r   r   r   rf   r   )r   r<   r   r   rf   r   )ra   rq   rf   r   )rf   r
  )r   r<   r   r   rf   r  )r  r4  rf   r5  )r>  r?  r   r<   rf   r?  )r   r  rf   r   )r  r   r>  r?  r   r   rf   r&   )rf   r   )rf   rO  )rf   rR  )rf   rT  )rf   r5  )r   r#   r   r#   rf   rg   rw   )rf   r   )ra   rZ  rf   rg   )rf   r[  ri   )r]  r^  rf   r_  )rl  r   r   r<   r]  r^  rf   ra  )r   r   rf   r   )"rt   rx   ry   r{   r   rE   rC   rn   r   r   r   r  r	  r  r3  r%  rA  rE  rM  propertyr-  rP  rS  r   r"  r   rV  r   setterrW  rk  ru  ry  r|  rj   rj   rj   rm   r   n  sb   
 


	


l





&
#r   c                         e Zd Zd fddZ  ZS )_DefaultHttpxClientr/  r   rf   rg   c                   :   | dt | dt | dd t jdi | d S Nr   limitsfollow_redirectsTrj   
setdefaultrC   rI   superrn   rl   r/  rs   rj   rm   rn   2     z_DefaultHttpxClient.__init__r/  r   rf   rg   rt   rx   ry   rn   __classcell__rj   rj   r  rm   r  1      r  c                   @     e Zd ZdddZdS )SyncHttpxClientWrapperrf   rg   c                 C  s.   | j rd S z|   W d S  ty   Y d S w ri   )r   closer   ru   rj   rj   rm   __del__F  s   zSyncHttpxClientWrapper.__del__Nrf   rg   rt   rx   ry   r  rj   rj   rj   rm   r  E      r  c                      s
  e Zd ZU ded< dZded< eeddddd fddZdddZdddZ	dd!d"Z
dd)d*Zdd-d.Zdd1d2Zdd7d8Zedd?d@ZedAdBddEd@ZedAddFddId@ZdAddFddKd@ZddOdPZdQdRddTdUZdd[d\Zei dAd]dd`daZei dbddddaZei ddeddfdaZi dAddgddhdaZeddi ddAdiddpdqZeddi ddrddsdqZeddi dddtddudqZddi ddAddvddwdqZdddi dxddydzZdddi dxdd{d|Zddi d}dd~dZdi dddddZ  ZS )r   zhttpx.Clientr   Nztype[Stream[Any]] | Noner   r   r   http_clientr   r   r   rq   r   r   r   r   r   !float | Timeout | None | NotGivenr  httpx.Client | Noner   r   r   r   r   r   rf   rg   c          	   	     s   t |s|r|jtkr|j}nt}|d ur$t|tjs$tdt| t	 j
|tt||||||d |p>t|tt|d| _d S )NzOInvalid `http_client` argument; Expected an instance of `httpx.Client` but got )r   r   r   r   r   r   r   r   r   )r5   r   HTTPX_DEFAULT_TIMEOUTrC   r   r   Clientr   r!  r  rn   r   r$   r  r   )	rl   r   r   r   r   r  r   r   r   r  rj   rm   rn   T  s*   
zSyncAPIClient.__init__c                 C     | j jS ri   r   r   ru   rj   rj   rm   r        zSyncAPIClient.is_closedc                 C  s   t | dr| j  dS dS )`Close the underlying HTTPX client.

        The client will *not* be usable after this.
        r   N)hasattrr   r  ru   rj   rj   rm   r    s   
zSyncAPIClient.closerl   rY   c                 C  s   | S ri   rj   ru   rj   rj   rm   	__enter__  r   zSyncAPIClient.__enter__exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                 C  s   |    d S ri   r  rl   r  r  r  rj   rj   rm   __exit__  s   zSyncAPIClient.__exit__r   r<   c                 C  s   |S z#Hook for mutating the given optionsrj   rl   r   rj   rj   rm   _prepare_options  ro   zSyncAPIClient._prepare_optionsr   r  c                 C  rX  a  This method is used as a callback for mutating the `Request` object
        after it has been constructed.
        This is useful for cases where you want to add certain headers based off of
        the request properties, e.g. `url`, `method` etc.
        Nrj   rD  rj   rj   rm   _prepare_request  rY  zSyncAPIClient._prepare_requestrC  r/  Unpack[HttpxSendArgs]r   c                K  s   | j j|fd|i|S rB  r   sendrl   r   rC  r/  rj   rj   rm   _send_request  s   zSyncAPIClient._send_requestr>  Type[ResponseT]Literal[True]
stream_clsType[_StreamT]r\   c                C  rh   ri   rj   rl   r>  r   rC  r  rj   rj   rm   r        zSyncAPIClient.requestFrC  Literal[False]r&   c                C  rh   ri   rj   rl   r>  r   rC  rj   rj   rm   r     s   rC  r  Type[_StreamT] | NoneResponseT | _StreamTc                C  rh   ri   rj   r  rj   rj   rm   r     r  type[_StreamT] | Nonec                C  s  |  ||}t|}|jd u r|j dkr|  |_d }|| j}d}t|d D ]*}t|}| 	|}|| }	| j
||d}
| |
 i }| jd urS| j|d< |jd ur]|j|d< td|
j|
j d }z| j|
fd|pu| j|
d	i|}W no tjy } z%tjd
dd |	dkr| j|||d d W Y d }~q+td t|
d	|d }~w ty } z|d }~w ty } z%tjddd |	dkr| j|||d d W Y d }~q+td t|
d	|d }~ww td|
j|
j|j|j|j td|jd z|  W nK tjyU } z=tjddd |	dkr;|  |j!r;|j!"  | j||||d W Y d }~q+|j!j#sE|j!$  td | %|j!d d }~ww  |d us`J d| j&||||||dS Nr  r   r   r   authr  zSending HTTP Request: %s %srC  )r   z"Encountered httpx.TimeoutExceptionT)exc_info)r   r   r   r   zRaising timeout errorzEncountered ExceptionzRaising connection errorzHTTP Response: %s %s "%i %s" %szrequest_id: %szx-request-idz!Encountered httpx.HTTPStatusErrorzRe-raising status errorz0could not resolve response (should never happen))r>  r   r   rC  r  r   )'rA  r9   r   r  r   r|  rn  r   ranger  r3  r  rP  r  rU   r  ra   r  rE  r   TimeoutException_sleep_for_retryrP   rN   r   rQ   r   reason_phraser   r  raise_for_statusHTTPStatusErrorry  r   r  r   r   r   _process_responserl   r>  r   rC  r  input_optionsr   r   r   rl  r   r/  rL  rj   rj   rm   r     s   













r   r   httpx.Response | Nonec                C  s^   || }|dkrt d nt d| | |||r|jnd }t d|j| t| d S Nr   z1 retry leftz%i retries leftz$Retrying request to %s in %f seconds)rU   r  ru  r   r   ra   rf  sleeprl   r   r   r   r   rl  r   rj   rj   rm   r  M  s   zSyncAPIClient._sleep_for_retryr   r   1type[Stream[Any]] | type[AsyncStream[Any]] | Nonec          
      C  s   |j jtdkrttt|| |||||dS t|p|}t	|rVt
|trV|r2t|j jtrVt
|tsAtdt d| td|}tt||| t|||||dS |tjkr`tt|S t|| td|||||d}	t|j jtr|tt|	S |	 S )Nrv  rawr   r>  rC  r  r   r   !API Response types must subclass ; Received type[BaseAPIResponse[Any]]r?  )r   r   r  rG   r   r&   rT   r   rG  rH  rI  r@   r   r?   r   rB   r   Responseparse
rl   r>  r   r   rC  r  r   originresponse_clsapi_responserj   rj   rm   r  [  sf   




	
zSyncAPIClient._process_responser   Type[object]r   Type[SyncPageT]rV   c                   s(   d fdd}|_ j|ddS )	Nr   rV   rf   c                   s   | j  d | S )N)r   r   r   )r   r   r   r   rl   rj   rm   r     s   z0SyncAPIClient._request_api_list.<locals>._parserFr  )r   rV   rf   rV   )r   r   )rl   r   r   r   r   rj   r  rm   r     s   zSyncAPIClient._request_api_listr   rC  pathr,   c                C  rh   ri   rj   rl   r  r>  r   rC  rj   rj   rm   r    r  zSyncAPIClient.getr   type[_StreamT]c                C  rh   ri   rj   rl   r  r>  r   rC  r  rj   rj   rm   r    rY  r   r  c                C  rh   ri   rj   r  rj   rj   rm   r    rY  r   rC  r  c                C  s.   t jdd|d|}tt| j||||dS Nr  )r  ra   r  rj   )r<   	constructr   r&   r   rl   r  r>  r   rC  r  optsrj   rj   rm   r    s   	)r   r  r   r  rC  r   Body | Noner  BinaryTypes | Noner  RequestFiles | Nonec                C  rh   ri   rj   )rl   r  r>  r   r  r   r  rC  rj   rj   rm   post  s   zSyncAPIClient.post)r   r  r   r  c          	      C  rh   ri   rj   	rl   r  r>  r   r  r   r  rC  r  rj   rj   rm   r       )r   r  r   r  r  c          	      C  rh   ri   rj   r  rj   rj   rm   r    r  )r   r  r   r  rC  r  c          
      C  s   |d ur|d urt d|d ur|d urt dt|tr%tjdtdd tjd	d|||t|d|}	t	t
| j||	||dS 
N2Passing both `body` and `content` is not supported3Passing both `files` and `content` is not supportedPassing raw bytes as `body` is deprecated and will be removed in a future version. Please pass raw bytes via the `content` parameter instead.   
stacklevelr  r  ra   r   r  r  r  rj   )r   r   r+  warningswarnDeprecationWarningr<   r  r   r   r&   r   )
rl   r  r>  r   r  r   r  rC  r  r  rj   rj   rm   r    s    
r   r  r  r   c                C  v   |d ur|d urt d|d ur|d urt dt|tr%tjdtdd tjdd|||t|d|}| 	||S 	Nr  r  r  r  r  patchr  rj   
r   r   r+  r  r  r  r<   r  r   r   rl   r  r>  r   r  r  r   r  rj   rj   rm   r  $      

zSyncAPIClient.patchc                C  r   	Nr  r  r  r  r  putr  rj   r  r  rj   rj   rm   r  >  r  zSyncAPIClient.putr   r  r   c                C  sX   |d ur|d urt dt|trtjdtdd tjdd|||d|}| ||S Nr  r  r  r  delete)r  ra   r   r  rj   	r   r   r+  r  r  r  r<   r  r   rl   r  r>  r   r  r   r  rj   rj   rm   r
  X  s   	
zSyncAPIClient.deleter  r   r   r  r  c                C  &   t jd|||d|}| |||S N)r  ra   r   rj   r<   r  r   rl   r  r   r   r   r   r  r  rj   rj   rm   get_api_listm     
zSyncAPIClient.get_api_list)r   rq   r   r   r   r   r   r  r  r  r   r   r   r   r   r   rf   rg   r   r  rl   rY   rf   rY   r  r  r  r  r  r  rf   rg   r   r<   rf   r<   r   r  rf   rg   r   r  rC  r   r/  r  rf   r   )
r>  r  r   r<   rC  r  r  r  rf   r\   r>  r  r   r<   rC  r  rf   r&   )
r>  r  r   r<   rC  r   r  r  rf   r  )
r>  r  r   r<   rC  r   r  r  rf   r  
r   r   r   r   r   r<   r   r  rf   rg   r>  r  r   r<   r   r   rC  r   r  r  r   r   rf   r&   )r   r  r   r  r   r<   rf   rV   
r  rq   r>  r  r   r,   rC  r  rf   r&   )r  rq   r>  r  r   r,   rC  r  r  r  rf   r\   )r  rq   r>  r  r   r,   rC  r   r  r  rf   r  )r  rq   r>  r  r   r  r  r  r   r,   r  r  rC  r  rf   r&   )r  rq   r>  r  r   r  r  r  r   r,   r  r  rC  r  r  r  rf   r\   )r  rq   r>  r  r   r  r  r  r   r,   r  r  rC  r   r  r  rf   r  )r  rq   r>  r  r   r  r  r  r  r  r   r,   rf   r&   )r  rq   r>  r  r   r  r  r  r   r,   rf   r&   )r  rq   r   r  r   r  r   r  r   r,   r  rq   rf   rV   )rt   rx   ry   r{   r   rE   r0   rn   r   r  r  r  r  r  r  r   r   r  r  r   r  r  r  r  r
  r  r  rj   rj   r  rm   r   P  s   
 
.






		
{
D	
!r   c                      r  )_DefaultAsyncHttpxClientr/  r   rf   rg   c                   r  r  r  r  r  rj   rm   rn   |  r  z!_DefaultAsyncHttpxClient.__init__r  r  rj   rj   r  rm   r  {  r  r  c                   @  s   e Zd ZdddZdS )	_DefaultAioHttpClient_kwargsr   rf   rg   c                 K  s   t d)NzVTo use the aiohttp client you must have installed the package with the `aiohttp` extra)r   )rl   r  rj   rj   rm   rn     r  _DefaultAioHttpClient.__init__N)r  r   rf   rg   )rt   rx   ry   rn   rj   rj   rj   rm   r    r  r  c                      r  )r  r/  r   rf   rg   c                   r  r  r  r  r  rj   rm   rn     s   r   r  r  rj   rj   r  rm   r    r  c                   @  r  )AsyncHttpxClientWrapperrf   rg   c                 C  s8   | j rd S zt |   W d S  ty   Y d S w ri   )r   asyncioget_running_loopcreate_taskacloser   ru   rj   rj   rm   r    s   zAsyncHttpxClientWrapper.__del__Nr  r  rj   rj   rj   rm   r!    r  r!  c                      s  e Zd ZU ded< dZded< eeddddd fddZdddZdddZ	dd!d"Z
dd)d*Zdd-d.Zdd1d2Zdd7d8Zed9d:dd?d@ZeddEd@ZeddFddId@Zd9ddJddKd@ZddOdPZdQdRddTdUZdd[d\Zei d9d]dd`daZei dbddcdaZei dddddedaZi d9ddfddgdaZedddi d9dhddodpZedddi dqddrdpZedddi ddsddtdpZdddi d9dduddvdpZdddi dqddwdxZdddi dqddydzZddi d{dd|d}Zdi d~ddddZ  ZS )r   zhttpx.AsyncClientr   Nztype[AsyncStream[Any]] | Noner   r  r   rq   r   r   r   r   r   r   r   r  r  httpx.AsyncClient | Noner   r   r   r   rf   rg   c          	   	     s   t |s|r|jtkr|j}nt}|d ur$t|tjs$tdt| t	 j
||tt|||||d |p>t|tt|d| _d S )NzTInvalid `http_client` argument; Expected an instance of `httpx.AsyncClient` but got )r   r   r   r   r   r   r   r  )r5   r   r  rC   r   r   AsyncClientr   r!  r  rn   r   r$   r!  r   )	rl   r   r   r   r   r   r  r   r   r  rj   rm   rn     s*   
zAsyncAPIClient.__init__c                 C  r  ri   r  ru   rj   rj   rm   r     r  zAsyncAPIClient.is_closedc                   s   | j  I dH  dS )r  N)r   r%  ru   rj   rj   rm   r    s   zAsyncAPIClient.closerl   rY   c                   s   | S ri   rj   ru   rj   rj   rm   
__aenter__  s   zAsyncAPIClient.__aenter__r  r  r  r  r  r  c                   s   |   I d H  d S ri   r  r  rj   rj   rm   	__aexit__  s   zAsyncAPIClient.__aexit__r   r<   c                   s   |S r  rj   r  rj   rj   rm   r    s   zAsyncAPIClient._prepare_optionsr   r  c                   s   dS r  rj   rD  rj   rj   rm   r       	zAsyncAPIClient._prepare_requestrC  r/  r  r   c                  s    | j j|fd|i|I d H S rB  r  r  rj   rj   rm   r  
  s   zAsyncAPIClient._send_requestFr  r>  r  r  r&   c                     d S ri   rj   r  rj   rj   rm   r     s   zAsyncAPIClient.requestr  r  type[_AsyncStreamT]r]   c                  r+  ri   rj   r  rj   rj   rm   r        )r  type[_AsyncStreamT] | NoneResponseT | _AsyncStreamTc                  r+  ri   rj   r  rj   rj   rm   r   &  r-  r  c                  s,  | j d u rtt I d H | _ | ||}t|}|jd u r*|j dkr*|  |_d }|	| j
}d}t|d D ]C}t|}| |I d H }|| }	| j||d}
| |
I d H  i }| jd urh| j|d< |jd urr|j|d< td|
j|
j d }z| j|
fd|p| j|
d	i|I d H }W nv tjy } z(tjd
dd |	dkr| j|||d dI d H  W Y d }~q:td t|
d	|d }~w ty } z|d }~w ty	 } z(tjddd |	dkr| j|||d dI d H  W Y d }~q:td t|
d	|d }~ww td|
j|
j|j|j|j td|j d z|!  W nT tj"y} } zFtjddd |	dkr`| #|j$r`|j$% I d H  | j||||dI d H  W Y d }~q:|j$j&sm|j$' I d H  td | (|j$d d }~ww  |d usJ d| j)||||||dI d H S r  )*r   r4   get_platformrA  r9   r   r  r   r|  rn  r   r  r  r3  r  rP  r  rU   r  ra   r  rE  r   r  r  rP   rN   r   rQ   r   r  r   r  r  r  ry  r   r%  r   areadr   r  r  rj   rj   rm   r   0  s   









r   r   r  c                  sf   || }|dkrt d nt d| | |||r|jnd }t d|j| t|I d H  d S r  )rU   r  ru  r   r   ra   anyior  r  rj   rj   rm   r    s   zAsyncAPIClient._sleep_for_retryr   r   r  c          
        s  |j jtdkrttt|| |||||dS t|p|}t	|rWt
|trW|r3t|j jtrWt
|tsBtdt d| td|}td||| t|||||dS |tjkratt|S t|| td|||||d}	t|j jtr}tt|	S |	 I d H S )Nrv  r  r  r  r  r&   r?  )r   r   r  rG   r   r&   rT   r   rG  rH  rI  r@   r   rA   r   rB   r   r  r  r  rj   rj   rm   r    sh   




	
z AsyncAPIClient._process_responser   r~   r   r   AsyncPaginator[_T, AsyncPageT]c                 C  s   t | |||dS )N)r   r   r   r   )r   )rl   r   r   r   rj   rj   rm   r     s   z AsyncAPIClient._request_api_listr  r  r,   c                  r+  ri   rj   r  rj   rj   rm   r  
  r-  zAsyncAPIClient.getr  c                  r+  ri   rj   r  rj   rj   rm   r    r*  r  c                  r+  ri   rj   r  rj   rj   rm   r    r*  r  c                  s0   t jdd|d|}| j||||dI d H S r  )r<   r  r   r  rj   rj   rm   r  *  s   	)r   r  r  r   rC  r   r  r  AsyncBinaryTypes | Noner  r  c                  r+  ri   rj   )rl   r  r>  r   r  r  r   rC  rj   rj   rm   r  6  s   zAsyncAPIClient.postr  c          	        r+  ri   rj   	rl   r  r>  r   r  r  r   rC  r  rj   rj   rm   r  C     )r   r  r  r   r  c          	        r+  ri   rj   r5  rj   rj   rm   r  Q  r6  )r   r  r  r   rC  r  c          
        s   |d ur|d urt d|d ur|d urt dt|tr&tjdtdd tjd	d|||t|I d H d|}	| j	||	||dI d H S r  
r   r   r+  r  r  r  r<   r  r   r   )
rl   r  r>  r   r  r  r   rC  r  r  rj   rj   rm   r  _  s"   
c                     |d ur|d urt d|d ur|d urt dt|tr&tjdtdd tjdd|||t|I d H d|}| 	||I d H S r  r7  r  rj   rj   rm   r  {  s*   

zAsyncAPIClient.patchc                  r8  r  r7  r  rj   rj   rm   r    s"   

zAsyncAPIClient.putr  c                  s`   |d ur|d urt dt|trtjdtdd tjdd|||d|}| ||I d H S r	  r  r  rj   rj   rm   r
    s   	
zAsyncAPIClient.deleter  r  r  c                C  r  r  r  r  rj   rj   rm   r    r  zAsyncAPIClient.get_api_list)r   rq   r   r   r   r   r   r   r   r  r  r&  r   r   r   r   rf   rg   r   r  r  r  r  r  r  r  )
r>  r  r   r<   rC  r  r  r,  rf   r]   )
r>  r  r   r<   rC  r   r  r.  rf   r/  r  r  )r   r~   r   r   r   r<   rf   r3  r  )r  rq   r>  r  r   r,   rC  r  r  r,  rf   r]   )r  rq   r>  r  r   r,   rC  r   r  r.  rf   r/  )r  rq   r>  r  r   r  r  r4  r  r  r   r,   rC  r  rf   r&   )r  rq   r>  r  r   r  r  r4  r  r  r   r,   rC  r  r  r,  rf   r]   )r  rq   r>  r  r   r  r  r4  r  r  r   r,   rC  r   r  r.  rf   r/  )r  rq   r>  r  r   r  r  r4  r  r  r   r,   rf   r&   )r  rq   r>  r  r   r  r  r4  r   r,   rf   r&   )r  rq   r   r~   r   r   r   r  r   r,   r  rq   rf   r3  )rt   rx   ry   r{   r   rE   r0   rn   r   r  r(  r)  r  r  r  r   r   r  r  r   r  r  r  r  r
  r  r  rj   rj   r  rm   r     s   
 
.





		 

D	
!$r   )r'  extra_headersextra_query
extra_bodyr   r   r   synthesize_event_and_datar'  Query | Noner9  Headers | Noner:  r;  r  r   r   r   'float | httpx.Timeout | None | NotGivenr   PostParser | NotGivenr<  bool | Nonerf   r,   c           	      C  s   i }|dur
||d< |durt t||d< | dur| |d< |dur-i |di ||d< t|ts6||d< |dur>||d< t|rF||d< |durN||d< |S )	zECreate a dict of type RequestOptions without keys of NotGiven values.Nr   r   rc   r   r   r   r<  )r   r'   r  r   r%   r5   )	r'  r9  r:  r;  r   r   r   r<  r   rj   rj   rm   make_request_options  s$   
rB  c                   @  r  )r&  rf   r   c                 C  rX  )NTrj   ru   rj   rj   rm   __bool__  r   zForceMultipartDict.__bool__Nr   )rt   rx   ry   rC  rj   rj   rj   rm   r&     r  r&  c                   @  $   e Zd Zd
ddZedddZd	S )OtherPlatformnamerq   rf   rg   c                 C  
   || _ d S ri   rF  rl   rF  rj   rj   rm   rn        
zOtherPlatform.__init__c                 C     d| j  S )NzOther:rH  ru   rj   rj   rm   __str__	     zOtherPlatform.__str__NrF  rq   rf   rg   rw   rt   rx   ry   rn   r   rL  rj   rj   rj   rm   rE        
rE  )MacOSLinuxWindowsFreeBSDOpenBSDiOSAndroidUnknownPlatformc                  C  s   zt   } t    }W n
 ty   Y dS w d|v s!d|v r#dS | dkr)dS | dkr/dS d	|v r5d
S | dkrKt }|dkrCdS |dkrIdS dS |rQt|S dS )NrX  iphoneipadrV  darwinrQ  windowsrS  androidrW  linuxfreebsdrT  openbsdrU  rR  )r\  systemr   r   distroidrE  )rb  platform_name	distro_idrj   rj   rm   r0    s0   r0  )maxsizer   rq   r\  Platform | Noner[  c                C  s&   d| t |pt t t t t dS )Npython)zX-Stainless-LangzX-Stainless-Package-VersionzX-Stainless-OSzX-Stainless-ArchzX-Stainless-RuntimezX-Stainless-Runtime-Version)rq   r0  get_architectureget_python_runtimeget_python_version)r   r\  rj   rj   rm   rW  G  s   rW  c                   @  rD  )	OtherArchrF  rq   rf   rg   c                 C  rG  ri   rH  rI  rj   rj   rm   rn   T  rJ  zOtherArch.__init__c                 C  rK  )Nzother:rH  ru   rj   rj   rm   rL  W  rM  zOtherArch.__str__NrN  rw   rO  rj   rj   rj   rm   rm  S  rP  rm  )x32x64armarm64unknownc                   C      zt  W S  ty   Y dS w Nrr  )r\  python_implementationr   rj   rj   rj   rm   rk  _  
   
rk  c                   C  rs  rt  )r\  python_versionr   rj   rj   rj   rm   rl  f  rv  rl  Archc                  C  sh   zt   } W n
 ty   Y dS w | dv rdS | dkrdS | dkr%dS tjdkr,dS | r2t| S dS )	Nrr  )rq  aarch64rq  rp  x86_64ro  l        rn  )r\  machiner   r   sysrg  rm  )r{  rj   rj   rm   rj  m  s    
rj  obj1Mapping[_T_co, Union[_T, Omit]]obj2Dict[_T_co, _T]c                 C  s   i | |}dd |  D S )zMerge two mappings of the same type, removing any values that are instances of `Omit`.

    In cases with duplicate keys the second mapping takes precedence.
    c                 S  s    i | ]\}}t |ts||qS rj   )r   r!   )r   r;  r<  rj   rj   rm   
<dictcomp>  s     z#_merge_mappings.<locals>.<dictcomp>)r   )r}  r  mergedrj   rj   rm   r     s   r   )r'  r=  r9  r>  r:  r=  r;  r  r   r   r   r?  r   r@  r<  rA  rf   r,   )rf   rY  )r   rq   r\  rh  rf   r[  rw   )rf   rx  )r}  r~  r  r~  rf   r  )
__future__r   r|  re   rf  rz  rb  r"  rG  r  r\  r  email.utilstypesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   r2  r   rc  r   r   r    r   _qsr   _filesr   r   _typesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   _utilsr1   r2   r3   r4   r5   r6   r7   _compatr8   r9   r:   _modelsr;   r<   r=   r>   	_responser?   r@   rA   rB   
_constantsrC   rD   rE   rF   rG   rH   rI   
_streamingrJ   rK   rL   rM   rN   rO   rP   rQ   rR   _utils._jsonrS   _legacy_responserT   	getLoggerrt   rU   r{   	addFilterrV   rX   rY   rZ   r\   r]   httpx._configr^   r  ImportErrorr_   r|   r   r   r   r  r'  r   r   r   r  DefaultHttpxClientr  r   r  httpx_aiohttpr  HttpxAiohttpClientDefaultAsyncHttpxClientDefaultAioHttpClientr!  r   rB  rq   r&  rE  rY  r0  rW  rm  rx  rk  rl  rj  r   rj   rj   rj   rm   <module>   s    DL$$	3=1')   F    /	    ,)	
*	


