o
    Cji8                     @  s8  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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  d dl!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@mAZAmBZBmCZCmDZDmEZE d
dlFmGZGmHZHmIZI d
dlJmKZKmLZL d
dlMmNZNmOZOmPZPmQZQ d
dlRmSZS d
dlTmUZUmVZVmWZWmXZX d
dlYmZZZm[Z[ d
dl,m\Z\m]Z]m^Z^m_Z_ e`eaZbdecd< edddZdedddZeedZfeddd Zged!eZe dZhed"e[e dZierDd d#ljmkZl nzd d#ljmkZl W n emyZ   e9d$ZlY nw G d%d& d&ZnG d'd( d(eNee7 ZoG d)d* d*eoe7 ee7 ZpG d+d, d,ee7eef ZqG d-d. d.eoe7 ee7 Zred/ee%jse%jtf dZued0eeZe e[e f dZvG d1d2 d2eeuevf ZwG d3d4 d4ewe%jseZe f ZxG d5d6 d6ewe%jte[e f Zyddddde3e3d7d]dGdHZzG dIdJ dJZ{ee{e"dK f Z|d^dMdNZ}G dOdP dPZ~ee~e"dQ f Zd_dSdTZd`dYdZZG d[d\ d\eEZdS )a    )annotationsN)TracebackType)random)TYPE_CHECKINGAnyDictTypeUnionGenericMappingTypeVarIterableIteratorOptional	GeneratorAsyncIteratorcastoverload)	lru_cache)Literaloverride)URLLimits)PrivateAttr   )_exceptionsQuerystring)to_httpx_filesasync_to_httpx_files)	NOT_GIVENBodyOmitQueryModelTHeadersTimeoutNotGiven	ResponseT	Transport
AnyMapping
PostParserProxiesTypesRequestFilesAsyncTransportRequestOptionsUnknownResponseModelBuilderProtocolBinaryResponseContent)is_dictis_given
is_mapping)
model_copy
model_dump)GenericModelFinalRequestOptionsvalidate_typeconstruct_type)APIResponse)DEFAULT_LIMITSDEFAULT_TIMEOUTDEFAULT_MAX_RETRIESRAW_RESPONSE_HEADER)StreamAsyncStream)APIStatusErrorAPITimeoutErrorAPIConnectionErrorAPIResponseValidationErrorzlogging.Loggerlog	SyncPageTzBaseSyncPage[Any])bound
AsyncPageTzBaseAsyncPage[Any]_T_T_coT)	covariant_StreamT_AsyncStreamT)DEFAULT_TIMEOUT_CONFIGg      @c                   @  sP   e Zd ZU dZded< ded< edd	d
Zeddd
Zeedddd
ZdS )PageInfozStores the necesary information to build the request to retrieve the next page.

    Either `url` or `params` must be set.
    URL | NotGivenurlQuery | NotGivenparamsr   returnNonec                C     d S N selfrS   rZ   rZ   j/var/www/html/Resume-Parser/resume-parser-inhouse/venv/lib/python3.10/site-packages/openai/_base_client.py__init__t      zPageInfo.__init__r#   c                C  rX   rY   rZ   )r\   rU   rZ   rZ   r]   r^   |   r_   rS   rU   c                C  s   || _ || _d S rY   r`   )r\   rS   rU   rZ   rZ   r]   r^      s   
N)rS   r   rV   rW   )rU   r#   rV   rW   )rS   rR   rU   rT   rV   rW   )__name__
__module____qualname____doc____annotations__r   r^   r    rZ   rZ   rZ   r]   rQ   k   s   
 
rQ   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
    r9   _optionsType[ModelT]_modelrV   boolc                 C  s   |   }|sdS |  d uS )NF)_get_page_itemsnext_page_info)r\   itemsrZ   rZ   r]   has_next_page   s   zBasePage.has_next_pageOptional[PageInfo]c                 C  rX   rY   rZ   r\   rZ   rZ   r]   rl         zBasePage.next_page_infoIterable[ModelT]c                 C  rX   rY   rZ   rp   rZ   rZ   r]   rk      rq   zBasePage._get_page_itemsrS   r   httpx.QueryParamsc                 C  s   t tt| jj|jS rY   )httpxQueryParamsr   r   rg   rU   merger[   rZ   rZ   r]   _params_from_url   s   zBasePage._params_from_urlinforQ   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d)N)rU   zUnexpected PageInfo state)r6   rg   _strip_raw_response_header
isinstancerU   r'   rS   rw   	copy_withdictstr
ValueError)r\   rx   optionsrU   rS   rZ   rZ   r]   _info_to_options   s   

zBasePage._info_to_optionsNrV   rj   )rV   ro   )rV   rr   )rS   r   rV   rs   )rx   rQ   rV   r9   )ra   rb   rc   rd   r   rg   re   ri   rn   rl   rk   rw   r   rZ   rZ   rZ   r]   rf      s   
 



