
    4Rjy                      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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 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-m.Z.m/Z/ d dl+m0Z0 d	d
l1m2Z2 d	dl3m4Z4 d	dl5m6Z6m7Z7 d	dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI d	dlJmKZKmLZLmMZMmNZNmOZOmPZP d	dlQmRZRmSZSmTZT d	dlUmVZVmWZWmXZXmYZY d	dlZm[Z[ d	dl\m]Z]m^Z^m_Z_m`Z` d	dlambZbmcZcmdZdmeZemfZfmgZgmhZh d	dlimjZjmkZkmlZlmmZm d	dl2mnZnmoZompZpmqZqmrZrmsZs d	dltmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z| d	dl}m~Z~ d	dlmZ d	dlmZ  e
j                  e      Zded<    edd      Z edd       Z ed!      Z ed"d#$      Z ed%eje         Z ed&ele         Zer	d d'lmZ eZn	 d d'lmZ  G d) d*      Z G d+ d,eVee         Z G d- d.ee   ee         Z G d/ d0eeef         Z G d1 d2ee   ee         Z ed3ee)j,                  e)j.                  f         Z ed4eeje   ele   f         Z G d5 d6eeef         Z G d7 d8e)j,                        Zere)j,                  ZneZ G d9 d:e      Z G d; d<ee)j,                  eje   f         Z G d= d>e)j.                        Z	 d dlZ G d? d@ejB                        Zere)j.                  Z	 e)j.                  ZneZeZ G dB dCe      Z G dD dEee)j.                  ele   f         ZdddddeIeIdF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d^dGZ G dH dIeedf         Z G dJ dK      Zeee%dL   f   Zd_dMZ eOdN      d`dO       Z G dP dQ      Zeee%dR   f   ZdadSZdadTZdbdUZdcdVZ	 	 	 	 	 	 dddWZ edXh      ZdedYZdfdZZdgd[Zdhd\Zdid]Zy# e$ r  e=d(      ZY w xY w# e$ r  G dA d@e)j.                        ZY w xY w)j    )annotationsN)TracebackType)random)TYPE_CHECKINGAnyDictListTypeTupleUnionGenericMappingTypeVarIterableIteratorOptionalSequence	GeneratorAsyncIteratorcastoverload)Literaloverride
get_origin)URLProxyHTTPTransportAsyncHTTPTransport)PrivateAttr   )_exceptionsQuerystring)to_httpx_filesasync_to_httpx_files)BodyOmitQueryHeadersTimeoutNotGiven	ResponseT
AnyMapping
PostParserBinaryTypesRequestFilesHttpxSendArgsRequestOptionsAsyncBinaryTypesHttpxRequestFilesModelBuilderProtocol	not_given)is_dictis_listasyncifyis_given	lru_cache
is_mapping)PYDANTIC_V1
model_copy
model_dump)GenericModelFinalRequestOptionsvalidate_typeconstruct_type)
APIRequest)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)AnthropicErrorAPIStatusErrorRetryableErrorAPITimeoutErrorAPIConnectionErrorAPIResponseValidationError)CallNext
MiddlewareAsyncCallNextMiddlewareInputMiddlewareCallableAsyncMiddlewareCallablevalidate_sync_middlewarevalidate_async_middleware)openapi_dumps)get_environment_proxies)LegacyAPIResponsezlogging.Loggerlog	SyncPageTzBaseSyncPage[Any])bound
AsyncPageTzBaseAsyncPage[Any]_T_T_coT)	covariant_StreamT_AsyncStreamT)DEFAULT_TIMEOUT_CONFIG      @c                      e Zd ZU dZded<   ded<   ded<   e	 	 	 	 dd       Ze	 	 	 	 dd	       Ze	 	 	 	 dd
       Zeeed	 	 	 	 	 	 	 ddZedd       Z	y)PageInfozStores the necessary information to build the request to retrieve the next page.

    Either `url` or `params` must be set.
    URL | NotGivenurlQuery | NotGivenparamsBody | NotGivenjsonc                    y N selfrs   s     ^/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/anthropic/_base_client.py__init__zPageInfo.__init__       
     c                    y ry   rz   )r|   ru   s     r}   r~   zPageInfo.__init__   r   r   c                    y ry   rz   )r|   rw   s     r}   r~   zPageInfo.__init__   r   r   rs   rw   ru   c               .    || _         || _        || _        y ry   r   )r|   rs   rw   ru   s       r}   r~   zPageInfo.__init__   s     	r   c                   | j                   r&| j                  j                   d| j                    dS | j                  r&| j                  j                   d| j                   dS | j                  j                   d| j                   dS )Nz(url=)z(json=z(params=)rs   	__class____name__rw   ru   r|   s    r}   __repr__zPageInfo.__repr__   sv    88nn--.eDHH:Q??99nn--.fTYYKqAA..))*(4;;-qAAr   N)rs   r   returnNone)ru   r(   r   r   )rw   r&   r   r   )rs   rr   rw   rv   ru   rt   r   r   r   str)
r   
__module____qualname____doc____annotations__r   r~   r6   r   r   rz   r   r}   rq   rq      s    
 

  
	    
	    
	  ( )#,	 	 		
 !	 
	 B Br   rq   c                  j    e Zd ZU dZ e       Zded<    e       Zded<   ddZddZ	ddZ
dd	Zdd
Zy)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
    rA   _optionsType[_T]_modelc                L    | j                         }|sy| j                         d uS )NF)_get_page_itemsnext_page_info)r|   itemss     r}   has_next_pagezBasePage.has_next_page   s*    $$&""$D00r   c                     y ry   rz   r   s    r}   r   zBasePage.next_page_info   s    r   c                     y ry   rz   r   s    r}   r   zBasePage._get_page_items   s    r   c                    t        j                  t        t        | j                  j
                              j                  |j
                        S ry   )httpxQueryParamsr   r   r   ru   merger{   s     r}   _params_from_urlzBasePage._params_from_url   s3      c4==+?+?!@AGG

SSr   c                
   t        | j                        }|j                          t        |j                  t
              s!i |j                  |j                  |_        |S t        |j                  t
              sc| j                  |j                        }|j                  j                  |      }t        |j                        |_        t        |      |_        |S t        |j                  t
              st        |j                        st        d      |j                  si |j                  |_        |S t        |j                        st        d      i |j                  |j                  |_        |S t        d      )N)ru   z*Pagination is only supported with mappingszUnexpected PageInfo state)r>   r   _strip_raw_response_header
isinstanceru   r+   rs   r   	copy_withdictr   rw   r<   	TypeError	json_data
ValueError)r|   infooptionsru   rs   s        r}   _info_to_optionszBasePage._info_to_options   s0   T]]+**,$++x0>>$++>GNN$((H-**4884F(($$F$3C!#**-GNc(GKN$))X.dii( LMM$$$1tyyM! N	 "'"3"34#$PQQ$Fw'8'8$FDII$F!N455r   Nr   bool)r   zOptional[PageInfo])r   zIterable[_T])rs   r   r   zhttpx.QueryParams)r   rq   r   rA   )r   r   r   r   r   r   r   r   r   r   r   r   r   rz   r   r}   r   r      s<    	 %0MH!1"}FH$1 8T6r   r   c                  j    e Zd ZU  ej                         Zded<   	 	 	 	 	 	 	 	 ddZd	dZd
dZ	ddZ
y)BaseSyncPageSyncAPIClient_clientc                b    t         st        | dd       i | _        || _        || _        || _        y N__pydantic_private__r=   getattrr   r   r   r   )r|   clientmodelr   s       r}   _set_private_attributesz$BaseSyncPage._set_private_attributes   3     /Et!L!T(*D%r   c              #  h   K   | j                         D ]  }|j                         D ]  }|   y wry   
iter_pagesr   r|   pageitems      r}   __iter__zBaseSyncPage.__iter__  s9     OO% 	D,,. 
	s   02c              #  ^   K   | }	 | |j                         r|j                         }ny 'wry   r   get_next_pager|   r   s     r}   r   zBaseSyncPage.iter_pages  s5     J!!#))+ s   +-c                    | j                         }|st        d      | j                  |      }| j                  j	                  | j
                  | j                  |      S NzYNo next page expected; please check `.has_next_page()` before calling `.get_next_page()`.)r   r   r   RuntimeErrorr   r   _request_api_listr   r   r|   r   r   s      r}   r   zBaseSyncPage.get_next_page  sZ    ""$k  ''-||--dkkX_-``r   N)r   r   r   r   r   rA   r   r   )r   zIterator[_T])r|   rf   r   zIterator[SyncPageT])r|   rf   r   rf   )r   r   r   pydanticr   r   r   r   r   r   r   rz   r   r}   r   r      sR    1X113G]3     %	 
 
 *
