
    5pj/                        S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKJrJrJrJr  S SKJrJrJr  \R*                  " \5      rSrS	rS
rSrSS1r " S S\\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r#S\$S\$4S jr% " S S \\5      r& " S! S"\&5      r' " S# S$\&5      r(g)%    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                   J   ^  \ rS rSrSrS\4U 4S jjrS\S\S\4S jrS	rU =r	$ )
TogetherTask%   z"Base class for Together API tasks.taskc                 4   > [         TU ]  [        [        US9  g )N)providerbase_urlr   super__init__	_PROVIDER	_BASE_URL)selfr   	__class__s     i/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/huggingface_hub/inference/_providers/together.pyr   TogetherTask.__init__(   s    )idK    mapped_modelapi_keyreturnc                     U R                   ==S:X  a  O	=S:X  a  O  O    g=S:X  a    g=S:X  a    g=S:X  a    g
=S	:X  a    g
  [        SU R                    S35      e)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_routeTogetherTask._prepare_route+   sX    ii3#33/!)%' 3# $43# 4 -dii[8KLMMr$    )
__name__
__module____qualname____firstlineno____doc__strr   r0   __static_attributes____classcell__r!   s   @r"   r   r   %   s8    ,LS LN3 N N N Nr$   r   c                   N   ^  \ rS rSrU 4S jrS	S\\-  S\S-  S\4S jjr	Sr
U =r$ )
TogetherTextGenerationTask9   c                 2   > [         TU ]  [        [        S9  g N)r   r   r   r    r!   s    r"   r   #TogetherTextGenerationTask.__init__:       )i@r$   Nresponserequest_paramsr'   c                 v    [        U5      S   S   nUS   UR                  S5      UR                  S5      S.S.$ )Nchoicesr   textfinish_reasonseed)rI   rJ   )generated_textdetails)r   get)r    rD   rE   outputs       r"   get_response'TogetherTextGenerationTask.get_response=   sD    (#I.q1$Vn!'O!<

6*
 	
r$   r2   N)r3   r4   r5   r6   r   bytesdictr   r   rO   r9   r:   r;   s   @r"   r=   r=   9   s4    A
UT\ 
CTW[C[ 
gj 
 
r$   r=   c            	       N   ^  \ rS rSrU 4S jrS\S\S\S\S-  4U 4S jjrS	r	U =r
$ )
TogetherConversationalTaskH   c                 2   > [         TU ]  [        [        S9  g r@   r   rA   s    r"   r   #TogetherConversationalTask.__init__I   rC   r$   inputs
parametersprovider_mapping_infor'   Nc                   > [         TU ]  XU5      nUc  g UR                  S5      n[        U[        5      (       aP  UR                  S5      S:X  a;  [        UR                  S5      [        5      (       a  SUS   ;   a  SUS   S   S.US'   U$ )Nresponse_formattypejson_schemaschema)r^   r`   )r   _prepare_payload_as_dictrM   
isinstancerS   )r    rY   rZ   r[   payloadr]   r!   s         r"   ra   3TogetherConversationalTask._prepare_payload_as_dictL   s     '26G\]? "++&78--##F+}<?..}=tDDOM:: &)-8B*G%& r$   r2   r3   r4   r5   r6   r   r   rS   r   ra   r9   r:   r;   s   @r"   rU   rU   H   s7    A'+D\	 r$   rU   c            	       n   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrSS	\	\-  S
\
S-  S\4S jjrSrU =r$ )TogetherTextToImageTaskb   c                 $   > [         TU ]  S5        g )Nr)   r   r   rA   s    r"   r    TogetherTextToImageTask.__init__c       )r$   rY   rZ   r[   r'   Nc                 z    UR                   n[        U5      nSU;   a  UR                  S5      US'   USS.UESU0E$ )Nnum_inference_stepsstepsbase64)promptr]   model)provider_idr   pop)r    rY   rZ   r[   r%   s        r"   ra   0TogetherTextToImageTask._prepare_payload_as_dictf   sM     -88 ,
 J.",..1F"GJw XccWVbccr$   rD   rE   c                 V    [        U5      n[        R                  " US   S   S   5      $ Ndatar   b64_jsonr   rp   	b64decoder    rD   rE   response_dicts       r"   rO   $TogetherTextToImageTask.get_responsep   ,     *f 5a 8 DEEr$   r2   rQ   r3   r4   r5   r6   r   r   rS   r   ra   rR   r   rO   r9   r:   r;   s   @r"   rg   rg   b   sf    *dd'+dD\d	dFUT\ FCTW[C[ Fgj F Fr$   rg   c            	       n   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrSS	\	\-  S
\
S-  S\4S jjrSrU =r$ )TogetherImageToImageTasku   c                 $   > [         TU ]  S5        g )Nr*   rj   rA   s    r"   r   !TogetherImageToImageTask.__init__v       )*r$   rY   rZ   r[   r'   Nc                    UR                   n[        USS9n[        U5      nUR                  SS5      nSU;   a  UR                  S5      US'   UR	                  5       nSU;   =(       a    SU;   nU(       a  S	U0OS
U/0n	SU0U	ESS0EUESU0E$ )Nz
image/jpegdefault_mime_typerq    rn   ro   kontextzflux.1	image_urlreference_imagesr]   rp   rr   )rs   r   r   rt   lower)
r    rY   rZ   r[   r%   r   rq   lowereduse_image_urlimage_fields
             r"   ra   1TogetherImageToImageTask._prepare_payload_as_dicty   s     -88FlC	
 !,
"- J.",..1F"GJw $$&!W,DW1DBO{I&>VhktjuUvf

 x
 	

 \
 	
r$   rD   rE   c                 V    [        U5      n[        R                  " US   S   S   5      $ rw   rz   r|   s       r"   rO   %TogetherImageToImageTask.get_response   r   r$   r2   rQ   r   r;   s   @r"   r   r   u   sa    +

'+
D\
	
>FUT\ FCTW[C[ Fgj F Fr$   r   c            	       n   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrSS	\	\-  S
\
S-  S\4S jjrSrU =r$ )TogetherFeatureExtractionTask   c                 $   > [         TU ]  S5        g )Nr,   rj   rA   s    r"   r   &TogetherFeatureExtractionTask.__init__   s    -.r$   rY   rZ   r[   r'   Nc                 6    UUR                   S.[        U5      E$ N)inputrr   rs   r   r    rY   rZ   r[   s       r"   ra   6TogetherFeatureExtractionTask._prepare_payload_as_dict   s)     *66
 *%
 	
r$   rD   rE   c                 N    [        U5      S    Vs/ s H  o3S   PM	     sn$ s  snf )Nrx   	embedding)r   )r    rD   rE   items       r"   rO   *TogetherFeatureExtractionTask.get_response   s)    .6x.@.HI.Hd[!.HIIIs   "r2   rQ   r   r;   s   @r"   r   r      sa    /

'+
D\
	
JUT\ JCTW[C[ Jgj J Jr$   r   c            	       n   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrSS	\	\-  S
\
S-  S\4S jjrSrU =r$ )TogetherTextToSpeechTask   c                 $   > [         TU ]  S5        g )Nr+   rj   rA   s    r"   r   !TogetherTextToSpeechTask.__init__   r   r$   rY   rZ   r[   r'   Nc                 6    UUR                   S.[        U5      E$ r   r   r   s       r"   ra   1TogetherTextToSpeechTask._prepare_payload_as_dict   s)     *66
 *%
 	
r$   rD   rE   c                 t    [        U[        5      (       a  U$ [        S[        U5      R                   S35      e)Nz1Expected raw audio bytes for text-to-speech, got .)rb   rR   r/   r^   r3   )r    rD   rE   s      r"   rO   %TogetherTextToSpeechTask.get_response   s6    h&&OLTRZ^MdMdLeefghhr$   r2   rQ   r   r;   s   @r"   r   r      sa    +



'+

D\

	

iUT\ iCTW[C[ igj i ir$   r   rZ   r'   c                     [        U 5      n SU ;   a  U R                  S5      U S'   SU ;   a-  U R                  S5      nSU;   a  US   U S'   SU;   a  US   U S'   U $ )zNMap HF inference-client conventions onto Together's video API parameter names.rn   ro   target_sizewidthheight)r   rt   )rZ   r   s     r"   _normalize_video_parametersr      sr    Z(J
*(nn-BC
7
" nn]3k!"-g"6Jw{"#.x#8Jx r$   c                   >    \ rS rSrSrS	S\\-  S\S-  S\4S jjr	Sr
g)
TogetherVideoTask   z>Base class for Together's asynchronous video generation tasks.NrD   rE   r'   c                    Uc  [        S5      e[        U5      nUR                  S5      nU(       d  [        S5      eUR                   SU 3n[        R                  S5        UR                  S5      n[        [        5       H  nUb  U[        ;  a    O[        R                  " [        5        [        5       R                  XRR                  S9n[        U5        UR                  5       nUR                  S5      nUc  M~  U[        ;  d  M    O   [        S[         S	35      eUS
:X  a@  UR                  S5      =(       d    0 n	[!        SU	R                  S5      =(       d    S 35      eUS:w  a  [!        SU< 35      eUR                  S5      =(       d    0 R                  S5      n
U
(       d  [        S5      e[        5       R                  U
5      n[        U5        UR"                  $ )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   rM   urlloggerinforange_VIDEO_MAX_POLL_ATTEMPTS_VIDEO_PENDING_STATUSEStimesleep_VIDEO_POLLING_INTERVALr   r   r   jsonRuntimeErrorcontent)r    rD   rE   jobjob_id
status_urlr   _status_responser   r   video_responses               r"   rO   TogetherVideoTask.get_response   s   !deex UVV '**+1VH5
AB "/0A!f4K&KJJ./)m//
DZDZ/[O0!&&(CWWX&F!f4K&K 1 &&>%?}N 
 XGGG$*E!CEIIiDXDk\kClmnn[ !GzRSSWWY'-222;?	RSS$**95N+%%%r$   r2   rQ   )r3   r4   r5   r6   r7   rR   rS   r   r   rO   r9   r2   r$   r"   r   r      s0    H-&UT\ -&CTW[C[ -&gj -& -&r$   r   c            	       H   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrS	r	U =r
$ )
TogetherTextToVideoTaski  c                 $   > [         TU ]  S5        g )Nr-   rj   rA   s    r"   r    TogetherTextToVideoTask.__init__  rl   r$   rY   rZ   r[   r'   Nc                 6    UUR                   S.[        U5      E$ )N)rq   rr   )rs   r   r   s       r"   ra   0TogetherTextToVideoTask._prepare_payload_as_dict	  s)     *66
 **5
 	
r$   r2   re   r;   s   @r"   r   r     s6    *

'+
D\
	
 
r$   r   c            	       H   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrS	r	U =r
$ )
TogetherImageToVideoTaski  c                 $   > [         TU ]  S5        g )Nr.   rj   rA   s    r"   r   !TogetherImageToVideoTask.__init__  r   r$   rY   rZ   r[   r'   Nc                 N    UR                   [        USS9SS./S.[        U5      E$ )Nz	image/pngr   first)input_imageframe)rr   frame_images)rs   r   r   r   s       r"   ra   1TogetherImageToVideoTask._prepare_payload_as_dict  s9     +66-4V{-[fmno
 **5
 	
r$   r2   re   r;   s   @r"   r   r     s6    +

'+
D\
	
 
r$   r   ))rp   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_loggerr3   r   r   r   r   r   r   r   r=   rU   rg   r   r   r   rS   r   r   r   r   r2   r$   r"   <module>r      s
       ; 
  L K 
		H	%	&	     $]3 N%s N(
!7 
!7 4Fl F&%F| %FPJL J"i| i,D T 0&c 0&f
/ 

0 
r$   