o
    e                     @   s  d 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mZm	Z	 ddl
Z
ddlZddlmZ dedeeee f fddZd	eeee f de	ee eee  f fd
dZdedeeeeeeee f f f fddZdedefddZde
jdefddZdedefddZdS )z'Utility function for gradio/external.py    N)DictListTuple)
components
model_namereturnc                 C   s   t d|  d}|jdkrtd|  t i }n(td|j}|d u r(i }nt	t
|jd | d  }|di di }|sLtd	|  d
| D ]}t|D ]\}}t|trht|rhd||< qVqP|S )Nzhttps://huggingface.co/z/resolve/main/README.md   z%Cannot load examples from README for z,(?:^|[
])---[
]+([\S\s]*?)[
]+---([
]|$)ZwidgetZ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)requestsgetstatus_codewarningswarnUserWarningresearchtextnextyamlZsafe_load_allspan
ValueErrorvalues	enumerate
isinstancefloatmathisnan)r   Zreadmeexample_dataZ
yaml_regexZexample_yamldataival r"   ED:\Projects\ConvertPro\env\Lib\site-packages\gradio/external_utils.pyget_tabular_examples   s0   

r$   r   c                    s   t   }t fdd|D }g }t|D ]'}g }|D ]} | p$g }|t|kr1|d q|||  q|| q||fS )Nc                 3   s     | ]}t  | p
g V  qd S )N)len).0headerr   r"   r#   	<genexpr>6   s    zcols_to_rows.<locals>.<genexpr>r
   )listkeysmaxranger%   append)r   headersZn_rowsr   Z	row_indexZrow_datar'   colr"   r(   r#   cols_to_rows2   s   r1   incoming_datac                    s@   i }t | d D ]\ } fdd| d D ||< qdd|iiS )Nr/   c                    s   g | ]}t |  qS r"   )str)r&   rowr    r"   r#   
<listcomp>G   s    z rows_to_cols.<locals>.<listcomp>r   inputs)r   )r2   Zdata_column_wiser'   r"   r5   r#   rows_to_colsD   s   r8   scoresc                 C   s4   t |  tddd}|d d dd |D dS )N   T)keyreverser   c                 S   s   g | ]}|d  |d dqS )r   r:   )label
confidencer"   )r&   predr"   r"   r#   r6   T   s    z%postprocess_label.<locals>.<listcomp>)r=   Zconfidences)sorteditemsoperator
itemgetter)r9   Zsorted_predr"   r"   r#   postprocess_labelP   s   
rD   rc              
   C   s   t | jd}d}||v r|S | jd}|dkr=z|  d }|d }|d }W n ty< } ztd|d }~ww 	 d| d| }|S )	Nzutf-8z;base64,zcontent-typezapplication/jsonr   Zblobz7Cannot determine content type returned by external API.zdata:)	base64	b64encodecontentdecoder/   r   jsonKeyErrorr   )rE   Zbase64_reprZdata_prefixcontent_typer   ZkeZ
new_base64r"   r"   r#   encode_to_base64Z   s*   rM   configc                    sJ   dd  d D  d< dd  d D  d< h d} fd	d
|D   S )zGStreamlines the interface config dictionary to remove unnecessary keys.c                 S      g | ]}t |qS r"   r   Zget_component_instancer&   	componentr"   r"   r#   r6   {       z/streamline_spaces_interface.<locals>.<listcomp>Zinput_componentsr7   c                 S   rO   r"   rP   rQ   r"   r"   r#   r6      rS   Zoutput_componentsoutputs>   descriptiontitler7   rT   Zflagging_optionsZarticlec                    s   i | ]}| | qS r"   r"   )r&   krN   r"   r#   
<dictcomp>   s    z/streamline_spaces_interface.<locals>.<dictcomp>r"   )rN   
parametersr"   rX   r#   streamline_spaces_interfacey   s   

r[   )__doc__rF   r   rB   r   r   typingr   r   r   r   r   Zgradior   r3   r   r$   r1   r8   rD   ResponserM   r[   r"   r"   r"   r#   <module>   s(    
.
