
    Y j$                     ^   S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJrJrJrJrJr  S S	KJrJr  S S
KJrJrJrJr   " S S\5      r " S S\5      r " S S\5      rS\S\4S jr \" SS9S\!\\S-  4   4S j5       r"\" SS9S\S\SS4S j5       r# " S S\5      r$g)    N)	lru_cache)Path)Any)urlparse
urlunparse)	constants)InferenceProviderMapping)	MimeBytesRequestParameters_b64_encode_bytes_to_dict_open_as_mime_bytes)TaskProviderHelperfilter_none)build_hf_headersget_session	get_tokenhf_raise_for_statusc            	          ^  \ rS rSrSrS\4U 4S jjrS\S-  S\4S jrS	\S-  S\4S
 jr	S\S\S\4S jr
S\S\S\S\S-  4S jrSrU =r$ )HFInferenceTask   z&Base class for HF Inference API tasks.taskc                 Z   > [         TU ]  S[        R                  R	                  SS9US9  g )Nhf-inferenceprovider)r   base_urlr   )super__init__r   INFERENCE_PROXY_TEMPLATEformat)selfr   	__class__s     ڂ/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/huggingface_hub/inference/_providers/hf_inference.pyr   HFInferenceTask.__init__   s2    #77>>>W 	 	
    api_keyNreturnc                 (    U=(       d
    [        5       $ N)r   )r"   r'   s     r$   _prepare_api_key HFInferenceTask._prepare_api_key   s    %)+%r&   modelc                 >   Ub,  UR                  S5      (       a  [        SXU R                  SS9$ Ub  UO"[        5       R	                  U R                  5      nUc  [        SU R                   S35      e[        X R                  5        [        SX"U R                  SS9$ )Nzhttp://zhttps://r   live)r   
providerIdhf_model_idr   statuszTask z has no recommended model for HF Inference. Please specify a model explicitly. Visit https://huggingface.co/tasks for more info.)
startswithr	   r   _fetch_recommended_modelsget
ValueError_check_supported_task)r"   r-   model_ids      r$   _prepare_mapping_info%HFInferenceTask._prepare_mapping_info"   s    !1!12I!J!J+'ESWS\S\ek  "-53L3N3R3RSWS\S\3]		{ #Q Q  	h		2'#UYU^U^gm
 	
r&   mapped_modelc                     UR                  S5      (       a  U$ U R                  S;   a  U R                   SU SU R                   3$ U R                   SU 3$ )Nr/   feature-extractionzsentence-similarity/models/z
/pipeline/)r4   r   r   )r"   r'   r<   s      r$   _prepare_urlHFInferenceTask._prepare_url2   se    ""#:;; yyII }}oXl^:dii[I	

 MM?(<.9	
r&   inputs
parametersprovider_mapping_infoc                     [        U[        5      (       a  [        SU R                   S35      e[        U[        5      (       a  [        SU R                   SU S35      e[        XS.5      $ )N!Unexpected binary input for task .Unexpected path input for task  (got )rC   rD   
isinstancebytesr7   r   r   r   r"   rC   rD   rE   s       r$   _prepare_payload_as_dict(HFInferenceTask._prepare_payload_as_dict>   sf     fe$$@1MNNfd##>tyykPVxWXYZZfGHHr&    )__name__
__module____qualname____firstlineno____doc__strr   r+   r	   r:   rA   r   dictrQ   __static_attributes____classcell__r#   s   @r$   r   r      s    0
S 
&d
 &s &
3: 
:R 
 

C 

s 

s 

II'+ID\I	I Ir&   r   c                   ^    \ rS rSrS\S\S\S\S-  4S jrS\S\S\S\S-  S\S-  4
S	 jr	S
r
g)HFInferenceBinaryInputTaskH   rC   rD   rE   r(   Nc                     g r*   rS   rP   s       r$   rQ   3HFInferenceBinaryInputTask._prepare_payload_as_dictI   s     r&   extra_payloadc                    [        U5      nU=(       d    0 n[        U5      S:  =(       d    [        U5      S:  n[        U[        [        45      (       d#  [        U[
        5      (       d  [        SU 35      eU(       d  [        U5      $ [        [        R                  " [        U5      US.UE5      R                  S5      SS9$ )Nr   z5Expected binary inputs or a local path or a URL. Got rL   zutf-8zapplication/json)	mime_type)r   lenrN   rO   r   rY   r7   r   r
   jsondumpsr   encode)r"   rC   rD   rE   rc   has_parameterss         r$   _prepare_payload_as_bytes4HFInferenceBinaryInputTask._prepare_payload_as_bytesN   s     !,
%+Z1,FM0BQ0F &5$-00FC9P9PTU[T\]^^ &v.. JJ+f"5ZaS`abiijqr(
 	
r&   rS   )rT   rU   rV   rW   r   rZ   r	   rQ   r
   rk   r[   rS   r&   r$   r_   r_   H   si    '+D\	


 
  8	

 d{
 
T	
r&   r_   c            	       ^   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrS	\	S
\	S\	4S jr
SrU =r$ )HFInferenceConversationalh   c                 $   > [         TU ]  S5        g )Nconversationalr   r   r"   r#   s    r$   r   "HFInferenceConversational.__init__i   s    )*r&   rC   rD   rE   r(   Nc                 <   [        U5      nUR                  nUR                  S5      =(       d    UnUb  UR                  S5      (       a  SnUR                  S5      n[	        U[
        5      (       a#  UR                  S5      S:X  a  SUS   S   S	.US'   0 UEXaS
.E$ )Nr-   r/   dummyresponse_formattypejson_schemajson_objectschema)rx   value)r-   messages)r   provider_idr6   r4   rN   rZ   )r"   rC   rD   rE   payloadr<   payload_modelrw   s           r$   rQ   2HFInferenceConversational._prepare_payload_as_dictl   s     j),88"w/?< M$<$<=T$U$U#M$..):;ot,,1D1DV1LP]1]%(7A*G%& G'FMFFr&   r'   r<   c                     UR                  S5      (       a  UO![        R                  R                  SS9 SU 3n[	        U5      $ )Nr/   r   r   r@   )r4   r   r    r!   _build_chat_completion_url)r"   r'   r<   r   s       r$   rA   &HFInferenceConversational._prepare_url~   sS     &&'>?? 66==~=VWW_`l_mn 	
 *(33r&   rS   )rT   rU   rV   rW   r   r   rZ   r	   rQ   rY   rA   r[   r\   r]   s   @r$   rn   rn   h   sU    +GG'+GD\G	G$4C 4s 4s 4 4r&   rn   	model_urlr(   c                    [        U 5      nUR                  R                  S5      nUR                  S5      (       a  U $ UR                  S5      (       a  US-   nOU(       d  SnOUS-   nUR	                  US9n[        [        U5      5      $ )N/z/chat/completionsz/v1z/v1/chat/completions)path)r   r   rstripendswith_replacerY   r   )r   parsedr   new_path
new_parseds        r$   r   r      s    i F;;c"D }}()) }}U--) 00 h/Jz*%&&r&      )maxsizec                     [        5       R                  [        R                   S3[	        5       S9n [        U 5        U R                  5       R                  5        VVs0 s H  u  pU[        [        US   5      S 5      _M      snn$ s  snnf )Nz
/api/tasks)headerswidgetModels)
r   r6   r   ENDPOINTr   r   rg   itemsnextiter)responser   detailss      r$   r5   r5      sw    }  I$6$6#7z!BL\L^ _H!QYQ^Q^Q`QfQfQhiQhD$tGN34d;;Qhiiis   %Br-   r   c                    SSK Jn  U" 5       R                  U 5      nUR                  nUR                  =(       d    / nSU;   nUS;   a'  US:X  a!  U(       a  g US:X  a  g [        SU  SU S35      eUS	:X  a  US:X  a  g [        SU  SU S35      eUS
:X  a  U(       a  US:X  a  g [        S5      eUS;   a  US;   a  X;   a  g XA:w  a  [        SU  SU SU SU S3	5      eg )Nr   )HfApirq   )text-generationrq   r   zModel 'z' doesn't support task 'z'.ztext2text-generationzimage-text-to-textz<Non-conversational image-text-to-text task is not supported.r>   z'. Supported tasks: 'z	', got: '')huggingface_hub.hf_apir   
model_infopipeline_tagtagsr7   )r-   r   r   r   r   r   is_conversationals          r$   r8   r8      s*   ,##E*J**L?? bD(D044,, ((wug-EdV2NOO--$$75')A$rJKK++)9!9WXX 	==IIL 	 eW4TF:OP\~]fgkfllmn
 	
 r&   c            	       n   ^  \ rS rSrU 4S jrS\S\S\S\S-  4S jrSS	\	\-  S
\
S-  S\4S jjrSrU =r$ ) HFInferenceFeatureExtractionTask   c                 $   > [         TU ]  S5        g )Nr?   rr   rs   s    r$   r   )HFInferenceFeatureExtractionTask.__init__   s    -.r&   rC   rD   rE   r(   Nc                     [        U[        5      (       a  [        SU R                   S35      e[        U[        5      (       a  [        SU R                   SU S35      eSU0[        U5      E$ )NrG   rH   rI   rJ   rK   rC   rM   rP   s       r$   rQ   9HFInferenceFeatureExtractionTask._prepare_payload_as_dict   so     fe$$@1MNNfd##>tyykPVxWXYZZ &<K
$;<<r&   r   request_paramsc                 F    [        U[        5      (       a  [        U5      $ U$ r*   )rN   rO   r   )r"   r   r   s      r$   get_response-HFInferenceFeatureExtractionTask.get_response   s    h&&!(++r&   rS   r*   )rT   rU   rV   rW   r   r   rZ   r	   rQ   rO   r   r   r[   r\   r]   s   @r$   r   r      s\    /
=
='+
=D\
=	
=UT\ CTW[C[ gj  r&   r   )%rg   	functoolsr   pathlibr   typingr   urllib.parser   r   huggingface_hubr   r   r	   !huggingface_hub.inference._commonr
   r   r   r   r   ,huggingface_hub.inference._providers._commonr   r   huggingface_hub.utilsr   r   r   r   r   r_   rn   rY   r   rZ   r5   r8   r   rS   r&   r$   <module>r      s        - % ;  Y _ _1I( 1Ih
 
@4 4>'# '# '. 1j4S4Z#8 j j 4( (C (D ( (V r&   