
    _j/                        d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZ d dlmZmZmZ  ej        e          ZdZd	Zd
ZdZddhZ G d dee          Z G d de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de          Z#de$de$fdZ% G d d ee          Z& G d! d"e&          Z' G d# d$e&          Z(dS )%    N)ABC)Any)InferenceProviderMapping)RequestParameters_as_dict_as_url)BaseConversationalTaskBaseTextGenerationTaskTaskProviderHelperfilter_none)get_sessionhf_raise_for_statusloggingtogetherzhttps://api.together.xyzg       @   queuedin_progressc                   <     e Zd ZdZdef fdZdededefdZ xZS )TogetherTaskz"Base class for Together API tasks.taskc                 d    t                                          t          t          |           d S )N)providerbase_urlr   super__init__	_PROVIDER	_BASE_URL)selfr   	__class__s     j/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/huggingface_hub/inference/_providers/together.pyr   zTogetherTask.__init__(   s(    )idKKKKK    mapped_modelapi_keyreturnc                     | j         xxdk    rn	xdk    rn n  dS xdk    r dS xdk    r dS xdk    rn	xd	k    rn n d
S t          d| j          d          )Ntext-to-imageimage-to-imagez/v1/images/generationstext-to-speechz/v1/audio/speechfeature-extractionz/v1/embeddingstext-to-videoimage-to-videoz
/v2/videoszUnsupported task 'z' for Together API.)r   
ValueError)r   r#   r$   s      r!   _prepare_routezTogetherTask._prepare_route+   s    i3#3#3#3#3#3#3#3#3#3//!!!!!))%%%%%'' #3#3#3#3#3#3#3#3#|LdiLLLMMMr"   )__name__
__module____qualname____doc__strr   r.   __classcell__r    s   @r!   r   r   %   s        ,,LS L L L L L LN3 N N N N N N N N N Nr"   r   c                   @     e Zd Z fdZddeez  dedz  defdZ xZ	S )TogetherTextGenerationTaskc                 b    t                                          t          t                     d S N)r   r   r   r   r    s    r!   r   z#TogetherTextGenerationTask.__init__:   &    )i@@@@@r"   Nresponserequest_paramsr%   c                     t          |          d         d         }|d         |                    d          |                    d          ddS )Nchoicesr   textfinish_reasonseed)rA   rB   )generated_textdetails)r   get)r   r<   r=   outputs       r!   get_responsez'TogetherTextGenerationTask.get_response=   sW    (##I.q1$Vn!'O!<!<

6** 
 
 	
r"   N)
r/   r0   r1   r   bytesdictr   r   rG   r4   r5   s   @r!   r7   r7   9   sw        A A A A A
 
UT\ 
CTW[C[ 
gj 
 
 
 
 
 
 
 
r"   r7   c            	       @     e Zd Z fdZdededededz  f fdZ xZS )TogetherConversationalTaskc                 b    t                                          t          t                     d S r9   r   r:   s    r!   r   z#TogetherConversationalTask.__init__I   r;   r"   inputs
parametersprovider_mapping_infor%   Nc                 h   t                                          |||          }|d S |                    d          }t          |t                    r_|                    d          dk    rFt          |                    d          t                    rd|d         v rd|d         d         d|d<   |S )Nresponse_formattypejson_schemaschema)rS   rU   )r   _prepare_payload_as_dictrE   
isinstancerJ   )r   rN   rO   rP   payloadrR   r    s         r!   rV   z3TogetherConversationalTask._prepare_payload_as_dictL   s     ''226:G\]]?4 "++&788--		##F++}<<?..}==tDD =OM::: &)-8B* *G%& r"   	r/   r0   r1   r   r   rJ   r   rV   r4   r5   s   @r!   rL   rL   H   s        A A A A A'+D\	         r"   rL   c            	       ^     e Zd Z fdZdededededz  fdZddeez  d	e	dz  defd
Z
 xZS )TogetherTextToImageTaskc                 J    t                                          d           d S )Nr'   r   r   r:   s    r!   r   z TogetherTextToImageTask.__init__c   !    )))))r"   rN   rO   rP   r%   Nc                 |    |j         }t          |          }d|v r|                    d          |d<   |dd|d|iS )Nnum_inference_stepsstepsbase64)promptrR   model)provider_idr   pop)r   rN   rO   rP   r#   s        r!   rV   z0TogetherTextToImageTask._prepare_payload_as_dictf   sY     -8 ,,
 J..",..1F"G"GJw XcccWVbcccr"   r<   r=   c                 l    t          |          }t          j        |d         d         d                   S Ndatar   b64_jsonr   rb   	b64decoder   r<   r=   response_dicts       r!   rG   z$TogetherTextToImageTask.get_responsep   /     **f 5a 8 DEEEr"   rH   r/   r0   r1   r   r   rJ   r   rV   rI   r   rG   r4   r5   s   @r!   r[   r[   b   s        * * * * *dd'+dD\d	d d d dF FUT\ FCTW[C[ Fgj F F F F F F F Fr"   r[   c            	       ^     e Zd Z fdZdededededz  fdZddeez  d	e	dz  defd
Z
 xZS )TogetherImageToImageTaskc                 J    t                                          d           d S )Nr(   r]   r:   s    r!   r   z!TogetherImageToImageTask.__init__v   "    )*****r"   rN   rO   rP   r%   Nc                 "   |j         }t          |d          }t          |          }|                    dd          }d|v r|                    d          |d<   |                                }d|v od|v }|rd	|ind
