
    -i                     2   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dS )    N)ABC)AnyOptionalUnion)urlparse)InferenceProviderMapping)RequestParameters_as_dict)TaskProviderHelperfilter_none)get_sessionhf_raise_for_status)
get_loggerg      ?c                   l     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                 P    t                                          dd|           d S )N	wavespeedzhttps://api.wavespeed.ai)providerbase_urlr   super__init__)selfr   	__class__s     l/var/www/html/speakWrite/venv/lib/python3.11/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   Nresponserequest_paramsc                    t          |          }|                    di           }|                    di                               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                              d	           	 t          j        t                     t                                          |	|j                  }
t#          |
           |
                                }|                    di           }|                    d          }|dk    rq|                    d          rt'          |d                   dk    rt          d          |d         d         }t                                          |          j        S |dk    r(|                    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...T)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5 	DBCCC!rsss n011
 777$+MM
0AMMMHH$+CC
0ACCH k3'' 	*&{338OO)O 3/33
@AAA	>J())))mm//
NDZ/[[O000$))++F **VR00K __X..F$$"y11 LSY9O5P5PTU5U5U$%JKKK(3A6
"}}((44<<8##'OOG5abb	 !Ii!I!IJJJ444 !<F!<!<===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> 7>t$7> !!237> 
	7> 7> 7> 7> 7> 7> 7> 7>r   r   c            	       B     e Zd Z fdZdedededee         fdZ xZ	S )WavespeedAITextToImageTaskc                 J    t                                          d           d S )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   sv        * * * * *== =  8	=
 
$= = = = = = = =r   rT   c                       e Zd Zd ZdS )WavespeedAITextToVideoTaskc                 <    t                               | d           d S )Nztext-to-videor   r   r   s    r   r   z#WavespeedAITextToVideoTask.__init__c   s      77777r   NrL   rM   rN   r   r"   r   r   r_   r_   b   s#        8 8 8 8 8r   r_   c            	       B     e Zd Z fdZdedededee         fdZ xZ	S )WavespeedAIImageToImageTaskc                 J    t                                          d           d S )Nzimage-to-imager   rV   s    r   r   z$WavespeedAIImageToImageTask.__init__h   s"    )*****r   rW   rX   rY   r    c                    t          |t                    r|                    d          r|}nt          |t                    rit          |d          5 }|                                }d d d            n# 1 swxY w Y   t          j        |                              d          }d| }n,t          j        |                              d          }d| }|                    dd           }d|it          |          }	|||	d<   |	S )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   sO    fc"" 	:v'8'89P'Q'Q 	:EE$$ 		:fd## (q vvxx( ( ( ( ( ( ( ( ( ( ( ( ( ( ((66==gFFI9i99EE (0077@@I9i99E $//E=[%<%<= &GHs   A44A8;A8r]   rR   s   @r   re   re   g   sv        + + + + +   8	
 
$       r   re   c                       e Zd Zd ZdS )WavespeedAIImageToVideoTaskc                 <    t                               | d           d S )Nzimage-to-videora   rb   s    r   r   z$WavespeedAIImageToVideoTask.__init__   s      '788888r   Nrc   r"   r   r   rv   rv      s#        9 9 9 9 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 I I I I I I I X X X X X X X X B B B B B B B B 4 4 4 4 4 4 
H		  >> >> >> >> >>(# >> >> >>B
= 
= 
= 
= 
= 
= 
= 
=8 8 8 8 8!; 8 8 8
    /   B9 9 9 9 9"= 9 9 9 9 9r   