
    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	 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)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z  d	edz  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     q/var/www/html/Carbon-Document/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__r5   r   r!   bytesdictr   r   rI   __classcell__r   s   @r   r   r      s        _S _ _ _ _ _ _)3 ) ) ) ) ) ) 487> 7>$,7> *D07> 
	7> 7> 7> 7> 7> 7> 7> 7>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 )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   Nc                 (    d|it          |          S )Nprompt)r
   )r   rU   rV   rW   s       r   _prepare_payload_as_dictz3WavespeedAITextToImageTask._prepare_payload_as_dictY   s     &<K
$;$;<<r   	rJ   rK   rL   r   r   rN   r   rZ   rO   rP   s   @r   rR   rR   U   sv        * * * * *== =  8	=
 
= = = = = = = =r   rR   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rJ   rK   rL   r   r    r   r   r]   r]   b   s#        8 8 8 8 8r   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 )WavespeedAIImageToImageTaskc                 J    t                                          d           d S )Nzimage-to-imager   rT   s    r   r   z$WavespeedAIImageToImageTask.__init__h   s"    )*****r   rU   rV   rW   r   Nc                    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,rY   image)
r4   r5   
startswithopenreadbase64	b64encodedecodepopr
   )
r   rU   rV   rW   rg   ffile_content	image_b64rY   payloads
             r   rZ   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[   rP   s   @r   rc   rc   g   sv        + + + + +   8	
 
       r   rc   c                       e Zd Zd ZdS )WavespeedAIImageToVideoTaskc                 <    t                               | d           d S )Nzimage-to-videor_   r`   s    r   r   z$WavespeedAIImageToVideoTask.__init__   s      '788888r   Nra   r    r   r   rt   rt      s#        9 9 9 9 9r   rt   )rk   r9   abcr   typingr   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   rJ   r7   r;   r   rR   r]   rc   rt   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   