|gi}	d|i|	ddi|d|iS )Nz
image/jpegdefault_mime_typerc    r`   ra   kontextzflux.1	image_urlreference_imagesrR   rb   rd   )re   r   r   rf   lower)
r   rN   rO   rP   r#   rz   rc   lowereduse_image_urlimage_fields
             r!   rV   z1TogetherImageToImageTask._prepare_payload_as_dicty   s     -8FlCCC	
 !,,
"-- J..",..1F"G"GJw $$&&!W,DW1DBO&v{I&>&>VhktjuUvf

 x
 
 	

 \
 
 	
r"   r<   r=   c                 l    t          |          }t          j        |d         d         d                   S rh   rk   rm   s       r!   rG   z%TogetherImageToImageTask.get_response   ro   r"   rH   rp   r5   s   @r!   rr   rr   u   s        + + + + +

'+
D\
	
 
 
 
>F FUT\ FCTW[C[ Fgj F F F F F F F Fr"   rr   c            	       ^     e Zd Z fdZdededededz  fdZddeez  d	e	dz  defd
Z
 xZS )TogetherFeatureExtractionTaskc                 J    t                                          d           d S )Nr*   r]   r:   s    r!   r   z&TogetherFeatureExtractionTask.__init__   s"    -.....r"   rN   rO   rP   r%   Nc                 4    ||j         dt          |          S N)inputrd   re   r   r   rN   rO   rP   s       r!   rV   z6TogetherFeatureExtractionTask._prepare_payload_as_dict   s.     *6
 
 *%%
 	
r"   r<   r=   c                 @    d t          |          d         D             S )Nc                     g | ]
}|d          S )	embedding ).0items     r!   
<listcomp>z>TogetherFeatureExtractionTask.get_response.<locals>.<listcomp>   s    IIId[!IIIr"   ri   )r   r   r<   r=   s      r!   rG   z*TogetherFeatureExtractionTask.get_response   s#    IIhx.@.@.HIIIIr"   rH   rp   r5   s   @r!   r   r      s        / / / / /

'+
D\
	
 
 
 
J JUT\ JCTW[C[ Jgj J J J J J J J Jr"   r   c            	       ^     e Zd Z fdZdededededz  fdZddeez  d	e	dz  defd
Z
 xZS )TogetherTextToSpeechTaskc                 J    t                                          d           d S )Nr)   r]   r:   s    r!   r   z!TogetherTextToSpeechTask.__init__   rt   r"   rN   rO   rP   r%   Nc                 4    ||j         dt          |          S r   r   r   s       r!   rV   z1TogetherTextToSpeechTask._prepare_payload_as_dict   s.     *6
 
 *%%
 	
r"   r<   r=   c                 z    t          |t                    r|S t          dt          |          j         d          )Nz1Expected raw audio bytes for text-to-speech, got .)rW   rI   r-   rS   r/   r   s      r!   rG   z%TogetherTextToSpeechTask.get_response   s=    h&& 	OgTRZ^^Mdggghhhr"   rH   rp   r5   s   @r!   r   r      s        + + + + +



'+

D\

	

 

 

 

i iUT\ iCTW[C[ igj i i i i i i i ir"   r   rO   r%   c                     t          |           } d| v r|                     d          | d<   d| v r3|                     d          }d|v r|d         | d<   d|v r|d         | d<   | S )zNMap HF inference-client conventions onto Together's video API parameter names.r`   ra   target_sizewidthheight)r   rf   )rO   r   s     r!   _normalize_video_parametersr      s    Z((J
**(nn-BCC
7
"" nn]33k!!"-g"6Jw{""#.x#8Jx r"   c                   4    e Zd ZdZddeez  dedz  defdZdS )TogetherVideoTaskz>Base class for Together's asynchronous video generation tasks.Nr<   r=   r%   c                 $   |t          d          t          |          }|                    d          }|st          d          |j         d| }t                              d           |                    d          }t          t                    D ]}||t          vr nt          j
        t                     t                                          ||j                  }t          |           |                                }|                    d          }||t          vr nt          dt           d	          |d