rf   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modelrh   r   r9   rV   rW   c                 C  s   || _ || _|| _d S rY   ri   r   rg   )r\   r   r   r   rZ   rZ   r]   _set_private_attributes      
z$BaseSyncPage._set_private_attributesIterator[ModelT]c                 c  s(    |   D ]}| D ]}|V  qqd S rY   
iter_pagesrk   r\   pageitemrZ   rZ   r]   __iter__   s   zBaseSyncPage.__iter__r\   rH   Iterator[SyncPageT]c                 c  s&    | }	 |V  |  r| }nd S qrY   rn   get_next_pager\   r   rZ   rZ   r]   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   rl   RuntimeErrorr   r   _request_api_listri   	__class__r\   rx   r   rZ   rZ   r]   r      s   
zBaseSyncPage.get_next_pageN)r   r   r   rh   r   r9   rV   rW   )rV   r   )r\   rH   rV   r   )r\   rH   rV   rH   )ra   rb   rc   pydanticr   r   re   r   r   r   r   rZ   rZ   rZ   r]   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   r9   page_clsType[AsyncPageT]r   rh   rV   rW   c                 C  s   || _ || _|| _|| _d S rY   )ri   r   rg   	_page_cls)r\   r   r   r   r   rZ   rZ   r]   r^      s   
zAsyncPaginator.__init__ Generator[Any, None, AsyncPageT]c                 C  s   |    S rY   )	_get_page	__await__rp   rZ   rZ   r]   r      s   zAsyncPaginator.__await__rJ   c                   s0   d fdd}| j _ j j j I d H S )NresprJ   rV   c                   s   | j  j j jd | S )N)r   r   r   )r   ri   rg   r   r   rp   rZ   r]   _parser   s   z)AsyncPaginator._get_page.<locals>._parser)r   rJ   rV   rJ   )rg   post_parserr   requestr   )r\   r   rZ   rp   r]   r      s   zAsyncPaginator._get_pageAsyncIterator[ModelT]c                 C s0   t t| I d H }|2 z	3 d H W }|V  q6 d S rY   )r   rJ   r   rZ   rZ   r]   	__aiter__
  s   zAsyncPaginator.__aiter__N)
r   r   r   r9   r   r   r   rh   rV   rW   )rV   r   )rV   rJ   rV   r   )ra   rb   rc   r^   r   r   r   rZ   rZ   rZ   r]   r      s
    


r   c                   @  r   )BaseAsyncPager   r   r   rh   r   r   r9   rV   rW   c                 C  s   || _ || _|| _d S rY   r   )r\   r   r   r   rZ   rZ   r]   r     r   z%BaseAsyncPage._set_private_attributesr   c                 C s2   |   2 z3 d H W }| D ]}|V  qq6 d S rY   r   r   rZ   rZ   r]   r   !  s   zBaseAsyncPage.__aiter__r\   rJ   AsyncIterator[AsyncPageT]c                 C s,   | }	 |V  |  r| I d H }nd S qrY   r   r   rZ   rZ   r]   r   &  s   zBaseAsyncPage.iter_pagesc                   s<   |   }|std| |}| jj| j| j|dI d H S r   r   r   rZ   rZ   r]   r   /  s   
zBaseAsyncPage.get_next_pageN)r   rh   r   r   r   r9   rV   rW   r   )r\   rJ   rV   r   )r\   rJ   rV   rJ   )ra   rb   rc   r   r   r   re   r   r   r   r   rZ   rZ   rZ   r]   r     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ed< ded< ded< dZded< eeddddwd&d'Zdxd)d*Zdyd.d/Z	dzd4d5Z
d{d:d;Zd|d=d>Zd}d?d@Zd~dBdCZddGdHZddOdPZddRdSZeddUdVZeddXdYZedd[d\Zedd^d_ZddbdcZeddddeZeddfdgZejddidgZeddjddldmZ	dddqdrZddsdtZddudvZdS )
BaseClientr   r   r}   _versionr   	_base_urlintmax_retrieszUnion[float, Timeout, None]timeouthttpx.Limits_limitsProxiesTypes | None_proxies!Transport | AsyncTransport | None
_transportrj   _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 | Nonelimits	transportproxiesr   Mapping[str, str] | Noner   Mapping[str, object] | NonerV   rW   c       
         C  sX   || _ | t|| _|| _|| _|| _|| _|| _|	pi | _	|
p"i | _
|| _d | _d S rY   )r   _enforce_trailing_slashr   r   r   r   r   r   r   _custom_headers_custom_queryr   r   )r\   r   r   r   r   r   r   r   r   r   r   rZ   rZ   r]   r^   K  s   


zBaseClient.__init__rS   c                 C  s"   |j dr|S |j|j d dS )N   /raw_path)r   endswithr{   r[   rZ   rZ   r]   r   e  s   z"BaseClient._enforce_trailing_slashresponsehttpx.ResponserC   c                 C  sb   |j  }|}zt|}d|j d| }W n ty(   |p%d|j }Y nw | j|||dS )NzError code: z - )bodyr   )textstripjsonloadsstatus_code	Exception_make_status_error)r\   r   err_textr   err_msgrZ   rZ   r]    _make_status_error_from_responsej  s   

