HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/openai/__pycache__/_base_client.cpython-310.pyc
o

���g�@sUddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddl m!Z!m"Z"m#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddl%m(Z(m)Z)ddl'm*Z*d	d
l+m,Z,d	dl-m.Z.d	dl/m0Z0m1Z1d	d
l2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDd	dlEmFZFmGZGmHZHmIZImJZJmKZKmLZLd	dlMmNZNmOZOd	dlPmQZQmRZRmSZSmTZTd	dlUmVZVmWZWmXZXmYZYd	dlZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZad	dlbmcZcmdZdmeZemfZfd	dl,mgZgmhZhmiZimjZjd	dlkmlZle	�men�Zodepd<eo�qeF��eddd�Zreddd�Zsed�Zteddd �Zued!eced�Zved"eeed�Zwe�rfdd#lxmyZznzdd#lxmyZzWne{�y|e8d$�ZzYnwGd%d&�d&�Z|Gd'd(�d(eQeet�Z}Gd)d*�d*e}eteet�Z~Gd+d,�d,eetesf�ZGd-d.�d.e}eteet�Z�ed/ee%j�e%j�fd�Z�ed0eeceeeefd�Z�Gd1d2�d2ee�e�f�Z�Gd3d4�d4e%j��Z�e�r�e%j�Z�ne�Z�Gd5d6�d6e��Z�Gd7d8�d8e�e%j�ecef�Z�Gd9d:�d:e%j��Z�e�re%j�Z�ne�Z�Gd;d<�d<e��Z�Gd=d>�d>e�e%j�eeef�Z�ddddde3e3d?�dqdOdP�Z�GdQdR�dRee�df�Z�GdSdT�dT�Z�ee�e!dUfZ�drdWdX�Z�eKddY�dsd_d`��Z�Gdadb�db�Z�ee�e!dcfZ�dtddde�Z�dtdfdg�Z�dudidj�Z�dvdodp�Z�dS)w�)�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)�LegacyAPIResponsezlogging.Logger�log�	SyncPageTzBaseSyncPage[Any])�bound�
AsyncPageTzBaseAsyncPage[Any]�_T�_T_coT)�	covariant�_StreamT�
_AsyncStreamT)�DEFAULT_TIMEOUT_CONFIGg@c@s^eZdZUdZded<ded<edd	d
��Zeddd
��Zeed
�ddd
�Zeddd��Z	dS)�PageInfoz�Stores the necessary information to build the request to retrieve the next page.

    Either `url` or `params` must be set.
    �URL | NotGiven�url�Query | NotGiven�paramsr�return�NonecC�dS�N���selfr_rfrf�>/usr/local/lib/python3.10/dist-packages/openai/_base_client.py�__init__}�zPageInfo.__init__r#cCrdrerf)rhrarfrfrirj�rk�r_racCs||_||_dSrerl)rhr_rarfrfrirj�s
