
    i                        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y)    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                 *    t         |   dd|       y )N	wavespeedzhttps://api.wavespeed.ai)providerbase_urlr   super__init__)selfr   	__class__s     /var/www/vps2.regionflexible.com/Desarrollo/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   N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__r5   r   r!   bytesdictr   r   rI   __classcell__r   s   @r   r   r      sZ    _S _)3 ) ) ) 487>$,7> *D0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                 $    t         |   d       y )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   s7    *== =  8	=
 
=r   rR   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rJ   rK   rL   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dz  fdZ xZS )WavespeedAIImageToImageTaskc                 $    t         |   d       y )Nzimage-to-imager   rT   s    r   r   z$WavespeedAIImageToImageTask.__init__h   s    )*r   rU   rV   rW   r   Nc                    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,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   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[   rP   s   @r   rc   rc   g   s7    +   8	
 
r   rc   c                       e Zd Zd Zy)WavespeedAIImageToVideoTaskc                 0    t         j                  | d       y )Nzimage-to-videor_   r`   s    r   r   z$WavespeedAIImageToVideoTask.__init__   s      '78r   Nra   r    r   r   rt   rt      s    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~      sz        ! ; I X B 4 
H	  >>(# >>B
= 
=8!; 8
/ B9"= 9r   