a
    _g                 
   @  sF  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# d dl$Z$d dl%Z%d dl&Z&d dl'Z'd dl%m(Z(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@mAZAmBZBmCZCmDZD d	dlEmFZFmGZGmHZHmIZImJZJmKZKmLZL d	dlMmNZNmOZO 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,mgZgmhZhmiZimjZj d	dlkmlZl e	menZodepd< eoqeF  edddZredddZsedZteddd Zued!ece dZved"eee dZwerd d#lxmyZz n.zd d#lxmyZz W n e{y   e8d$ZzY n0 G d%d& d&Z|G d'd( d(eQeet Z}G d)d* d*e}et eet Z~G d+d, d,eetesf ZG d-d. d.e}et eet Zed/ee%je%jf dZed0eece eee f dZG d1d2 d2eeef ZG d3d4 d4e%jZere%jZneZG d5d6 d6eZG d7d8 d8ee%jece f ZG d9d: d:e%jZer(e%jZneZG d;d< d<eZG d=d> d>ee%jeee f Zddddde3e3d?d@dAd@dBdCdDdEdFdGdHdIZG dJdK dKeedf ZG dLdM dMZeee!dN f ZdOdPdQdRZeKddSdTdUdVdWdXdYZG dZd[ d[Zeee!d\ f ZdTdPd]d^ZdTdPd_d`ZdadPdbdcZdddddedfdgdhZdS )i    )annotationsN)TracebackType)random)TYPE_CHECKINGAnyDictTypeUnionGenericMappingTypeVarIterableIteratorOptional	GeneratorAsyncIteratorcastoverload)Literaloverride
get_origin)URLLimits)PrivateAttr   )_exceptionsQuerystring)to_httpx_filesasync_to_httpx_files)	NOT_GIVENBodyOmitQueryHeadersTimeoutNotGiven	ResponseT	Transport
AnyMapping
PostParserProxiesTypesRequestFilesHttpxSendArgsAsyncTransportRequestOptionsHttpxRequestFilesModelBuilderProtocol)SensitiveHeadersFilteris_dictis_listasyncifyis_given	lru_cache
is_mapping)
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)APIStatusErrorAPITimeoutErrorAPIConnectionErrorAPIResponseValidationError)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< edddd	d
Zeddddd
Zeeddddddd
Zed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.
    zURL | NotGivenurlzQuery | NotGivenparamsr   Noner^   returnc                C  s   d S N selfr^   rd   rd   a/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/openai/_base_client.py__init__}   s    zPageInfo.__init__r#   )r_   rb   c                C  s   d S rc   rd   )rf   r_   rd   rd   rg   rh      s    r^   r_   )r^   r_   rb   c                C  s   || _ || _d S rc   ri   )rf   r^   r_   rd   rd   rg   rh      s    strrb   c                 C  s2   | j r| jj d| j  dS | jj d| j dS )Nz(url=)z(params=)r^   	__class____name__r_   rf   rd   rd   rg   __repr__   s    zPageInfo.__repr__N)
rn   
__module____qualname____doc____annotations__r   rh   r    r   rp   rd   rd   rd   rg   r]   t   s   
		r]   c                   @  sx   e Zd ZU dZe Zded< e Zded< dddd	Zd
dddZ	ddddZ
dddddZdd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]_modelboolrk   c                 C  s   |   }|sdS |  d uS )NF)_get_page_itemsnext_page_info)rf   itemsrd   rd   rg   has_next_page   s    zBasePage.has_next_pagezOptional[PageInfo]c                 C  s   d S rc   rd   ro   rd   rd   rg   r{          zBasePage.next_page_infozIterable[_T]c                 C  s   d S rc   rd   ro   rd   rd   rg   rz      s    zBasePage._get_page_itemsr   zhttpx.QueryParamsra   c                 C  s   t tt| jj|jS rc   )httpxZQueryParamsr   r   rv   r_   mergere   rd   rd   rg   _params_from_url   s    zBasePage._params_from_urlr]   )inforb   c                 C  s   t | j}|  t|jts4i |j|j|_|S t|jtst| |j}|jj|d}t	|j|_t
||_|S tdd S )N)r_   zUnexpected PageInfo state)r9   rv   Z_strip_raw_response_header
isinstancer_   r&   r^   r   	copy_withdictrj   
ValueError)rf   r   optionsr_   r^   rd   rd   rg   _info_to_options   s    

zBasePage._info_to_optionsN)rn   rq   rr   rs   r   rv   rt   rx   r}   r{   rz   r   r   rd   rd   rd   rg   ru      s   
ru   c                   @  s`   e Zd ZU e Zded< dddddddZd	d
ddZdddddZ	dddddZ
dS )BaseSyncPageSyncAPIClient_clientrw   r<   r`   )clientmodelr   rb   c                 C  s   || _ || _|| _d S rc   rx   r   rv   )rf   r   r   r   rd   rd   rg   _set_private_attributes   s    z$BaseSyncPage._set_private_attributeszIterator[_T]rk   c                 c  s&   |   D ]}| D ]
}|V  qqd S rc   
iter_pagesrz   rf   pageitemrd   rd   rg   __iter__   s    zBaseSyncPage.__iter__rT   zIterator[SyncPageT]rf   rb   c                 c  s&   | }|V  |  r| }qd S qd S rc   r}   get_next_pagerf   r   rd   rd   rg   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_listrx   rm   rf   r   r   rd   rd   rg   r      s    
zBaseSyncPage.get_next_pageN)rn   rq   rr   pydanticr   r   rt   r   r   r   r   rd   rd   rd   rg   r      s
   
	r   c                   @  sL   e Zd ZddddddddZd	d