�strcCs2|jr|jj�d|j�d�S|jj�d|j�d�S)Nz(url=�)z(params=)r_�	__class__�__name__ra�rhrfrfri�__repr__�szPageInfo.__repr__N)r_rrbrc)rar#rbrc)r_r^rar`rbrc�rbrm)
rp�
__module__�__qualname__�__doc__�__annotations__rrjr rrrrfrfrfrir]ts
	�	r]c@s`eZdZUdZe�Zded<e�Zded<ddd	�Zddd�Z	ddd�Z
ddd�Zddd�ZdS)�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]�_modelrb�boolcCs|��}|sdS|��duS)NF)�_get_page_items�next_page_info)rh�itemsrfrfri�
has_next_page�szBasePage.has_next_page�Optional[PageInfo]cCrdrerfrqrfrfrir~�szBasePage.next_page_info�Iterable[_T]cCrdrerfrqrfrfrir}��zBasePage._get_page_itemsr_r�httpx.QueryParamscCst�tt|jj���|j�Sre)�httpx�QueryParamsrrryra�mergergrfrfri�_params_from_url�szBasePage._params_from_url�infor]cCs|t|j�}|��t|jt�si|j�|j�|_|St|jt�s:|�|j�}|jj|d�}t	|j�|_t
|�|_|Std��)N)razUnexpected PageInfo state)r9ry�_strip_raw_response_header�
isinstancerar&r_r��	copy_with�dictrm�
ValueError)rhr��optionsrar_rfrfri�_info_to_options�s

zBasePage._info_to_optionsN�rbr|)rbr�)rbr�)r_rrbr�)r�r]rbr<)
rprtrurvrryrwr{r�r~r}r�r�rfrfrfrirx�s




rxc@�FeZdZUe��Zded<dd
d�Zdd
d�Zddd�Z	ddd�Z
dS)�BaseSyncPage�
SyncAPIClient�_client�client�modelrzr�r<rbrccCs||_||_||_dSre�r{r�ry)rhr�r�r�rfrfri�_set_private_attributes��
z$BaseSyncPage._set_private_attributes�Iterator[_T]ccs(�|��D]}|��D]}|VqqdSre��
iter_pagesr}�rh�page�itemrfrfri�__iter__�s���zBaseSyncPage.__iter__rhrT�Iterator[SyncPageT]ccs&�|}	|V|��r|��}ndSqre�r��
get_next_page�rhr�rfrfrir��s�
�zBaseSyncPage.iter_pagescCs4|��}|s
td��|�|�}|jj|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{ro�rhr�r�rfrfrir��s�
zBaseSyncPage.get_next_pageN)r�r�r�rzr�r<rbrc)rbr�)rhrTrbr�)rhrTrbrT)rprtru�pydanticrr�rwr�r�r�r�rfrfrfrir��s



	r�c@s4eZdZddd�Zddd�Zddd�Zddd�ZdS)�AsyncPaginatorr��AsyncAPIClientr�r<�page_cls�Type[AsyncPageT]r�rzrbrccCs||_||_||_||_dSre)r{r�ry�	_page_cls)rhr�r�r�r�rfrfrirj�s
zAsyncPaginator.__init__� Generator[Any, None, AsyncPageT]cCs|����Sre)�	_get_page�	__await__rqrfrfrir�szAsyncPaginator.__await__rVc�s0�d�fdd�}|�j_�j��j�j�IdHS)N�resprVrbcs|j�j�j�jd�|S)N)r�r�r�)r�r{ryr��r�rqrfri�_parser
s�z)AsyncPaginator._get_page.<locals>._parser)r�rVrbrV)ry�post_parserr��requestr�)rhr�rfrqrir�	s�zAsyncPaginator._get_page�AsyncIterator[_T]cCs0�tt|IdH�}|2z	3dHW}|Vq6dSre)rrVr�rfrfri�	__aiter__s���zAsyncPaginator.__aiter__N)
r�r�r�r<r�r�r�rzrbrc)rbr�)rbrV�rbr�)rprtrurjr�r�r�rfrfrfrir��s




r�c@r�)�
BaseAsyncPager�r�r�rzr�r�r<rbrccCs||_||_||_dSrer�)rhr�r�r�rfrfrir�#r�z%BaseAsyncPage._set_private_attributesr�cCs2�|��2z3dHW}|��D]}|Vqq6dSrer�r�rfrfrir�-s���zBaseAsyncPage.__aiter__rhrV�AsyncIterator[AsyncPageT]cCs,�|}	|V|��r|��IdH}ndSqrer�r�rfrfrir�2s��zBaseAsyncPage.iter_pagesc�s<�|��}|std��|�|�}|jj|j|j|d�IdHSr�r�r�rfrfrir�;s��
zBaseAsyncPage.get_next_pageN)r�rzr�r�r�r<rbrcr�)rhrVrbr�)rhrVrbrV)rprtrur�rr�rwr�r�r�r�rfrfrfrir� s




	r��
_HttpxClientT�_DefaultStreamTc@s�eZdZUded<ded<ded<ded<d	ed
<ded<d
ed<ded<ded<ded<dZded<eeddd�d}d&d'�Zd~d)d*�Zdd.d/�Z	d�d4d5�Z
d6d7�d�d<d=�Zd�d>d?�Zd�dAdB�Z
d6d7�d�dDdE�Zd�dIdJ�Zd�dMdN�Zd�dPdQ�Zd�dSdT�Zed�dVdW��Zed�dYdZ��Zed�d\d]��Zed�d_d`��Zed�dadb��Zd�dedf�Zed�dgdh��Zed�didj��Zejd�dldj��Zd�dndo�Zd�d�dsdt�Z	d�d�dwdx�Zd�dydz�Z d�d{d|�Z!dS)��
BaseClientr�r�rm�_versionr�	_base_url�int�max_retrieszUnion[float, Timeout, None]�timeout�httpx.Limits�_limits�ProxiesTypes | None�_proxies�!Transport | AsyncTransport | None�
_transportr|�_strict_response_validation�
str | None�_idempotency_headerNztype[_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] | Nonerbrcc
Csn||_|�t|��|_||_||_||_||_||_|	pi|_	|
p"i|_
||_d|_d|_
|dur5td��dS)Nz�max_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_slashrr�r�r�r�r�r��_custom_headers�
_custom_queryr�r��	_platform�	TypeError)rhr�r�r�r�r�r�r�r�r�r�rfrfrirjWs"

��zBaseClient.__init__r_cCs"|j�d�r|S|j|jdd�S)N�/��raw_path)r��endswithr�rgrfrfrir�wsz"BaseClient._enforce_trailing_slash�response�httpx.ResponserNcCs�|jr|jsd}d|j��}n)|j��}|}zt�|�}d|j�d|��}Wnty7|p4d|j��}Ynw|j|||d�S)NzError code: z - )�bodyr�)	�	is_closed�is_stream_consumed�status_code�text�strip�json�loads�	Exception�_make_status_error)rhr�r��err_msg�err_textrfrfri� _make_status_error_from_response|s

