o
    2h                     @   sH   d Z ddlZddlZddlZddlmZ G dd dZG dd dZdS )z=Classes and functions for handling the DownloadData API call.    N)errorc                   @   s   e Zd ZdZdZdZdZdS )OutputFormatz<An enum used to list the valid output formats for API calls.jsoncsvlatexN)__name__
__module____qualname____doc__JSONCSVLATEX r   r   d/var/www/html/chatgem/venv/lib/python3.10/site-packages/tensorboard/plugins/hparams/download_data.pyr      s
    r   c                   @   s    e Zd ZdZdd Zdd ZdS )HandlerzHandles a DownloadData request.c                 C   s"   || _ || _|| _|| _|| _dS )aF  Constructor.

        Args:
          context: A backend_context.Context instance.
          experiment: Experiment proto.
          session_groups: ListSessionGroupsResponse proto.
          response_format: A string in the OutputFormat enum.
          columns_visibility: A list of boolean values to filter columns.
        N)_context_experiment_session_groups_response_format_columns_visibility)selfcontext
experimentsession_groupsresponse_formatcolumns_visibilityr   r   r   __init__$   s
   
zHandler.__init__c                    s  | j }| j}| j}| jg }|jD ]}||jp|j q|jD ]}||jp*|jj	 q fdd}||}g }dd }	dd }
|j
D ]A}g }|jD ]}||	|j|j  qKi }|jD ]}|
|j}|j||< q^|jD ]}|
|j}||| qn||| qD|tjkrd}t||d}||fS |tjkrd	d
  d}ddt|  }dt |d }d fdd|D }d}|| | | }||fS |tjkrt }t|}|| || | }d}||fS td| )zHandles the request specified on construction.

        Returns:
          A response body.
          A mime type (string) for the response.
        c                    s   dd t |  D S )Nc                 S   s   g | ]\}}|r|qS r   r   ).0valuevisibler   r   r   
<listcomp>O   s    z8Handler.run.<locals>._filter_columns.<locals>.<listcomp>)zip)row)
visibilityr   r   _filter_columnsN   s   z$Handler.run.<locals>._filter_columnsc                 S   s4   |  dr| jS |  dr| jS |  dr| jS dS )Nnumber_valuestring_value
bool_value )HasFieldr%   r&   r'   )r   r   r   r   
_get_valueU   s   


zHandler.run.<locals>._get_valuec                 S   s   | j d | j S )N.)grouptag)metricr   r   r   _get_metric_id_   s   z#Handler.run.<locals>._get_metric_idzapplication/json)headerrowsc                 S   s   | d u rdS t | trd|  S t | trKt| rdS | tdtdfv r0d| dk r-d S d S d	|  }d
|v rG|d
\}}d|t|f S d| S | ddddS )N-z$%d$z$\mathrm{NaN}$infz-infz
$%s\infty$r   +z%.3gez$%s\cdot 10^{%d}$z$%s$_z\_%z\%)
isinstanceintfloatmathisnansplitreplace)r   
scientificcoefficientexponentr   r   r   latex_formatt   s$   


z!Handler.run.<locals>.latex_formatzapplication/x-latexz'\begin{table}[tbp]
\begin{tabular}{%s}
l & z \\ \hline
r(   c                 3   s$    | ]}d  t |d V  qdS )rD   z \\
N)joinmap)r   r"   )rB   r   r   	<genexpr>   s    
zHandler.run.<locals>.<genexpr>z!\hline
\end{tabular}
\end{table}
ztext/csvzInvalid reponses format: %s) r   r   r   r   hparam_infosappenddisplay_namenamemetric_infosr-   r   hparamsmetric_valuesr   getr   r   dictr   lenrE   rF   r   ioStringIOr   writerwriterow	writerowsgetvaluer   HParamsError)r   r   r   r   r0   hparam_infometric_infor$   r1   r*   r/   r,   r"   rN   metric_value	metric_id	mime_typebodytop_partheader_partmiddle_partbottom_part	string_iorT   r   )rB   r#   r   run;   sn   









.





zHandler.runN)r   r   r	   r
   r   rd   r   r   r   r   r   !   s    r   )r
   r   rR   r;   tensorboard.plugins.hparamsr   r   r   r   r   r   r   <module>   s   