z+BaseClient._make_status_error_from_responser   r   object_exceptions.APIStatusErrorc                C  s   t  rY   )NotImplementedError)r\   r   r   r   rZ   rZ   r]   r   y  s   zBaseClient._make_status_errorremaining_retriesOptional[int]r   r9   c                 C  s   |d ur|S | | jS rY   )get_max_retriesr   )r\   r   r   rZ   rZ   r]   _remaining_retries  s   zBaseClient._remaining_retrieshttpx.Headersc                 C  sj   |j pi }t| j|}| || t|}| j}|r3|j dkr3||vr3|j	s.| 
 |_	|j	||< |S )Nget)headers_merge_mappingsdefault_headers_validate_headersrt   r%   r   methodloweridempotency_key_idempotency_key)r\   r   r   headers_dictr   idempotency_headerrZ   rZ   r]   _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{   )r\   rS   	merge_urlmerge_raw_pathrZ   rZ   r]   _prepare_url  s
   zBaseClient._prepare_urlhttpx.Requestc                 C  s2  t tjrt dt|dd i }|j}|jd ur:|d u r%tt	|j}nt
|r0t||j}n
tdt| d| |}t| j|j}|ddkri|d |rit|sbtdt| d	| ||d
< | jjd|t|jtrw| jn|j|j| |j|r| jtt t!t"f |nd ||j#d|S )NzRequest options: %sT)exclude_unsetzUnexpected JSON data type, z , cannot merge with `extra_body`Content-Typezmultipart/form-datazGExpected query input to be a dictionary for multipart requests but got z	 instead.data)r   r   r   rS   rU   r   filesrZ   )$rG   isEnabledForloggingDEBUGdebugr7   	json_data
extra_jsonr   r!   r5   r   r   typer   r   rU   r   popr3   	TypeError_serialize_multipartformr   build_requestrz   r   r'   r   r   rS   qs	stringifyr   r}   r   r   )r\   r   kwargsr  r   rU   rZ   rZ   r]   _build_request  s>   



 zBaseClient._build_requestr   Mapping[object, object]dict[str, object]c                 C  sF   | j j|dd}i }|D ]\}}||v rtd| d|||< q|S )Nbrackets)array_formatzDuplicate key encountered: z!; This behaviour is not supported)r	  stringify_itemsr~   )r\   r   rm   
serializedkeyvaluerZ   rZ   r]   r    s   
z#BaseClient._serialize_multipartformcast_toType[ResponseT]stream
stream_cls1type[Stream[Any]] | type[AsyncStream[Any]] | Noner(   c                C  s8   t || ||||d}|jjtdkrtt|S | S )N)rawr   r  r  r  r   true)r<   r   r   r   r@   r   r(   parse)r\   r  r   r   r  r  api_responserZ   rZ   r]   _process_response  s   		
zBaseClient._process_responsetype[ResponseT]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(   r0   inspectisclass
issubclassr1   buildr   r:   r;   r   ValidationErrorrF   )r\   r   r  r   errrZ   rZ   r]   _process_response_data  s   

z!BaseClient._process_response_datar   c                 C  s   t  S rY   r   rp   rZ   rZ   r]   r	       zBaseClient.qshttpx.Auth | Nonec                 C  rX   rY   rZ   rp   rZ   rZ   r]   custom_auth     zBaseClient.custom_authdict[str, str]c                 C  s   i S rY   rZ   rp   rZ   rZ   r]   auth_headers!  r+  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_headersr-  r   rp   rZ   rZ   r]   r   %  s   zBaseClient.default_headersr   r%   c                 C     dS )zaValidate the given default headers and custom headers.

        Does nothing by default.
        NrZ   )r\   r   r   rZ   rZ   r]   r   0     	zBaseClient._validate_headersc                 C  s   | j j d| j S )Nz/Python )r   ra   r   rp   rZ   rZ   r]   r0  ;  s   zBaseClient.user_agentc                 C  s   | j S rY   )r   rp   rZ   rZ   r]   r   ?  r(  zBaseClient.base_url	URL | strc                 C  s   t |tr|nt|| j_d S rY   )rz   r   r   r   r[   rZ   rZ   r]   r   C  s   )maxsizeDict[str, str]c                 C  s(   d| j t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)r   r}   get_platformget_architectureplatformpython_implementationpython_versionrp   rZ   rZ   r]   r1  G  s   zBaseClient.platform_headersresponse_headersOptional[httpx.Headers]floatc                 C  s   | | j}z8|d ur;|d}zt|}W n& ty:   tj|}|d u r*d}ntj|}t|t		  }Y nw d}W n tyI   d}Y nw d|  k rUdkrV|S  d}	d}
|| }t
|	td| |
}dd	t   }|| }|dkry|S dS )
Nzretry-afterr   <   g      ?g       @g       @r   g      ?)r   r   r   r   r   emailutilsparsedate_tz	mktime_tztimeminpowr   )r\   r   r   r=  r   retry_headerretry_afterretry_date_tuple
retry_dateinitial_retry_delaymax_retry_delay
nb_retriessleep_secondsjitterr   rZ   rZ   r]   _calculate_retry_timeoutR  s:   
z#BaseClient._calculate_retry_timeoutc                 C  s`   |j d}|dkrdS |dkrdS |jdkrdS |jdkr dS |jdkr'dS |jd	kr.dS dS )
Nzx-should-retryr  TfalseFi  i  i  i  )r   r   r   )r\   r   should_retry_headerrZ   rZ   r]   _should_retry  s   