�z+BaseClient._make_status_error_from_responser�r��object�_exceptions.APIStatusErrorcCst��re)�NotImplementedError)rhr�r�r�rfrfrir��szBaseClient._make_status_errorr��
retries_takenr�r<r��
httpx.Headersc	Cs�|jpi}t|j|�}|�||�t�|�}|j}|r/|j��dkr/||vr/|j	p,|�
�||<dd�|D�}d|vr@t|�|d<d|vrbt|j
t�rM|j
n|j
}t|t�rX|j}|durbt|�|d<|S)N�getcSsg|]}|���qSrf)�lower)�.0�headerrfrfri�
<listcomp>�sz-BaseClient._build_headers.<locals>.<listcomp>zx-stainless-retry-countzx-stainless-read-timeout)�headers�_merge_mappings�default_headers�_validate_headersr�r$r��methodr��idempotency_key�_idempotency_keyrmr�r�r&r%�read)	rhr�r�r��headers_dictr��idempotency_header�lower_custom_headersr�rfrfri�_build_headers�s"


zBaseClient._build_headerscCs4t|�}|jr|jj|j�d�}|jj|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�)rhr_�	merge_url�merge_raw_pathrfrfri�_prepare_url�s
zBaseClient._prepare_url�SSEDecoder | SSEBytesDecodercC�t�Sre)rKrqrfrfri�_make_sse_decoder�szBaseClient._make_sse_decoder�
httpx.Requestc
Cs�t�tj�rt�dt|dd��i}|j}|jdur:|dur%tt	|j�}nt
|�r0t||j�}n
tdt
|��d���|j||d�}t|j|j�}|�d�}|j}|dur�|�d�r�d	|vrb|�d�|ryt|�srtd
t
|��d���|�|�|d<|s�ttt��}|�|j�}	d
|	jvr�d|	j�d
d�i|d<|jjd|t |j!t"�r�|j!n|j!|j#|	|r�|j$�%tt&t't(f|��nd||d�|��S)NzRequest options: %sT)�
exclude_unsetzUnexpected JSON data type, z , cannot merge with `extra_body`r��Content-Typezmultipart/form-data�boundaryzGExpected query input to be a dictionary for multipart requests but got z	 instead.�data�_�sni_hostname�-�
extensions)r�r�rr_rar��filesrf))rS�isEnabledFor�logging�DEBUG�debugr:�	json_data�
extra_jsonrr!r8r�r��typer	�
default_queryrar�r�
startswith�popr3r��_serialize_multipartformr0�ForceMultipartDictrr_�host�replacer��
build_requestr�r�r&r�qs�	stringifyrrmr)
rhr�r��kwargsr r�ra�content_typer�prepared_urlrfrfri�_build_request�sN


�
 ��zBaseClient._build_requestr�Mapping[object, object]�dict[str, object]cCs^|jj|dd�}i}|D] \}}|�|�}|s|||<qt|�r&|�|�q||g||<q|S)N�brackets)�array_format)r+�stringify_itemsr�r4�append)rhrr�
serialized�key�value�existingrfrfrir&s�

z#BaseClient._serialize_multipartform�cast_to�type[ResponseT]cCsDt|j�s|St|j�}|�tt�}t|�r ||_ttt|�S|Sre)	r6r�r�r%rHr rrr')rhr;r�r��override_cast_torfrfri�_maybe_override_cast_to.s

z"BaseClient._maybe_override_cast_tor�cCs|j�t�dkS)N�stream)r�r�rG�rhr�rfrfri�_should_stream_response_body?sz'BaseClient._should_stream_response_bodyr'c
Cs�|dur	ttd�S|turtt|�Sz,t�|�r(t|t�r(tt|j||d��WS|jr5ttt	||d��WSttt
||d��WStjyR}zt
||d�|�d}~ww)N)r�r)�type_r9)r�r�)rr'r��inspect�isclass�
issubclassr1�buildr�r=r>r��ValidationErrorrQ)rhrr;r��errrfrfri�_process_response_dataBs

��z!BaseClient._process_response_datarcCrrerrqrfrfrir+Z�z
BaseClient.qs�httpx.Auth | NonecCrdrerfrqrfrfri�custom_auth^�zBaseClient.custom_auth�dict[str, str]cCsiSrerfrqrfrfri�auth_headersbrMzBaseClient.auth_headers�dict[str, str | Omit]cCs"dd|jd�|���|j�|j�S)Nzapplication/json)�Acceptrz
User-Agent)�
user_agent�platform_headersrOr�rqrfrfrirfs����zBaseClient.default_headerscCs
i|j�Sre)r�rqrfrfrir#qs�zBaseClient.default_queryr�r$cC�dS)zaValidate the given default headers and custom headers.

        Does nothing by default.
        Nrf)rhr�r�rfrfrirw�	zBaseClient._validate_headerscCs|jj�d|j��S)Nz/Python )rorpr�rqrfrfrirR�szBaseClient.user_agentcCs|jSre)r�rqrfrfrir��rJzBaseClient.base_url�	URL | strcCs"|�t|t�r	|nt|��|_dSre)r�r�rr�rgrfrfrir��s"�Dict[str, str]cCst|j|jd�S)N)�platform)rSr�r�rqrfrfrirS�szBaseClient.platform_headers�response_headers�Optional[httpx.Headers]�float | Nonec	Cs�|durdSz
