
    "|hi                        d dl mZ d dlZd dlmZ d dlmZ d dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlZg dZddgZe G d	 d
             Z	 	 	 	 ddZ	 	 	 	 ddZ	 d	 	 	 	 	 ddZ	 d	 	 	 	 	 ddZy)    )annotationsN)	dataclass)datetime)Callable	AwaitableOptionalDictAny)zPlay3.0-mini
PlayDialogPlayDialogMultilingualhttp_streaming_urlwebsocket_urlc                  b    e Zd ZU dZded<   dZded<   dZded<   d	Zd
ed<   dZd
ed<   dZ	d
ed<   y)InferenceCoordinatesOptionszhttps://api.play.ht/api/v4strapi_urlNzKOptional[Callable[[str, str, InferenceCoordinatesOptions], Dict[str, Any]]]coordinates_generator_functionzVOptional[Callable[[str, str, InferenceCoordinatesOptions], Awaitable[Dict[str, Any]]]]$coordinates_generator_function_asynci`  int+coordinates_expiration_minimal_frequency_msi )coordinates_expiration_advance_refresh_ms   $coordinates_get_api_call_max_retries)
__name__
__module____qualname__r   __annotations__r   r   r   r   r        Y/var/www/html/test/engine/venv/lib/python3.12/site-packages/pyht/inference_coordinates.pyr   r      sY    /GS/IM # %G N [_ ) +X _7=/=5<-s<01(#1r   r   c                    	 t        j                  |j                   d| d| d      }|j                          |j	                         S # t         j
                  $ r}t        d|       |d }~ww xY wNz	/sdk-authzBearer )z	x-user-idauthorization)headersz%Failed to get inference coordinates: )requestspostr   raise_for_statusjsonRequestExceptionRuntimeError)user_idapi_keyoptionsresponsees        r    default_coordinates_generatorr0      s|    O==GOO#4I!>7>SZ[bZcQd)eg!!#}}$$ OB1#FGQNOs   A	A A3A..A3c                  K   	 t        j                         4 d {   }|j                  |j                   d| d| d      4 d {   }|j	                          |j                          d {   cd d d       d {    cd d d       d {    S 7 }7 P7 *7 7 # 1 d {  7  sw Y   nxY wd d d       d {  7   y # 1 d {  7  sw Y   y xY w# t        j                  $ r}t        d|       |d }~ww xY wwr"   )	aiohttpClientSessionr&   r   r'   r(   r%   r)   r*   )r+   r,   r-   sessionr.   r/   s         r    #default_coordinates_generator_asyncr5   '   s
    O((* 	- 	-g||w&7y$A:A@Gy>Q-S $ T - -W_))+%]]_,	- - -	- 	- 	-- -	-	-- - -	- 	- 	- 	- 	- $$ OB1#FGQNOs   D
C  BC  +CBC$B$3B4B$7CB CC  B"C  D
C  CB$ C"C  $B6	*B-+B6	2C9C  CC  
D
CCCC  D
C   D3DDD
c                   	 |j                   |j                  | ||      }nt        | ||      }d|v sJ d       t        j                  |d   d      }t	        |j                         dz        }t        ||j                  z
  t        j                         dz  |j                  z         |d<   t        D ]M  }||v s
J d|        t        D ]  }|||   v rJ d| d|         ||   d	   j                  d
d      ||   d<   O |S # t        $ rG}	||j                  k\  r|	t        j                  d|dz   z         t!        | |||dz         cY d }	~	S d }	~	ww xY wN
expires_atz,Coordinates response must contain expires_atz%Y-%m-%dT%H:%M:%S.%fZi  refresh_at_msz(Coordinates response must contain model z"Coordinates response must contain z for model r   stream http_nonstreaming_urlg      ?   )r   r0   r   strptimer   	timestampminr   timer   REQUIRED_MODELSREQUIRED_URLSreplace	Exceptionr   sleepget_coordinates
r+   r,   r-   attemptcoordinatesdtexpires_at_msmodelurlr/   s
             r    rG   rG   4   s   K11=!@@'SZ[K7'RK{*Z,ZZ*{<8:QRBLLNT12'*=7;l;l+l+/99;+=@s@s+s(uO$$ 	OEK'[+STYSZ)[['$ Qk%00 Q8[PQ0Q E"#78@@2N 67	O  KgBBBGJJsw{+,"7GWgkJJKs$   CD /D 	E<E
EEc                  K   	 |j                   |j                  | ||       d {   }nt        | ||       d {   }d|v sJ d       t        j                  |d   d      }t	        |j                         dz        }t        ||j                  z
  t        j                         dz  |j                  z         |d<   t        D ]M  }||v s
J d|        t        D ]  }|||   v rJ d| d|         ||   d	   j                  d
d      ||   d<   O |S 7 7 # t        $ rY}	||j                  k\  r|	t        j                   d|dz   z         d {  7   t#        | |||dz          d {  7  cY d }	~	S d }	~	ww xY wwr7   )r   r5   r   r>   r   r?   r@   r   rA   r   rB   rC   rD   rE   r   asynciorF   get_coordinates_asyncrH   s
             r    rQ   rQ   Q   s    W77C ' L LWV]_f ggK CGWV] ^^K{*Z,ZZ*{<8:QRBLLNT12'*=7;l;l+l+/99;+=@s@s+s(uO$$ 	OEK'[+STYSZ)[['$ Qk%00 Q8[PQ0Q E"#78@@2N 67	O ! h^  WgBBBG--! 4555.w'TU+VVVVWss   F "D DD DB)D '/D F D D 	E=$/E8EE8-E0.E82E=3F 8E==F )r+   r   r,   r   r-   r   returnDict[str, Any])r=   )
r+   r   r,   r   r-   r   rI   r   rR   rS   )
__future__r   rP   dataclassesr   r   r%   rA   typingr   r   r   r	   r
   r2   rB   rC   r   r0   r5   rG   rQ   r   r   r    <module>rW      s    "  !    ; ; J%7 2 2 2O+FOKYO
O7R
OWe
O JKK8KCFKO]K< VWW)DWORW[iWr   