
    8P[igP                       d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ ddlmZmZmZ ddlmZ ddlmZmZ d#dZd$d	Z	 	 	 	 d%d
Zd&dZd'dZd(dZd)dZd(dZd*dZd*dZd*dZ d*dZ!d+dZ"d,dZ#d*dZ$d*dZ%d*dZ&d Z'd Z(d-dZ)d.dZ*d/dZ+	 d#	 	 	 	 	 	 	 	 	 d0dZ,d1dZ-d2d Z.	 	 	 	 	 	 d3d!Z/d4d"Z0y)5zCUtility function for gradio/external.py, designed for internal use.    )annotationsN)encode_url_or_file_to_base64)HfApi ImageClassificationOutputElementInferenceClient)
components)ErrorTooManyRequestsErrorc                    t        |      }t        d|         |j                  |       }|j                  }|j                  }||fS )N)tokenz,Fetching model from: https://huggingface.co/)r   print
model_infopipeline_tagtags)
model_namer   hf_apir   pipeliner   s         c/var/www/html/chatbot/Makanify-Chatbot-2/venv/lib/python3.12/site-packages/gradio/external_utils.pyget_model_infor      sJ    F	8
EF"":.J&&H??DT>    c                f   t        j                  d|  d      }|j                  dk7  r t        j                  d|  t
               i }nt        j                  d|j                        }|i }n^t        t        j                  |j                  d |j                         d                }|j                  di       j                  di       }|st        d	|  d
      |j                         D ]A  }t        |      D ]1  \  }}t!        |t"              st%        j&                  |      s-d||<   3 C |S )Nzhttps://huggingface.co/z/resolve/main/README.md   z%Cannot load examples from README for z,(?:^|[
])---[
]+([\S\s]*?)[
]+---([
]|$)widgetstructuredDataz&No example data found in README.md of z - Cannot build gradio demo. See the README.md here: https://huggingface.co/scikit-learn/tabular-playground/blob/main/README.md for a reference on how to provide example data to your model.NaN)httpxgetstatus_codewarningswarnUserWarningresearchtextnextyamlsafe_load_allspan
ValueErrorvalues	enumerate
isinstancefloatmathisnan)r   readmeexample_data
yaml_regexexample_yamldataivals           r   get_tabular_examplesr8   $   s5   YY0<STUFS =j\JKXYYDfkk

 L""6;;/F1B21F#GHL (++Hb9==>NPRSL4ZL AL L
 	
 ##%  o 	 FAs#u%$**S/Q	   r   c                8    t         j                               }t         fd|D              }g }t        |      D ]Y  }g }|D ]?  } |   xs g }|t	        |      k\  r|j                  d       ,|j                  ||          A |j                  |       [ ||fS )Nc              3  B   K   | ]  }t        |   xs g         y wN)len).0headerr2   s     r   	<genexpr>zcols_to_rows.<locals>.<genexpr>F   s      GV\&)/R0Gs   r   )listkeysmaxranger<   append)r2   headersn_rowsr5   	row_indexrow_datar>   cols   `       r   cols_to_rowsrJ   B   s     <$$&'GGwGGFD6] 	 	0Fv&,"CCH$&I/	0 	H D=r   c                    i }t        | d         D ]'  \  }}| d   D cg c]  }t        ||          c}||<   ) dd|iiS c c}w )NrE   r5   inputs)r,   str)incoming_datadata_column_wiser6   r>   rows        r   rows_to_colsrQ   T   sa    }Y78 R	6;H;P#QCCAK#Q Rv/011 $Rs   Ac                V    | D ci c]  }|j                   |j                   c}S c c}w r;   )labelscorescorescs     r   postprocess_labelrX   `   s#    &,-AGGQWW---s   &c                :    | D ci c]  }|d   |d    c}S c c}w )N	token_strrT    rU   s     r   postprocess_mask_tokensr\   d   s#    0671AkNAgJ&777   c                     | d   | d   | d   ifS NanswerrT   r[   )r`   s    r   postprocess_question_answeringra   h   s     (fX.w@@@r   c                :    | D ci c]  }|d   |d    c}S c c}w r_   r[   rU   s     r   %postprocess_visual_question_answeringrc   l   s#    -34AhK7#444r]   c                     d fd}|S )Nc                J    j                  | |j                  d      |      S )N,)multi_label)zero_shot_classificationsplit)inputlabelsrg   clients      r   zero_shot_classification_innerzHzero_shot_classification_wrapper.<locals>.zero_shot_classification_innerq   s+    ..6<<$+ / 
 	
