
    rh                         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	e      Z G d
 de      Z G d de      Z G d de      Zy)    )AnyDictOptionalUnion)InferenceProviderMapping)RequestParameters_as_dict_as_url)TaskProviderHelperfilter_none)get_session	replicatezhttps://api.replicate.comc            	            e Zd Zdef fdZdededef fdZdededefdZd	ed
ede	de
e   fdZddeeef   de
e   defdZ xZS )ReplicateTasktaskc                 :    t         |   t        t        |       y )N)providerbase_urlr   )super__init__	_PROVIDER	_BASE_URL)selfr   	__class__s     /var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/huggingface_hub/inference/_providers/replicate.pyr   zReplicateTask.__init__   s    )idK    headersapi_keyreturnc                 2    t         |   ||      }d|d<   |S )NwaitPrefer)r   _prepare_headers)r   r   r   r   s      r   r#   zReplicateTask._prepare_headers   s#    '*7G<"r   mapped_modelc                     d|v ryd| dS )N:z/v1/predictionsz/v1/models/z/predictions )r   r$   r   s      r   _prepare_routezReplicateTask._prepare_route   s    ,$\N,77r   inputs
parametersprovider_mapping_infoc                 |    |j                   }dd|it        |      i}d|v r|j                  dd      d   }||d<   |S )Ninputpromptr&      version)provider_idr   split)r   r)   r*   r+   r$   payloadr0   s          r   _prepare_payload_as_dictz&ReplicateTask._prepare_payload_as_dict   sV     -88#*Xv,YZAX,Y"Z,"((a03G!(GIr   responserequest_paramsc                     t        |      }|j                  d      t        d|j                  d       d      t        |d   t              r|d   n|d   d   }t               j                  |      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   r5   r6   response_dict
output_urls        r   get_responsezReplicateTask.get_response%   s     *X&.^_l_p_pqx_y^zZ[ 
 (2-2I3'OM(#UbckUlmnUo 	 }  ,444r   )N)__name__
__module____qualname__r=   r   r   r#   r(   r   r   r   r4   r   bytesr   rA   __classcell__r   s   @r   r   r      s    LS L s t 
83 8 8 8
'+D\	$
5U5$;%7 
5RcId 
5ps 
5r   r   c            	       @     e Zd Z fdZdedededee   f fdZ xZ	S )ReplicateTextToImageTaskc                 $    t         |   d       y )Nztext-to-imager   r   r   r   s    r   r   z!ReplicateTextToImageTask.__init__3   s    )r   r)   r*   r+   r   c                 l    t         |   |||      }|j                  d|j                   |d   d<   |S )Nzhttps://huggingface.co/r-   lora_weights)r   r4   adapter_weights_pathhf_model_idr   r)   r*   r+   r3   r   s        r   r4   z1ReplicateTextToImageTask._prepare_payload_as_dict6   sH     8Mbc 55A1HI^IjIjHk/lGG^,r   
rB   rC   rD   r   r   r   r   r   r4   rF   rG   s   @r   rI   rI   2   s6    *'+D\	$ r   rI   c            	       @     e Zd Z fdZdedededee   f fdZ xZ	S )ReplicateTextToSpeechTaskc                 $    t         |   d       y )Nztext-to-speechrK   rL   s    r   r   z"ReplicateTextToSpeechTask.__init__@       )*r   r)   r*   r+   r   c                 ^    t         |   |||      }|d   j                  d      |d   d<   |S )Nr-   r.   text)r   r4   poprQ   s        r   r4   z2ReplicateTextToSpeechTask._prepare_payload_as_dictC   s=     8Mbc#*7#3#7#7#A r   rR   rG   s   @r   rT   rT   ?   s6    +'+D\	$ r   rT   c            	       <     e Zd Z fdZdedededee   fdZ xZ	S )ReplicateImageToImageTaskc                 $    t         |   d       y )Nzimage-to-imagerK   rL   s    r   r   z"ReplicateImageToImageTask.__init__L   rV   r   r)   r*   r+   r   c                     t        |d      }dd|it        |      i}|j                  }d|v r|j                  dd      d   }||d<   |S )Nz
image/jpeg)default_mime_typer-   input_imager&   r/   r0   )r
   r   r1   r2   )r   r)   r*   r+   	image_urlr3   r$   r0   s           r   r4   z2ReplicateImageToImageTask._prepare_payload_as_dictO   sc     FlC	#*]I,aU_I`,a"b,88,"((a03G!(GIr   rR   rG   s   @r   r[   r[   K   s1    +'+D\	$r   r[   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   rI   rT   r[   r'   r   r   <module>rf      sX    - - ; R R X - 	'	"5& "5J
} 
	 	 r   