
    "hj                        d dl mZ d dlZd dlZd dlmZmZmZ d dlZddl	m
Z
mZ  G d de      ZddZdd	Zdd
ZddZddZddZddZddZddZd dZd!dZd"dZd#dZd$dZd%dZd&dZd'dZy)(    )annotationsN)AnyProtocolcast   )DEFAULT_TIMEOUTDEFAULT_CONNECTION_LIMITSc                  |    e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   y)_Httpx2Moduleztype[httpx.Auth]Authztype[httpx.Client]Clientztype[httpx.AsyncClient]AsyncClientztype[httpx.URL]URLztype[httpx.Response]Responseztype[httpx.Timeout]Timeoutztype[httpx.Limits]Limitsztype[httpx.TimeoutException]TimeoutExceptionztype[httpx.HTTPStatusError]HTTPStatusErrorztype[httpx.StreamConsumed]StreamConsumedztype[httpx.RequestNotRead]RequestNotReadN)__name__
__module____qualname____annotations__     L/root/.hermes/SkillClaw/.venv/lib/python3.12/site-packages/openai/_httpx2.pyr   r      sD    
((	""  2200....r   r   c                 f    t         j                  j                  d      } | y t        t        |       S )Nhttpx2)sysmodulesgetr   r   modules    r   _loaded_httpx2r%      s)    [[__X&F~v&&r   c                 (    t         j                  dk\  S )N)   
   )r    version_infor   r   r   _supports_httpx2r*   !   s    w&&r   c                     t               st        d      	 t        j                  d      } t        t        |       S # t        $ r t        d      d w xY w)NzwHTTPX2 requires Python 3.10 or later; install the httpx2 extra on a supported interpreter: pip install 'openai[httpx2]'r   zETo use HTTPX2, install the httpx2 extra: pip install 'openai[httpx2]')r*   RuntimeError	importlibimport_moduleImportErrorr   r   r#   s    r   _require_httpx2r0   %   sa    +
 	

n((2 v&&  nbcimmns	   < Ac                N    t               }|d uxr t        | |j                        S N)r%   
isinstancer   valuer$   s     r   is_httpx2_sync_clientr6   4   s%    FB*UFMM"BBr   c                N    t               }|d uxr t        | |j                        S r2   )r%   r3   r   r4   s     r   is_httpx2_async_clientr8   9   s'    FG*UF4F4F"GGr   c                    t               }|4t        | |j                        rt        j                  t	        |             S t        | t        j                        r| S t        j                  |       S r2   )r%   r3   r   httpxstrr4   s     r   normalize_httpx_urlr<   >   sR    Fj

;yyU$$%#99Ur   c                 t    t               } | t        j                  fS t        j                  | j                  fS r2   )r%   r:   r   r#   s    r   http_response_typesr>   G   s/    F~  NNFOO,,r   c                    t               }|9t        | |j                        r#t        j                  di | j	                         S | S Nr   )r%   r3   r   r:   as_dictr4   s     r   normalize_httpx_timeoutrB   N   s:    Fj?}}/u}}//Lr   c                    t        | t        j                        r( t               j                  di | j	                         S | S r@   )r3   r:   r   r0   rA   r5   s    r   normalize_httpx2_timeoutrE   U   s4    %'( ((;5==?;;Lr   c                l    t        |       t        j                  u rt               j                         S | S r2   )typer:   r   r0   rD   s    r   normalize_httpx2_authrH   [   s)    E{ejj  %%''Lr   c                 t    t               } | t        j                  fS t        j                  | j                  fS r2   )r%   r:   r   r#   s    r   timeout_exceptionsrJ   a   s5    F~&&((""F$;$;<<r   c                 t    t               } | t        j                  fS t        j                  | j                  fS r2   )r%   r:   r   r#   s    r   status_exceptionsrL   h   s5    F~%%''!!6#9#9::r   c                 t    t               } | t        j                  fS t        j                  | j                  fS r2   )r%   r:   r   r#   s    r   stream_consumed_exceptionsrN   o   5    F~$$&&  &"7"788r   c                 t    t               } | t        j                  fS t        j                  | j                  fS r2   )r%   r:   r   r#   s    r   request_not_read_exceptionsrQ   v   rO   r   c                P   t               }| j                  dt              }t        |      | d<   | j                  dt              }t        |t        j                        r5|j                  |j                  |j                  |j                        | d<   | j                  dd       |S )Ntimeoutlimits)max_connectionsmax_keepalive_connectionskeepalive_expiryfollow_redirectsT)r0   r"   r   rE   r	   r3   r:   r   rU   rV   rW   
setdefault)kwargsr$   rS   rT   s       r   _set_httpx2_defaultsr[   }   s    FjjO4G09F9ZZ";<F&%,,'!=="22&,&F&F#44 ) 
x ($/Mr   c                 <    t        |       } |j                  di | S )zICreate an experimental HTTPX2 client with the SDK's recommended defaults.r   )r[   r   rZ   r$   s     r   DefaultHttpx2Clientr^      s     !&)F6=="6""r   c                 <    t        |       } |j                  di | S )zOCreate an experimental async HTTPX2 client with the SDK's recommended defaults.r   )r[   r   r]   s     r   DefaultAsyncHttpx2Clientr`      s"    !&)F6'''r   )returnz_Httpx2Module | None)ra   bool)ra   r   )r5   objectra   rb   )r5   zstr | httpx.URLra   z	httpx.URL)ra   z tuple[type[httpx.Response], ...])r5   float | httpx.Timeout | Nonera   rd   )r5   
httpx.Authra   re   )ra   z(tuple[type[httpx.TimeoutException], ...])ra   z'tuple[type[httpx.HTTPStatusError], ...])ra   z&tuple[type[httpx.StreamConsumed], ...])ra   z&tuple[type[httpx.RequestNotRead], ...])rZ   zdict[str, Any]ra   r   )rZ   r   ra   zhttpx.Client)rZ   r   ra   zhttpx.AsyncClient)
__future__r   r    r-   typingr   r   r   r:   
_constantsr   r	   r   r%   r*   r0   r6   r8   r<   r>   rB   rE   rH   rJ   rL   rN   rQ   r[   r^   r`   r   r   r   <module>ri      s}    " 
  & &  B/H /'''C
H
-=;99"#(r   