o
    0j                     @   s   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
 d dlmZ dZd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G dd deZdS )    )Any)InferenceProviderMapping)RequestParameters_as_dict_as_url)TaskProviderHelperfilter_none)get_sessionZ	replicatezhttps://api.replicate.comc                	       s   e Zd Zdef fddZdededeeef f fddZd	ededefd
dZdedede	dedB fddZ
ddeeB dedB defddZ  ZS )ReplicateTasktaskc                    s   t  jtt|d d S )N)providerbase_urlr   )super__init__	_PROVIDER	_BASE_URL)selfr   	__class__ o/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/huggingface_hub/inference/_providers/replicate.pyr      s   zReplicateTask.__init__headersapi_keyreturnc                    s   t  ||}d|d< |S )NwaitZPrefer)r   _prepare_headers)r   r   r   r   r   r   r      s   zReplicateTask._prepare_headersmapped_modelc                 C   s   d|v rdS d| dS )N:z/v1/predictionsz/v1/models/z/predictionsr   )r   r   r   r   r   r   _prepare_route   s   zReplicateTask._prepare_routeinputs
parametersprovider_mapping_infoNc                 C   s>   |j }dd|it|i}d|v r|ddd }||d< |S )Ninputpromptr      version)provider_idr   split)r   r   r    r!   r   payloadr%   r   r   r   _prepare_payload_as_dict   s   z&ReplicateTask._prepare_payload_as_dictresponserequest_paramsc                 C   s\   t |}|dd u rtd|d dt|d tr!|d n|d d }t |jS )NoutputzLInference request timed out after 60 seconds. No output generated for model modelzHThe model might be in cold state or starting up. Please try again later.r   )r   getTimeoutError
isinstancestrr	   content)r   r*   r+   response_dictZ
output_urlr   r   r   get_response%   s    zReplicateTask.get_responseN)__name__
__module____qualname__r1   r   dictr   r   r   r   r)   bytesr   r4   __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 fdd	Z  ZS )
ReplicateTextToImageTaskc                       t  d d S )Nztext-to-imager   r   r   r   r   r   r   3      z!ReplicateTextToImageTask.__init__r   r    r!   r   Nc                    s2   t  |||}|jd urd|j |d d< |S )Nzhttps://huggingface.co/r"   Zlora_weights)r   r)   Zadapter_weights_pathZhf_model_idr   r   r    r!   r(   r   r   r   r)   6   s   
z1ReplicateTextToImageTask._prepare_payload_as_dict	r6   r7   r8   r   r   r9   r   r)   r;   r   r   r   r   r=   2       r=   c                	       r<   )
ReplicateTextToSpeechTaskc                    r>   )Nztext-to-speechr?   r@   r   r   r   r   @   rA   z"ReplicateTextToSpeechTask.__init__r   r    r!   r   Nc                    s*   t  |||}|d d|d d< |S )Nr"   r#   text)r   r)   poprB   r   r   r   r)   C   s   z2ReplicateTextToSpeechTask._prepare_payload_as_dictrC   r   r   r   r   rE   ?   rD   rE   c                	       s\   e Zd Zd fddZdededededB fdd	Zdd
eeB de	dB defddZ
  ZS )'ReplicateAutomaticSpeechRecognitionTaskr   Nc                    r>   )Nzautomatic-speech-recognitionr?   r@   r   r   r   r   L   rA   z0ReplicateAutomaticSpeechRecognitionTask.__init__r   r    r!   c                 C   sJ   |j }t|dd}di d|it|i}d|v r#|ddd |d< |S )Nz	audio/wavZdefault_mime_typer"   Zaudior   r$   r%   )r&   r   r   r'   )r   r   r    r!   r   Z	audio_urlr(   r   r   r   r)   O   s   z@ReplicateAutomaticSpeechRecognitionTask._prepare_payload_as_dictr*   r+   c                 C   s   t |}|d}t|trd|iS t|tr-|r-|d }t|tr&d|iS t|tr-|}d }t|trc|d}t|tr@|}|d}t|trL|}|d}	t|	trct |	}
|
  |
j}|d urkd|iS t	d)Nr,   rF   r   transcriptiontranslationtxt_filezKReceived malformed response from Replicate automatic-speech-recognition API)
r   r.   r0   r1   listr9   r	   raise_for_statusrF   
ValueError)r   r*   r+   r3   r,   Z
first_itemrF   rJ   rK   rL   Ztext_responser   r   r   r4   d   s4   










z4ReplicateAutomaticSpeechRecognitionTask.get_response)r   Nr5   )r6   r7   r8   r   r   r9   r   r)   r:   r   r4   r;   r   r   r   r   rH   K   s    
(rH   c                	       s:   e Zd Z fddZdededededB fdd	Z  ZS )
ReplicateImageToImageTaskc                    r>   )Nzimage-to-imager?   r@   r   r   r   r      rA   z"ReplicateImageToImageTask.__init__r   r    r!   r   Nc                 C   sT   t |dd}d||g||gdt|i}|j}d|v r(|ddd }||d< |S )Nz
image/jpegrI   r"   )imageZimagesZinput_imageZinput_imagesr   r$   r%   )r   r   r&   r'   )r   r   r    r!   Z	image_urlr(   r   r%   r   r   r   r)      s   
z2ReplicateImageToImageTask._prepare_payload_as_dictrC   r   r   r   r   rP      s    rP   N)typingr   Zhuggingface_hub.hf_apir   Z!huggingface_hub.inference._commonr   r   r   Z,huggingface_hub.inference._providers._commonr   r   Zhuggingface_hub.utilsr	   r   r   r
   r=   rE   rH   rP   r   r   r   r   <module>   s    %=