zBaseClient._should_retryc                 C  s   dt   S )Nzstainless-python-retry-)uuiduuid4rp   rZ   rZ   r]   r     s   zBaseClient._idempotency_key)r   r}   r   r   r   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rV   rW   )rS   r   rV   r   )r   r   rV   rC   )r   r}   r   r   r   r   rV   r   )r   r   r   r9   rV   r   )r   r9   rV   r   )rS   r}   rV   r   )r   r9   rV   r   )r   r  rV   r  )r  r  r   r9   r   r   r  rj   r  r  rV   r(   )r   r   r  r  r   r   rV   r(   )rV   r   )rV   r)  )rV   r,  )rV   r.  )r   r%   r   r%   rV   rW   rV   r}   )rV   r   )rS   r4  rV   rW   )rV   r6  rY   )r   r   r   r9   r=  r>  rV   r?  )r   r   rV   rj   ) ra   rb   rc   re   r   r?   r>   r^   r   r   r   r   r   r   r  r  r  r'  propertyr	  r*  r-  r   r   r0  r   setterr   r1  rR  rU  r   rZ   rZ   rZ   r]   r   >  s`   
 



	



6




-r   c                	      s  e Zd ZU ded< ded< dZded< eedddddddd fd d!Zdd"d#Zdd$d%Z	dd(d)Z
dd0d1Zdd4d5Zdd8d9Ze	dddCdDZe	ddEdFddIdDZe	ddEddJddMdDZ	ddEddJddOdDZddQdRZ	dddUdVZdd\d]Zei dEd^ddadbZei dcddedbZei ddfddgdbZi dEddhddidbZedi ddEdjddodpZedi ddqddrdpZedi dddsddtdpZdi ddEdduddvdpZdi dwddxdyZddi dzdd{d|Zdi dwdd}d~Zdi dddddZ  ZS )r   zhttpx.Clientr   rj   _has_custom_http_clientNztype[Stream[Any]] | Noner   r   r   r   r   r   http_clientr   r   r   r}   r   r   r   r   r   !float | Timeout | None | NotGivenr   Transport | Noner   r   r   Limits | Noner]  httpx.Client | Noner   r   r   r   r   rV   rW   c                  s   |d urt jdtdd |d urtdnt}|d ur+t jdtdd |d ur+td|d ur?t jdtdd |d ur?tdt|sP|rN|jtkrN|j}nt}t	 j
||tt||||||
|	|d	
 |pqtj|tt||||d
