
    Fg"                    ,   S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
JrJr  SSKJr  SS jrSS jr    SS jrSS	 jrSS
 jrSS jrS S jrSS jrS!S jrS!S jrS!S jrS!S jrS"S jrS#S jrS!S jrS!S jrS rS r S$S jr!S%S jr"g)&zCUtility function for gradio/external.py, designed for internal use.    )annotationsN)HfApi ImageClassificationOutputElementInferenceClient)
componentsc                    [        US9n[        SU  35        UR                  U 5      nUR                  nUR                  nXE4$ )N)tokenz,Fetching model from: https://huggingface.co/)r   print
model_infopipeline_tagtags)
model_namehf_tokenhf_apir   pipeliner   s         f/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/gradio/external_utils.pyget_model_infor      sH    "F	8
EF"":.J&&H??D>    c                   [         R                  " SU  S35      nUR                  S:w  a!  [        R                  " SU  3[
        5        0 nO[        R                  " SUR                  5      nUc  0 nO_[        [        R                  " UR                  S UR                  5       S    5      5      nUR                  S0 5      R                  S0 5      nU(       d  [        S	U  S
35      eUR                  5        HO  n[        U5       H=  u  pg[!        U["        5      (       d  M  [$        R&                  " U5      (       d  M9  SXV'   M?     MQ     U$ )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_examplesr6       s,   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
 	
 ##%oFA#u%%$**S// & & r   c                L  ^  [        T R                  5       5      n[        U 4S jU 5       5      n/ n[        U5       Hb  n/ nU HF  nT U   =(       d    / nU[	        U5      :  a  UR                  S5        M3  UR                  Xt   5        MH     UR                  U5        Md     X4$ )Nc              3  R   >#    U  H  n[        TU   =(       d    / 5      v   M     g 7fN)len).0headerr0   s     r   	<genexpr>cols_to_rows.<locals>.<genexpr>B   s#     GwV\&)/R00ws   $'r   )listkeysmaxranger:   append)r0   headersn_rowsr3   	row_indexrow_datar<   cols   `       r   cols_to_rowsrI   >   s     <$$&'GGwGGFD6]	Fv&,"CCH$&/  	H # =r   c                    0 n[        U S   5       H(  u  p#U S    Vs/ s H  n[        XB   5      PM     snX'   M*     SSU00$ s  snf )NrD   r3   inputs)r*   str)incoming_datadata_column_wiser4   r<   rows        r   rows_to_colsrP   P   sZ    }Y78	;H;P#Q;PCCK;P#Q  9v/011 $Rs   Ac                Z    U  Vs0 s H  oR                   UR                  _M     sn$ s  snf r9   )labelscorescorescs     r   postprocess_labelrW   \   s%    &,-fGGQWWf---s    (c                >    U  Vs0 s H  oS   US   _M     sn$ s  snf )N	token_strrS    rT   s     r   postprocess_mask_tokensr[   `   s%    0671kNAgJ&777   c                     U S   U S   U S   04$ NanswerrS   rZ   )r_   s    r   postprocess_question_answeringr`   d   s     (fX.w@@@r   c                >    U  Vs0 s H  oS   US   _M     sn$ s  snf r^   rZ   rT   s     r   %postprocess_visual_question_answeringrb   h   s%    -34VhK7#V444r\   c                   ^  SU 4S jjnU$ )Nc                B   > TR                  XR                  S5      US9$ )N,)multi_label)zero_shot_classificationsplit)inputlabelsrf   clients      r   zero_shot_classification_innerHzero_shot_classification_wrapper.<locals>.zero_shot_classification_innerm   s)    ..<<$+ / 
 	
r   )ri   rL   rj   rL   rf   boolrZ   )rk   rl   s   ` r    zero_shot_classification_wrapperro   l   s    

 *)r   c                   ^  SU 4S jjnU$ )Nc                D   > TR                  XR                  S5      5      $ )N
)sentence_similarityrh   )ri   	sentencesrk   s     r   sentence_similarity_inner>sentence_similarity_wrapper.<locals>.sentence_similarity_innerv   s    ))%1FGGr   )ri   rL   rt   rL   rZ   )rk   ru   s   ` r   sentence_similarity_wrapperrw   u   s    H %$r   c                   ^  SU 4S jjnU$ )Nc                ,   > U TR                  U 5      -   $ r9   )text_generation)ri   rk   s    r   text_generation_inner6text_generation_wrapper.<locals>.text_generation_inner}   s    v--e444r   ri   rL   rZ   )rk   r{   s   ` r   text_generation_wrapperr~   |   s    5 ! r   c                   ^  U 4S jnU$ )Nc                   > U(       d  / nUR                  SU S.5        TR                  U5      nUR                  S   R                  R                  $ )Nuser)rolecontentr   )rC   chat_completionchoicesmessager   )r   historyresultrk   s      r   chat_fn'conversational_wrapper.<locals>.chat_fn   sG    G7;<''0~~a ((000r   rZ   )rk   r   s   ` r   conversational_wrapperr      s    1 Nr   c                D   [         R                  " U R                  5      R                  S5      nSnX!;   a  U$ U R                  R                  S5      nUS:X  a   U R                  5       S   nUS   nUS   nO SU SU 3nU$ ! [         a  n[        S5      UeS nAff = f)	Nzutf-8z;base64,zcontent-typezapplication/jsonr   blobz7Cannot determine content type returned by external API.zdata:)	base64	b64encoder   decoderD   r   jsonKeyErrorr(   )rbase64_reprdata_prefixcontent_typer3   ke
new_base64s          r   encode_to_base64r      s    ""199-44W=KK!yy}}^4--vvx{#N3"6l \N(;-@
   Ms   B 
BBBc                    [        U5      S:X  a  U S 4/$ / nSnSnU H=  nUS   US   US   p7nUR                  XU S 45        UR                  XU U45        UnM?     UR                  XS  S 45        U$ )Nr   entity_groupstartend)r:   rC   )input_string
ner_groupsoutputr   prev_endgroupentityr   s           r   format_ner_listr      s    
:!t$%%F
CH">2E'NE%Ls|U3T:;|#.78	  MM<%t,-Mr   c                   ^  SU 4S jjnU$ )Nc                <   > TR                  U 5      n[        X5      $ r9   )token_classificationr   )ri   ner_listrk   s     r   token_classification_inner@token_classification_wrapper.<locals>.token_classification_inner   s    ..u5u//r   r}   rZ   )rk   r   s   ` r   token_classification_wrapperr      s    0 &%r   c                   ^  SU 4S jjnU$ )Nc                   > TR                  U 5      nU Vs/ s H&  nUS   S   US   S   US   S   US   S   4US   4PM(     nnX4$ s  snf )NboxxminyminxmaxymaxrR   )object_detection)ri   r   aformatted_annotationsrk   s       r   object_detection_inner8object_detection_wrapper.<locals>.object_detection_inner   s    --e4 !!
 ! eHV$eHV$eHV$eHV$	 '
 ! 	 !
 --!
s   -A	r}   rZ   )rk   r   s   ` r   object_detection_wrapperr      s    .  "!r   c                <    U(       d  U / / 4$ U US   S   US   S   4$ )Nconversationgenerated_responsespast_user_inputsrZ   )r#   states     r   chatbot_preprocessr      s:    R|n34n01 r   c                H    [        [        U S   S   U S   S   SS95      nX4$ )Nr   r   r   F)strict)r?   zip)responsechatbot_historys     r   chatbot_postprocessr      s>    ^$%78^$%:;	
O $$r   c                   ^ ^ U U4S jnU$ )Nc                   > TS;  a  [        ST< S35      eTR                  (       d   eTS:X  a  TR                  U TR                  S9$ TR                  U TR                  S9$ )N)tabular_classificationtabular_regressionzpipeline type z not supportedr   )model)	TypeErrorr   r   r   )r3   rk   r   s    r   tabular_inner&tabular_wrapper.<locals>.tabular_inner   si    KKnXLGHH|||//00V\\0JJ,,T,FFr   rZ   )rk   r   r   s   `` r   tabular_wrapperr      s    G r   c                   U S    Vs/ s H  n[         R                  " U5      PM     snU S'   U S    Vs/ s H  n[         R                  " U5      PM     snU S'   1 SknU Vs0 s H  o3X   _M	     n nU $ s  snf s  snf s  snf )zGStreamlines the interface config dictionary to remove unnecessary keys.input_componentsrK   output_componentsoutputs>   titlerK   articler   descriptionflagging_options)r   get_component_instance)config	component
parametersks       r   streamline_spaces_interfacer      s       233I 	)))43F8   344I 	)))44F9J %//JqlJF/M# 0s    A5 A:#A?r9   )r   rL   returnzdict[str, list[float]])r0   z#dict[str, list[float | str] | None]r   z#tuple[list[str], list[list[float]]])rM   dictr   z*dict[str, dict[str, dict[str, list[str]]]])rU   z&list[ImageClassificationOutputElement]r   r   )rU   zlist[dict[str, str | float]]r   r   )r_   r   r   ztuple[str, dict])rk   r   )r   zhttpx.Responser   rL   )r   rL   r   zlist[dict[str, str | int]])rk   r   r   rL   )r   r   r   r   )#__doc__
__future__r   r   r-   r!   r   r   r%   huggingface_hubr   r   r   gradior   r   r6   rI   rP   rW   r[   r`   rb   ro   rw   r~   r   r   r   r   r   r   r   r   r   rZ   r   r   <module>r      s    I "   	    T T <5($2.8A5*%!4$&"(%*r   