r   )rj   rM   rk   rM   rg   boolr[   )rl   rm   s   ` r    zero_shot_classification_wrapperro   p   s    

 *)r   c                     d fd}|S )Nc                F    j                  | |j                  d            S )N
)sentence_similarityri   )rj   	sentencesrl   s     r   sentence_similarity_innerz>sentence_similarity_wrapper.<locals>.sentence_similarity_innerz   s    ))%1FGGr   )rj   rM   rt   rM   r[   )rl   ru   s   ` r   sentence_similarity_wrapperrv   y   s    H %$r   c                     d fd}|S )Nc                ,    | j                  |       z   S r;   )text_generation)rj   rl   s    r   text_generation_innerz6text_generation_wrapper.<locals>.text_generation_inner   s    v--e444r   rj   rM   r[   )rl   rz   s   ` r   text_generation_wrapperr|      s    5 ! r   c                      fd}|S )Nc              3  .  K   |sg }|j                  d| d       	 d}j                  |d      D ]>  }||j                  r'|j                  d   j                  j                  xs dndz  }| @ y # t
        $ r}t        |       Y d }~y d }~ww xY ww)Nuserrolecontent Tmessagesstreamr   )rD   chat_completionchoicesdeltar   	Exceptionhandle_hf_error)messagehistoryoutchunkerl   s        r   chat_fnz'conversational_wrapper.<locals>.chat_fn   s     G7;<	C///N u}}u}}Q'--55;RTT	  	A	s/   BAA4 3B4	B=BBBBr[   rl   r   s   ` r   conversational_wrapperr      s    
 Nr   c                <   t        j                  | j                        j                  d      }d}||v r|S | j                  j                  d      }|dk(  r	 | j                         d   }|d   }|d   }n	 d| d| }|S # t        $ r}t        d      |d }~ww xY w)	Nzutf-8z;base64,zcontent-typeapplication/jsonr   blobz7Cannot determine content type returned by external API.zdata:)	base64	b64encoder   decoderE   r   jsonKeyErrorr*   )rbase64_reprdata_prefixcontent_typer5   ke
new_base64s          r   encode_to_base64r      s    ""199-44W=KKk!yy}}^4--vvx{#N3"6l \N(;-@
   Ms   B 	B
BBc                    t        |      dk(  r| d fgS g }d}d}|D ]?  }|d   |d   |d   }}}|j                  | || d f       |j                  | || |f       |}A |j                  | |d  d f       |S )Nr   entity_groupstartend)r<   rD   )input_string
ner_groupsoutputr   prev_endgroupentityr   s           r   format_ner_listr      s    
:!t$%%F
CH ">2E'NE%Ls|HU3T:;|E#.78	 MM<%t,-Mr   c                     d fd}|S )Nc                >    j                  |       }t        | |      S r;   )token_classificationr   )rj   ner_listrl   s     r   token_classification_innerz@token_classification_wrapper.<locals>.token_classification_inner   s     ..u5uh//r   r{   r[   )rl   r   s   ` r   token_classification_wrapperr      s    0 &%r   c                     d fd}|S )Nc                    j                  |       }|D cg c]%  }|d   d   |d   d   |d   d   |d   d   f|d   f' }}| |fS c c}w )NboxxminyminxmaxymaxrS   )object_detection)rj   r   aformatted_annotationsrl   s       r   object_detection_innerz8object_detection_wrapper.<locals>.object_detection_inner   s    --e4 !!
  eHV$eHV$eHV$eHV$	 '
