
    qi                        d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZ d dlmZmZ d d	lmZ  ee      Zd
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y)    N)ABC)AnyOptionalUnion)urlparse)InferenceProviderMapping)RequestParameters_as_dict)TaskProviderHelperfilter_none)get_sessionhf_raise_for_status)
get_loggerg      ?c                   `     e Zd Zdef fdZdededefdZ	 d
deeef   de	e
   defd	Z xZS )WavespeedAITasktaskc                 *    t         |   dd|       y )N	wavespeedzhttps://api.wavespeed.ai)providerbase_urlr   super__init__)selfr   	__class__s     `/opt/pipecat/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/wavespeed.pyr   zWavespeedAITask.__init__   s    +8RY]^    mapped_modelapi_keyreturnc                     d| S )Nz/api/v3/ )r   r   r   s      r   _prepare_routezWavespeedAITask._prepare_route   s    ,((r   responserequest_paramsc                    t        |      }|j                  di       }|j                  di       j                  d      }|st        d      |t        d      t        |j                        }|j
                  dk(  r|j                   d|j
                   d}n|j                   d|j
                   }t        |t              rt        |      j                  }n|}| | }	t        j                  d	       	 t        j                  t               t               j                  |	|j                   
      }
t#        |
       |
j%                         }|j                  di       }|j                  d      }|dk(  rX|j                  d      rt'        |d         dk(  rt        d      |d   d   }t               j                  |      j(                  S |dk(  r |j                  dd      }t        d|       |dv rt        d|       )Ndataurlsgetz#No result URL found in the responsezSA `RequestParameters` object should be provided to get responses with WaveSpeed AI.zrouter.huggingface.coz://z
/wavespeedz*Processing request, polling for results...)headersstatus	completedoutputsr   z#No output URL in completed responsefailederrorz*Task failed with no specific error messagezWaveSpeed AI task failed: )
processingcreatedzUnknown status: )r
   r)   
ValueErrorr   urlnetlocscheme
isinstancestrpathloggerinfotimesleep_POLLING_INTERVALr   r*   r   jsonlencontent)r   r$   r%   response_dictr'   result_path
parsed_urlr   result_url_path
result_urlresult_responseresulttask_resultr+   
output_url	error_msgs                   r   get_responsezWavespeedAITask.get_response   s    
 !*  ,hhvr*..u5BCC!rss n001
 77$++,C
0A0A/B*MH$++,C
0A0A/BCH k3'&{388O)O z/!23
@A JJ())m//
NDZDZ/[O0$))+F **VR0K __X.F$"y1SY9O5PTU5U$%JKK(3A6
"}((4<<<8#'OOG5ab	 #=i[!IJJ44 #3F8!<==r   )N)__name__
__module____qualname__r7   r   r#   r   bytesdictr   r	   r   rK   __classcell__r   s   @r   r   r      s`    _S _)3 ) ) ) 7;7>t$7> !!237> 
	7>r   r   c            	       <     e Zd Z fdZdedededee   fdZ xZ	S )WavespeedAITextToImageTaskc                 $    t         |   d       y )Nztext-to-imager   r   r   s    r   r   z#WavespeedAITextToImageTask.__init__V   s    )r   inputs
parametersprovider_mapping_infor    c                      d|it        |      S )Nprompt)r   )r   rW   rX   rY   s       r   _prepare_payload_as_dictz3WavespeedAITextToImageTask._prepare_payload_as_dictY   s     &<K
$;<<r   
rL   rM   rN   r   r   rP   r   r   r\   rQ   rR   s   @r   rT   rT   U   s7    *== =  8	=
 
$=r   rT   c                       e Zd Zd Zy)WavespeedAITextToVideoTaskc                 0    t         j                  | d       y )Nztext-to-videor   r   r   s    r   r   z#WavespeedAITextToVideoTask.__init__c   s      7r   NrL   rM   rN   r   r"   r   r   r_   r_   b   s    8r   r_   c            	       <     e Zd Z fdZdedededee   fdZ xZ	S )WavespeedAIImageToImageTaskc                 $    t         |   d       y )Nzimage-to-imager   rV   s    r   r   z$WavespeedAIImageToImageTask.__init__h   s    )*r   rW   rX   rY   r    c                    t        |t              r|j                  d      r|}nt        |t              rOt        |d      5 }|j	                         }d d d        t        j                        j                  d      }d| }n)t        j                  |      j                  d      }d| }|j                  dd       }d|it        |      }	|||	d<   |	S # 1 sw Y   xY w)N)zhttp://zhttps://rbzutf-8zdata:image/jpeg;base64,r[   image)
r6   r7   
startswithopenreadbase64	b64encodedecodepopr   )
r   rW   rX   rY   ri   ffile_content	image_b64r[   payloads
             r   r\   z4WavespeedAIImageToImageTask._prepare_payload_as_dictk   s     fc"v'8'89P'QE$fd# (q vvx(((6==gFI-i[9E ((077@I-i[9E $/E=[%<= &GH( (s   CC r]   rR   s   @r   re   re   g   s7    +   8	
 
$r   re   c                       e Zd Zd Zy)WavespeedAIImageToVideoTaskc                 0    t         j                  | d       y )Nzimage-to-videora   rb   s    r   r   z$WavespeedAIImageToVideoTask.__init__   s      '78r   Nrc   r"   r   r   rv   rv      s    9r   rv   )rm   r;   abcr   typingr   r   r   urllib.parser   huggingface_hub.hf_apir   !huggingface_hub.inference._commonr	   r
   ,huggingface_hub.inference._providers._commonr   r   huggingface_hub.utilsr   r   huggingface_hub.utils.loggingr   rL   r9   r=   r   rT   r_   re   rv   r"   r   r   <module>r      s}       ' ' ! ; I X B 4 
H	  >>(# >>B
= 
=8!; 8
/ B9"= 9r   