|�dd�}t|�dWSttfyYnw|�d�}zt|�WSttfy4Ynwtj�|�}|durAdStj�|�}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
        Nzretry-after-ms��zretry-after)	r��floatr�r��email�utils�parsedate_tz�	mktime_tz�time)rhrY�retry_ms_header�retry_header�retry_date_tuple�
retry_daterfrfri�_parse_retry_after_header�s&�

�z$BaseClient._parse_retry_after_header�remaining_retriesr]c
Cs~|�|j�}|�|�}|durd|krdkr|St||d�}tttd|�t�}ddt�}||}	|	dkr=|	SdS)Nr�<r\g@rg�?)�get_max_retriesr�rg�minrF�powrDr)
rhrhr�rYr��retry_after�
nb_retries�
sleep_seconds�jitterr�rfrfri�_calculate_retry_timeout�s
�z#BaseClient._calculate_retry_timeoutcCs�|j�d�}|dkrt�d�dS|dkrt�d�dS|jdkr*t�d	|j�dS|jd
kr8t�d	|j�dS|jdkrFt�d	|j�dS|jdkrTt�d	|j�dSt�d
�dS)Nzx-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�zRetrying due to status code %ii�i�i�zNot retrying)r�r�rSrr�)rhr��should_retry_headerrfrfri�
_should_retry�s*






zBaseClient._should_retrycCsdt����S)Nzstainless-python-retry-)�uuid�uuid4rqrfrfrir�szBaseClient._idempotency_key)r�rmr�r�r�r|r�r�r�r�r�r�r�r�r�r�r�r�r�r�rbrc)r_rrbr)r�r�rbrN)r�rmr�r�r�r�rbr�)r�r<r�r�rbr�)r_rmrbr)rbr)r�r<r�r�rbr)rr1rbr2)r;r<r�r<rbr<)r�rrbr|)rr�r;r<r�r�rbr')rbr)rbrK)rbrN)rbrP)rbr2)r�r$r�r$rbrcrs)rbr)r_rVrbrc)rbrWre)rYrZrbr[)rhr�r�r<rYrZrbr])r�r�rbr|)"rprtrurwr�rErCrjr�r�r�r	rrr0r&r>rArI�propertyr+rLrOrr#rrRr��setterrSrgrqrurrfrfrfrir�Jsh
�
 

	


�
K





&�
#r�c�eZdZd�fdd�Z�ZS)�_DefaultHttpxClientr-rrbrcc�:|�dt�|�dt�|�dd�t�jdi|��dS�Nr�r��follow_redirectsTrf��
setdefaultrCrI�superrj�rhr-�rorfrirj��z_DefaultHttpxClient.__init__�r-rrbrc�rprtrurj�
__classcell__rfrfr�rir{��r{c@�eZdZddd�ZdS)�SyncHttpxClientWrapperrbrccCs.|jrdSz|��WdStyYdSwre)r��closer�rqrfrfri�__del__
s�zSyncHttpxClientWrapper.__del__N�rbrc�rprtrur�rfrfrfrir�	�r�c	seZdZUded<dZded<eeddddddd�d��fdd �Zd�d!d"�Zd�d#d$�Z	d�d'd(�Z
d�d/d0�Zd�d3d4�Zd�d7d8�Z
e	d�d�dBdC��Ze	d�dDdE�d�dHdC��Ze	d�dDddI�d�dLdC��Z	d�dDddI�d�dNdC�Zd�dPdQ�Zd�dTdU�ZdVdW�d�d[d\�Zd�dbdc�ZeidDdd�d�dgdh��Zeidi�d�dkdh��Zeiddl�d�dmdh��ZidDddn�d�dodh�ZediddDdp�d�dudv��Zediddw�d�dxdv��Zedidddy�d�dzdv��ZdiddDdd{�d�d|dv�Zdid}�d�d~d�Zddid��d�d�d��Zdid}�d�d�d��Zdid�d��d�d�d��Z�ZS)�r�zhttpx.Clientr�Nztype[Stream[Any]] | Noner��r�r�r�r�r��http_clientr�r�r�rmr�r�r�r�r��!float | Timeout | None | NotGivenr��Transport | Noner�r�r��
Limits | Noner��httpx.Client | Noner�r�r�r�r�r|rbrcc
s(i}|durtjdtdd�|durtd��nt}|dur1||d<tjdtdd�|dur1td��|durI||d<tjd	tdd�|durItd
��t|�sZ|rX|jtkrX|j}nt}|durmt	|t
j�smtdt
|�����t�j||tt|�|||||
|	|d�
|p�td|tt|�|d
d�|��|_dS)N�hThe `connection_pool_limits` argument is deprecated. The `http_client` argument should be passed instead���category�
stacklevel�NThe `http_client` argument is mutually exclusive with `connection_pool_limits`r��[The `transport` argument is deprecated. The `http_client` argument should be passed instead�AThe `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�r~rf)�warnings�warn�DeprecationWarningr�rIr6r��HTTPX_DEFAULT_TIMEOUTrCr�r��Clientr�r"r�rjrr%r�r�)
rhr�r�r�r�r�r�r�r�r�r�r�r-r�rfrirjsr������
��zSyncAPIClient.__init__cC�|jjSre�r�r�rqrfrfrir�o�zSyncAPIClient.is_closedcCst|d�r|j��dSdS)�`Close the underlying HTTPX client.

        The client will *not* be usable after this.
        r�N)�hasattrr�r�rqrfrfrir�rs
