
    -:jA#                    J   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZ d dlmZmZmZmZmZ d dlZd dlZddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lm Z  erddlm!Z! ddl"m#Z#m$Z$m%Z%  ed      Z& e
d      Z' G d de	e'         Z( G d de)      Z*ddZ+ddZ,ddZ-y)    )annotationsN)TYPE_CHECKINGAnyUnionGenericTypeVarCallablecast)	Awaitable	ParamSpecget_argsoverride
get_origin   )NoneTypeUnknownResponseBinaryResponseContent)is_given)	BaseModel)RAW_RESPONSE_HEADER)APIResponseValidationError)FinalRequestOptions)Stream
BaseClientAsyncStreamPRc                  <   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dZddZedd       Zed d       Zed!d       Z	ed"d       Z
ed#d       Zed$d       Zed#d       Zed#d       Zed%d       ZddZed#d       Zy)&APIResponsetype[R]_cast_toBaseClient[Any, Any]_clientzR | None_parsedbool_stream1type[Stream[Any]] | type[AsyncStream[Any]] | None_stream_clsr   _optionshttpx.Responsehttp_responsec               f    || _         || _        d | _        || _        || _        || _        || _        y N)r!   r#   r$   r&   r(   r)   r+   )selfrawcast_toclientstream
stream_clsoptionss          U/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/anthropic/_response.py__init__zAPIResponse.__init__%   s7      %     c                    | j                   | j                   S | j                         }t        | j                  j                        r| j                  j	                  |      }|| _         |S r-   )r$   _parser   r)   post_parser)r.   parseds     r5   parsezAPIResponse.parse7   sS    <<#<<DMM--.]]..v6Fr7   c                .    | j                   j                  S r-   )r+   headersr.   s    r5   r>   zAPIResponse.headersB       !!)))r7   c                .    | j                   j                  S r-   )r+   requestr?   s    r5   http_requestzAPIResponse.http_requestF   r@   r7   c                .    | j                   j                  S r-   )r+   status_coder?   s    r5   rE   zAPIResponse.status_codeJ   s    !!---r7   c                .    | j                   j                  S r-   )r+   urlr?   s    r5   rG   zAPIResponse.urlN   s    !!%%%r7   c                .    | j                   j                  S r-   )rC   methodr?   s    r5   rI   zAPIResponse.methodR   s      '''r7   c                .    | j                   j                  S r-   )r+   contentr?   s    r5   rK   zAPIResponse.contentV   r@   r7   c                .    | j                   j                  S r-   )r+   textr?   s    r5   rM   zAPIResponse.textZ   s    !!&&&r7   c                .    | j                   j                  S r-   )r+   http_versionr?   s    r5   rO   zAPIResponse.http_version^   s    !!...r7   c                .    | j                   j                  S )zCThe time taken for the complete request/response cycle to complete.)r+   elapsedr?   s    r5   rQ   zAPIResponse.elapsedb   s     !!)))r7   c                "   | j                   r| j                  rWt        t        | j                  t	        | j                        | j
                  t        t        | j                                    S t        d| j                  j                        }|
t               t        t         || j                  | j
                  t        t        | j                                    S | j                  }|t        u rt        t        d       S | j
                  }|t        k(  rt        t        |j                        S t        |      xs |}t        j                   |      r&t#        |t$              rt        t         ||            S |t&        k(  rt)        d      t        j                   |      rHt#        |t*        j,                        r.|t*        j,                  k7  rt/        d      t        t        |      S |t0        urS|t2        urK|t4        urC|t6        ur;t#        |t8              s+t)        d| dt8         dt4         dt2         dt6         d	      |j:                  j=                  d
      j?                  d      ^}}|dk7  r>| j                  j@                  rtC        |d| d|j                        |j                  S |jE                         }	 | j                  jG                  |||      S # tH        jJ                  $ r}tC        ||      |d }~ww xY w)N)r0   responser1   r'   z+Unexpected state - cast_to is `APIResponse`z:Subclasses of httpx.Response cannot be passed to `cast_to`zInvalid state, expected z to be a subclass type of z, z or .zcontent-type;zapplication/jsonzMExpected Content-Type response header to be `application/json` but received `z