!
 !
 ,--!
s   *Ar{   r[   )rl   r   s   ` r   object_detection_wrapperr      s    .  "!r   c                      fd}|S )Nc                D   dddt        |       idd|dgdg}	 j                  |d	      }|j                  d
   j                  j                  S # t
        $ rD}	 j                  |       }d| d| dcY d }~S # t
        $ r t        |       Y nw xY wY d }~y d }~ww xY w)Nr   	image_urlurl)typer   r%   )r   r%   r   Fr   r   zImage description: z

User question: zZ

Note: This model doesn't support question-answering about images, only image captioning.)r   r   r   r   r   r   image_to_textr   )imager%   r   responser   resultrl   s         r   r   z+image_text_to_text_wrapper.<locals>.chat_fn   s      !,&+-I%-P%Q $T2	

	#--x-NH##A&..666 	##--e4,VH4Gv  Nj  k  k #"#"	#s5   5A 	BA;5B;BBBBBr[   r   s   ` r   image_text_to_text_wrapperr      s    #4 Nr   c                2    |s| g g fS | |d   d   |d   d   fS )Nconversationgenerated_responsespast_user_inputsr[   )r%   states     r   chatbot_preprocessr      s:    R|n34n01 r   c                P    t        t        | d   d   | d   d   d            }|| fS )Nr   r   r   F)strict)r@   zip)r   chatbot_historys     r   chatbot_postprocessr     s@    ^$%78^$%:;	
O H$$r   c                      fd}|S )Nc                    dvrt        dd      j                  sJ dk(  rj                  | j                        S j                  | j                        S )N)tabular_classificationtabular_regressionzpipeline type z not supportedr   )model)	TypeErrorr   r   r   )r5   rl   r   s    r   tabular_innerz&tabular_wrapper.<locals>.tabular_inner  si    KKnXLGHH|||//00V\\0JJ,,T,FFr   r[   )rl   r   r   s   `` r   tabular_wrapperr     s    G r   c                    | d   D cg c]  }t        j                  |       c}| d<   | d   D cg c]  }t        j                  |       c}| d<   h d}|D ci c]  }|| |   
 } }| S c c}w c c}w c c}w )zGStreamlines the interface config dictionary to remove unnecessary keys.input_componentsrL   output_componentsoutputs>   titlerL   articler   descriptionflagging_options)r   get_component_instance)config	component
parametersks       r   streamline_spaces_interfacer   '  s       23 	)))4F8   34 	)))4F9J %//qal/F/M# 0s   A,A1A6c                    dt        |       v rt               | dt        |       v sdt        |       v rt        d      | t        t        |             | )N429401zYou must provide an api_keyz1Unauthorized, please make sure you are signed in.)rM   r
   r	   )r   s    r   r   r   =  sM    A"$!+	#a&9SVCGHaOCFm"r   c                <    j                  di       } fd}j                  dd      }j                  dd      }g }	g }
j                  dg       D ]  }|j                  dd      }|j                  dd      }|j                  di       }|j                  d	g       }|r|d
dj                  |       dz  }|
j                  |       |	j                  d| d|         |r7|j                  dd      }|	j                  d|        |
j                  d       g }|s|r|j                  |xs |       |	r"|j                  d       |j                  |	       dj                  |      |_        |
rg }|
D ]@  }|j                  t        j                  |t
        j                  j                               B |j                  t        j                  dt
        j                  j                               t        j                  |      }||_
        |S )NrequestBodyc                 .   j                  d        }ddi}rd |d<   i }i }j                  dg       }j                  di       }d}|D ]o  }|t        |       k  s|j                  d	      d