ar   r   c                  @    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZddZddZd	dZy)
AsyncPaginatorc                <    || _         || _        || _        || _        y ry   )r   r   r   	_page_cls)r|   r   r   page_clsr   s        r}   r~   zAsyncPaginator.__init__+  s      !r   c                >    | j                         j                         S ry   )	_get_page	__await__r   s    r}   r   zAsyncPaginator.__await__7  s    ~~))++r   c                    K   d fd}| j                   _         j                  j                   j                   j                          d {   S 7 w)Nc                l    | j                  j                  j                  j                         | S )N)r   r   r   )r   r   r   r   )respr|   s    r}   _parserz)AsyncPaginator._get_page.<locals>._parser;  s2    ((kk|| ) 
 Kr   )r   rh   r   rh   )r   post_parserr   requestr   )r|   r   s   ` r}   r   zAsyncPaginator._get_page:  s?     	 %,!\\))$..$--HHHHs   AAAAc               h   K   t        t        |  d {         }|2 3 d {   }| 7 7 6 y wry   )r   rh   r   s      r}   	__aiter__zAsyncPaginator.__aiter__G  s<     J
  	 	$J 	$s$   2,

20.0202N)
r   AsyncAPIClientr   rA   r   Type[AsyncPageT]r   r   r   r   )r   z Generator[Any, None, AsyncPageT])r   rh   r   zAsyncIterator[_T])r   r   r   r~   r   r   r   rz   r   r}   r   r   *  sG    
"
" %
" #	
"
 
" 

",Ir   r   c                  j    e Zd ZU  ej                         Zded<   	 	 	 	 	 	 	 	 ddZd	dZd
dZ	ddZ
y)BaseAsyncPager   r   c                b    t         st        | dd       i | _        || _        || _        || _        y r   r   )r|   r   r   r   s       r}   r   z%BaseAsyncPage._set_private_attributesT  r   r   c               z   K   | j                         2 3 d {   }|j                         D ]  }| 	 $7 6 y wry   r   r   s      r}   r   zBaseAsyncPage.__aiter__a  sB     //+ 	 	$,,. 
	+s   ;979;9;c               t   K   | }	 | |j                         r|j                          d {   }ny 07 wry   r   r   s     r}   r   zBaseAsyncPage.iter_pagesf  s=     J!!#!//11  2s   ,868c                   K   | j                         }|st        d      | j                  |      }| j                  j	                  | j
                  | j                  |       d {   S 7 wr   r   r   s      r}   r   zBaseAsyncPage.get_next_pageo  sd     ""$k  ''-\\33DKKdnn^e3ffffs   A$A-&A+'A-N)r   r   r   r   r   rA   r   r   r   )r|   rh   r   zAsyncIterator[AsyncPageT])r|   rh   r   rh   )r   r   r   r   r   r   r   r   r   r   r   rz   r   r}   r   r   Q  sR    2h224G^4     %	 
 
 
gr   r   _HttpxClientT_DefaultStreamTc                  X   e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   dZded<   ded<   eedddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d5dZd6dZ	 	 	 	 d7dZ		 	 	 	 	 	 	 	 d8dZ
ddd9dZd:dZd;dZdd	 	 	 	 	 d<dZd=dZd>d Zd?d!Zd@d"Z	 	 	 	 	 	 	 	 dAd#ZedBd$       ZedCd%       ZedDd&       ZedEd'       ZedFd(       Z	 	 	 	 	 	 dGd)ZedHd*       ZedId+       Zej:                  dJd,       ZedKd-       ZdLd.ZdMd/Z dNdOd0Z!	 dN	 	 	 	 	 	 	 dPd1Z"dQd2Z#dRd3Z$dHd4Z%y)S
BaseClientr   r   r   _versionr   	_base_urlintmax_retrieszUnion[float, Timeout, None]timeoutr   _strict_response_validation
str | None_idempotency_headerNztype[_DefaultStreamT] | None_default_stream_clstuple[MiddlewareInput, ...]_middleware)r   r   custom_headerscustom_query
middlewarec                  || _         | j                  t        |            | _        || _        || _        |xs i | _        |xs i | _        || _        d | _	        d | _
        t        |xs d      | _        |t        d      y )Nrz   zmax_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 `anthropic.DEFAULT_MAX_RETRIES`)r   _enforce_trailing_slashr   r   r   r   _custom_headers_custom_queryr   r   	_platformtupler   r   )	r|   versionbase_urlr   r   r   r   r   r   s	            r}   r~   zBaseClient.__init__  s      55c(mD&-3)/R+F(#' *. !1r2 e  r   c                z    |j                   j                  d      r|S |j                  |j                   dz         S )N   /raw_path)r  endswithr   r{   s     r}   r   z"BaseClient._enforce_trailing_slash  s3    <<  &J}}cllT&9}::r   c                J   |j                   r|j                  sd }d|j                   }nD|j                  j	                         }|}	 t        j                  |      }d|j                   d| }| j                  |||      S # t        $ r |xs d|j                   }Y 2w xY w)NzError code: z - )bodyresponse)		is_closedis_stream_consumedstatus_codetextstriprw   loads	Exception_make_status_error)r|   r
  r	  err_msgerr_texts        r}    _make_status_error_from_responsez+BaseClient._make_status_error_from_response  s     h&A&A D$X%9%9$:;G}}**,HDLzz(+()=)=(>c$H &&wTH&MM  L"KX5I5I4J&KLs   'B B"!B"c                   t               ry   )NotImplementedError)r|   r  r	  r
  s       r}   r  zBaseClient._make_status_error  s     "##r   r   retries_takenc                  |j                   xs i }t        dt        |j                  t              rt        |j                  j                        nt        |j                        i| j                  |      }t        |      }| j                  ||       t        j                  |      }| j                  }|r|j                  r||vr|j                  ||<   |D cg c]  }|j                          }	}d|	vrt        |      |d<   d|	vr^t        |j                  t              r| j                  n|j                  }
t        |
t              r|
j                  }
|
t        |
      |d<   |S c c}w )Nzx-stainless-timeoutzx-stainless-retry-countzx-stainless-read-timeout)headersmerge_headersr   r   r*   r   readdefault_headers_strip_omit_validate_headersr   r)   r   idempotency_keylowerr+   )r|   r   r  r   merged_headersheaders_dictr  idempotency_headerheaderlower_custom_headersr   s              r}   _build_headerszBaseClient._build_headers  sS    .B&%goow7 (+7??+?+?'@) &&	 
 #>2|^< ---!55'"9"9>PX_>_*1*A*AG&' >LL6LL$,@@14]1CG-.%-AA&0(&KdllQXQ`Q`G'7+!,,"69'l23  Ms   E)c                    t        |      }|j                  rN| j                  j                  |j                  j	                  d      z   }| j                  j                  |      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_paths       r}   _prepare_urlzBaseClient._prepare_url  sZ     H	$$!]]33i6H6H6O6OPT6UUN==**N*CCr   c                    t               S ry   )rQ   r   s    r}   _make_sse_decoderzBaseClient._make_sse_decoder  s
    |r   c               2   t         j                  t        j                        r+t         j	                  dt        |dt        rdhni              i }|j                  }|j                  W|t        t        |j                        }n:t        |      rt        ||j                        }nt        dt        |       d      | j                  ||      }t        | j                   |j"                        }|j%                  d      }|j&                  }|y|j)                  d	      rhd
|vr|j+                  d       |r7t-        |      st/        dt        |       d      | j1                  |      |d<   |st        t2        t5                     }| j7                  |j8                        }	|rb|	j:                  rVi t=        |	j"                  j?                               |}|	jA                  |	jB                  jE                  dd      d         }	d|	jF                  v r!d|	jF                  jI                  dd      i|d<   |jJ                  jM                         dk7  }
|
r|jN                  |t/        d      |jN                  |t/        d      |jN                  |jN                  |d<   n5tQ        |tR              r||d<   n|stU        |      r|tW        |      nd |d<   ||d<   n$|j+                  dd        |j+                  dd         | jX                  jZ                  d|tQ        |j\                  t^              r| j\                  n|j\                  |jJ                  |	|r6| j`                  jc                  t        td        tf        th        f   |            nd d|S )NzRequest options: %sTcontent)exclude_unsetexcludezUnexpected JSON data type, z , cannot merge with `extra_body`r  Content-Typezmultipart/form-databoundaryzGExpected query input to be a dictionary for multipart requests but got z	 instead.data   ?r    r   r  _sni_hostname-
extensionsgetz7Passing both `content` and `json_data` is not supportedz3Passing both `content` and `files` is not supportedfiles)r  r   methodrs   ru   rz   )5re   isEnabledForloggingDEBUGdebugr?   r=   r   
extra_jsonr   r&   r<   _merge_mappingsr   typer(  default_queryru   r=  r>  
startswithpopr7   r   _serialize_multipartformr4   ForceMultipartDictr.  rs   queryr   r   r   r  splithostreplacer?  r"  r2  r   bytesr:   rb   r   build_requestr   r+   qs	stringifyr   r   r   )r|   r   r  kwargsr   r  ru   content_typer>  prepared_urlis_body_alloweds              r}   _build_requestzBaseClient._build_request  s_    GMM*II%"&
 # " 	 "$%%	)  w'9'9:	I&+Iw7I7IJ	"%@i@QQq#rss%%g]%K !3!3W^^D{{>2 #(?(?@U(V- N+ y)#abfgpbqarr{|  "&!>!>y!Iv .0B0DE((5l((D\006689DVDF'11<;P;P;V;VW[]^;_`a;b1cL,###$2L4E4E4M4McSV4W#XF< !....0E9*y/D YZZ*u/@ UVV*$+OOy!Iu-$-y! AI@SXaXmM)$<swy!#F7OKK-JJvt$ *t||)) 
$.w$IDLLw>>
 JP477$$T'#s(*;V%DEUY
 
 	
r   c                    | j                   j                  |d      }i }|D ]B  \  }}|j                  |      }|s|||<   t        |      r|j	                  |       <||g||<   D |S )Nbrackets)array_format)rR  stringify_itemsr=  r8   append)r|   r7  r   
serializedkeyvalueexistings          r}   rJ  z#BaseClient._serialize_multipartformh  s    '' #	 ( 
 )+
 	4JC!~~c*H"'
3 x &#+U"3
3%	4( r   c                    t        |j                        s|S t        |j                        }|j                  t        t
              }t        |      r||_        t        t        t           |      S |S ry   )	r:   r  r   rI  rN   r6   r   r
   r,   )r|   cast_tor   r  override_cast_tos        r}   _maybe_override_cast_toz"BaseClient._maybe_override_cast_to  s^    (N w'
 #;;'>	J$%%GOY)9::r   c           	         t        |j                  |j                  | |j                  |j                  |j
                  |j                        S )zVConvert an `APIResponse` / `AsyncAPIResponse` into the equivalent `LegacyAPIResponse`.)rawrc  r   stream