ddZdd
ddZdd
ddZdS )AsyncPaginatorAsyncAPIClientr<   Type[AsyncPageT]rw   r`   )r   r   page_clsr   rb   c                 C  s   || _ || _|| _|| _d S rc   )rx   r   rv   	_page_cls)rf   r   r   r   r   rd   rd   rg   rh      s    zAsyncPaginator.__init__z Generator[Any, None, AsyncPageT]rk   c                 C  s   |    S rc   )	_get_page	__await__ro   rd   rd   rg   r     s    zAsyncPaginator.__await__rV   c                   s4   ddd fdd}| j _ j j j I d H S )NrV   resprb   c                   s   | j  j j jd | S )N)r   r   r   )r   rx   rv   r   r   ro   rd   rg   _parser
  s    z)AsyncPaginator._get_page.<locals>._parser)rv   post_parserr   requestr   )rf   r   rd   ro   rg   r   	  s    zAsyncPaginator._get_pageAsyncIterator[_T]c                 C s.   t t| I d H }|2 z3 d H W }|V  q6 d S rc   )r   rV   r   rd   rd   rg   	__aiter__  s    zAsyncPaginator.__aiter__N)rn   rq   rr   rh   r   r   r   rd   rd   rd   rg   r      s   r   c                   @  s`   e Zd ZU e Zded< dddddddZd	d
ddZdddddZ	dddddZ
dS )BaseAsyncPager   r   rw   r<   r`   )r   r   r   rb   c                 C  s   || _ || _|| _d S rc   r   )rf   r   r   r   rd   rd   rg   r   #  s    z%BaseAsyncPage._set_private_attributesr   rk   c                 C s0   |   2 z 3 d H W }| D ]
}|V  qq6 d S rc   r   r   rd   rd   rg   r   -  s    zBaseAsyncPage.__aiter__rV   zAsyncIterator[AsyncPageT]r   c                 C s,   | }|V  |  r"| I d H }qd S qd S rc   r   r   rd   rd   rg   r   2  s
    zBaseAsyncPage.iter_pagesc                   s:   |   }|std| |}| jj| j| j|dI d H S r   r   r   rd   rd   rg   r   ;  s    
zBaseAsyncPage.get_next_pageN)rn   rq   rr   r   r   r   rt   r   r   r   r   rd   rd   rd   rg   r      s
   

	r   _HttpxClientT_DefaultStreamTc                   @  sZ  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ed< dZded< eeddddddddddddddddd Zddd!d"d#Zd$d%d&d'd(Z	dd)d$d*d+d,d-Z
d.d/d0dd1d2d3d4Zddd!d5d6Zd7d8d9d:Zd.d/d0dd;d2d<d=Zd>d?d@dAdBZdCd0dCdDdEdFZd;ddGdHdIZd)dCd$dJdKdLdMZedNd8dOdPZedQd8dRdSZedTd8dUdVZedWd8dXdYZed?d8dZd[Zd\d\dd]d^d_Zedd8d`daZedd8dbdcZejdddd!dedcZdfd8dgdhZdvdidjdkdldmZdwdd0didndodpdqZd$dd&drdsZ dd8dtduZ!dS )x
BaseClientr   r   rj   _versionr   	_base_urlintmax_retrieszUnion[float, Timeout, None]timeoutzhttpx.Limits_limitsProxiesTypes | None_proxiesz!Transport | AsyncTransport | None
_transportry   _strict_response_validation
str | None_idempotency_headerNztype[_DefaultStreamT] | None_default_stream_cls)r   r   custom_headerscustom_query	str | URLzfloat | Timeout | NoneMapping[str, str] | NoneMapping[str, object] | Noner`   )versionbase_urlr   r   r   limits	transportproxiesr   r   rb   c       
         C  sn   || _ | t|| _|| _|| _|| _|| _|| _|	p:i | _	|
pDi | _
|| _d | _d | _|d u rjt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   r   r   r   _custom_headers_custom_queryr   r   	_platform	TypeError)rf   r   r   r   r   r   r   r   r   r   r   rd   rd   rg   rh   W  s     

zBaseClient.__init__ra   c                 C  s"   |j dr|S |j|j d dS )N   /raw_path)r   endswithr   re   rd   rd   rg   r   w  s    z"BaseClient._enforce_trailing_slashhttpx.ResponserN   )responserb   c                 C  s   |j r|jsd }d|j }nR|j }|}z t|}d|j d| }W n" tyn   |phd|j }Y n0 | j|||dS )NzError code: z - )bodyr   )		is_closedZis_stream_consumedstatus_codetextstripjsonloads	Exception_make_status_error)rf   r   r   err_msgZerr_textrd   rd   rg    _make_status_error_from_response|  s    

z+BaseClient._make_status_error_from_responseobjectz_exceptions.APIStatusError)r   r   r   rb   c                C  s
   t  d S rc   )NotImplementedError)rf   r   r   r   rd   rd   rg   r     s    zBaseClient._make_status_errorr   retries_takenr<   zhttpx.Headers)r   r   rb   c          	      C  s   |j pi }t| j|}| || t|}| j}|r^|j dkr^||vr^|j	pX| 
 ||< dd |D }d|vrt||d< d|vrt|jtr| jn|j}t|tr|j}|d urt||d< |S )Ngetc                 S  s   g | ]}|  qS rd   )lower).0headerrd   rd   rg   
<listcomp>  r~   z-BaseClient._build_headers.<locals>.<listcomp>zx-stainless-retry-countzx-stainless-read-timeout)headers_merge_mappingsdefault_headers_validate_headersr   r$   r   methodr   idempotency_key_idempotency_keyrj   r   r   r&   r%   read)	rf   r   r   r   Zheaders_dictr   Zidempotency_headerZlower_custom_headersr   rd   rd   rg   _build_headers  s"    


zBaseClient._build_headersc                 C  s4   t |}|jr0| 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   Zis_relative_urlr   r   lstripr   )rf   r^   Z	merge_urlZmerge_raw_pathrd   rd   rg   _prepare_url  s
    zBaseClient._prepare_urlzSSEDecoder | SSEBytesDecoderrk   c                 C  s   t  S rc   )rK   ro   rd   rd   rg   _make_sse_decoder  s    zBaseClient._make_sse_decoderhttpx.Requestc          
      C  s  t tjr t dt|dd i }|j}|jd urt|d u rJtt	|j}n*t
|r`t||j}ntdt| d| j||d}t| j|j}|d}|j}|d ur|drd	|vr|d |rt|std
t| d| ||d< |sttt }| |j}	d|	jv r6d|	jddi|d< | jjf |t |j!t"rT| j!n|j!|j#|	|r~| j$%tt&t't(f |nd ||d|S )NzRequest options: %sT)Zexclude_unsetz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_Zsni_hostname-
extensions)r   r   r   r^   r_   r   files))rS   isEnabledForloggingDEBUGdebugr:   	json_data
extra_jsonr   r!   r8   r   r   typer   default_queryr_   r   r   
startswithpopr3   r   _serialize_multipartformr0   ForceMultipartDictr   r^   hostreplacer   Zbuild_requestr   r   r&   r   qs	stringifyr   rj   r   )
rf   r   r   kwargsr  r   r_   content_typer   Zprepared_urlrd   rd   rg   _build_request  sN    