k(  r| |   ||d   <   n9|j                  d	      dk(  r%|j                  d|d    dt	        | |               }|dz  }q d}	|r/|t        |       k  r!|j                  di       }
|
D ]
  }|dv sd}	 n |r:|t        |       k  r,|	r| |   }|rd|d<   |}nd}nt        j                  | |         }	 j                         dk(  rt        j                  |||      }n܉j                         dk(  r#t        j                  |||	r|nd |	s|nd |      }nj                         dk(  r#t        j                  |||	r|nd |	s|nd |      }npj                         dk(  r#t        j                  |||	r|nd |	s|nd |      }n:j                         dk(  rt        j                  |||      }nt        d       |j                  dv r|j                         S d|j                  |j                  d S # t         $ r}d!t	        |       cY d }~S d }~ww xY w)"N/zContent-Typer   zBearer Authorizationr   r   r   inquerynamepath{}   Fr   application/octet-streamzmultipart/form-dataTr   r   r   )paramsrE   post)r   r   r   rE   putpatchdeletezUnsupported HTTP method: )r            error)
__status__r   r   zError: )rstripr   r<   replacerM   r   loadslowerr   r   r   r   r   r*   r   r%   r   )argsr   rE   r   	body_dataoperation_paramsrequest_bodyparam_indexparamis_file_uploadr   r   	file_datar   r   
auth_tokenbase_urlendpoint_methodendpoint_operationendpoint_paths                  r   endpoint_fnz'create_endpoint_fn.<locals>.endpoint_fnP  s   %&}o6!#56)0'=GO$	-11,C)--mR@% 	!ESY&99T?g-,0,=F5=)YYt_.++5=/&<c${BS>TUCq 	! K#d)3"&&y"5G ' #VV%)N
 K#d)3 -	.HGN+ )I #I JJtK'89	)	&$$&%/ 99SI &&(F2 ::!)7IT*8d# !&&(E1 99!)7IT*8d# !&&(G3 ;;!)7IT*8d# !&&(H4 <<FGL #<_<M!NOO##';;}}& #*#+#7#7'}} 
  	&SVH%%	&s%   3D%I3 I3 3	J<J	JJsummaryr   r   r   r   schemaenumz (Choices: z, )z    z: zURL of filez    request_body: r  zParameters:rr   )r   kindr
  )r   )r   joinrD   extend__doc__inspect	ParameterPOSITIONAL_OR_KEYWORDVAR_POSITIONAL	Signature__signature__)r  r  r  r  r  r  r  r  r   