stream_clsr   r  )rd   http_response_cast_to_is_sse_stream_stream_clsr   r  )r|   sources     r}   _convert_to_legacy_responsez&BaseClient._convert_to_legacy_response  sD     $$OO(())OO ..
 	
r   c                F    |j                   j                  t              dk(  S )Nrh  )r  r=  rM   r|   r   s     r}   _should_stream_response_bodyz'BaseClient._should_stream_response_body  s    ""#678CCr   c                  |t        t        d       S |t        u rt        t        |      S 	 t        j                  |      r1t        |t              r!t        t        |j                  ||            S | j                  rt        t        t        ||            S t        t        t        ||            S # t        j                  $ r}t        ||      |d }~ww xY w)N)r
  r7  )type_r`  )r
  r	  )r   r,   objectinspectisclass
issubclassr5   buildr   rB   rC   r   ValidationErrorrY   )r|   r7  rc  r
  errs        r}   _process_response_dataz!BaseClient._process_response_data  s     <	4((f	4((		Tw'Jw@T,UIw}}hT}'RSS//I}7$'OPP	>t#LMM'' 	T,hTJPSS	Ts$   AB4 2&B4 B4 4CCCc                    t               S ry   r"   r   s    r}   rR  zBaseClient.qs  s
    }r   c                     y ry   rz   r   s    r}   custom_authzBaseClient.custom_auth  s    r   c                    i S ry   rz   r   s    r}   auth_headerszBaseClient.auth_headers  s    	r   c                r    dd| j                   d| j                         | j                  | j                  S )Nzapplication/json)Acceptr5  z
User-Agent)
user_agentplatform_headersr  r   r   s    r}   r  zBaseClient.default_headers  sN     ).//
 ##%	

 
 ""
 	
r   c                    i | j                   S ry   )r   r   s    r}   rG  zBaseClient.default_query  s    
  
 	
r   c                     y)zaValidate the given default headers and custom headers.

        Does nothing by default.
        Nrz   )r|   r  r   s      r}   r   zBaseClient._validate_headers  s     	r   c                L    | j                   j                   d| j                   S )Nz/Python )r   r   r   r   s    r}   r  zBaseClient.user_agent  s"    ..))*(4==/BBr   c                    | j                   S ry   )r   r   s    r}   r  zBaseClient.base_url  s    ~~r   c                z    | j                  t        |t              r|      | _        y t        |            | _        y ry   )r   r   r   r   r{   s     r}   r  zBaseClient.base_url  s-    55ZS=Qc`WZ[^W_`r   c                    | j                   S )zThe client-level middleware, outermost first.

        To run extra middleware for specific calls, derive a client with
        `client.with_options(middleware=[*client.middleware, extra])`.
        )r   r   s    r}   r   zBaseClient.middleware  s     r   c                D    t        | j                  | j                        S )N)platform)r  r   r   r   s    r}   r  zBaseClient.platform_headers  s      GGr   c                b    d}d}||z  dz  }||kD  s|r||kD  rt        d      t        |d      S )Ni  iX  i  zStreaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-python#long-requests for more detailsro   )connect)r   r*   )r|   
max_tokensmax_nonstreaming_tokensmaximum_timedefault_timeexpected_times         r}   _calculate_nonstreaming_timeoutz*BaseClient._calculate_nonstreaming_timeout  sV    $z1G;<',C
UlHlj  
 	
r   c                   |y	 |j                  dd      }t        |      dz  S # t        t        f$ r Y nw xY w|j                  d      }	 t        |      S # t        t        f$ r Y nw xY wt        j
                  j                  |      }|yt        j
                  j                  |      }t        |t        j                         z
        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)r|   response_headersretry_ms_headerretry_headerretry_date_tuple
retry_dates         r}   _parse_retry_after_headerz$BaseClient._parse_retry_after_header  s     #	.223CTJO)D00:& 		 (++M:	 &&:& 		 !;;33LA#[[**+;<
Z$))+-..s   % 77
A A)(A)c                   |j                  | j                        }| j                  |      }|d|cxk  rdk  r|S  t        ||z
  d      }t        t        t        d|      z  t              }ddt               z  z
  }||z  }	|	dk\  r|	S dS )Nr   <   r  g       @r    g      ?)get_max_retriesr   r  minrL   powrJ   r   )
r|   remaining_retriesr   r  r   retry_after
nb_retriessleep_secondsjitterr   s
             r}   _calculate_retry_timeoutz#BaseClient._calculate_retry_timeout2  s     --d.>.>? 445EF"q;'<"'< (= '88$?
 /#c:2FFX TFH_$&(!Q,w-A-r   c                P   |j                   j                  d      }|dk(  rt        j                  d       y|dk(  rt        j                  d       y|j                  dk(  r!t        j                  d	|j                         y|j                  d
k(  r!t        j                  d	|j                         y|j                  dk(  r!t        j                  d	|j                         y|j                  dk\  r!t        j                  d	|j                         yt        j                  d       y)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=  re   rC  r  )r|   r
  should_retry_headers      r}   _should_retryzBaseClient._should_retryJ  s    &..223CD &(IILM')IIQR 3&II68L8LM 3&II68L8LM 3&II68L8LM 3&II68L8LM		.!r   c                X   t               }|}|t        |      |vr|j                  t        |             t        |t              ryt        |t
              r'| j                  |j                        |j                  fS t        |t              ry|j                  }|t        |      |vry)al  Whether an exception raised by a request attempt should be retried.

        Also returns the HTTP response behind the failure, when there is one, so
        retry timing can honor `retry-after` headers.

        Exceptions raised by middleware propagate to the caller as-is, except the
        ones that opt into the retry policy by type: `APIStatusError` (subject to
        the usual status-code policy), `APIConnectionError` / `APITimeoutError`,
        and `RetryableError`. The check walks each error's `__cause__` chain, so
        wrapping a retryable failure via `raise ... from err` preserves retries.
        )TN)FN)
setidaddr   rV   rU   r  r
  rX   	__cause__)r|   r{  seencurrents       r}   _should_retry_exceptionz"BaseClient._should_retry_exceptionm  s     (+!bk&=HHR[!'>2!'>2))'*:*:;W=M=MMM'#56!''G !bk&= r   c                0    dt        j                          S )Nzstainless-python-retry-)uuiduuid4r   s    r}   _idempotency_keyzBaseClient._idempotency_key  s    (77r   )r  r   r  	str | URLr   r   r   r   r   zfloat | Timeout | Noner   Mapping[str, str] | Noner   Mapping[str, object] | Noner    Sequence[MiddlewareInput] | Noner   r   )rs   r   r   r   )r
  httpx.Responser   rU   )r  r   r	  ru  r
  r  r   z_exceptions.APIStatusError)r   rA   r  r   r   zhttpx.Headers)rs   r   r   r   )r   zSSEDecoder | SSEBytesDecoder)r   rA   r  r   r   httpx.Request)r7  zMapping[object, object]r   dict[str, object])rc  type[ResponseT]r   rA   r   r  )rn  zBaseAPIResponse[Any]r   zLegacyAPIResponse[Any])r   r  r   r   )r7  ru  rc  r  r
  r  r   r,   )r   r#   )r   zhttpx.Auth | None)r   zdict[str, str])r   zdict[str, str | Omit])r   r  )r  r)   r   r)   r   r   r   )r   r   )rs   z	URL | strr   r   )r   r   )r   Dict[str, str])r  r   r  z
int | Noner   r*   ry   )r  Optional[httpx.Headers]r   zfloat | None)r  r   r   rA   r  r  r   r  )r
  r  r   r   )r{  BaseExceptionr   z"tuple[bool, httpx.Response | None])&r   r   r   r   r   rK   rI   r~   r   r  r  r(  r.  r0  rX  rJ  re  ro  rr  r|  propertyrR  r  r  r  rG  r   r  r  setterr   r  r  r  r  r  r  r  rz   r   r}   r   r   ~  s   MN((!%%##8<5<,, /*937487;  	
 &*  ( 1 2 5 
8;
N N 
N,$$ 	$
 !$ 
$$ TU !F 	j
$j
 	j

 
j
X<"

DT T !	T
 !T 
T0       
 
 
 

		  	 
		 C C   __a a    H
 /L 59	.. %. 2	.
 
.0!F28r   r   c                        e Zd Zd fdZ xZS )_DefaultHttpxClientc           
     X   |j                  dt               |j                  dt               |j                  dd       d|vrt        j                  t        j
                  dfg}t        t        dd       }|#|j                  t        j                  |df       nFt        j                  dk(  r3t        t        d	d
      }|j                  t        j                  |df       t        t        dd       }|"|j                  t        j                  |df       t        t        dd       }|"|j                  t        j                  |df       t               j                         D ci c]  \  }}||d nt        |       }	}}dD 
ci c]  }
|
|v s|
||
    }}
||d<   |	j                         D ci c]  \  }}||d nt        dd|i| }}}t        di |}|j                  |j!                  di              ||d<   ||d<   t#        | H  di | y c c}}w c c}
w c c}}w Nr   limitsfollow_redirectsT	transportTCP_KEEPINTVLr  darwinTCP_KEEPALIVE   TCP_KEEPCNT   TCP_KEEPIDLE)rs   )verifycert	trust_envhttp1http2r  socket_optionsproxymountsrz   )
setdefaultrI   rO   socket
SOL_SOCKETSO_KEEPALIVEr   r]  IPPROTO_TCPsysr  rc   r   r   r   updater=  superr~   r|   rT  r  r  r  r  r  r_  rs   	proxy_mapargtransport_kwargsr  proxy_mountsdefault_transportr   s                  r}   r~   z_DefaultHttpxClient.__init__  s2   )_5($=>,d3f$HNHYHY[a[n[nptGuFvN#FOTBM(%%v'9'9="&MN) ' F%%v'9'9="&MN!&->K&%%v'9'9;&JK"6>4@L'%%v'9'9<&LMVmVoVuVuVwx(#sckdu~ExIx -h %(knrxkxVC[     2@-. #,//"3C U]T0^E0^M]0^^L  !. A0@ A 

8R 89+F8 #4F;"6"+ y    (H
	H!H!6H&rT  r   r   r   r   r   r   r~   __classcell__r   s   @r}   r  r        -# -#r   r  c                      e Zd ZddZy)SyncHttpxClientWrapperc                ^    | j                   ry 	 | j                          y # t        $ r Y y w xY wry   )r  closer  r   s    r}   __del__zSyncHttpxClientWrapper.__del__  s,    >>	JJL 		s     	,,Nr   r   r   r   r   r  rz   r   r}   r  r    s    r   r  c                  \    e Zd ZU ded<   dZded<   dZded<   dZded	<   eeddddd
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d: fdZ	d;dZ
d<dZd=dZ	 	 	 	 	 	 	 	 d>dZ	 	 	 	 d?dZ	 	 	 	 d@dZe	 	 	 	 	 	 	 	 	 	 dAd       Zedd	 	 	 	 	 	 	 dBd       Zeddd	 	 	 	 	 	 	 	 	 dCd       Zddd	 	 	 	 	 	 	 	 	 dDdZdEdZdFdZddd	 	 	 	 	 	 	 dGdZ	 	 	 	 	 	 	 	 	 	 dHdZdd	 	 	 	 	 	 	 	 	 	 	 	 	 dId Z	 	 	 	 	 	 	 	 dJd!Zei dd"	 	 	 	 	 	 	 	 	 dKd#       Zei d$	 	 	 	 	 	 	 	 	 	 	 dLd%       Zei dd&	 	 	 	 	 	 	 	 	 	 	 dMd'       Zi ddd(	 	 	 	 	 	 	 	 	 	 	 dMd)Zeddi ddd*	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNd+       Zeddi dd,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dOd-       Zeddi ddd.	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd/       Zddi dddd0	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd1Zdddi d2	 	 	 	 	 	 	 	 	 	 	 	 	 dQd3Zdddi d2	 	 	 	 	 	 	 	 	 	 	 	 	 dQd4Zddi d5	 	 	 	 	 	 	 	 	 	 	 dRd6Zdi d7d8	 	 	 	 	 	 	 	 	 	 	 	 	 dSd9Z xZS )Tr   zhttpx.Clientr   Nztype[Stream[Any]] | Noner   CallNext | None_middleware_chainr   webhook_keyr   r   http_clientr   r   r   c       	   
        t        |      s(|r |j                  t        k7  r|j                  }nt        }|1t	        |t
        j                        st        dt        |             t        |xs d      }|rt        |       t        
| 1  |t        t        |      ||||||	       | j                         | _        |xs t#        |t        t        |            | _        y )NzOInvalid `http_client` argument; Expected an instance of `httpx.Client` but got rz   )r  r   r  r   r   r   r   r   r  r   )r:   r   HTTPX_DEFAULT_TIMEOUTrI   r   r   Clientr   rF  r   r`   r  r~   r   r*   _build_middleware_chainr   r  r   )r|   r  r  r   r   r  r   r   r   r   r   s             r}   r~   zSyncAPIClient.__init__  s       {226KK%--)":k5<<+Pabfgrbsatu  :+,
$Z0'*#%)!(C 	 
	
 "&!=!=!?" 