| _t|| _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`[The `transport` argument is deprecated. The `http_client` argument should be passed insteadAThe `http_client` argument is mutually exclusive with `transport`YThe `proxies` argument is deprecated. The `http_client` argument should be passed instead?The `http_client` argument is mutually exclusive with `proxies`)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )warningswarnDeprecationWarningr~   r=   r4   r   HTTPX_DEFAULT_TIMEOUTr>   superr^   r   r&   rt   Clientr   rj   r[  )r\   r   r   r   r   r   r   r   r]  r   r   r   r   rZ   r]   r^     sd   zSyncAPIClient.__init__c                 C     | j jS rY   r   	is_closedrp   rZ   rZ   r]   rv       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   closerp   rZ   rZ   r]   rz    s   
zSyncAPIClient.closer\   rK   c                 C  s   | S rY   rZ   rp   rZ   rZ   r]   	__enter__  rq   zSyncAPIClient.__enter__exc_typetype[BaseException] | NoneexcBaseException | Noneexc_tbTracebackType | Nonec                 C  s   |    d S rY   rz  r\   r|  r~  r  rZ   rZ   r]   __exit__  s   zSyncAPIClient.__exit__r   r9   c                 C  r2  z#Hook for mutating the given optionsNrZ   r\   r   rZ   rZ   r]   _prepare_options  s   zSyncAPIClient._prepare_optionsr   r   c                 C  r2  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.
        NrZ   r\   r   rZ   rZ   r]   _prepare_request  r3  zSyncAPIClient._prepare_requestr  r  r   r   r  Literal[True]r  Type[_StreamT]rN   c                C  rX   rY   rZ   r\   r  r   r   r  r  rZ   rZ   r]   r        
zSyncAPIClient.requestFr  Literal[False]r(   c                C  rX   rY   rZ   )r\   r  r   r   r  rZ   rZ   r]   r   *  r3  r  r  Type[_StreamT] | NoneResponseT | _StreamTc                C  rX   rY   rZ   r  rZ   rZ   r]   r   5  r  type[_StreamT] | Nonec                C  s   | j |||||dS N)r  r   r  r  r   _requestr  rZ   rZ   r]   r   A  s   	
int | Nonec          
      C  s|  |  | | ||}| |}| | z| jj|| j|d}td|j	|j
|j|j |  W n tjyh }	 z)|dkrX| |	jrX| j||||	jj||dW  Y d }	~	S |	j  | |	jd d }	~	w tjy }	 z|dkr| j|||||dW  Y d }	~	S t|d|	d }	~	w ty }	 z|dkr| j|||||dW  Y d }	~	S t|d|	d }	~	ww | j|||||dS N)authr  zHTTP Request: %s %s "%i %s"r   r  )r   )r  r   r   r  r  )r  r   r  r  r   sendr*  rG   r  r   rS   r   reason_phraseraise_for_statusrt   HTTPStatusErrorrU  r   _retry_requestr   readr   TimeoutExceptionrD   r   rE   r  )
r\   r  r   r   r  r  retriesr   r   r&  rZ   rZ   r]   r  R  sj   
	


zSyncAPIClient._requestr=  r>  c          	      C  sD   |d }|  |||}td|j| t| | j|||||dS Nr   z$Retrying request to %s in %f seconds)r   r  r   r  r  )rR  rG   rx   rS   rF  sleepr  	r\   r   r  r   r=  r  r  	remainingr   rZ   rZ   r]   r    s   

zSyncAPIClient._retry_requestr   rh   r   Type[SyncPageT]rH   c                   s(   d fdd}|_ j|ddS )	Nr   rH   rV   c                   s   | j  d | S )N)r   r   r   )r   r   r   r   r\   rZ   r]   r     s   z0SyncAPIClient._request_api_list.<locals>._parserFr  )r   rH   rV   rH   )r   r   )r\   r   r   r   r   rZ   r  r]   r     s   zSyncAPIClient._request_api_listr   r  pathr/   c                C  rX   rY   rZ   r\   r  r  r   r  rZ   rZ   r]   r     r3  zSyncAPIClient.getr   type[_StreamT]c                C  rX   rY   rZ   r\   r  r  r   r  r  rZ   rZ   r]   r     r  r   r  c                C  rX   rY   rZ   r  rZ   rZ   r]   r     r  r   r  r  c                C  s.   t jdd|d|}tt| j||||dS Nr   )r   rS   r  rZ   )r9   	constructr   r(   r   r\   r  r  r   r  r  optsrZ   rZ   r]   r     s   	)r   r   r   r  r   Body | Noner   RequestFiles | Nonec                C  rX   rY   rZ   )r\   r  r  r   r   r   r  rZ   rZ   r]   post  s   zSyncAPIClient.post)r   r   r   c                C  rX   rY   rZ   r\   r  r  r   r   r   r  r  rZ   rZ   r]   r       )r   r   r   r  c                C  rX   rY   rZ   r  rZ   rZ   r]   r    r  )r   r   r   r  r  c          	      C  s6   t jdd||t|d|}tt| j||||dS Nr  r   rS   r  r   r  rZ   )r9   r  r   r   r(   r   )	r\   r  r  r   r   r   r  r  r  rZ   rZ   r]   r    s   r   r   c                C  $   t jdd||d|}| ||S Npatchr   rS   r  rZ   r9   r  r   r\   r  r  r   r   r  rZ   rZ   r]   r  )     zSyncAPIClient.patchr   r   r   c                C  s*   t jdd||t|d|}| ||S Nputr  rZ   )r9   r  r   r   r\   r  r  r   r   r   r  rZ   rZ   r]   r  4  s   	zSyncAPIClient.putc                C  r  Ndeleter  rZ   r  r  rZ   rZ   r]   r  B  r  zSyncAPIClient.deleter   r   r   r   r   c                C  &   t jd|||d|}| |||S Nr  rZ   r9   r  r   r\   r  r   r   r   r   r   r  rZ   rZ   r]   get_api_listM  s   
zSyncAPIClient.get_api_list)r   r}   r   r   r   r   r   r^  r   r_  r   r   r   r`  r]  ra  r   r   r   r   r   rj   rV   rW   r   rV   rW   r\   rK   rV   rK   r|  r}  r~  r  r  r  rV   rW   r   r9   rV   rW   r   r   rV   rW   rY   )r  r  r   r9   r   r   r  r  r  r  rV   rN   )
r  r  r   r9   r   r   r  r  rV   r(   )r  r  r   r9   r   r   r  rj   r  r  rV   r  )r  r  r   r9   r   r   r  rj   r  r  rV   r  )r  r  r   r9   r   r  r  rj   r  r  rV   r  )r   r9   r  r  r   r   r=  r>  r  rj   r  r  rV   r  )r   rh   r   r  r   r9   rV   rH   
r  r}   r  r  r   r/   r  r  rV   r(   )r  r}   r  r  r   r/   r  r  r  r  rV   rN   )r  r}   r  r  r   r/   r  rj   r  r  rV   r  )r  r}   r  r  r   r  r   r/   r   r  r  r  rV   r(   )r  r}   r  r  r   r  r   r/   r   r  r  r  r  r  rV   rN   )r  r}   r  r  r   r  r   r/   r   r  r  rj   r  r  rV   r  
r  r}   r  r  r   r  r   r/   rV   r(   r  r}   r  r  r   r  r   r  r   r/   rV   r(   )r  r}   r   rh   r   r  r   r  r   r/   r   r}   rV   rH   )ra   rb   rc   re   r   r?   r    r^   rv  rz  r{  r  r  r  r   r   r  r  r   r   r  r  r  r  r  __classcell__rZ   rZ   rs  r]   r     s   
 