�zSyncAPIClient.closerhrWcCs|Srerfrqrfrfri�	__enter__|r�zSyncAPIClient.__enter__�exc_type�type[BaseException] | None�exc�BaseException | None�exc_tb�TracebackType | NonecCs|��dSre�r��rhr�r�r�rfrfri�__exit__szSyncAPIClient.__exit__r�r<cCs|S�z#Hook for mutating the given optionsrf�rhr�rfrfri�_prepare_options�rkzSyncAPIClient._prepare_optionsr�rcCrT�aThis 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.
        Nrfr@rfrfri�_prepare_request�rUzSyncAPIClient._prepare_requestr;�Type[ResponseT]rh�
Optional[int]r?�
Literal[True]�
stream_cls�Type[_StreamT]rZcCrdrerf�rhr;r�rhr?r�rfrfrir��rUzSyncAPIClient.requestF�r?�Literal[False]r'cCrdrerf)rhr;r�rhr?rfrfrir����r?r��Type[_StreamT] | None�ResponseT | _StreamTcCrdrerfr�rfrfrir��rU�type[_StreamT] | NonecCs2|dur
|�|j�|}nd}|j|||||d�S�Nr)r;r�r?r�r��rjr��_request)rhr;r�rhr?r�r�rfrfrir��s	�r�cCsZt|�}|�||�}|�|�}|�|j�|}|j||d�}|�|�i}	|jdur/|j|	d<t�	d|j
|j�z|jj
|fd|pF|j|d�i|	��}
Wnftjy�}z'tj	ddd�|d	krq|j|||||dd
�WYd}~St�	d�t|d�|�d}~wty�}z'tj	ddd�|d	kr�|j|||||dd
�WYd}~St�	d
�t|d�|�d}~wwt�	d|j
|j|
j|
j|
j�t�	d|
j�d��z|
��WnOtj�y!}zAtj	ddd�|d	k�r|�|j��r|j��|j||||jj||d�WYd}~S|jj�s|j��t�	d�|� |j�d�d}~ww|j!|||
|||d�S)Nr��authzSending HTTP Request: %s %sr?�r��"Encountered httpx.TimeoutExceptionT��exc_infor�r�r?r�rY�Raising timeout error�Encountered Exception�Raising connection errorzHTTP Response: %s %s "%i %s" %szrequest_id: %szx-request-id�!Encountered httpx.HTTPStatusError�r�rYr?r��Re-raising status error�r;r�r�r?r�r�)"r9r>r�rjr�r0r�rLrSrrr_r��sendrAr��TimeoutException�_retry_requestrOr�rPr��
reason_phraser�r��raise_for_status�HTTPStatusErrorrur�r�r�rr��_process_response)rhr;r�r�r?r��
input_optionsrhr�r-r�rHrfrfrir��s�



��
��
	��
	���
�


���zSyncAPIClient._requestrY�httpx.Headers | Nonec	Csp|�|j�|}|dkrt�d�nt�d|�|�|||�}t�d|j|�t�|�|j	|||d||d�S�Nrz1 retry leftz%i retries leftz$Retrying request to %s in %f seconds)r�r;r�r?r�)
rjr�rSrrqr�r_rb�sleepr��	rhr�r;r�rYr?r�rhr�rfrfrir�:s

�zSyncAPIClient._retry_requestrr�r�r��1type[Stream[Any]] | type[AsyncStream[Any]] | Nonec
Cs�|jj�t�dkrttt|||||||d��St|�p|}t�	|�rKt
|t�rKt
|t�s6t
dt�d|����td|�}tt|||t|�||||d��S|tjkrUtt|�St||td|�||||d�}	t|jj�t��rqtt|	�S|	��S)Nrr��rawr�r;r?r�r�r��!API Response types must subclass �; Received �type[BaseAPIResponse[Any]]r<)r�r�r�rGrr'rRrrCrDrEr@r?r�rBr��Responser|�parse�
rhr;r�r�r?r�r��origin�response_cls�api_responserfrfrir�YsX
��


��

�	
zSyncAPIClient._process_responser��Type[object]r��Type[SyncPageT]rTcs(d���fdd�}|�_�j|�dd�S)	Nr�rTrbcs|j���d�|S)N)r�r�r�)r�r��r�r�rhrfrir��s�z0SyncAPIClient._request_api_list.<locals>._parserFr�)r�rTrbrT)r�r�)rhr�r�r�r�rfr�rir��szSyncAPIClient._request_api_list�r�r?�pathr/cCrdrerf�rhr�r;r�r?rfrfrir��r�zSyncAPIClient.get�r��type[_StreamT]cCrdrerf�rhr�r;r�r?r�rfrfrir��rU�r�r�cCrdrerfr�rfrfrir��rU�r�r?r�cCs.tjdd|d�|��}tt|j||||d��S�Nr�)rr_r�rf)r<�	constructrr'r��rhr�r;r�r?r��optsrfrfrir��s	)r�r�rr?r��Body | Noner�RequestFiles | NonecCrdrerf)rhr�r;r�r�rr?rfrfri�post�s
zSyncAPIClient.post)r�r�rcCrdrerf�rhr�r;r�r�rr?r�rfrfrir��)r�r�rr�cCrdrerfrrfrfrir�r)r�r�rr?r�c	Cs6tjdd||t|�d�|��}tt|j||||d��S�Nr�rr_r rr�rf)r<r�rrr'r�)	rhr�r;r�r�rr?r�r�rfrfrir�s���r�r�cC�$tjdd||d�|��}|�||�S�N�patch�rr_r rf�r<r�r��rhr�r;r�r�r�rfrfrir�zSyncAPIClient.patch�r�rr�cCs*tjdd||t|�d�|��}|�||�S�N�putrrf)r<r�rr��rhr�r;r�rr�r�rfrfrirs	��zSyncAPIClient.putcCr�N�deleter	rfr
rrfrfrir%rzSyncAPIClient.deleter��r�r�rrcC�&tjd|||d�|��}|�|||�S�Nr	rf�r<r�r��rhr�r�r�r�r�rr�rfrfri�get_api_list0�
zSyncAPIClient.get_api_list)r�rmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r|rbrcr�r��rhrWrbrW�r�r�r�r�r�r�rbrc�r�r<rbr<�r�rrbrcre)r;r�r�r<rhr�r?r�r�r�rbrZ)
r;r�r�r<rhr�r?r�rbr')r;r�r�r<rhr�r?r|r�r�rbr�)r;r�r�r<rhr�r?r|r�r�rbr�)r;r�r�r<r�r�r?r|r�r�rbr�)r�r<r;r�r�r�rYr�r?r|r�r�rbr��r;r�r�r<r�r�r?r|r�r�r�r�rbr')r�r�r�r�r�r<rbrT�
r�rmr;r�r�r/r?r�rbr')r�rmr;r�r�r/r?r�r�r�rbrZ)r�rmr;r�r�r/r?r|r�r�rbr�)r�rmr;r�r�r�r�r/rr�r?r�rbr')r�rmr;r�r�r�r�r/rr�r?r�r�r�rbrZ)r�rmr;r�r�r�r�r/rr�r?r|r�r�rbr��
r�rmr;r�r�r�r�r/rbr'�r�rmr;r�r�r�rr�r�r/rbr')r�rmr�r�r�r�r�r�r�r/rrmrbrT)rprtrurwr�rEr rjr�r�r�r�r�r�rr�r�r�r�r�r�rrrrrr�rfrfr�rir�s�
�
W





�
��	����

k'�
=�	�
����������r�crz)�_DefaultAsyncHttpxClientr-rrbrccr|r}rr�r�rfrirj?r�z!_DefaultAsyncHttpxClient.__init__r�r�rfrfr�rir">r�r"c@r�)�AsyncHttpxClientWrapperrbrccCs8|jrdSzt���|���WdStyYdSwre)r��asyncio�get_running_loop�create_task�acloser�rqrfrfrir�Ss�zAsyncHttpxClientWrapper.__del__Nr�r�rfrfrfrir#Rr�r#c	s
eZdZUded<dZded<eeddddddd�d��fdd �Zd�d!d"�Zd�d#d$�Z	d�d'd(�Z
d�d/d0�Zd�d3d4�Zd�d7d8�Z
ed9dd:�d�dBdC��ZeddD�d�dIdC��ZedddJ�d�dMdC��Zd9dddN�d�dOdC�Zd�dQdR�Zd�dUdV�ZdWdX�d�d\d]�Zd�dcdd�Zeid9de�d�dhdi��Zeidj�d�dkdi��Zeiddl�d�dmdi��Zid9ddn�d�dodi�Zeddid9dp�d�dudv��Zeddidw�d�dxdv��Zeddiddy�d�dzdv��Zddid9dd{�d�d|dv�Zdid}�d�d~d�Zddidw�d�d�d��Zdid}�d�d�d��Zdid�d��d�d�d��Z�ZS)�r�zhttpx.AsyncClientr�Nztype[AsyncStream[Any]] | Noner�r�r�rmr�r�r�r|r�r�r�r�r��AsyncTransport | Noner�r�r�r�r��httpx.AsyncClient | Noner�r�r�r�rbrcc
s(i}|durtjdtdd�|	durtd��nt}|dur1||d<tjdtdd�|	dur1td��|durI||d<tjd	tdd�|	durItd
��t|�sZ|	rX|	jtkrX|	j}nt}|	durmt	|	t
j�smtdt
|	�����t�j|||tt|�|||||
|d�
|	p�td|tt|�|d
d�|��|_dS)Nr�r�r�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�rf)r�r�r�r�rIr6r�r�rCr�r��AsyncClientr�r"r�rjrr%r#r�)
rhr�r�r�r�r�r�r�r�r�r�r�r-r�rfrirjbsr������
��zAsyncAPIClient.__init__cCr�rer�rqrfrfrir��r�zAsyncAPIClient.is_closedc�s�|j��IdHdS)r�N)r�r'rqrfrfrir��s�zAsyncAPIClient.closerhrWc�s�|Srerfrqrfrfri�
__aenter__�s�zAsyncAPIClient.__aenter__r�r�r�r�r�r�c�s�|��IdHdSrer�r�rfrfri�	__aexit__�s�zAsyncAPIClient.__aexit__r�r<c�s�|Sr�rfr�rfrfrir��s�zAsyncAPIClient._prepare_optionsr�rc�s�dSr�rfr@rfrfrir����	zAsyncAPIClient._prepare_requestF)r?rhr;r�r?r�rhr�r'c���dSrerf)rhr;r�r?rhrfrfrir����zAsyncAPIClient.request)rhr�r��type[_AsyncStreamT]r[c�r.rerf�rhr;r�r?r�rhrfrfrir��r-)r�rh�type[_AsyncStreamT] | None�ResponseT | _AsyncStreamTc�r.rerfr1rfrfrir��r-)r?r�rhc�s:�|dur|�|j�|}nd}|j|||||d�IdHSr�r�)rhr;r�r?r�rhr�rfrfrir�s�	�r�c�s��|jdurtt��IdH|_t|�}|�||�}|�|�IdH}|�|j�|}|j||d�}|�	|�IdHi}	|j
durD|j
|	d<z|jj|fd|pR|j
|d�i|	��IdH}
Wnltjy�}z*tjddd�|dkr�|j|||||dd	�IdHWYd}~St�d
�t|d�|�d}~wty�}z*tjddd�|dkr�|j|||||dd	�IdHWYd}~St�d�t|d�|�d}~wwt�d
|j|j|
j|
j�z|
��WnXtj�y3}zJtjddd�|dk�r|�|j��r|j��IdH|j||||jj||d�IdHWYd}~S|jj �s#|j�!�IdHt�d�|�"|j�d�d}~ww|j#|||
|||d�IdHS)Nr�r�r?r�r�Tr�rr�r�r�r�zHTTP Request: %s %s "%i %s"r�r�r�r�)$r�r5�get_platformr9r>r�rjr�r0r�rLr�r�rAr�r�rSrr�rOr�rPrr_r�r�r�r�rur�r'r�r��areadr�r�)rhr;r�r?r�r�r�rhr�r-r�rHrfrfrir�s��
	