&<'*'
r   c                .    | j                   j                  S ry   r   r  r   s    r}   r  zSyncAPIClient.is_closed      ||%%%r   c                R    t        | d      r| j                  j                          yy)`Close the underlying HTTPX client.

        The client will *not* be usable after this.
        r   N)hasattrr   r  r   s    r}   r  zSyncAPIClient.close  s#     4#LL  $r   c                    | S ry   rz   r   s    r}   	__enter__zSyncAPIClient.__enter__  s    r   c                $    | j                          y ry   r  r|   exc_typeexcexc_tbs       r}   __exit__zSyncAPIClient.__exit__   s     	

r   c                    |S z#Hook for mutating the given optionsrz   r|   r   s     r}   _prepare_optionszSyncAPIClient._prepare_options(  s	    
 r   c                     y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   rq  s     r}   _prepare_requestzSyncAPIClient._prepare_request/  s     r   c                    y ry   rz   r|   rc  r   rh  ri  s        r}   r   zSyncAPIClient.request:  s     r   Frh  c                    y ry   rz   r|   rc  r   rh  s       r}   r   zSyncAPIClient.requestD  s     r   rh  ri  c                    y ry   rz   r   s        r}   r   zSyncAPIClient.requestM  s      #r   c          	        | j                  ||      }t        |      }|j                  2|j                  j	                         dk7  r| j                         |_        | j                  }|j                  | j                        }t        |dz         D ]G  }||z
  }		 |E| j                  t        |      ||      \  }
}|
j                  r| j                  |||
|||      c S t        t        |      ||||      } ||      }t        |t              r|j                   j                  r/t#        t$        t&        t(        f   | j+                  ||            c S |j                   }
|	dkD  rD| j7                  |
      r3|
j0                  s|
j3                          | j5                  ||||
       |
j0                  s|
j9                          | j;                  |
      d  t=        d      # t,        $ rZ}| j/                  |      \  }}|	dk  s|s ||j0                  s|j3                          | j5                  ||||       Y d }~d }~ww xY w	Nr=  r    rh  r  rc  r   r
  rh  ri  r  )r   rc  rh  ri  r  r   )r  r   r   r
  z0could not resolve response (should never happen))re  r>   r!  r?  r"  r  r   r  r   range_attempt_request
is_success_process_responserD   r   rF   rj  r   r   r,   rl   _finalize_middleware_resultr  r  r  r  _sleep_for_retryr  r  r  r   r|   rc  r   rh  ri  input_optionschainr   r  r  r
  preparedr   resultr{  should_retryfailed_responses                    r}   r   zSyncAPIClient.requestW  sn    ..w@
 #7+((0]5I5I5O5O5QUZ5Z,0,A,A,CM)&&#33D4D4DE";?3 ?	LM +m ;(=)-)>)>"=1&P] *? *&Hh  **#55$+$,%-#)'1*7  6    ) *= 9 '%#-&3G #(.F%fo>&BVBVBaBa#E)X*=$>@`@`agip@qrr%33H& !1$););H)E))NN$%%"/ +)%	 &   %%77AtK?	LB MNNI  040L0LS0Q-o$)".7P7P#))+%%"/ +),	 &  s'   AG'"A3G'G''	I
0AII
c                      j                   syd fd}dd}|}t         j                         D ]  } |||      } |S )  Build the middleware invocation chain.

        The chain only depends on the immutable `self._middleware` tuple so it is built
        once at construction time. It is invoked once per HTTP attempt, inside the
        SDK's retry loop, with that attempt's `APIRequest`.
        Nc                   t        |       }j                  || j                  | j                        \  }}t	        dj                  | j                  ||| j                  | j                  | j                              S )Nr(  APIResponse[Any]r)  _prepare_middleware_optionsr+  rh  r  r   r-  rc  ri  reqr   r
  r3  r|   s       r}   base_handlerz;SyncAPIClient._build_middleware_chain.<locals>.base_handler  s{    1#6G!%!6!6wszzadarar!6!sHh"&&KK$%::"~~"%"3"3 ' 
 
r   c                p    t        | t              r| j                  nt        t        |       dfd}|S )Nc                     |       S ry   rz   r>  	call_nexthandlers    r}   handlezCSyncAPIClient._build_middleware_chain.<locals>.wrap.<locals>.handle  s    sI..r   r>  rD   r   r:  )r   r[   rE  r   r^   r   rC  rE  rD  s    ` @r}   wrapz3SyncAPIClient._build_middleware_chain.<locals>.wrap  s/    +5j*+Mj''SWXjlvSwG/ Mr   rF  )r   r]   rC  rZ   r   rZ   r   reversedr|   r?  rH  r2  entrys   `    r}   r  z%SyncAPIClient._build_middleware_chain  sM     		 'd../ 	'E&E	'r   c                    t        |t              s|S t        d|      }t        |      }|dk(  s|dk(  r|S |dk(  r| j	                  |      S t        |j                        r|S |j                         S )a  Convert the `APIResponse` returned by the middleware chain into the value the original caller expects.

        The middleware chain operates on `APIResponse` objects; the original caller may
        have asked for a parsed model (the default), a `LegacyAPIResponse`
        (`.with_raw_response`) or the `APIResponse` wrapper itself
        (`.with_streaming_response` / a `cast_to` that is itself a response class).
        r:  rg  rh  r  r   rF   r   _middleware_entry_modero  _expects_response_wrapperrc  parser|   r4  r   r
  
entry_modes        r}   r.  z)SyncAPIClient._finalize_middleware_result  sw     &/2 M*F3+G4
*"8O33H==$W__5O~~r   r   r(  c                  | j                  |      }| j                  ||      }| j                  |       i }| j                  | j                  |d<   |j                  |j                  |d<   t
        j                  d|j                  |j                         	  | j                  j                  |fd|xs | j                  |      i|}t
        j                  d|j                  |j                  |j&                  |j(                  |j*                         t
        j                  d|j*                  j-                  d             ||fS # t        j                  $ r)}t
        j                  dd	
       t        |      |d}~wt        $ r:}t!        |t"              r t
        j                  dd	
       t%        |      |d}~ww xY w)  Prepare, build and send a single HTTP attempt.

        Returns the response regardless of its status code, along with the prepared
        options it was sent with — status handling (the retry policy, raising typed
        errors for the caller) happens above, where middleware can inspect error
        responses first. Connection failures raise typed errors (`APITimeoutError`,
        `APIConnectionError`).
        r  Nauthr  Sending HTTP Request: %s %srh  r   "Encountered httpx.TimeoutExceptionTexc_infoEncountered ExceptionHTTP Response: %s %s "%i %s" %srequest_id: %s
request-idr  rX  r  r  r  re   rC  r?  rs   r   sendrr  r   TimeoutExceptionrW   r  r   rT   rX   r  reason_phraser  r=  r|   r   rh  r  r   rT  r
  r{  s           r}   r+  zSyncAPIClient._attempt_request  s    ''0%%g]%Kg& "'!--F6N##/)0)A)AF%&		/M	?(t||((S!B!B7!B!S H  			-NNKK  ""	
 			"H$4$4$8$8$FG  + %% 	<II:TIJ!'2; 	?#~.II-I=$W53>	?s$   3E G	$FG	5GG	c                  ||z
  }|dk(  rt         j                  d       nt         j                  d|       | j                  |||r|j                  nd       }t         j	                  d|j
                  |       t        j                  |       y Nr    z1 retry leftz%i retries leftz$Retrying request to %s in %f seconds)re   rC  r  r  r   rs   r  sleepr|   r  r   r   r
  r  r   s          r}   r/  zSyncAPIClient._sleep_for_retry+  su     (-7!IIn%II'):;//0A7`hHL\L\nrs7gN