P







F

r   c                	      s  e Zd ZU ded< ded< dZded< eedddddddd fd d!Zdd"d#Zdd$d%Z	dd(d)Z
dd0d1Zdd4d5Zdd8d9Zed:dd;ddCdDZeddEddJdDZedddKddNdDZd:dddOddPdDZddRdSZ	dddVdWZdd]d^Zei d:d_ddbdcZei ddddedcZei ddfddgdcZi d:ddhddidcZeddi d:djddodpZeddi dqddrdpZeddi ddsddtdpZddi d:dduddvdpZdi dwddxdyZddi dqddzd{Zdi dwdd|d}Zdi d~ddddZ  ZS )r   zhttpx.AsyncClientr   rj   r[  Nztype[AsyncStream[Any]] | Noner   r\  r   r}   r   r   r   r   r   r   r^  r   AsyncTransport | Noner   r   r   r`  r]  httpx.AsyncClient | Noner   r   r   r   rV   rW   c                  s   |d urt jdtdd |	d urtdnt}|d ur+t jdtdd |	d ur+td|d ur?t jdtdd |	d ur?tdt|sP|	rN|	jtkrN|	j}nt}t	 j
|||tt||||||
|d	
 |	pqtj|tt||||d
| _t|	| _d S )Nrb  rc  rd  rg  rh  ri  rj  rk  )
r   r   r   r   r   r   r   r   r   r   rl  )rm  rn  ro  r~   r=   r4   r   rp  r>   rq  r^   r   r&   rt   AsyncClientr   rj   r[  )r\   r   r   r   r   r   r   r   r   r]  r   r   rs  rZ   r]   r^   `  sd   zAsyncAPIClient.__init__c                 C  rt  rY   ru  rp   rZ   rZ   r]   rv    rw  zAsyncAPIClient.is_closedc                   s   | j  I dH  dS )rx  N)r   acloserp   rZ   rZ   r]   rz    s   zAsyncAPIClient.closer\   rK   c                   s   | S rY   rZ   rp   rZ   rZ   r]   
__aenter__  s   zAsyncAPIClient.__aenter__r|  r}  r~  r  r  r  c                   s   |   I d H  d S rY   r  r  rZ   rZ   r]   	__aexit__  s   zAsyncAPIClient.__aexit__r   r9   c                      dS r  rZ   r  rZ   rZ   r]   r    s   zAsyncAPIClient._prepare_optionsr   r   c                   r  r  rZ   r  rZ   rZ   r]   r       	zAsyncAPIClient._prepare_requestF)r  r   r  r  r  r  r   r   r(   c                     d S rY   rZ   )r\   r  r   r  r   rZ   rZ   r]   r     r  zAsyncAPIClient.request)r   r  r  type[_AsyncStreamT]rO   c                  r  rY   rZ   r\   r  r   r  r  r   rZ   rZ   r]   r        
)r  r   type[_AsyncStreamT] | NoneResponseT | _AsyncStreamTc                  r  rY   rZ   r  rZ   rZ   r]   r     r  )r  r  r   c                  s   | j |||||dI d H S r  r  r  rZ   rZ   r]   r     s   	r  c          
        s  |  |I d H  | ||}| |}| |I d H  z | jj|| j|dI d H }td|j	|j