"zBaseClient._build_requestzMapping[object, object]zdict[str, object])r   rb   c                 C  s^   | j j|dd}i }|D ]@\}}||}|s8|||< qt|rL|| q||g||< q|S )NZbrackets)Zarray_format)r  Zstringify_itemsr   r4   append)rf   r   r|   Z
serializedkeyvalueexistingrd   rd   rg   r    s    

z#BaseClient._serialize_multipartformtype[ResponseT])cast_tor   rb   c                 C  sD   t |js|S t|j}|tt}t |r@||_ttt |S |S rc   )	r6   r   r   r  rH   r    r   r   r'   )rf   r  r   r   Zoverride_cast_tord   rd   rg   _maybe_override_cast_to.  s    

z"BaseClient._maybe_override_cast_tor   rb   c                 C  s   |j tdkS )Nstream)r   r   rG   rf   r   rd   rd   rg   _should_stream_response_body?  s    z'BaseClient._should_stream_response_bodyr'   )r   r  r   rb   c             
   C  s   |d u rt td S |tu r$t t|S zXt|rPt|trPt t|j||dW S | jrjt tt	||dW S t tt
||dW S  tjy } zt||d|W Y d }~n
d }~0 0 d S )N)r   r   )type_r  )r   r   )r   r'   r   inspectisclass
issubclassr1   buildr   r=   r>   r   ZValidationErrorrQ   )rf   r   r  r   errrd   rd   rg   _process_response_dataB  s    

z!BaseClient._process_response_datar   c                 C  s   t  S rc   r   ro   rd   rd   rg   r  Z  s    zBaseClient.qszhttpx.Auth | Nonec                 C  s   d S rc   rd   ro   rd   rd   rg   custom_auth^  s    zBaseClient.custom_authzdict[str, str]c                 C  s   i S rc   rd   ro   rd   rd   rg   auth_headersb  s    zBaseClient.auth_headerszdict[str, str | Omit]c                 C  s"   dd| j d|  | j| jS )Nzapplication/json)Acceptr   z
User-Agent)
user_agentplatform_headersr#  r   ro   rd   rd   rg   r   f  s    zBaseClient.default_headersc                 C  s
   i | j S rc   )r   ro   rd   rd   rg   r  q  s    zBaseClient.default_queryr$   )r   r   rb   c                 C  s   dS )zaValidate the given default headers and custom headers.

        Does nothing by default.
        Nrd   )rf   r   r   rd   rd   rg   r   w  s    	zBaseClient._validate_headersc                 C  s   | j j d| j S )Nz/Python )rm   rn   r   ro   rd   rd   rg   r%    s    zBaseClient.user_agentc                 C  s   | j S rc   )r   ro   rd   rd   rg   r     s    zBaseClient.base_urlz	URL | strc                 C  s"   |  t|tr|nt|| _d S rc   )r   r   r   r   re   rd   rd   rg   r     s    Dict[str, str]c                 C  s   t | j| jdS )N)platform)r&  r   r   ro   rd   rd   rg   r&    s    zBaseClient.platform_headerszOptional[httpx.Headers]zfloat | None)response_headersrb   c              	   C  s   |du rdS z| dd}t|d W S  ttfy<   Y n0 | d}z