7r   r  c               :   |j                   j                  j                  t              dk(  r t	        t
        t        || |||||            S t        |      xs |}t        j                  |      rt        |t              r|r2t        |j                   j                  j                  t                    rWt        |t              st        dt         d|       t	        d|      }t	        t
         ||| t        |      ||||            S |t         j"                  k(  rt	        t
        |      S t        || t	        d|      ||||      }	t        |j                   j                  j                  t                    rt	        t
        |	      S |	j%                         S )Nr  rg  r   rc  rh  ri  r   r  !API Response types must subclass ; Received type[BaseAPIResponse[Any]]r  )r   r  r=  rM   r   r,   rd   r   rv  rw  rx  rF   r   rE   r   rH   r   ResponserQ  
r|   rc  r   r
  rh  ri  r  originresponse_clsapi_responses
             r}   r-  zSyncAPIClient._process_response9  s    ##''(;<F! #!)#"/  G$/ OOF#6?3 tH$4$4$<$<$@$@AT$UVfk2"CK=P[\b[c dee <gFL 1,?!)#"/  enn$	8,,"*G4!'
   ((,,-@AB	<00!!##r   c                N     d fd}|_          j                  |d      S )Nc                0    | j                         | S )N)r   r   r   )r   )r   r   r   r|   s    r}   r   z0SyncAPIClient._request_api_list.<locals>._parser  s&    (( ) 
 Kr   Fr!  )r   rf   r   rf   )r   r   )r|   r   r   r   r   s   `` ` r}   r   zSyncAPIClient._request_api_list}  s'    	 &||D'%|88r   r   rh  c                    y ry   rz   r|   pathrc  r   rh  s        r}   r=  zSyncAPIClient.get  s     r   r   c                    y ry   rz   r|   rx  rc  r   rh  ri  s         r}   r=  zSyncAPIClient.get  s     r   r   ri  c                    y ry   rz   r{  s         r}   r=  zSyncAPIClient.get  s      #r   r   rh  ri  c          	     x    t        j                  dd|d|}t        t        | j	                  ||||            S Nr=  )r?  rs   r$  rz   )rA   	constructr   r,   r   r|   rx  rc  r   rh  ri  optss          r}   r=  zSyncAPIClient.get  s?     #,,OEtOwO It||GT&U_|`aar   )r	  r2  r   r>  rh  c                    y ry   rz   )r|   rx  rc  r	  r2  r   r>  rh  s           r}   postzSyncAPIClient.post  s     r   )r	  r2  r   r>  c                    y ry   rz   	r|   rx  rc  r	  r2  r   r>  rh  ri  s	            r}   r  zSyncAPIClient.post  s     r   )r	  r2  r   r>  ri  c                    y ry   rz   r  s	            r}   r  zSyncAPIClient.post  s      #r   )r	  r2  r   r>  rh  ri  c          
     $   ||t        d      ||t        d      t        |t              rt        j                  dt
        d       t        j                  d	d|||t        |      d|}	t        t        | j                  ||	||            S 
N2Passing both `body` and `content` is not supported3Passing both `files` and `content` is not supportedPassing raw bytes as `body` is deprecated and will be removed in a future version. Please pass raw bytes via the `content` parameter instead.   
stacklevelr  r?  rs   r   r2  r>  r$  rz   )r   r   rP  warningswarnDeprecationWarningrA   r  r$   r   r,   r   )
r|   rx  rc  r	  r2  r   r>  rh  ri  r  s
             r}   r  zSyncAPIClient.post  s      3PQQ!4QRRdE"MMM"	 #,, 
ttWN[`La
el
 It||GT&U_|`aar   r	  r2  r>  r   c          
        ||t        d      ||t        d      t        |t              rt        j                  dt
        d       t        j                  dd|||t        |      d|}| j                  ||      S 	Nr  r  r  r  r  patchr  rz   
r   r   rP  r  r  r  rA   r  r$   r   r|   rx  rc  r	  r2  r>  r   r  s           r}   r  zSyncAPIClient.patch  s      3PQQ!4QRRdE"MMM"	 #,, 
g^\aMb
fm
 ||GT**r   c          
        ||t        d      ||t        d      t        |t              rt        j                  dt
        d       t        j                  dd|||t        |      d|}| j                  ||      S 	Nr  r  r  r  r  putr  rz   r  r  s           r}   r  zSyncAPIClient.put  s      3PQQ!4QRRdE"MMM"	 #,, 
ddG>Z_K`
dk
 ||GT**r   r	  r2  r   c                   ||t        d      t        |t              rt        j                  dt
        d       t        j                  dd|||d|}| j                  ||      S Nr  r  r  r  delete)r?  rs   r   r2  rz   	r   r   rP  r  r  r  rA   r  r   r|   rx  rc  r	  r2  r   r  s          r}   r  zSyncAPIClient.delete6  sq      3PQQdE"MMM"	 #,,sH$RV`gskrs||GT**r   r=  r	  r   r?  c               Z    t        j                  d|||d|}| j                  |||      S N)r?  rs   r   rz   rA   r  r   r|   rx  r   r   r	  r   r?  r  s           r}   get_api_listzSyncAPIClient.get_api_listK  7     #,,`FPT`X_`%%eT488r   )r  r   r  r  r   r   r   !float | Timeout | None | NotGivenr  zhttpx.Client | Noner   r  r   r  r   r  r   r   r   r   r   r  r|   ri   r   ri   r  ztype[BaseException] | Noner  zBaseException | Noner  zTracebackType | Noner   r   r   rA   r   rA   r   r  r   r   )
rc  Type[ResponseT]r   rA   rh  Literal[True]ri  zType[_StreamT]r   rl   rc  r  r   rA   rh  Literal[False]r   r,   )
rc  r  r   rA   rh  r   ri  zType[_StreamT] | Noner   ResponseT | _StreamT)
rc  r  r   rA   rh  r   ri  type[_StreamT] | Noner   r  )r   r  r4  r   r   rD   r   r   r   rA   rh  r   r  r   r   z*tuple[httpx.Response, FinalRequestOptions]
r  r   r   r   r   rA   r
  zhttpx.Response | Noner   r   rc  r  r   rA   r
  r  rh  r   ri  z1type[Stream[Any]] | type[AsyncStream[Any]] | Noner  r   r   r,   )r   Type[object]r   Type[SyncPageT]r   rA   r   rf   
rx  r   rc  r  r   r2   rh  r  r   r,   )rx  r   rc  r  r   r2   rh  r  ri  type[_StreamT]r   rl   )rx  r   rc  r  r   r2   rh  r   ri  r  r   r  )rx  r   rc  r  r	  Body | Noner2  BinaryTypes | Noner   r2   r>  RequestFiles | Nonerh  r  r   r,   )rx  r   rc  r  r	  r  r2  r  r   r2   r>  r  rh  r  ri  r  r   rl   )rx  r   rc  r  r	  r  r2  r  r   r2   r>  r  rh  r   ri  r  r   r  )rx  r   rc  r  r	  r  r2  r  r>  r  r   r2   r   r,   )rx  r   rc  r  r	  r  r2  r  r   r2   r   r,   )rx  r   r   r  r   r  r	  r  r   r2   r?  r   r   rf   )r   r   r   r   r   r   r  rK   r6   r~   r  r  r  r  r  r  r   r   r  r.  r+  r/  r-  r   r=  r  r  r  r  r  r  r  s   @r}   r   r     s   4818)--"K" /5>+/37487;6
 6
 	6

 6
 36
 )6
 16
 26
 56
 &*6
 
6
p&!, " %	
 
$ 
		 
	   %
  # 
   "'  %
  
   ,0# # %#
 # *# 
# # ,0VO VO %VO
 VO *VO 
VOp$L @ 8!$8! 	8!
 8! 
48!t #25@S_t	, B$ !B$ %	B$
 !B$ B$ FB$ B$ 
