o
    0j                     @   s   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 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)urlparse)InferenceProviderMapping)RequestParameters_as_dict)TaskProviderHelperfilter_none)get_sessionhf_raise_for_status)
get_loggerg      ?c                       sZ   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B ded	B de	fddZ
  ZS )WavespeedAITasktaskc                    s   t  jdd|d d S )NZ	wavespeedzhttps://api.wavespeed.ai)providerbase_urlr   super__init__)selfr   	__class__ o/var/www/html/Deteccion_Ine/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	completedZ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   Zresponse_dictr   result_path
parsed_urlr   Zresult_url_pathZ
result_urlZresult_responseresultZtask_resultr#   Z
output_url	error_msgr   r   r   get_response   sD   





zWavespeedAITask.get_response)N)__name__
__module____qualname__r.   r   r   bytesdictr   r   r<   __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dB 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   Nc                 C   s   d|it |S )Nprompt)r	   )r   rH   rI   rJ   r   r   r   _prepare_payload_as_dictY   s   z3WavespeedAITextToImageTask._prepare_payload_as_dict	r=   r>   r?   r   r   rA   r   rL   rB   r   r   r   r   rD   U       rD   c                   @      e Zd Zdd ZdS )WavespeedAITextToVideoTaskc                 C      t | d d S )Nztext-to-videor   r   rF   r   r   r   r   c   rG   z#WavespeedAITextToVideoTask.__init__Nr=   r>   r?   r   r   r   r   r   rP   b       rP   c                	       rC   )
WavespeedAIImageToImageTaskc                    rE   )Nzimage-to-imager   rF   r   r   r   r   h   rG   z$WavespeedAIImageToImageTask.__init__rH   rI   rJ   r   Nc           
      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,rK   image)
r-   r.   
startswithopenreadbase64	b64encodedecodepopr	   )
r   rH   rI   rJ   rW   fZfile_contentZ	image_b64rK   payloadr   r   r   rL   k   s   


z4WavespeedAIImageToImageTask._prepare_payload_as_dictrM   r   r   r   r   rU   g   rN   rU   c                   @   rO   )WavespeedAIImageToVideoTaskc                 C   rQ   )Nzimage-to-videorR   rF   r   r   r   r      rG   z$WavespeedAIImageToVideoTask.__init__NrS   r   r   r   r   ra      rT   ra   )r[   r2   abcr   typingr   urllib.parser   Zhuggingface_hub.hf_apir   Z!huggingface_hub.inference._commonr   r   Z,huggingface_hub.inference._providers._commonr   r	   Zhuggingface_hub.utilsr
   r   Zhuggingface_hub.utils.loggingr   r=   r0   r4   r   rD   rP   rU   ra   r   r   r   r   <module>   s"    A!