t|W S  ttfyh   Y n0 tj|}|du rd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)rf   r)  Zretry_ms_headerZretry_headerretry_date_tuple
retry_daterd   rd   rg   _parse_retry_after_header  s"    

z$BaseClient._parse_retry_after_headerr+  )remaining_retriesr   r)  rb   c           
      C  s   | | j}| |}|d ur:d|  k r2dkr:n n|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   r3  minrF   powrD   r   )
rf   r4  r   r)  r   retry_afterZ
nb_retriesZsleep_secondsjitterr   rd   rd   rg   _calculate_retry_timeout  s    
 z#BaseClient._calculate_retry_timeoutc                 C  s   |j d}|dkr"td dS |dkr8td dS |jdkrTtd	|j dS |jd
krptd	|j dS |jdkrtd	|j dS |jdkrt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   rS   r   r   )rf   r   Zshould_retry_headerrd   rd   rg   _should_retry  s*    






zBaseClient._should_retryc                 C  s   dt   S )Nzstainless-python-retry-)uuiduuid4ro   rd   rd   rg   r     s    zBaseClient._idempotency_key)N)N)"rn   rq   rr   rt   r   rE   rC   rh   r   r   r   r   r   r   r  r  r  r  r!  propertyr  r"  r#  r   r  r   r%  r   setterr&  r3  r;  r>  r   rd   rd   rd   rg   r   J  sf   
& 	K
& #r   c                      s$   e Zd Zddd fddZ  ZS )_DefaultHttpxClientr   r`   r  rb   c                   s:   | dt | dt | dd t jf i | d S Nr   r   follow_redirectsT
setdefaultrC   rI   superrh   rf   r  rm   rd   rg   rh     s    z_DefaultHttpxClient.__init__rn   rq   rr   rh   __classcell__rd   rd   rK  rg   rC    s   rC  c                   @  s   e Zd ZddddZdS )SyncHttpxClientWrapperr`   rk   c                 C  s.   | j r
d S z|   W n ty(   Y n0 d S rc   )r   closer   ro   rd   rd   rg   __del__
  s    zSyncHttpxClientWrapper.__del__Nrn   rq   rr   rP  rd   rd   rd   rg   rN  	  s   rN  c                      sf  e Zd ZU ded< dZded< eedddddddddd	d
ddddddddd fddZddddZddddZ	dddddZ
dd d!dd"d#d$Zd%d%d&d'd(Zd)dd*d+d,Zed~d-d%d.d/d0d1d2d3d4Zedd5d6d-d%d.d7d8d9d:d4Zedd5dd;d-d%d.dd<d=d2d>d4Zdd5dd;d-d%d.dd?d=d2d@d4Zd-d%d	dd?d=dAdBdCZd%d-d	dDdd?d=dEdFdGZdHdId-d%dJddKd	d8dLdMdNZdOdPd%dQdRdSdTZei d5dUdd-dVd7d8dWdXdYZei dZdd-dVd/d[d1d\d]dYZei dd^dd-dVdd?d=d\d_dYZi d5dd`dd-dVdd?d=d\dadYZedi dd5dbdd-dcdVddd7d8dedfdgZedi ddhdd-dcdVddd/d[d1didjdgZedi dddkdd-dcdVdddd?d=didldgZdi dd5ddmdd-dcdVdddd?d=didndgZdi dodd-dcdVd8dpdqdrZddi dsdd-dcdddVd8dtdudvZdi dodd-dcdVd8dpdwdxZdi dydzddOdPdcdVddQd{d|d}Z  ZS )r   zhttpx.Clientr   Nztype[Stream[Any]] | Noner   r   r   r   r   r   http_clientr   r   rj   r   r   !float | Timeout | None | NotGivenzTransport | Noner   Limits | Nonezhttpx.Client | Noner   r   ry   r`   )r   r   r   r   r   r   r   rS  r   r   r   rb   c                  s*  i }|d ur.t jdtdd |d ur2tdnt}|d urb||d< t jdtdd |d urbtd|d ur||d< t jd	tdd |d urtd
t|s|r|jtkr|j}nt}|d urt	|t
jstdt| t j||tt||||||
|	|d
 |p"tf |tt||dd|| _d S )NhThe `connection_pool_limits` argument is deprecated. The `http_client` argument should be passed instead   category
stacklevelNThe `http_client` argument is mutually exclusive with `connection_pool_limits`r   [The `transport` argument is deprecated. The `http_client` argument should be passed insteadAThe `http_client` argument is mutually exclusive with `transport`r   YThe `proxies` argument is deprecated. The `http_client` argument should be passed instead?The `http_client` argument is mutually exclusive with `proxies`zOInvalid `http_client` argument; Expected an instance of `httpx.Client` but got )
r   r   r   r   r   r   r   r   r   r   Tr   r   r   rF  )warningswarnDeprecationWarningr   rI   r6   r   HTTPX_DEFAULT_TIMEOUTrC   r   r   Clientr   r  rI  rh   r   r%   rN  r   )rf   r   r   r   r   r   r   r   rS  r   r   r   r  rK  rd   rg   rh     sp    

zSyncAPIClient.__init__rk   c                 C  s   | j jS rc   r   r   ro   rd   rd   rg   r   o  s    zSyncAPIClient.is_closedc                 C  s   t | dr| j  dS )`Close the underlying HTTPX client.

        The client will *not* be usable after this.
        r   N)hasattrr   rO  ro   rd   rd   rg   rO  r  s    