B$H99 9 %	9
 
9$  #%!& !	
    
   #% !	
    # 
   #%,0## !	#
  # # *# 
# # #%,0bb !	b
  b b *b 
b  !&*"$%)!&

 !	

 
 $
  
 #
 
 

 
  !&*"$%) !	
  $   #  # 
   !&*"$%),0## !	#
 # $#  # ## # *# 
# #$ !&*"$%),0bb !	b
 b $b  b #b b *b 
bB !&*%)"$++ !	+
 + $+ #+  + 
+> !&*%)"$++ !	+
 + $+ #+  + 
+> !&*"$++ !	+
 + $+  + 
+6 !"$99 	9
 9 9  9 9 
9r   r   c                        e Zd Zd fdZ xZS )_DefaultAsyncHttpxClientc           
     X   |j                  dt               |j                  dt               |j                  dd       d|vrt        j                  t        j
                  dfg}t        t        dd       }|#|j                  t        j                  |df       nFt        j                  dk(  r3t        t        d	d
      }|j                  t        j                  |df       t        t        dd       }|"|j                  t        j                  |df       t        t        dd       }|"|j                  t        j                  |df       t               j                         D ci c]  \  }}||d nt        |       }	}}dD 
ci c]  }
|
|v s|
||
    }}
||d<   |	j                         D ci c]  \  }}||d nt        dd|i| }}}t        di |}|j                  |j!                  di              ||d<   ||d<   t#        | H  di | y c c}}w c c}
w c c}}w r  )r  rI   rO   r  r  r  r   r]  r  r  r  rc   r   r   r   r  r=  r  r~   r  s                  r}   r~   z!_DefaultAsyncHttpxClient.__init__Z  s3   )_5($=>,d3f$HNHYHY[a[n[nptGuFvN#FOTBM(%%v'9'9="&MN) ' F%%v'9'9="&MN!&->K&%%v'9'9;&JK"6>4@L'%%v'9'9<&LMVmVoVuVuVwx(#sckdu~ExIx -h %(knrxkxVC[     2@-. #,//"3C U]T0B0c0cRb0ccL  !3 F5E F 

8R 89+F8 #4F;"6"+ y r  r  r  r  s   @r}   r  r  Y  r  r   r  c                        e Zd Zd fdZ xZS )_DefaultAioHttpClientc                    |j                  dt               |j                  dt               |j                  dd       t        |   di | y )Nr   r  r  Trz   )r  rI   rO   r  r~   )r|   rT  r   s     r}   r~   z_DefaultAioHttpClient.__init__  sE    i9h(AB0$7G&v&r   r  r  r  s   @r}   r  r    s    	' 	'r   r  c                      e Zd ZddZy)r  c                    t        d      )NzVTo use the aiohttp client you must have installed the package with the `aiohttp` extra)r   )r|   _kwargss     r}   r~   z_DefaultAioHttpClient.__init__  s    wxxr   N)r  r   r   r   )r   r   r   r~   rz   r   r}   r  r    s    	yr   c                      e Zd ZddZy)AsyncHttpxClientWrapperc                    | j                   ry 	 t        j                         j                  | j	                                y # t
        $ r Y y w xY wry   )r  asyncioget_running_loopcreate_taskacloser  r   s    r}   r  zAsyncHttpxClientWrapper.__del__  s@    >>	$$&224;;=A 		s   1A 	AANr  r  rz   r   r}   r  r    s    r   r  c                  Z    e Zd ZU ded<   dZded<   dZded<   dZded	<   eeddddd
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d: fdZ	d;dZ
d<dZd=dZ	 	 	 	 	 	 	 	 d>dZ	 	 	 	 d?dZ	 	 	 	 d@dZedd	 	 	 	 	 	 	 dAd       Ze	 	 	 	 	 	 	 	 	 	 dBd       Zedd	 	 	 	 	 	 	 	 	 dCd       Zddd	 	 	 	 	 	 	 	 	 dCdZdDdZdEdZddd	 	 	 	 	 	 	 dFdZ	 	 	 	 	 	 	 	 	 	 dGdZdd 	 	 	 	 	 	 	 	 	 	 	 	 	 dHd!Z	 	 	 	 	 	 	 	 dId"Zei dd#	 	 	 	 	 	 	 	 	 dJd$       Zei d%	 	 	 	 	 	 	 	 	 	 	 dKd&       Zei dd'	 	 	 	 	 	 	 	 	 	 	 dLd(       Zi ddd)	 	 	 	 	 	 	 	 	 	 	 dLd*Zedddi dd+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dMd,       Zedddi d-	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNd.       Zedddi dd/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dOd0       Zdddi ddd1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dOd2Zdddi d-	 	 	 	 	 	 	 	 	 	 	 	 	 dPd3Zdddi d-	 	 	 	 	 	 	 	 	 	 	 	 	 dPd4Zddi d5	 	 	 	 	 	 	 	 	 	 	 dQd6Zdi d7d8	 	 	 	 	 	 	 	 	 	 	 	 	 dRd9Z xZS )Sr   zhttpx.AsyncClientr   Nztype[AsyncStream[Any]] | Noner   AsyncCallNext | Noner   r   r  r  c       	   
        t        |      s(|r |j                  t        k7  r|j                  }nt        }|1t	        |t
        j                        st        dt        |             t        |	xs d      }	|	rt        |	       t        
| 1  ||t        t        |      ||||	|       | j                         | _        |xs t#        |t        t        |            | _        y )NzTInvalid `http_client` argument; Expected an instance of `httpx.AsyncClient` but got rz   )r  r  r   r   r   r   r   r   r  )r:   r   r  rI   r   r   AsyncClientr   rF  r   ra   r  r~   r   r*   r  r   r  r   )r|   r  r  r   r   r   r  r   r   r   r   s             r}   r~   zAsyncAPIClient.__init__  s       {226KK%--)":k5CTCT+Ufgklwgxfyz  :+,
%j1'*#%)!(C 	 
	
 "&!=!=!?" 
&='*'
r   c                .    | j                   j                  S ry   r
  r   s    r}   r  zAsyncAPIClient.is_closed  r  r   c                T   K   | j                   j                          d{    y7 w)r  N)r   r  r   s    r}   r  zAsyncAPIClient.close  s     
 ll!!###s   (&(c                   K   | S wry   rz   r   s    r}   
__aenter__zAsyncAPIClient.__aenter__   s        c                @   K   | j                          d {    y 7 wry   r  r  s       r}   	__aexit__zAsyncAPIClient.__aexit__  s      jjls   c                   K   |S wr  rz   r  s     r}   r  zAsyncAPIClient._prepare_options  s     
 r  c                   K   ywr  rz   rq  s     r}   r  zAsyncAPIClient._prepare_request  s         Fr!  c                  K   y wry   rz   r#  s       r}   r   zAsyncAPIClient.request  s      r  c                  K   y wry   rz   r   s        r}   r   zAsyncAPIClient.request&  s      r  )ri  c                  K   y wry   rz   r   s        r}   r   zAsyncAPIClient.request0  s      %(r  r$  c          	       K   | j                   ! t        t                      d {   | _         | j                  ||      }t	        |      }|j
                  2|j                  j                         dk7  r| j                         |_        | j                  }|j                  | j                        }t        |dz         D ]  }||z
  }		 |U| j                  t	        |      ||       d {   \  }
}|
j                  r| j                  |||
|||       d {   c S t!        t	        |      ||||      } ||       d {   }t#        |t$              r|j&                  j                  r7t)        t*        t,        t.        f   | j1                  ||       d {         c S |j&                  }
|	dkD  rT| j=                  |
      rC|
