o
    h                     @   s   d dl mZmZmZ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dS )    )AnyDictOptionalUnion)InferenceProviderMapping)RequestParameters_as_dict_as_url)TaskProviderHelperfilter_none)get_session	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
e fddZddeeef de
e 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__ d/var/www/html/ai/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wait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_infoc                 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_dictN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/   r0   response_dict
output_urlr   r   r   get_response%   s    zReplicateTask.get_response)N)__name__
__module____qualname__r6   r   r   r   r    r#   r   r   r.   r   bytesr   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e 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   c                    s2   t  |||}|jd urd|j |d d< |S )Nzhttps://huggingface.co/r'   lora_weights)r   r.   adapter_weights_pathhf_model_idr   r$   r%   r&   r-   r   r   r   r.   6   s   
z1ReplicateTextToImageTask._prepare_payload_as_dict
r;   r<   r=   r   r   r   r   r   r.   r?   r   r   r   r   rA   2       rA   c                	       r@   )	ReplicateTextToSpeechTaskc                    rB   )Nztext-to-speechrC   rD   r   r   r   r   @   rE   z"ReplicateTextToSpeechTask.__init__r$   r%   r&   r   c                    s*   t  |||}|d d|d d< |S )Nr'   r(   text)r   r.   poprI   r   r   r   r.   C   s   z2ReplicateTextToSpeechTask._prepare_payload_as_dictrJ   r   r   r   r   rL   ?   rK   rL   c                	       s:   e Zd Z fddZdedededee fddZ  Z	S )	ReplicateImageToImageTaskc                    rB   )Nzimage-to-imagerC   rD   r   r   r   r   L   rE   z"ReplicateImageToImageTask.__init__r$   r%   r&   r   c                 C   sJ   t |dd}dd|it|i}|j}d|v r#|ddd }||d< |S )Nz
image/jpeg)default_mime_typer'   input_imager"   r)   r*   )r	   r   r+   r,   )r   r$   r%   r&   	image_urlr-   r!   r*   r   r   r   r.   O   s   z2ReplicateImageToImageTask._prepare_payload_as_dictrJ   r   r   r   r   rO   K   s    rO   N)typingr   r   r   r   huggingface_hub.hf_apir   !huggingface_hub.inference._commonr   r   r	   ,huggingface_hub.inference._providers._commonr
   r   huggingface_hub.utilsr   r   r   r   rA   rL   rO   r   r   r   r   <module>   s    %