zSyncAPIClient.closerW   r   c                 C  s   | S rc   rd   ro   rd   rd   rg   	__enter__|  s    zSyncAPIClient.__enter__type[BaseException] | NoneBaseException | NoneTracebackType | Noneexc_typeexcexc_tbrb   c                 C  s   |    d S rc   rO  rf   rn  ro  rp  rd   rd   rg   __exit__  s    zSyncAPIClient.__exit__r<   r   rb   c                 C  s   |S z#Hook for mutating the given optionsrd   rf   r   rd   rd   rg   _prepare_options  s    zSyncAPIClient._prepare_optionsr   r  c                 C  s   dS 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.
        Nrd   r  rd   rd   rg   _prepare_request  s    	zSyncAPIClient._prepare_requestType[ResponseT]Optional[int]Literal[True]zType[_StreamT]rZ   )r  r   r4  r  
stream_clsrb   c                C  s   d S rc   rd   rf   r  r   r4  r  r}  rd   rd   rg   r     s    	zSyncAPIClient.requestFr  Literal[False]r'   )r  r   r4  r  rb   c                C  s   d S rc   rd   )rf   r  r   r4  r  rd   rd   rg   r     s    r  r}  zType[_StreamT] | NonezResponseT | _StreamTc                C  s   d S rc   rd   r~  rd   rd   rg   r     s    	ztype[_StreamT] | Nonec                C  s2   |d ur| | j| }nd}| j|||||dS Nr   )r  r   r  r}  r   r6  r   _request)rf   r  r   r4  r  r}  r   rd   rd   rg   r     s    	)r  r   r   r  r}  rb   c                C  s  t |}| ||}| |}|| j| }| j||d}| | i }	| jd ur^| j|	d< t	d|j
|j z(| jj|fd|p| j|di|	}
W n tjy } zZtj	ddd |d	kr| j|||||d d
W  Y d }~S t	d t|d|W Y d }~n~d }~0  ty } z\tj	ddd |d	krX| j|||||d d
W  Y d }~S t	d t|d|W Y d }~n
d }~0 0 t	d|j
|j|
j|
j|
j t	d|
jd z|
  W n tjyl } ztj	ddd |d	kr,| |jr,|j  | j||||jj||dW  Y d }~S |jjs@|j  t	d |  |jd W Y d }~n
d }~0 0 | j!|||
|||dS )Nr   authzSending HTTP Request: %s %sr  r   "Encountered httpx.TimeoutExceptionTexc_infor   r   r  r}  r)  Raising timeout errorEncountered ExceptionRaising connection errorzHTTP Response: %s %s "%i %s" %szrequest_id: %szx-request-id!Encountered httpx.HTTPStatusErrorr   r)  r  r}  Re-raising status errorr  r   r   r  r}  r   )"r9   r  rw  r6  r   r  ry  r"  rS   r   r   r^   r   sendr  r   TimeoutException_retry_requestrO   r   rP   r   reason_phraser   r   raise_for_statusHTTPStatusErrorr>  r   rO  r   r   r   _process_response)rf   r  r   r   r  r}  input_optionsr4  r   r  r   r   rd   rd   rg   r    s    




	
 
	
"



$zSyncAPIClient._requesthttpx.Headers | Noner   r  r   r)  r  r}  rb   c          	      C  sp   | | j| }|dkr$td ntd| | |||}td|j| t| | j	|||d ||dS Nr   z1 retry leftz%i retries leftz$Retrying request to %s in %f seconds)r   r  r   r  r}  )
r6  r   rS   r   r;  r   r^   r0  sleepr  	rf   r   r  r   r)  r  r}  r4  r   rd   rd   rg   r  :  s    

zSyncAPIClient._retry_requestr   r   r   1type[Stream[Any]] | type[AsyncStream[Any]] | Noner  r   r   r  r}  r   rb   c          
      C  s   |j jtdkr.ttt|| |||||dS t|p8|}t	|rt