|j|j |  W n tjyx }	 z/|dkre| |	jre| j||||	jj||dI d H W  Y d }	~	S |	j I d H  | |	jd d }	~	w tjy }	 z|dkr| j|||||dI d H W  Y d }	~	S t|d|	d }	~	w tjy }	 z|dkr| j|||||dI d H W  Y d }	~	S t|d|	d }	~	w ty }	 z|dkr| j|||||dI d H W  Y d }	~	S t|d|	d }	~	ww | j|||||dS r  )r  r   r  r  r   r  r*  rG   r  r   rS   r   r  r  rt   r  rU  r   r  r   areadr   ConnectTimeoutrD   r  r   rE   r  )
r\   r  r   r  r  r   r  r   r   r&  rZ   rZ   r]   r    s^   	
&&&zAsyncAPIClient._requestr=  r>  c          	        sR   |d }|  |||}td|j| t|I d H  | j|||||dI d H S r  )rR  rG   rx   rS   anyior  r  r  rZ   rZ   r]   r  D  s   
zAsyncAPIClient._retry_requestr   rh   r   r   "AsyncPaginator[ModelT, AsyncPageT]c                 C  s   t | |||dS )N)r   r   r   r   )r   )r\   r   r   r   rZ   rZ   r]   r   \  s   z AsyncAPIClient._request_api_listr  r  r/   c                  r  rY   rZ   r  rZ   rZ   r]   r   d  r  zAsyncAPIClient.getr  c                  r  rY   rZ   r  rZ   rZ   r]   r   o  r  r  c                  r  rY   rZ   r  rZ   rZ   r]   r   {  r  r  c                  s0   t jdd|d|}| j||||dI d H S r  r  r  rZ   rZ   r]   r     s   	)r   r   r   r  r   r  r   r  c                  r  rY   rZ   )r\   r  r  r   r   r   r  rZ   rZ   r]   r    s   zAsyncAPIClient.postr  c                  r  rY   rZ   r\   r  r  r   r   r   r  r  rZ   rZ   r]   r       )r   r   r   r  c                  r  rY   rZ   r  rZ   rZ   r]   r    r  )r   r   r   r  r  c          	        s>   t jdd||t|I d H d|}| j||||dI d H S r  r9   r  r   r   )	r\   r  r  r   r   r   r  r  r  rZ   rZ   r]   r    s   r  c                  ,   t jdd||d|}| ||I d H S r  r  r  rZ   rZ   r]   r       zAsyncAPIClient.patchc                  s8   t jdd||t|I d H d|}| ||I d H S r  r  r  rZ   rZ   r]   r    s   	zAsyncAPIClient.putc                  r  r  r  r  rZ   rZ   r]   r    r  zAsyncAPIClient.deleter   r  r   c                C  r  r  r  r  rZ   rZ   r]   r    s   zAsyncAPIClient.get_api_list)r   r}   r   r   r   rj   r   r   r   r^  r   r  r   r   r   r`  r]  r  r   r   r   r   rV   rW   r   r  r  r  r  r  )
r  r  r   r9   r  r  r   r   rV   r(   )r  r  r   r9   r  r  r  r  r   r   rV   rO   )r  r  r   r9   r  rj   r  r  r   r   rV   r  )r  r  r   r9   r  rj   r  r  r   r  rV   r  rY   )r   r9   r  r  r   r   r=  r>  r  rj   r  r  rV   r  )r   rh   r   r   r   r9   rV   r  r  )r  r}   r  r  r   r/   r  r  r  r  rV   rO   )r  r}   r  r  r   r/   r  rj   r  r  rV   r  )r  r}   r  r  r   r  r   r  r   r/   r  r  rV   r(   )r  r}   r  r  r   r  r   r  r   r/   r  r  r  r  rV   rO   )r  r}   r  r  r   r  r   r  r   r/   r  rj   r  r  rV   r  r  r  )r  r}   r   rh   r   r   r   r  r   r/   r   r}   rV   r  )ra   rb   rc   re   r   r?   r    r^   rv  rz  r  r  r  r  r   r   r  r  r   r   r  r  r  r  r  r  rZ   rZ   rs  r]   r   [  s   
 
P






>

r   )queryextra_headersextra_query
extra_bodyr   r   r   r  Query | Noner  Headers | Noner  r  r  r   r   r   'float | httpx.Timeout | None | NotGivenr   PostParser | NotGivenrV   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< |S )zECreate a dict of type RequestOptions without keys of NotGiven values.Nr   r  rU   r   r   r   )r   r*   r   rz   r'   r4   )r  r  r  r  r   r   r   r   rZ   rZ   r]   make_request_options  s    
r  c                   @  $   e Zd Zd
ddZedddZd	S )OtherPlatformnamer}   rV   rW   c                 C  
   || _ d S rY   r  r\   r  rZ   rZ   r]   r^   %     
zOtherPlatform.__init__c                 C     d| j  S )NzOther:r  rp   rZ   rZ   r]   __str__(     zOtherPlatform.__str__Nr  r}   rV   rW   rX  ra   rb   rc   r^   r   r  rZ   rZ   rZ   r]   r  $      
r  )MacOSLinuxWindowsFreeBSDOpenBSDiOSAndroidUnknownPlatformc                  C  s   t   } t    }d|v sd|v rdS | dkrdS | dkr"dS d|v r(d	S | d
kr>t }|dkr6dS |dkr<dS dS |rDt|S dS )Niphoneipadr  darwinr  windowsr  androidr  linuxfreebsdr	  openbsdr
  r  r  )r:  systemr   distroidr  )r  platform_name	distro_idrZ   rZ   r]   r8  <  s(   r8  c                   @  r  )	OtherArchr  r}   rV   rW   c                 C  r  rY   r  r  rZ   rZ   r]   r^   c  r  zOtherArch.__init__c                 C  r   )Nzother:r  rp   rZ   rZ   r]   r  f  r  zOtherArch.__str__Nr  rX  r  rZ   rZ   rZ   r]   r  b  r  r  )x32x64armarm64unknownArchc                  C  sX   t  \} }t   }|dv rdS |dkrdS |dkrdS | dkr$dS |r*t|S dS )	N)r   aarch64r   r  x86_64r  32bitr  r!  )r:  architecturemachiner   r  )python_bitness_r'  rZ   rZ   r]   r9  n  s   r9  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 rZ   )rz   r"   ).0r  r  rZ   rZ   r]   