j6                  s|
j9                          d {    | j;                  ||||
       d {    L|
j6                  s|
j?                          d {    | jA                  |
      d  tC        d      7 (7 e7 :7 7 # t2        $ rl}| j5                  |      \  }}|	dk  s|s |%|j6                  s|j9                          d {  7   | j;                  ||||       d {  7   Y d }~d }~ww xY w7 7 7 wr'  )"r   r9   get_platformre  r>   r!  r?  r"  r  r   r  r   r*  r+  r,  r-  rD   r   rF   rj  r   r   r,   rm   r.  r  r  r  r  r/  r  areadr  r   r0  s                    r}   r   zAsyncAPIClient.request:  s     >>! $:8L#9#;;DN..w@
 #7+((0]5I5I5O5O5QUZ5Z,0,A,A,CM)&&#33D4D4DE";?3 A	LM +m ;*=/3/D/D"=1&P] 0E 0 *&Hh  **%)%;%;$+$,%-#)'1*7 &< &    ) *= 9 '%#-&3G ).g"6F%fo>&BVBVBaBa#!)]":;4CcCcdjlsCt=t    &33H& !1$););H)E))"//+++++"/ +)%	 ,     %%nn&&&77AtKCA	LF MNNe <(*   #7 >u  040L0LS0Q-o$)".7P7P)00222++"/ +),	 ,    ( , 's   $KIB"K
"I,I--IIIK!$IIAIII$K'I35K(K)KK%K+K,#KIIII	K%=K"J%#K KKKKKKKc                      j                   syd fd}dd}|}t         j                         D ]  } |||      } |S )r8  Nc                2  K   t        |       }j                  || j                  | j                         d {   \  }}t	        dj                  | j                  ||| j                  | j                  | j                         d {         S 7 X7 
w)Nr(  AsyncAPIResponse[Any]r)  r;  r=  s       r}   r?  z<AsyncAPIClient._build_middleware_chain.<locals>.base_handler  s     1#6G'+'<'<

#:K:K (= ( "Hh ',,KK$%::"~~"%"3"3 -  
 
"
s"   7BBAB
B
	BBc                p    t        | t              r| j                  nt        t        |       dfd}|S )Nc                2   K    |        d {   S 7 wry   rz   rB  s    r}   rE  zDAsyncAPIClient._build_middleware_chain.<locals>.wrap.<locals>.handle  s     $S)4444s   r>  rD   r   r  )r   r[   handle_asyncr   r_   rG  s    ` @r}   rH  z4AsyncAPIClient._build_middleware_chain.<locals>.wrap  s6     j*5 ''1:> 5 Mr   r  )r   r]   rC  r\   r   r\   rI  rK  s   `    r}   r  z&AsyncAPIClient._build_middleware_chain  sM     	"
	  ,d../ 	'E&E	'r   c                  K   t        |t              s|S t        d|      }t        |      }|dk(  s|dk(  r|S |dk(  r| j	                  |      S t        |j                        r|S |j                          d{   S 7 w)a  Convert the `AsyncAPIResponse` returned by the middleware chain into the value the original caller expects.

        The middleware chain operates on `AsyncAPIResponse` objects; the original caller
        may have asked for a parsed model (the default), a `LegacyAPIResponse`
        (`.with_raw_response`) or the `AsyncAPIResponse` wrapper itself
        (`.with_streaming_response` / a `cast_to` that is itself a response class).
        r  rg  rh  r  NrN  rR  s        r}   r.  z*AsyncAPIClient._finalize_middleware_result  s      &/2 M/8+G4
*"8O33H==$W__5O^^%%%%s   A6A?8A=9A?r   r(  c                 K   | j                  |       d{   }| j                  ||      }| j                  |       d{    i }| j                  | j                  |d<   |j                  |j                  |d<   t
        j                  d|j                  |j                         	  | j                  j                  |fd|xs | j                  |      i| d{   }t
        j                  d|j                  |j                  |j&                  |j(                  |j*                         t
        j                  d|j*                  j-                  d             ||fS 7 O7 &7 # t        j                  $ r)}t
        j                  dd	
       t        |      |d}~wt        $ r:}t!        |t"              r t
        j                  dd	
       t%        |      |d}~ww xY ww)rU  Nr  rV  r  rW  rh  rX  rY  TrZ  r\  r]  r^  r_  r`  rd  s           r}   r+  zAsyncAPIClient._attempt_request  s     --g66%%g]%K##G,,, "'!--F6N##/)0)A)AF%&		/M	?.T\\..S!B!B7!B!S  H  			-NNKK  ""	
 			"H$4$4$8$8$FG  S 7 	-
 %% 	<II:TIJ!'2; 	?#~.II-I=$W53>	?se   G.E&+G.E)A'G.,6E. "E,#E. 'B G.)G.,E. .G+$F%%G+15G&&G++G.c               :  K   ||z
  }|dk(  rt         j                  d       nt         j                  d|       | j                  |||r|j                  nd       }t         j	                  d|j
                  |       t        j                  |       d {    y 7 wrf  )re   rC  r  r  r   rs   anyiorg  rh  s          r}   r/  zAsyncAPIClient._sleep_for_retry  s      (-7!IIn%II'):;//0A7`hHL\L\nrs7gNkk'"""s   BBBBr  c               N  K   |j                   j                  j                  t              dk(  r t	        t
        t        || |||||            S t        |      xs |}t        j                  |      rt        |t              r|r2t        |j                   j                  j                  t                    rSt        |t              st        dt         d|       t	        d|      }t	        d ||| t        |      ||||            S |t         j"                  k(  rt	        t
        |      S t        || t	        d|      ||||      }	t        |j                   j                  j                  t                    rt	        t
        |	      S |	j%                          d {   S 7 w)Nr  rj  rk  rl  rm  r,   r  )r   r  r=  rM   r   r,   rd   r   rv  rw  rx  rF   r   rG   r   rH   r   rn  rQ  ro  s
             r}   r-  z AsyncAPIClient._process_response)  s     ##''(;<F! #!)#"/  G$/ OOF#6?3 tH$4$4$<$<$@$@AT$UVf&67"CDTCUU`ag`h ijj <gFL 1,?!)#"/  enn$	8,,'*G4!'
   ((,,-@AB	<00!''))))s   FF%F#F%c                     t        | |||      S )N)r   r   r   r   )r   )r|   r   r   r   s       r}   r   z AsyncAPIClient._request_api_listm  s     T7TQVWWr   ru  c                  K   y wry   rz   rw  s        r}   r=  zAsyncAPIClient.getu  s      r  ry  c                  K   y wry   rz   r{  s         r}   r=  zAsyncAPIClient.get  s      r  r|  c                  K   y wry   rz   r{  s         r}   r=  zAsyncAPIClient.get  s      %(r  r~  c               x   K   t        j                  dd|d|}| j                  ||||       d {   S 7 wr  )rA   r  r   r  s          r}   r=  zAsyncAPIClient.get  s?      #,,OEtOwO\\'4:\VVVVs   1:8:)r	  r2  r>  r   rh  c                  K   y wry   rz   )r|   rx  rc  r	  r2  r>  r   rh  s           r}   r  zAsyncAPIClient.post  s      r  r  c                  K   y wry   rz   	r|   rx  rc  r	  r2  r>  r   rh  ri  s	            r}   r  zAsyncAPIClient.post  s      r  )r	  r2  r>  r   ri  c                  K   y wry   rz   r  s	            r}   r  zAsyncAPIClient.post  s      %(r  )r	  r2  r>  r   rh  ri  c          
     8  K   ||t        d      ||t        d      t        |t              rt        j                  dt
        d       t        j                  d	d|||t        |       d {   d|}	| j                  ||	||       d {   S 7 &7 wr  
r   r   rP  r  r  r  rA   r  r%   r   )
r|   rx  rc  r	  r2  r>  r   rh  ri  r  s
             r}   r  zAsyncAPIClient.post  s       3PQQ!4QRRdE"MMM"	 #,, 
ttWRfglRmLm
qx
 \\'4:\VVV MnVs$   A-B/B0!BBBBc          
     2  K   ||t        d      ||t        d      t        |t              rt        j                  dt
        d       t        j                  dd|||t        |       d {   d|}| j                  ||       d {   S 7 #7 wr  r  r  s           r}   r  zAsyncAPIClient.patch  s       3PQQ!4QRRdE"MMM"	 #,, 
,U33
 
 \\'4000 4 1$   A-B/B0BBBBc          
     2  K   ||t        d      ||t        d      t        |t              rt        j                  dt
        d       t        j                  dd|||t        |       d {   d|}| j                  ||       d {   S 7 #7 wr  r  r  s           r}   r  zAsyncAPIClient.put	  s       3PQQ!4QRRdE"MMM"	 #,, 
ddGQefkQlKl
pw
 \\'4000 Lm0r  r  c                  K   ||t        d      t        |t              rt        j                  dt
        d       t        j                  dd|||d|}| j                  ||       d {   S 7 wr  r  r  s          r}   r  zAsyncAPIClient.delete	  s{       3PQQdE"MMM"	 #,,sH$RV`gskrs\\'40000s   A+A4-A2.A4r=  r  c               Z    t        j                  d|||d|}| j                  |||      S r  r  r  s           r}   r  zAsyncAPIClient.get_api_list4	  r  r   )r  r   r  r  r   r   r   r   r   r  r  zhttpx.AsyncClient | Noner   r  r   r  r   r  r   r   r   r  r  r  r  r  r  )
rc  r  r   rA   rh  r  ri  type[_AsyncStreamT]r   rm   )
rc  r  r   rA   rh  r   ri  type[_AsyncStreamT] | Noner   ResponseT | _AsyncStreamT)r   r  r  r  r  r  )r   r   r   r   r   rA   r   AsyncPaginator[_T, AsyncPageT]r  )rx  r   rc  r  r   r2   rh  r  ri  r  r   rm   )rx  r   rc  r  r   r2   rh  r   ri  r  r   r  )rx  r   rc  r  r	  r  r2  AsyncBinaryTypes | Noner>  r  r   r2   rh  r  r   r,   )rx  r   rc  r  r	  r  r2  r  r>  r  r   r2   rh  r  ri  r  r   rm   )rx  r   rc  r  r	  r  r2  r  r>  r  r   r2   rh  r   ri  r  r   r  )rx  r   rc  r  r	  r  r2  r  r>  r  r   r2   r   r,   )rx  r   rc  r  r	  r  r2  r  r   r2   r   r,   )rx  r   r   r   r   r   r	  r  r   r2   r?  r   r   r  )r   r   r   r   r   r   r  rK   r6   r~   r  r  r  r  r  r  r   r   r  r.  r+  r/  r-  r   r=  r  r  r  r  r  r  r  s   @r}   r   r     s   9=6=.2+2"K" /5>0437487;6
 6
 	6

 &*6
 6
 36
 .6
 16
 26
 56
 
6
p&$, " %	
 
$ 
		 
	  "'  %
  
    %
  ( 
   26( ( %(
 ( /( 
#( ( 15]O ]O %]O
 ]O /]O 
#]O~*X&@ 8!$8! 	8!
 8! 
48!t# ##25#@S#_t#	#, B* !B* %	B*
 !B* B* FB* B* 
B*HXX X %	X
 
(X  #%!& !	
    
   #% !	
    ( 
   #%15(( !	(
  ( ( /( 
#( ( #%15
W
W !	
W
  
W 
W /
W 
#
W  !+/%)"$!&

 !	

 
 )
 #
  
 
 

 
  !+/%)"$ !	
  ) #    ( 
   !+/%)"$15(( !	(
 ( )( #(  ( ( /( 
#( ($ !+/%)"$15WW !	W
 W )W #W  W W /W 
#WB !+/%)"$11 !	1
 1 )1 #1  1 
1H !+/%)"$11 !	1
 1 )1 #1  1 
1> !+/"$11 !	1
 1 )1  1 
