
    +h$                    ~   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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mZmZmZ ddlmZ ddlmZ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( ejR                  e*      Z+de,d<    G d de
e(         Z- G d de.      Z/ddZ0ddZ1ddZ2y)    )annotationsN)TYPE_CHECKINGAnyUnionGenericTypeVarCallablecast)	Awaitable	ParamSpecget_argsoverride
get_origin   )NoneTypeUnknownResponseBinaryResponseContent)is_given)	BaseModelis_basemodel)RAW_RESPONSE_HEADER)APIResponseValidationError)FinalRequestOptions)Stream
BaseClientAsyncStreamPRzlogging.Loggerlogc                  <   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          C/var/www/html/venv/lib/python3.12/site-packages/openai/_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)r0   parseds     r7   parsezAPIResponse.parse9   sS    <<#<<DMM--.]]..v6Fr9   c                .    | j                   j                  S r/   )r-   headersr0   s    r7   r@   zAPIResponse.headersD       !!)))r9   c                .    | j                   j                  S r/   )r-   requestrA   s    r7   http_requestzAPIResponse.http_requestH   rB   r9   c                .    | j                   j                  S r/   )r-   status_coderA   s    r7   rG   zAPIResponse.status_codeL   s    !!---r9   c                .    | j                   j                  S r/   )r-   urlrA   s    r7   rI   zAPIResponse.urlP   s    !!%%%r9   c                .    | j                   j                  S r/   )rE   methodrA   s    r7   rK   zAPIResponse.methodT   s      '''r9   c                .    | j                   j                  S r/   )r-   contentrA   s    r7   rM   zAPIResponse.contentX   rB   r9   c                .    | j                   j                  S r/   )r-   textrA   s    r7   rO   zAPIResponse.text\   s    !!&&&r9   c                .    | j                   j                  S r/   )r-   http_versionrA   s    r7   rQ   zAPIResponse.http_version`   s    !!...r9   c                .    | j                   j                  S )zCThe time taken for the complete request/response cycle to complete.)r-   elapsedrA   s    r7   rS   zAPIResponse.elapsedd   s     !!)))r9   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  rxtA        |      r/	 |jC                         }| j                  jE                  |||      S | j                  jN                  rtQ        |d| d|j                        |j                  S |jC                         }| j                  jE                  |||      S # tF        $ r*}tH        jK                  dtM        |      |       Y d }~d }~ww xY w)N)r2   responser3   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/json)datar2   rU   z5Could not read JSON from response data due to %s - %szMExpected Content-Type response header to be `application/json` but received `z
` instead.)rU   messagebody))r(   r*   r
   r   _extract_stream_chunk_typer-   r   r%   _default_stream_clsMissingStreamClassErrorr#   r   strrO   r   inspectisclass
issubclassr   r!   RuntimeErrorhttpxResponse
ValueErrorr   listdictr   r   r@   getsplitr   json_process_response_data	Exceptionr   debugtype_strict_response_validationr   )	r0   r5   r2   rU   origincontent_type_rX   excs	            r7   r;   zAPIResponse._parsei   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--G$	#==?D  <<>>! '!) ?   ||770%klxky  zD  E!  == }}||22 3 
 	
/ ! gIIUW[\_W`beffgs   L! !	M* MMc                j    d| j                    d| j                  j                   d| j                   dS )Nz<APIResponse [ z] type=>)rG   r-   reason_phraser#   rA   s    r7   __repr__zAPIResponse.__repr__   s;     0 0143E3E3S3S2TT[\`\i\i[jjkllr9   N)r1   r,   r2   r"   r3   r$   r4   r'   r5   r)   r6   r   returnNone)ry   r   )ry   zhttpx.Headers)ry   zhttpx.Request)ry   int)ry   z	httpx.URL)ry   r^   )ry   bytes)ry   zdatetime.timedelta)__name__
__module____qualname____annotations__r8   r>   propertyr@   rE   rG   rI   rK   rM   rO   rQ   rS   r;   r   rx    r9   r7   r!   r!      sM   !!MBB!!!!! ! 	!
 %! ! F! %! 
!$	 * * * * . . & & ( ( * * ' ' / / * *h
T m mr9   r!   c                        e Zd Zd fdZ xZS )r]   c                $    t         |   d       y )NzzThe `stream` argument was set to `True` but the `stream_cls` argument was not given. See `openai._streaming` for reference)superr8   )r0   	__class__s    r7   r8   z MissingStreamClassError.__init__   s     I	
r9   )ry   rz   )r}   r~   r   r8   __classcell__)r   s   @r7   r]   r]      s    
 
r9   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
   rn   )r5   argss     r7   r[   r[      s;    JDlmwlxy
 	
 d1gr9   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   rh   r   r!   r   r   kwargsr   funcs      r7   wrappedz(to_raw_response_wrapper.<locals>.wrapped   sR    JDfjj&ABHbJ-3)*"/KND$$9&$9::r9   r   zP.argsr   zP.kwargsry   zAPIResponse[R]	functoolswrapsr   r   s   ` r7   to_raw_response_wrapperr      s'    
 __T; ; Nr9   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      r7   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   ` r7   async_to_raw_response_wrapperr      s)    
 __TA A Nr9   )r5   rn   ry   rn   )r   zCallable[P, R]ry   zCallable[P, APIResponse[R]])r   zCallable[P, Awaitable[R]]ry   z&Callable[P, Awaitable[APIResponse[R]]])3
__future__r   r_   loggingdatetimer   typingr   r   r   r   r   r	   r
   typing_extensionsr   r   r   r   r   rc   _typesr   r   r   _utilsr   _modelsr   r   
_constantsr   _exceptionsr   r   _base_clientr   r   r   r   r   	getLoggerr}   r   r   r!   r   r]   r[   r   r   r   r9   r7   <module>r      s    "     N N N R R  D D  , + 3,== cNCL'g''1^ 1xm'!* xmv
i 
"r9   