����
	��
	����

���zAsyncAPIClient._requestrYr�c	�s~�|�|j�|}|dkrt�d�nt�d|�|�|||�}t�d|j|�t�|�IdH|j	|||d||d�IdHSr�)
rjr�rSrrqr�r_�anyior�r�r�rfrfrir�~s�
�zAsyncAPIClient._retry_requestrr�r�r�r�c
�s��|jj�t�dkrttt|||||||d��St|�p|}t�	|�rLt
|t�rLt
|t�s7t
dt�d|����td|�}td|||t|�||||d��S|tjkrVtt|�St||td|�||||d�}	t|jj�t��rrtt|	�S|	��IdHS)Nrrr�r�r�r�r'r<)r�r�r�rGrr'rRrrCrDrEr@rAr�rBr�r�r|r�r�rfrfrir��sZ�
��


��

�	
z AsyncAPIClient._process_responser�rzr�r��AsyncPaginator[_T, AsyncPageT]cCst||||d�S)N)r�r�r�r�)r�)rhr�r�r�rfrfrir��sz AsyncAPIClient._request_api_listr�r�r/c�r.rerfr�rfrfrir��r/zAsyncAPIClient.getr�c�r.rerfr�rfrfrir��r-r�c�r.rerfr�rfrfrir��r-r�c�s0�tjdd|d�|��}|j||||d�IdHSr�r
r�rfrfrir�s�	)r�rr�r?r�r�rr�c�r.rerf)rhr�r;r�rr�r?rfrfrirs�
zAsyncAPIClient.postr
c�r.rerf�rhr�r;r�rr�r?r�rfrfrir��)r�rr�r�c�r.rerfr8rfrfrir%r9)r�rr�r?r�c	�s>�tjdd||t|�IdHd�|��}|j||||d�IdHSr�r<r�rr�)	rhr�r;r�rr�r?r�r�rfrfrir2s���rc��,�tjdd||d�|��}|�||�IdHSrr
rrfrfrirB��zAsyncAPIClient.patchc�s8�tjdd||t|�IdHd�|��}|�||�IdHSrr:rrfrfrirMs�	��zAsyncAPIClient.putc�r;rr
rrfrfrir[r<zAsyncAPIClient.deleter�rrcCrrrrrfrfrirfrzAsyncAPIClient.get_api_list)r�rmr�r�r�r|r�r�r�r�r�r(r�r�r�r�r�r)r�r�r�r�rbrcr�r�rrrr)
r;r�r�r<r?r�rhr�rbr')r;r�r�r<r?r�r�r0rhr�rbr[)r;r�r�r<r?r|r�r2rhr�rbr3)r;r�r�r<r?r|r�r2r�r�rbr3)r�r<r;r�r�r�rYr�r?r|r�r2rbr3r)r�rzr�r�r�r<rbr7r)r�rmr;r�r�r/r?r�r�r0rbr[)r�rmr;r�r�r/r?r|r�r2rbr3)r�rmr;r�r�r�rr�r�r/r?r�rbr')r�rmr;r�r�r�rr�r�r/r?r�r�r0rbr[)r�rmr;r�r�r�rr�r�r/r?r|r�r2rbr3r r!)r�rmr�rzr�r�r�r�r�r/rrmrbr7)rprtrurwr�rEr rjr�r�r+r,r�r�rr�r�r�r�r�r�rrrrrr�rfrfr�rir�^s�
�
W




