o
    i                     @   s   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 deeZG dd deZG dd deZG dd deZG d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                       s^   e Zd Zdef fddZdededefddZ		dd
eeef de	e
 defddZ  ZS )WavespeedAITasktaskc                    s   t  jdd|d d S )N	wavespeedzhttps://api.wavespeed.ai)providerbase_urlr   super__init__)selfr   	__class__ t/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/huggingface_hub/inference/_providers/wavespeed.pyr      s   zWavespeedAITask.__init__mapped_modelapi_keyreturnc                 C   s
   d| S )Nz/api/v3/r   )r   r   r   r   r   r   _prepare_route   s   
zWavespeedAITask._prepare_routeNresponserequest_paramsc                 C   sp  t |}|di }|di d}|std|d u r!tdt|j}|jdkr6|j d|j d}n	|j d|j }t|trJt|j	}n|}| | }	t
d	 	 tt t j|	|jd}
t|
 |
 }|di }|d}|dkr|drt|d dkrtd|d d }t |jS |dkr|dd}td| |dv rqWt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_msgr   r   r   get_response   sD   





zWavespeedAITask.get_response)N)__name__
__module____qualname__r2   r   r   r   bytesdictr   r   r   rF   __classcell__r   r   r   r   r      s    
r   c                	       :   e Zd Z fddZdedededee fddZ  Z	S )	WavespeedAITextToImageTaskc                       t  d d S )Nztext-to-imager   r   r   r   r   r   V      z#WavespeedAITextToImageTask.__init__inputs
parametersprovider_mapping_infor   c                 C   s   d|it |S )Nprompt)r   )r   rR   rS   rT   r   r   r   _prepare_payload_as_dictY   s   z3WavespeedAITextToImageTask._prepare_payload_as_dict
rG   rH   rI   r   r   rK   r   r   rV   rL   r   r   r   r   rN   U       rN   c                   @      e Zd Zdd ZdS )WavespeedAITextToVideoTaskc                 C      t | d d S )Nztext-to-videor   r   rP   r   r   r   r   c   rQ   z#WavespeedAITextToVideoTask.__init__NrG   rH   rI   r   r   r   r   r   rZ   b       rZ   c                	       rM   )	WavespeedAIImageToImageTaskc                    rO   )Nzimage-to-imager   rP   r   r   r   r   h   rQ   z$WavespeedAIImageToImageTask.__init__rR   rS   rT   r   c           
      C   s   t |tr|dr|}n9t |tr9t|d}| }W d    n1 s&w   Y  t|d}d| }nt|d}d| }|dd }d|it	|}	|d ur\||	d< |	S )N)zhttp://zhttps://rbzutf-8zdata:image/jpeg;base64,rU   image)
r1   r2   
startswithopenreadbase64	b64encodedecodepopr   )
r   rR   rS   rT   ra   ffile_content	image_b64rU   payloadr   r   r   rV   k   s   


z4WavespeedAIImageToImageTask._prepare_payload_as_dictrW   r   r   r   r   r_   g   rX   r_   c                   @   rY   )WavespeedAIImageToVideoTaskc                 C   r[   )Nzimage-to-videor\   rP   r   r   r   r      rQ   z$WavespeedAIImageToVideoTask.__init__Nr]   r   r   r   r   rm      r^   rm   )re   r6   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   rG   r4   r8   r   rN   rZ   r_   rm   r   r   r   r   <module>   s"    A!