o
    êi                  
   @   s  d dl Z d dlZd dlm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 d dlZd dlZd dlZddlmZ G dd dZed	Zed
Ze jG dd de
eef ZG dd de
eef Ze jG dd de
e ZG dd de
e Ze jG dd dZejZe	eeef Zdeeejef e	eeef f deeef fddZee	e e df  Z!deeejef e	eee	e e df f f dee fddZ"dS )    N)	responses)AnyAsyncGenerator	AwaitableCallable	GeneratorGenericTypeVar)Concatenate	ParamSpec   )HttpCodeErrc                   @   s   e Zd ZU eed< ejed< ejed< dddedefdd	Zd
d Z	dd Z
dd Zdd Zdd Zdd ZedejddfddZdS )
RemoteCall	_base_url_async_client_sync_clientzhttps://api.fish.audio)base_urlapikeyr   c                C   s    || _ || _|   |   d S N)_apikeyr   init_async_clientinit_sync_client)selfr   r    r   E/home/ubuntu/.local/lib/python3.10/site-packages/fish_audio_sdk/io.py__init__   s   zRemoteCall.__init__c                 C   &   t j| jd| j ddd d| _d S NzBearer zfish-audio/python/legacy)Authorizationz
User-Agent)r   headerstimeout)httpxAsyncClientr   r   r   r   r   r   r   r   "      
zRemoteCall.init_async_clientc                 C   r   r   )r!   Clientr   r   r   r#   r   r   r   r   ,   r$   zRemoteCall.init_sync_clientc                    s   | j jr	|   | S r   )r   	is_closedr   r#   r   r   r   
__aenter__6   s   zRemoteCall.__aenter__c                    s   | j  I d H  d S r   )r   acloser   exc_type	exc_value	tracebackr   r   r   	__aexit__;   s   zRemoteCall.__aexit__c                 C   s   | j jr|   | S r   )r   r&   r   r#   r   r   r   	__enter__>   s   zRemoteCall.__enter__c                 C   s   | j   d S r   )r   closer)   r   r   r   __exit__C   s   zRemoteCall.__exit__respreturnNc                 C   sd   | j s0z	tdi |   tjy   t| jt| j d ty/   t| j|  d dw d S )N)statusmessagedetailr   )
is_successr   jsonr!   ResponseNotReadstatus_codehttp_responses	TypeError)r1   r   r   r   _try_raise_http_exceptionF   s   z$RemoteCall._try_raise_http_exception)__name__
__module____qualname__str__annotations__r!   r"   r%   r   r   r   r'   r-   r.   r0   staticmethodResponser<   r   r   r   r   r      s   
 



r   PRc                   @   s   e Zd ZU eeeef ee f e	d< eeeef ef e	d< ee	d< dej
dejdefddZdej
dejdee fd	d
ZdS )IOCall
_awaitable	_syncablethisargskwargsr2   c                 O      | j | jg|R i |S r   rH   rI   r   rJ   rK   r   r   r   __call___      zIOCall.__call__c                 O   rL   r   rG   rI   rN   r   r   r   	awaitableb   rP   zIOCall.awaitableN)r=   r>   r?   r   r
   r   rD   r   rE   rA   rJ   rK   rO   rR   r   r   r   r   rF   Y   s   
 "rF   c                   @   sd   e Zd Zdeeeef ee f deeeef ef fddZ	dede
e deeef fdd	Zd
S )IOCallDescriptorrR   syncablec                 C      || _ || _d S r   rR   rT   r   rR   rT   r   r   r   r   g      
zIOCallDescriptor.__init__instanceownerr2   c                 C      t | j| j|S r   )rF   rR   rT   r   rY   rZ   r   r   r   __get__o      zIOCallDescriptor.__get__N)r=   r>   r?   r   r
   r   rD   r   rE   r   typerF   r]   r   r   r   r   rS   f   s    