�	�
��

h%�
=�	�
����������r�)�query�
extra_headers�extra_query�
extra_bodyrr�r�r=�Query | Noner>�Headers | Noner?r@r�rr�r��'float | httpx.Timeout | None | NotGivenr��PostParser | NotGivenrbr/cCs�i}|dur
||d<|durtt|�|d<|dur||d<|dur-i|�di��|�|d<t|t�s6||d<|dur>||d<t|�rF||d<|S)zECreate a dict of type RequestOptions without keys of NotGiven values.Nr�r!rar�rr�)rr)r�r�r&r6)r=r>r?r@rr�r�r�rfrfri�make_request_optionsts 
rEc@r�)r'rbr|cCrT)NTrfrqrfrfri�__bool__�r�zForceMultipartDict.__bool__Nr�)rprtrurFrfrfrfrir'�r�r'c@�$eZdZd
dd�Zeddd��Zd	S)�
OtherPlatform�namermrbrccC�
||_dSre�rI�rhrIrfrfrirj��
zOtherPlatform.__init__cC�d|j��S)NzOther:rKrqrfrfri�__str__��zOtherPlatform.__str__N�rIrmrbrcrs�rprtrurjrrOrfrfrfrirH��
rH)�MacOS�Linux�Windows�FreeBSD�OpenBSD�iOS�Android�Unknown�PlatformcCs�zt����}t����}Wn
tyYdSwd|vs!d|vr#dS|dkr)dS|dkr/dSd	|vr5d
S|dkrKt��}|dkrCd
S|dkrIdSdS|rQt|�SdS)Nr[�iphone�ipadrY�darwinrT�windowsrV�androidrZ�linux�freebsdrW�openbsdrXrU)rX�systemr�r��distro�idrH)re�
platform_name�	distro_idrfrfrir4�s0�r4)�maxsizer�rmrX�Platform | NonerWcCs&d|t|pt��tt��t�t�d�S)N�python)zX-Stainless-LangzX-Stainless-Package-VersionzX-Stainless-OSzX-Stainless-ArchzX-Stainless-RuntimezX-Stainless-Runtime-Version)rmr4�get_architecture�get_python_runtime�get_python_version)r�rXrfrfrirS�s�rSc@rG)�	OtherArchrIrmrbrccCrJrerKrLrfrfrirj�rMzOtherArch.__init__cCrN)Nzother:rKrqrfrfrirO�rPzOtherArch.__str__NrQrsrRrfrfrfrirp�rSrp)�x32�x64�arm�arm64�unknowncC� zt��WStyYdSw�Nru)rX�python_implementationr�rfrfrfrirn��

�rncCrvrw)rX�python_versionr�rfrfrfriro�ryro�ArchcCshzt����}Wn
tyYdSw|dvrdS|dkrdS|dkr%dStjdkr,dS|r2t|�SdS)	Nru)rt�aarch64rtrs�x86_64rrlrq)rX�machiner�r��sysrjrp)r~rfrfrirms �
rm�obj1�Mapping[_T_co, Union[_T, Omit]]�obj2�Dict[_T_co, _T]cCsi|�|�}dd�|��D�S)z�Merge two mappings of the same type, removing any values that are instances of `Omit`.

    In cases with duplicate keys the second mapping takes precedence.
    cSs i|]\}}t|t�s||�qSrf)r�r")r�r8r9rfrfri�
<dictcomp>)s z#_merge_mappings.<locals>.<dictcomp>)r)r�r��mergedrfrfrir� sr�)r=rAr>rBr?rAr@r�rr�r�rCr�rDrbr/)rbr\)r�rmrXrkrbrWrs)rbr{)r�r�r�r�rbr�)��
__future__rrr�rbrvr^r$rCrrXr��email.utils�typesrr�typingrrrrr	r
rrr
rrrrrr�typing_extensionsrrrr6r�rfr�rrr�r�_qsr�_filesrr�_typesr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1�_utilsr2r3r4r5r6r7r8�_compatr9r:�_modelsr;r<r=r>�	_responser?r@rArB�
_constantsrCrDrErFrGrHrI�
_streamingrJrKrLrMrNrOrPrQ�_legacy_responserR�	getLoggerrprSrw�	addFilterrTrVrWrXrZr[�
httpx._configr\r��ImportErrorr]rxr�r�r�r�r*r�r�r�r{�DefaultHttpxClientr�r�r"�DefaultAsyncHttpxClientr#r�rErmr'rHr\r4rSrpr{rnrormr�rfrfrfri�<module>s�DP$$	�'0.'&..�%	���
*