U
    ”Ê¹jì  ã                   @   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_sessionZ	replicatezhttps://api.replicate.comc                       sŠ   e Zd Zedœ‡ fdd„Zeeeeef dœ‡ fdd„Zeeedœdd	„Zeee	e
e d
œdd„Zdeeef e
e edœ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__© úm/var/www/html/bwave/python/venv/lib/python3.8/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_modelr   r   c                 C   s   d|k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_infor   c                 C   s>   |j }dd|it|ƒ–i}d|k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_paramsr   c                 C   s\   t |ƒ}| d¡d kr,td| d¡› d�ƒ‚t|d tƒrB|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/   Zresponse_dictZ
output_urlr   r   r   Úget_response%   s    ÿ ÿzReplicateTask.get_response)N)Ú__name__Ú
__module__Ú__qualname__r5   r   r   r   r   r!   r   r   r-   r   Úbytesr   r7   Ú__classcell__r   r   r   r   r      s     þ
r   c                       s8   e Zd Z‡ fdd„Zeeeee dœ‡ fdd„Z‡  Z	S )ÚReplicateTextToImageTaskc                    s   t ƒ  d¡ d S )Nztext-to-image©r   r   ©r   r   r   r   r   3   s    z!ReplicateTextToImageTask.__init__r"   c                    s2   t ƒ  |||¡}|jd k	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©
r8   r9   r:   r   r   r   r   r   r-   r<   r   r   r   r   r=   2   s     þr=   c                       s8   e Zd Z‡ fdd„Zeeeee dœ‡ fdd„Z‡  Z	S )ÚReplicateTextToSpeechTaskc                    s   t ƒ  d¡ d S )Nztext-to-speechr>   r?   r   r   r   r   @   s    z"ReplicateTextToSpeechTask.__init__r"   c                    s*   t ƒ  |||¡}|d  d¡|d d< |S )Nr&   r'   Útext)r   r-   Úpopr@   r   r   r   r-   C   s    z2ReplicateTextToSpeechTask._prepare_payload_as_dictrA   r   r   r   r   rB   ?   s     þrB   c                       s4   e Zd Z‡ fdd„Zeeeee dœdd„Z‡  Z	S )ÚReplicateImageToImageTaskc                    s   t ƒ  d¡ d S )Nzimage-to-imager>   r?   r   r   r   r   L   s    z"ReplicateImageToImageTask.__init__r"   c                 C   sJ   t |dd�}dd|it|ƒ–i}|j}d|krF| dd¡d }||d< |S )Nz
image/jpeg)Zdefault_mime_typer&   Zinput_imager    r(   r)   )r	   r   r*   r+   )r   r#   r$   r%   Z	image_urlr,   r   r)   r   r   r   r-   O   s    z2ReplicateImageToImageTask._prepare_payload_as_dictrA   r   r   r   r   rE   K   s     þrE   N)Útypingr   r   r   r   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=   rB   rE   r   r   r   r   Ú<module>   s   %