|trt
|tsltdt d| td|}tt||| t|||||dS |tjkrtt|S t|| td|||||d}	t|j jtrtt|	S |	 S )Nr<  rawr   r  r  r}  r   r   !API Response types must subclass ; Received type[BaseAPIResponse[Any]]r  )r   r   r   rG   r   r'   rR   r   r  r  r  r@   r?   r   rB   r   Responsery   parse
rf   r  r   r   r  r}  r   originZresponse_clsZapi_responserd   rd   rg   r  Y  sX    




	
zSyncAPIClient._process_responsezType[object]zType[SyncPageT]rT   r   r   r   rb   c                   s.   ddd fdd}|_ j|ddS )NrT   r   c                   s   | j  d | S )N)r   r   r   )r   r   r   r   rf   rd   rg   r     s    z0SyncAPIClient._request_api_list.<locals>._parserFr  )r   r   )rf   r   r   r   r   rd   r  rg   r     s    zSyncAPIClient._request_api_listr   r  r/   pathr  r   r  rb   c                C  s   d S rc   rd   rf   r  r  r   r  rd   rd   rg   r     s    zSyncAPIClient.getr   ztype[_StreamT]r  r  r   r  r}  rb   c                C  s   d S rc   rd   rf   r  r  r   r  r}  rd   rd   rg   r     s    	r   r}  c                C  s   d S rc   rd   r  rd   rd   rg   r     s    	r   r  r}  c                C  s.   t jf d|d|}tt| j||||dS Nr   )r   r^   r  )r<   	constructr   r'   r   rf   r  r  r   r  r}  optsrd   rd   rg   r     s    	)r   r   r   r  Body | NoneRequestFiles | None)r  r  r   r   r   r  rb   c                C  s   d S rc   rd   )rf   r  r  r   r   r   r  rd   rd   rg   post  s    
zSyncAPIClient.post)r   r   r   )r  r  r   r   r   r  r}  rb   c                C  s   d S rc   rd   rf   r  r  r   r   r   r  r}  rd   rd   rg   r    s    )r   r   r   r}  c                C  s   d S rc   rd   r  rd   rd   rg   r    s    )r   r   r   r  r}  c          	      C  s6   t jf d||t|d|}tt| j||||dS Nr  r   r^   r  r   r  )r<   r  r   r   r'   r   )	rf   r  r  r   r   r   r  r}  r  rd   rd   rg   r    s    r   r   r  r  r   r   rb   c                C  s$   t jf d||d|}| ||S Npatchr   r^   r  r<   r  r   rf   r  r  r   r   r  rd   rd   rg   r    s    zSyncAPIClient.patchr   r   r   r  r  r   r   r   rb   c                C  s*   t jf d||t|d|}| ||S Nputr  )r<   r  r   r   rf   r  r  r   r   r   r  rd   rd   rg   r    s    	zSyncAPIClient.putc                C  s$   t jf d||d|}| ||S Ndeleter  r  r  rd   rd   rg   r  %  s    zSyncAPIClient.deleter   r   r   r   r  r   r   r   r   r   rb   c                C  s&   t jf |||d|}| |||S Nr  r<   r  r   rf   r  r   r   r   r   r   r  rd   rd   rg   get_api_list0  s    
zSyncAPIClient.get_api_list)N)N)N)N)rn   rq   rr   rt   r   rE   r    rh   r   rO  ri  rs  rw  ry  r   r   r  r  r  r   r   r  r  r  r  r  rM  rd   rd   rK  rg   r     s   
,W
 
 	  k'=	
 "" r   c                      s$   e Zd Zddd fddZ  ZS )_DefaultAsyncHttpxClientr   r`   rD  c                   s:   | dt | dt | dd t jf i | d S rE  rG  rJ  rK  rd   rg   rh   ?  s    z!_DefaultAsyncHttpxClient.__init__rL  rd   rd   rK  rg   r  >  s   r  c                   @  s   e Zd ZddddZdS )AsyncHttpxClientWrapperr`   rk   c                 C  s8   | j r
d S zt |   W n ty2   Y n0 d S rc   )r   asyncioget_running_loopcreate_taskacloser   ro   rd   rd   rg   rP  S  s    zAsyncHttpxClientWrapper.__del__NrQ  rd   rd   rd   rg   r  R  s   r  c                      sh  e Zd ZU ded< dZded< eedddddddddd	d
ddddddddd fddZd	dddZddddZ	dddddZ
dd d!dd"d#d$Zd%d%d&d'd(Zd)dd*d+d,Zed-dd.d/d%d0d1d2d3d4d5Zedd6d/d%d7d8d1d9d:d;d5Zeddd<d/d%d	d=d1d>d:d?d5Zd-ddd@d/d%d	d=d1d>d:dAd5Zd/d%d	d=d
d>dBdCdDZd%d/d
dEd	d=d>dFdGdHZdIdJd/d%dKd	dLd
d2dMdNdOZdPdQd%dRdSdTdUZei d-dVdd/dWd0d2dXdYdZZei d[dd/dWd7d8d9d\d]dZZei dd^dd/dWd	d=d>d\d_dZZi d-dd`dd/dWd	d=d>d\dadZZeddi d-dbdd/dcdddWd0d2dedfdgZeddi dhdd/dcdddWd7d8d9didjdgZeddi ddkdd/dcdddWd	d=d>didldgZddi d-ddmdd/dcdddWd	d=d>didndgZdi dodd/dcdWd2dpdqdrZddi dhdd/dcdddWd2dsdtduZdi dodd/dcdWd2dpdvdwZdi dxdyddPdQdcdWddRdzd{d|Z  ZS )}r   zhttpx.AsyncClientr   Nztype[AsyncStream[Any]] | Noner   rR  rj   r   ry   r   rT  zAsyncTransport | Noner   rU  zhttpx.AsyncClient | Noner   r   r`   )r   r   r   r   r   r   r   r   rS  r   r   rb   c                  s*  i }|d ur.t jdtdd |	d ur2tdnt}|d urb||d< t jdtdd |	d urbtd|d ur||d< t jd	tdd |	d urtd
t|s|	r|	jtkr|	j}nt}|	d urt	|	t
jstdt|	 t j|||tt||||||
|d
 |	p"tf |tt||dd|| _d S )NrV  rW  rX  r[  r   r\  r]  r   r^  r_  zTInvalid `http_client` argument; Expected an instance of `httpx.AsyncClient` but got )