<dictcomp>  s     z#_merge_mappings.<locals>.<dictcomp>)rm   )r*  r,  mergedrZ   rZ   r]   r     s   r   c                   @  sR  e Zd ZU ded< d=ddZeed>dd	Zeed?ddZeed@ddZ	eed@ddZ
edAddZed>ddZedBdCddZedBdDdd ZedEd!d"ZedBdCd#d$Zedd%dFd)d*ZedGd+d,Zed>d-d.ZedBdHd0d1ZedBdId3d4ZedJd5d6ZedBdHd7d8Zedd%dFd9d:ZedGd;d<ZdS )KHttpxBinaryResponseContentr   r   rV   rW   c                 C  r  rY   )r   )r\   r   rZ   rZ   r]   r^     r  z#HttpxBinaryResponseContent.__init__bytesc                 C  rt  rY   )r   contentrp   rZ   rZ   r]   r3       z"HttpxBinaryResponseContent.contentr}   c                 C  rt  rY   )r   r   rp   rZ   rZ   r]   r     r4  zHttpxBinaryResponseContent.textOptional[str]c                 C  rt  rY   )r   encodingrp   rZ   rZ   r]   r6    r4  z#HttpxBinaryResponseContent.encodingc                 C  rt  rY   )r   charset_encodingrp   rZ   rZ   r]   r7    r4  z+HttpxBinaryResponseContent.charset_encodingr  r   c                 K  s   | j jdi |S )NrZ   )r   r   )r\   r  rZ   rZ   r]   r     s   zHttpxBinaryResponseContent.jsonc                 C  
   | j  S rY   )r   r  rp   rZ   rZ   r]   r       
zHttpxBinaryResponseContent.readN
chunk_sizer   Iterator[bytes]c                 C     | j |S rY   )r   
iter_bytesr\   r:  rZ   rZ   r]   r=    r  z%HttpxBinaryResponseContent.iter_bytesIterator[str]c                 C  r<  rY   )r   	iter_textr>  rZ   rZ   r]   r@    r  z$HttpxBinaryResponseContent.iter_textc                 C  r8  rY   )r   
iter_linesrp   rZ   rZ   r]   rA    r9  z%HttpxBinaryResponseContent.iter_linesc                 C  r<  rY   )r   iter_rawr>  rZ   rZ   r]   rB    r  z#HttpxBinaryResponseContent.iter_raw)r:  filestr | os.PathLike[str]r  c                C  sN   t |dd}| j|D ]}|| qW d    d S 1 s w   Y  d S Nwb)mode)openr   r=  write)r\   rC  r:  fr   rZ   rZ   r]   stream_to_file  s
   "z)HttpxBinaryResponseContent.stream_to_filec                 C  r8  rY   )r   rz  rp   rZ   rZ   r]   rz    r9  z HttpxBinaryResponseContent.closec                      | j  I d H S rY   )r   r  rp   rZ   rZ   r]   r       z HttpxBinaryResponseContent.areadAsyncIterator[bytes]c                      | j |S rY   )r   aiter_bytesr>  rZ   rZ   r]   rP       z&HttpxBinaryResponseContent.aiter_bytesAsyncIterator[str]c                   rO  rY   )r   
aiter_textr>  rZ   rZ   r]   rS    rQ  z%HttpxBinaryResponseContent.aiter_textc                   s   | j  S rY   )r   aiter_linesrp   rZ   rZ   r]   rT    s   
z&HttpxBinaryResponseContent.aiter_linesc                   rO  rY   )r   	aiter_rawr>  rZ   rZ   r]   rU    rQ  z$HttpxBinaryResponseContent.aiter_rawc             	     s   t |}|jddI d H 4 I d H "}| j|2 z3 d H W }||I d H  q6 W d   I d H  d S 1 I d H s;w   Y  d S rE  )r  PathrH  r   rP  rI  )r\   rC  r:  r  rJ  r   rZ   rZ   r]   astream_to_file  s   
.z*HttpxBinaryResponseContent.astream_to_filec                   rL  rY   )r   r  rp   rZ   rZ   r]   r    rM  z!HttpxBinaryResponseContent.aclose)r   r   rV   rW   )rV   r2  rX  )rV   r5  )r  r   rV   r   rY   )r:  r   rV   r;  )r:  r   rV   r?  )rV   r?  )rC  rD  r:  r  rV   rW   r  )r:  r   rV   rN  )r:  r   rV   rR  )rV   rR  )ra   rb   rc   re   r^   rY  r   r3  r   r6  r7  r   r  r=  r@  rA  rB  rK  rz  r  rP  rS  rT  rU  rW  r  rZ   rZ   rZ   r]   r1    s^   
 

r1  )r  r  r  r  r  r  r  r  r   r   r   r  r   r  rV   r/   )rV   r  )rV   r"  )r*  r+  r,  r+  rV   r-  )
__future__r   osr   rF  rV  rB  r!  r   r:  rm  email.utilstypesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   	functoolsr   typing_extensionsr   r   r  rt   r  r   r   r   r    r   _qsr   _filesr   r   _typesr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   _utilsr3   r4   r5   _compatr6   r7   _modelsr8   r9   r:   r;   	_responser<   
_constantsr=   r>   r?   r@   
_streamingrA   rB   rC   rD   rE   rF   	getLoggerra   rG   re   rH   rJ   rK   rL   rN   rO   httpx._configrP   rp  ImportErrorrQ   rf   r   r   r   rr  r  r   r   r   r   r   r  r  r  r8  r  r"  r9  r   r1  rZ   rZ   rZ   r]   <module>   s    DT#1.'&  c   ?   )%	
&	