param_docsparam_namesr  
param_name
param_descparam_schema
param_enum	body_descdocstring_parts
sig_paramsr   new_sigs   `````                r   create_endpoint_fnr0  F  s    &))-<LQ& Q&f !$$Y3G$((;KJK#''b9 =YYvr*
YY}b1
yy2.!%%fb1
K		*(='>a@@J:&DBzl;<=  $$]MB	.yk:;>*Og{5g6}-z*))O4K
 	D!!G$5$5$K$K	 	60A0A0P0PQ	
 ##z:$+!r   c                   dd l }| j                  d      }| j                  d      }| j                  di       }|j                  d      }|j                  d      }|j                  d      }||j                  |||d|	      }|S |d
v r|j                  |||      }|S |dk(  r|j	                  |||      }|S |dk(  r|j                  | dd|      }|S |j                  |||      }|S )Nr   r   r   r  r   r  defaultF)r   rS   valueallow_custom_valueinfonumberintegerrS   r3  r5  booleanarrayz (JSON array)z[])gradior   DropdownNumberCheckboxTextbox)	
param_infogrr(  param_descriptionr*  
param_typeenum_valuesdefault_valuer   s	            r   component_from_parameter_schemarG    sK   'J"}5>>(B/L!!&)J""6*K $$Y/MKK$"   
	@ 3 
,	,II"  
	0 ' 
y	 KK"   
	$  
w	JJL."  
	  JJ"  
	 r   c                J   d| v r| d   }|j                  d      rF|j                  d      d   }|j                  di       j                  di       j                  |i       S |j                  d      r1|j                  d      dd	 }|}|D ]  }|j                  |i       } |S | S )
z*Resolve schema references in OpenAPI spec.z$refz#/components/schemas/r   r   r   schemasz#/r   N)
startswithri   r   )r  specref_pathschema_name
path_partscurrentparts          r   resolve_schema_refrQ    s    &>67"..-b1K88L"-11)R@DD[RTUU  &!,QR0JG" 0!++dB/0NMr   c                H   ddl }| sy| j                  di       }| j                  dd      }|j                         D ]c  \  }}|dv st        |j                  di       |      }|j                  d      d	k(  s<|j                  d
      dk(  sQ|j	                  d      c S  |j                  di       }|s-|j                         D ]  \  }}|j                  d      s|} n |syt        |j                  di       |      }|j                  di       }	|	s|j                  d      dk(  r|j                  di       }
i }	|
j                         D ]  \  }}t        ||      }|j                  d      }|d	k(  r|j                  dd      |	|<   >|dv r|j                  dd      |	|<   X|dk(  r|j                  dd      |	|<   s|dk(  r|j                  dg       |	|<   |dk(  s|j                  di       |	|<    |j                  dt        j                  |	d      |      }|S )z>Create a Gradio component from an OpenAPI request body schema.r   Nr   r   zRequest Bodyr   r  r   stringformatbinaryFile)rS   r   zapplication/exampleobject
propertiesr   r6  r:  Fr;     )indentr9  )	r<  r   itemsrQ  rV  rJ  r@  r   dumps)r  rK  rB  r   r   r   content_schemar  json_contentrF  rY  	prop_nameprop_schema	prop_typer   s                  r   "component_from_request_body_schemarc    s:    y"-G""=.AK(/ -$nNN'(:(:8R(H$OFzz&!X-&**X2F(2RwwVw,,	- ;;126L,3MMO 	(L.&&~6-	
  0 02 >EFJJy"-MVZZ/8;ZZb1
&0&6&6&8 	J"I{,[$?K#/IH$+6??9b+Ii(33+6??9a+Hi(i'+6??9e+Li(g%+6??9b+Ii(h&+6??9b+Ii(	J 

jjq1  I r   c                    dddddd}|j                  | j                         d      }d| d	| d
| j                          dS )Nz#61affez#49cc90z#fca130z#f93e3ez#50e3c2)GETPOSTPUTDELETEPATCHz#999z_<span style='display:inline-block;min-width:48px;padding:2px 10px;border-radius:4px;background:zh;color:white;font-weight:bold;font-family:monospace;margin-right:8px;text-align:center;border:2px solid z);box-shadow:0 1px 2px rgba(0,0,0,0.08);'>z</span>)r   upper)method	color_mapcolors      r   
method_boxrn  L  sb    I MM&,,.&1EW ??Dg FLLN7	$r   r;   )r   rM   returnzdict[str, list[float]])r2   z#dict[str, list[float | str] | None]ro  z#tuple[list[str], list[list[float]]])rN   dictro  z*dict[str, dict[str, dict[str, list[str]]]])rV   z&list[ImageClassificationOutputElement]ro  rp  )rV   zlist[dict[str, str | float]]ro  rp  )r`   rp  ro  ztuple[str, dict])rl   r   )r   zhttpx.Responsero  rM   )r   rM   r   zlist[dict[str, str | int]])rl   r   r   rM   )r   rp  ro  rp  )r   r   )
r  rM   r  rM   r  rp  r  rM   r  z
str | None)rA  rp  ro  zcomponents.Component)r  rp  rK  rp  ro  rp  )r  rp  rK  rp  ro  zcomponents.Component | None)rk  rM   ro  rM   )1r  
__future__r   r   r   r   r/   r#   r    r   r'   gradio_client.utilsr   huggingface_hubr   r   r   r<  r   gradio.exceptionsr	   r
   r   r8   rJ   rQ   rX   r\   ra   rc   ro   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r0  rG  rQ  rc  rn  r[   r   r   <module>ru     s   I "     	    < T T  9<5($2.8A5*%! 4$&"(<%*,# "KKK K 	K
 K\,^ 66"6 6rr   