r   r   r   r   r   r   r   r   r   r   Tr`  )ra  rb  rc  r   rI   r6   r   rd  rC   r   r   AsyncClientr   r  rI  rh   r   r%   r  r   )rf   r   r   r   r   r   r   r   r   rS  r   r   r  rK  rd   rg   rh   b  sp    

zAsyncAPIClient.__init__rk   c                 C  s   | j jS rc   rf  ro   rd   rd   rg   r     s    zAsyncAPIClient.is_closedc                   s   | j  I dH  dS )rg  N)r   r  ro   rd   rd   rg   rO    s    zAsyncAPIClient.closerW   r   c                   s   | S rc   rd   ro   rd   rd   rg   
__aenter__  s    zAsyncAPIClient.__aenter__rj  rk  rl  rm  c                   s   |   I d H  d S rc   rq  rr  rd   rd   rg   	__aexit__  s    zAsyncAPIClient.__aexit__r<   rt  c                   s   |S ru  rd   rv  rd   rd   rg   rw    s    zAsyncAPIClient._prepare_optionsr   r  c                   s   dS rx  rd   r  rd   rd   rg   ry    s    	zAsyncAPIClient._prepare_requestF)r  r4  rz  r  r{  r'   )r  r   r  r4  rb   c                  s   d S rc   rd   )rf   r  r   r  r4  rd   rd   rg   r     s    zAsyncAPIClient.request)r4  r|  ztype[_AsyncStreamT]r[   )r  r   r  r}  r4  rb   c                  s   d S rc   rd   rf   r  r   r  r}  r4  rd   rd   rg   r     s    	)r}  r4  ztype[_AsyncStreamT] | NonezResponseT | _AsyncStreamTc                  s   d S rc   rd   r  rd   rd   rg   r     s    	)r  r}  r4  c                  s8   |d ur| | j| }nd}| j|||||dI d H S r  r  )rf   r  r   r  r}  r4  r   rd   rd   rg   r      s    	)r  r   r  r}  r   rb   c                  s  | j d u rtt I d H | _ t|}| ||}| |I d H }|| j| }| j||d}| 	|I d H  i }	| j
d ur| j
|	d< z.| jj|fd|p| j|di|	I d H }
W n tjy2 } zbtjddd |dkr| j|||||d d	I d H W  Y d }~S td
 t|d|W Y d }~nd }~0  ty } zbtjddd |dkr| j|||||d d	I d H W  Y d }~S td t|d|W Y d }~n
d }~0 0 td|j|j|
j|
j z|
  W n tjy } ztjddd |dkrJ| |jrJ|j I d H  | j||||jj||dI d H W  Y d }~S |jj sd|j! I d H  td | "|jd W Y d }~n
d }~0 0 | j#|||
|||dI d H S )Nr   r  r  r  r  Tr  r   r  r  r  r  zHTTP Request: %s %s "%i %s"r  r  r  r  )$r   r5   get_platformr9   r  rw  r6  r   r  ry  r"  r   r  r  r   r  rS   r   r  rO   r   rP   r   r^   r   r  r  r  r>  r   r  r   r   Zareadr   r  )rf   r  r   r  r}  r   r  r4  r   r  r   r   rd   rd   rg   r    s    	



	
 
	
"

$zAsyncAPIClient._requestr  r  c          	        s|   | | j| }|dkr$td ntd| | |||}td|j| t|I d H  | j	|||d ||dI d H S r  )
r6  r   rS   r   r;  r   r^   anyior  r  r  rd   rd   rg   r  ~  s    
zAsyncAPIClient._retry_requestr   r   r   r  r  c          
        s   |j jtdkr.ttt|| |||||dS t|p8|}t	|rt
|trt
|tsltdt d| td|}td||| t|||||dS |tjkrtt|S t|| td|||||d}	t|j jtrtt|	S |	 I d H S )Nr<  r  r  r  r  r'   r  )r   r   r   rG   r   r'   rR   r   r  r  r  r@   rA   r   rB   r   r  ry   r  r  rd   rd   rg   r    sX    




	
z AsyncAPIClient._process_responserw   r   zAsyncPaginator[_T, AsyncPageT]r  c                 C  s   t | |||dS )N)r   r   r   r   )r   )rf   r   r   r   rd   rd   rg   r     s    z AsyncAPIClient._request_api_listr  r/   r  c                  s   d S rc   rd   r  rd   rd   rg   r     s    zAsyncAPIClient.getr  r  c                  s   d S rc   rd   r  rd   rd   rg   r     s    	r  c                  s   d S rc   rd   r  rd   rd   rg   r     s    	r  c                  s.   t jf d|d|}| j||||dI d H S r  r  r  rd   rd   rg   r      s    	)r   r   r   r  r  r  )r  r  r   r   r   r  rb   c                  s   d S rc   rd   )rf   r  r  r   r   r   r  rd   rd   rg   r    s    
zAsyncAPIClient.postr  )r  r  r   r   r   r  r}  rb   c                  s   d S rc   rd   rf   r  r  r   r   r   r  r}  rd   rd   rg   r    s    )r   r   r   r}  c                  s   d S rc   rd   r  rd   rd   rg   r  %  s    )r   r   r   r  r}  c          	        s<   t jf d||t|I d H d|}| j||||dI d H S r  r<   r  r   r   )	rf   r  r  r   r   r   r  r}  r  rd   rd   rg   r  2  s    r  r  c                  s*   t jf d||d|}| ||I d H S r  r  r  rd   rd   rg   r  B  s    zAsyncAPIClient.patchr  c                  s6   t jf d||t|I d H d|}| ||I d H S r  r  r  rd   rd   rg   r  M  s    	zAsyncAPIClient.putc                  s*   t jf d||d|}| ||I d H S r  r  r  rd   rd   rg   r  [  s    zAsyncAPIClient.deleter   r  r  c                C  s&   t jf |||d|}| |||S r  r  r  rd   rd   rg   r  f  s    
zAsyncAPIClient.get_api_list)rn   rq   rr   rt   r   rE   r    rh   r   rO  r  r  rw  ry  r   r   r  r  r  r   r   r  r  r  r  r  rM  rd   rd   rK  rg   r   ^  s   
,W	
h%=	
 "" r   )queryextra_headersextra_query
extra_bodyr   r   r   zQuery | NonezHeaders | Noner  r   z'float | httpx.Timeout | None | NotGivenzPostParser | NotGivenr/   )r  r  r  r  r   r   r   rb   c                 C  s   i }|dur||d< |dur*t t||d< | dur:| |d< |durZi |di ||d< t|tsl||d< |dur|||d< t|r||d< |S )zECreate a dict of type RequestOptions without keys of NotGiven values.Nr   r  r_   r   r   r   )r   r)   r   r   r&   r6   )r  r  r  r  r   r   r   r   rd   rd   rg   make_request_optionst  s     
r  c                   @  s   e Zd ZddddZdS )r  ry   rk   c                 C  s   dS )NTrd   ro   rd   rd   rg   __bool__  s    zForceMultipartDict.__bool__N)rn   rq   rr   r  rd   rd   rd   rg   r    s   r  c                   @  s.   e Zd ZdddddZeddddZd	S )
OtherPlatformrj   r`   namerb   c                 C  s
   || _ d S rc   r  rf   r  rd   rd   rg   rh     s    zOtherPlatform.__init__rk   c                 C  s   d| j  S )NzOther:r  ro   rd   rd   rg   __str__  s    zOtherPlatform.__str__Nrn   rq   rr   rh   r   r  rd   rd   rd   rg   r    s   r  )MacOSLinuxWindowsFreeBSDOpenBSDiOSAndroidUnknownPlatformrk   c                  C  s   zt   } t    }W n ty0   Y dS 0 d|v sBd|v rFdS | dkrRdS | dkr^dS d	|v rjd