` instead.)rS   messagebody)datar0   rS   )rS   rW   )&r&   r(   r
   r   _extract_stream_chunk_typer+   r   r#   _default_stream_clsMissingStreamClassErrorr!   r   strrM   r   inspectisclass
issubclassr   r   RuntimeErrorhttpxResponse
ValueErrorr   listdictr   r   r>   getsplit_strict_response_validationr   json_process_response_datapydanticValidationError)	r.   r3   r0   rS   origincontent_type_rX   errs	            r5   r9   zAPIResponse._parseg   s   <<$$ :4;K;K L!%!3!3#C6 %   QSWS_S_SsSstJ!-// MM!//T\\2  --h4= %%c>8==))G$/??6"z&:O'P78,--[ LMM??6"z&%..'I %..( #]__8$$ ?*dNdNeOvy1*7)3Mi[XZ[_Z``bcgbhhlmrlsstu  $++//?EEcJq--||770%klxky  zD  E!  == }}	T<<66! 7  
 '' 	T,hTJPSS	Ts   
K( (L;L		Lc                j    d| j                    d| j                  j                   d| j                   dS )Nz<APIResponse [ z] type=>)rE   r+   reason_phraser!   r?   s    r5   __repr__zAPIResponse.__repr__   s;     0 0143E3E3S3S2TT[\`\i\i[jjkllr7   N)r/   r*   r0   r    r1   r"   r2   r%   r3   r'   r4   r   returnNone)rv   r   )rv   zhttpx.Headers)rv   zhttpx.Request)rv   int)rv   z	httpx.URL)rv   r\   )rv   bytes)rv   zdatetime.timedelta)__name__
__module____qualname____annotations__r6   r<   propertyr>   rC   rE   rG   rI   rK   rM   rO   rQ   r9   r   ru    r7   r5   r   r      sN   !!MBB!!!!! ! 	!
 %! ! F! %! 
!$	 * * * * . . & & ( ( * * ' ' / / * *_TB m mr7   r   c                        e Zd Zd fdZ xZS )r[   c                $    t         |   d       y )Nz}The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `anthropic._streaming` for reference)superr6   )r.   	__class__s    r5   r6   z MissingStreamClassError.__init__   s     L	
r7   )rv   rw   )rz   r{   r|   r6   __classcell__)r   s   @r5   r[   r[      s    
 
r7   r[   c                ^    t        |       }|st        d|        t        t        |d         S )Nz^Expected stream_cls to have been given a generic type argument, e.g. Stream[Foo] but received r   )r   	TypeErrorr
   type)r3   argss     r5   rY   rY      s;    JDlmwlxy
 	
 d1gr7   c                D     t        j                         d fd       }|S )Higher order function that takes one of our bound API methods and wraps it
    to support returning the raw `APIResponse` object directly.
    c                     i t        t        |j                  d            xs i }d|t        <   ||d<   t        t        t
            | i |      S Nextra_headerstruer
   r   rf   r   r   r   r   kwargsr   funcs      r5   wrappedz(to_raw_response_wrapper.<locals>.wrapped   sR    JDfjj&ABHbJ-3)*"/KND$$9&$9::r7   r   zP.argsr   zP.kwargsrv   zAPIResponse[R]	functoolswrapsr   r   s   ` r5   to_raw_response_wrapperr      s'    
 __T; ; Nr7   c                D     t        j                         d fd       }|S )r   c                    K   i t        t        |j                  d            xs i }d|t        <   ||d<   t        t        t
            | i | d {         S 7 wr   r   r   s      r5   r   z.async_to_raw_response_wrapper.<locals>.wrapped   s\     JDfjj&ABHbJ-3)*"/KN$*?*?$?@@$?s   AAA
	Ar   r   r   s   ` r5   async_to_raw_response_wrapperr      s)    
 __TA A Nr7   )r3   r   rv   r   )r   zCallable[P, R]rv   zCallable[P, APIResponse[R]])r   zCallable[P, Awaitable[R]]rv   z&Callable[P, Awaitable[APIResponse[R]]]).
__future__r   r]   datetimer   typingr   r   r   r   r   r	   r
   typing_extensionsr   r   r   r   r   ra   rk   _typesr   r   r   _utilsr   _modelsr   
_constantsr   _exceptionsr   r   _base_clientr   r   r   r   r   r   r   r[   rY   r   r   r   r7   r5   <module>r      s    "    N N N R R   D D   + 3,== cNCLom'!* omd
i 
"r7   