&rS   c                	   @   s   e Zd ZU eeeef eedf f e	d< eeeef e
eddf f e	d< ee	d< dejdejde
eddf fdd	Zdejdejdeedf fd
dZdS )StreamIOCallNrG   rH   rI   rJ   rK   r2   c                 O   rL   r   rM   rN   r   r   r   rO   y   s   zStreamIOCall.__call__c                 O  s6   | j | jg|R i |2 z	3 d H W }|V  q6 d S r   rQ   )r   rJ   rK   chunkr   r   r   rR   ~   s   &zStreamIOCall.awaitable)r=   r>   r?   r   r
   r   rD   r   bytesrA   r   rJ   rK   rO   rR   r   r   r   r   r`   s   s$   
  "

r`   c                	   @   sn   e Zd Zdeeeef eedf f deeeef e	eddf f fddZ
dedee dee fd	d
ZdS )StreamIOCallDescriptorrR   NrT   c                 C   rU   r   rV   rW   r   r   r   r      rX   zStreamIOCallDescriptor.__init__rY   rZ   r2   c                 C   r[   r   )r`   rR   rT   r\   r   r   r   r]      r^   zStreamIOCallDescriptor.__get__)r=   r>   r?   r   r
   r   rD   r   rb   r   r   r_   r`   r]   r   r   r   r   rc      s    
"rc   c                   @   s   e Zd ZU eed< eed< dZejjdB ed< dZ	ejj
dB ed< dZejjdB ed< dZedB ed< dZejjdB ed< dZejjdB ed	< dZejjdB ed
< dZejjed< dZejjdB ed< dS )RequestmethodurlNcontentdatafilesr7   paramsr   cookiesr    
extensions)r=   r>   r?   r@   rA   rg   r!   _typesRequestContentrh   RequestDatari   RequestFilesr7   r   rj   QueryParamTypesr   HeaderTypesrk   CookieTypesr    TimeoutTypesrl   RequestExtensionsr   r   r   r   rd      s   
 rd   funcr2   c                    sR   dt dtjdtjdtf fdd}dt dtjdtjdtf fdd}t||}|S )	Nr   rJ   rK   r2   c              
      s    | g|R i |}t |}| jjdi t|}| j|I d H }| | z
|| W t	d tyI } z	|jW  Y d }~S d }~ww NGenerator did not stopr   )
nextr   build_requestdataclassesasdictsendr<   StopIterationvalueRuntimeErrorr   rJ   rK   grequestr1   excrv   r   r   async_wrapper   s   
zconvert.<locals>.async_wrapperc              
      s    | g|R i |}t |}| jjdi t|}| j|}| | z
|| W t	d tyE } z	|jW  Y d }~S d }~ww rw   )
ry   r   rz   r{   r|   r}   r<   r~   r   r   r   r   r   r   sync_wrapper   s   
zconvert.<locals>.sync_wrapper)r   rD   rJ   rK   rE   rS   rv   r   r   callr   r   r   convert   s   ""
r   c                    sd   dt dtjdtjdttd f f fdd}dt dtjdtjdttd d f f fdd}t||}|S )	Nr   rJ   rK   r2   c           	        s   | g|R i |}t |}| jjdi t|}| jj|ddI d H }| | z
|| W td ty } zK|j}t | z5z|	 2 z3 d H W }||V  qK6 |dV  W n tyt   Y W |
  W Y d }~d S w W |
  n|
  w W Y d }~tdd }~ww NT)stream    rx   r   )ry   r   rz   r{   r|   r}   r<   r~   r   aiter_bytesr/   r   	r   rJ   rK   r   r   r1   r   	generatorra   r   r   r   r      s4   
z%convert_stream.<locals>.async_wrapperc           	      ?   s    | g|R i |}t |}| jjdi t|}| jj|dd}| | z
|| W td ty } zFz7z|j}t | |	 D ]}||V  qH|dV  W n tyl   Y W |
  W Y d }~d S w W |
  n|
  w W Y d }~tdd }~ww r   )ry   r   rz   r{   r|   r}   r<   r~   r   
iter_bytesr/   r   r   r   r   r   r      s2   
z$convert_stream.<locals>.sync_wrapper)r   rD   rJ   rK   r   rb   r   rc   r   r   r   r   convert_stream   s(   

r   )#r{   typinghttp.clientr   r:   r   r   r   r   r   r   r	   typing_extensionsr
   r   r!   httpx._clienthttpx._types
exceptionsr   r   rD   rE   	dataclassrF   rS   r`   rc   rd   rC   Gr   rb   GStreamr   r   r   r   r   <module>   sJ    $
>

!