k    r>|                    d          pi }	t!          d|	                    d          pd           |dk    rt!          d|          |                    d          pi                     d          }
|
st          d          t                                          |
          }t          |           |j        S )NzEA `RequestParameters` object is required to poll Together video jobs.idz6No job ID found in Together video generation response./z+Generating video, polling for completion...status)headersuI   Timed out while waiting for Together video generation — aborting after z status pollsfailederrorz"Together video generation failed: messagezUnknown error	completedz&Unexpected Together video job status: outputs	video_urlz3No video URL found in completed Together video job.)r-   r   rE   urlloggerinforange_VIDEO_MAX_POLL_ATTEMPTS_VIDEO_PENDING_STATUSEStimesleep_VIDEO_POLLING_INTERVALr   r   r   jsonRuntimeErrorcontent)r   r<   r=   jobjob_id
status_urlr   _status_responser   r   video_responses               r!   rG   zTogetherVideoTask.get_response   s3   !deeex   	WUVVV '*55V55
ABBB ""/00 	 	A!f4K&K&KJ.///)mm//
NDZ/[[O000!&&((CWWX&&F!f4K&K&KN&>N N N  
 XGGG$$*EmEIIiDXDXDk\kmmnnn[  RRRSSSWWY''-222;??	 	TRSSS$**955N+++%%r"   rH   )	r/   r0   r1   r2   rI   rJ   r   r   rG   r   r"   r!   r   r      sT        HH-& -&UT\ -&CTW[C[ -&gj -& -& -& -& -& -&r"   r   c            	       <     e Zd Z fdZdededededz  fdZ xZS )TogetherTextToVideoTaskc                 J    t                                          d           d S )Nr+   r]   r:   s    r!   r   z TogetherTextToVideoTask.__init__  r^   r"   rN   rO   rP   r%   Nc                 4    ||j         dt          |          S )N)rc   rd   )re   r   r   s       r!   rV   z0TogetherTextToVideoTask._prepare_payload_as_dict	  s.     *6
 
 **55
 	
r"   rY   r5   s   @r!   r   r     sp        * * * * *

'+
D\
	
 
 
 
 
 
 
 
r"   r   c            	       <     e Zd Z fdZdededededz  fdZ xZS )TogetherImageToVideoTaskc                 J    t                                          d           d S )Nr,   r]   r:   s    r!   r   z!TogetherImageToVideoTask.__init__  rt   r"   rN   rO   rP   r%   Nc                 Z    |j         t          |d          ddgdt          |          S )Nz	image/pngrv   first)input_imageframe)rd   frame_images)re   r   r   r   s       r!   rV   z1TogetherImageToVideoTask._prepare_payload_as_dict  sG     +6-4V{-[-[-[fmnno
 
 **55
 	
r"   rY   r5   s   @r!   r   r     sp        + + + + +

'+
D\
	
 
 
 
 
 
 
 
r"   r   ))rb   r   abcr   typingr   huggingface_hub.hf_apir   !huggingface_hub.inference._commonr   r   r   ,huggingface_hub.inference._providers._commonr	   r
   r   r   huggingface_hub.utilsr   r   r   
get_loggerr/   r   r   r   r   r   r   r   r7   rL   r[   rr   r   r   rJ   r   r   r   r   r   r"   r!   <module>r      s                 ; ; ; ; ; ;         
            L K K K K K K K K K 
	H	%	%	&	     $]3 N N N N N%s N N N(
 
 
 
 
!7 
 
 
    !7   4F F F F Fl F F F&%F %F %F %F %F| %F %F %FPJ J J J JL J J J"i i i i i| i i i,D T    0& 0& 0& 0& 0&c 0& 0& 0&f
 
 
 
 
/ 
 
 

 
 
 
 
0 
 
 
 
 
r"   