S | dkrt }|dkrdS |dkrdS dS |rt|S dS )Nr  iphoneZipadr  darwinr  windowsr  Zandroidr  linuxZfreebsdr  Zopenbsdr  r  )r(  systemr   r   distroidr  )r  Zplatform_name	distro_idrd   rd   rg   r    s.    r  )maxsizerj   zPlatform | Noner'  )r   r(  rb   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)rj   r  get_architectureget_python_runtimeget_python_version)r   r(  rd   rd   rg   r&    s    r&  c                   @  s.   e Zd ZdddddZeddddZd	S )
	OtherArchrj   r`   r  c                 C  s
   || _ d S rc   r  r  rd   rd   rg   rh     s    zOtherArch.__init__rk   c                 C  s   d| j  S )Nzother:r  ro   rd   rd   rg   r    s    zOtherArch.__str__Nr  rd   rd   rd   rg   r    s   r  )x32x64armarm64unknownc                   C  s$   z
t  W S  ty   Y dS 0 d S Nr	  )r(  python_implementationr   rd   rd   rd   rg   r    s    
r  c                   C  s$   z
t  W S  ty   Y dS 0 d S r
  )r(  python_versionr   rd   rd   rd   rg   r    s    
r  Archc                  C  sh   zt   } W n ty$   Y dS 0 | dv r2dS | dkr>dS | dkrJdS tjdkrXdS | rdt| S dS )	Nr	  )r  aarch64r  r  x86_64r  l        r  )r(  machiner   r   sysr  r  )r  rd   rd   rg   r    s    
r  zMapping[_T_co, Union[_T, Omit]]zDict[_T_co, _T])obj1obj2rb   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 rd   )r   r"   )r   r  r  rd   rd   rg   
<dictcomp>)  r~   z#_merge_mappings.<locals>.<dictcomp>)r|   )r  r  mergedrd   rd   rg   r      s    r   )
__future__r   r  r   r0  r?  r,  r  r  r   r(  ra  email.utilstypesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ztyping_extensionsr   r   r   r  r   r  r   r   r   r    r   Z_qsr   _filesr   r   _typesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   _utilsr2   r3   r4   r5   r6   r7   r8   Z_compatr9   r:   Z_modelsr;   r<   r=   r>   	_responser?   r@   rA   rB   
_constantsrC   rD   rE   rF   rG   rH   rI   Z
_streamingrJ   rK   rL   rM   rN   rO   rP   rQ   Z_legacy_responserR   	getLoggerrn   rS   rt   	addFilterrT   rV   rW   rX   rZ   r[   Zhttpx._configr\   rd  ImportErrorr]   ru   r   r   r   re  r  r   r   r   rC  ZDefaultHttpxClientrN  r   r  ZDefaultAsyncHttpxClientr  r   r  rj   r  r  r  r  r&  r  r  r  r  r  r   rd   rd   rd   rg   <module>   s   DP$$	'0.'&   .    .     %	*	