16 !"$99 	9
 9 9  9 9 
(9r   r   )rL  extra_headersextra_query
extra_bodyr!  r   r   c                    i }|||d<   |t        t        |      |d<   | | |d<   |i |j                  di       ||d<   t        |t              s||d<   |||d<   t        |      r||d<   |S )zECreate a dict of type RequestOptions without keys of NotGiven values.r  rD  ru   r   r!  r   )r   r-   r=  r   r+   r:   )rL  r  r  r  r!  r   r   r   s           r}   make_request_optionsr
  B	  s     !G *	 $Z <!Hw{{8R8HKHgx($	"%4!"!,Nr   c                      e Zd ZddZy)rK  c                     y)NTrz   r   s    r}   __bool__zForceMultipartDict.__bool__h	  s    r   Nr   )r   r   r   r  rz   r   r}   rK  rK  g	  s    r   rK  c                  &    e Zd ZddZedd       Zy)OtherPlatformc                    || _         y ry   namer|   r  s     r}   r~   zOtherPlatform.__init__m	  	    	r   c                     d| j                    S )NzOther:r  r   s    r}   __str__zOtherPlatform.__str__p	      		{##r   Nr  r   r   r   r   r   r   r   r~   r   r  rz   r   r}   r  r  l	       $ $r   r  )MacOSLinuxWindowsFreeBSDOpenBSDiOSAndroidUnknownc                 F   	 t        j                         j                         } t        j                          j                         }d|v sd|v ry| dk(  ry| dk(  ryd	|v ry
| dk(  r!t	        j
                         }|dk(  ry|dk(  ryy|rt        |      S y# t        $ r Y yw xY w)Nr"  iphoneipadr   r  r  windowsr  androidr!  linuxfreebsdr  openbsdr  r  )r  systemr"  r  distror  r  )r+  platform_name	distro_ids      r}   r  r  	  s    "((* ))+113 = Fm$;
 M! IIK		!	!]++G  s   AB 	B B )maxsizec                   d| t        |xs
 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_architectureget_python_runtimeget_python_version)r  r  s     r}   r  r  	  s;     %'.h8,.9 0 2313'9'; r   c                  &    e Zd ZddZedd       Zy)	OtherArchc                    || _         y ry   r  r  s     r}   r~   zOtherArch.__init__	  r  r   c                     d| j                    S )Nzother:r  r   s    r}   r  zOtherArch.__str__	  r  r   Nr  r   r  rz   r   r}   r6  r6  	  r  r   r6  )x32x64armarm64unknownc                 J    	 t        j                         S # t        $ r Y yw xY wNr=  )r  python_implementationr  rz   r   r}   r3  r3  	  s(    --//     	""c                 J    	 t        j                         S # t        $ r Y yw xY wr?  )r  python_versionr  rz   r   r}   r4  r4  	  s(    &&(( rA  c                     	 t        j                         j                         } | dv ry| dk(  ry| dk(  ryt        j
                  dk  ry| rt        |       S y# t        $ r Y yw xY w)	Nr=  )r<  aarch64r<  r;  x86_64r:  l        r9  )r  machiner"  r  r  r/  r6  )rG  s    r}   r2  r2  	  sz    ""$**, && %( {{e!!)  s   "A 	A#"A#c                x    | j                         D ci c]  \  }}t        |t              r|| c}}S c c}}w )z5Drop entries whose value is an `Omit` removal marker.)r   r   r'   )mappingr_  r`  s      r}   r  r  	  s.    )0X:3
5RV@WCJXXXs   66c                     t        i | |      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.
    )r  )obj1obj2s     r}   rE  rE  	  s     '$'$'((r   zx-stainless-helperc                    d | j                  d      D        D cg c]  }|s|	 }}d |j                  d      D        D ]  }|s||vs|j                  |        dj                  |      S c c}w )a  Append `addition` to a comma-separated header value, skipping tokens that
    are already present so the same helper isn't recorded twice.

    Values are joined with `", "`, the same format `lib._stainless_helpers` uses
    when it builds the `x-stainless-helper` header.
    c              3  <   K   | ]  }|j                           y wry   r  .0rg  s     r}   	<genexpr>z'_append_header_value.<locals>.<genexpr>
  s     !M##))+!M   ,c              3  <   K   | ]  }|j                           y wry   rO  rP  s     r}   rR  z'_append_header_value.<locals>.<genexpr>
  s     =##))+=rS  z, )rM  r]  join)ra  additiontokentokenss       r}   _append_header_valuerZ  
  ss     "N9L!MWQVeWFW=)<= !U&(MM% ! 99V	 Xs
   A0A0c                 $   i }| D ]~  }|j                         D ]i  \  }}|j                         }|t        vr|||<   $|j                  |      }t	        |t
              r t	        |t
              rt        ||      ||<   e|||<   k  t        d|      S )a  Merge header mappings, with later mappings taking precedence on a key
    clash, exactly like `_merge_mappings`.

    The exception is the headers in `_APPEND_HEADERS`: those keys are matched
    case-insensitively (and stored under their lowercase form) and their string
    values accumulate into a single comma-separated, deduplicated value instead
    of the later one overriding the earlier one.

    `Omit` values are preserved (they mark a header for removal and are only
    dropped at request-build time, e.g. with `_strip_omit`); the
    `Dict[str, str]` return type is the same fudge the rest of the header
    plumbing already uses for `Omit`-bearing header mappings.
    r  )r   r"  _APPEND_HEADERSr=  r   r   rZ  r   )mappingsmergedrI  r_  r`  r"  ra  s          r}   r  r  
  s     +-F &!--/ 	&JCIIKEO+#s zz%(H(C(Zs-C 4Xu Eu !&u	&&"  &))r   c                    | j                   j                  }t        |      r|j                  t              nd}t        |t              r|dv r|S y)zLThe raw-response mode the original caller entered the middleware chain with.N)rg  rh  r  )r   r  r:   r=  rM   r   r   )r   r  modes      r}   rO  rO  8
  sC    oo%%G/7/@7;;*+dD$)B!Br   c                    t        | j                        }t        |j                        rt	        |j                        ni }|j                  t              dvr	d|t        <   ||_        |S )at  Build the options the base middleware handler hands to `_attempt_request()`.

    Returns a copy so that mutations made by the request pipeline never leak back
    into the `APIRequest` between separate `call_next(...)` invocations, with the
    raw-response header set so that the pipeline produces an `APIResponse` /
    `AsyncAPIResponse` for the middleware chain.
    )rg  rh  rg  )r>   r   r:   r  r   r=  rM   )r   r   r  s      r}   r<  r<  B
  sY     )G'/'@d7??#bG{{&'/@@ (-#$GONr   c                n    t        |       xs | }t        j                  |      xr t        |t              S )zFWhether the given `cast_to` asks for the `APIResponse` wrapper itself.)r   rv  rw  rx  rF   )rc  rp  s     r}   rP  rP  X
  s,     +GF??6"Jz&/'JJr   )rL  Query | Noner  zHeaders | Noner  rc  r  r  r!  r   r   z'float | httpx.Timeout | None | NotGivenr   zPostParser | NotGivenr   r2   )r   Platform)r  r   r  zPlatform | Noner   r  r   )r   Arch)rI  Mapping[_T_co, Union[_T, Omit]]r   Dict[_T_co, _T])rK  rf  rL  rf  r   rg  )ra  r   rW  r   r   r   )r]  zMapping[str, Union[str, Omit]]r   r  )r   rD   r   z'Literal['raw', 'stream', 'true'] | None)r   rD   r   rA   )rc  r   r   r   )
__future__r   r  rw   r  r  r  r  r  rv  rA  r  r  email.utilstypesr   r   typingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   typing_extensionsr   r   r   r  r   r,  r   r   r   r   r   r    r!   _qsr#   _filesr$   r%   _typesr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   _utilsr7   r8   r9   r:   r;   r<   _compatr=   r>   r?   _modelsr@   rA   rB   rC   _requestrD   	_responserE   rF   rG   rH   
_constantsrI   rJ   rK   rL   rM   rN   rO   
_streamingrP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r   rZ   r[   r\   r]   r^   r_   r`   ra   _utils._jsonrb   _utils._httpxrc   _legacy_responserd   	getLoggerr   re   r   rf   rh   ri   rj   rl   rm   httpx._configrn   r  ImportErrorrq   r   r   r   r   r  r  r   r   r   r  DefaultHttpxClientr  r   r  httpx_aiohttpHttpxAiohttpClientr  DefaultAsyncHttpxClientDefaultAioHttpClientr  r   r
  r   rK  r  rd  r  r  r6  re  r3  r4  r2  r  rE  	frozensetr\  rZ  r  rO  r<  rP  rz   r   r}   <module>r     s   " 
                 ( < ;     ? ?     8    & P O 8 8 U U      I H 	 	 	 ( 2 /'g''1^ 1 K':;	\)=>
 T]4(:VC[1{3/?@ 3-Q0B 0Bf:6|WR[ :6z.a8B< .ab$WR^, $N&gHRL'"+ &gR uU\\5CTCT5T/UV+5kRUFV9V3WXI878 I8X.#%,, .#b  -/ D
9Ju||VC[89 D
9N.#u00 .#b'' @ @ ' #// !,,_60	5 	G
9Z 1 1;s3C CD G
9X $( $""&7@)2"" "" 	"
 "  " 5" '" "Jc4i 
$ $ 		
'T 4 $ $ Y GHHI4Y
)
))
)) )" 123 *F,KiN  - '-P0  yy 1 1 yys$   O O  OO O?>O?