
    1Vh                     T    d Z ddlZddlZddlZddlmZ  G d d      Z G d d      Zy)z=Classes and functions for handling the DownloadData API call.    N)errorc                       e Zd ZdZdZdZdZy)OutputFormatz<An enum used to list the valid output formats for API calls.jsoncsvlatexN)__name__
__module____qualname____doc__JSONCSVLATEX     Y/home/dcms/DCMS/lib/python3.12/site-packages/tensorboard/plugins/hparams/download_data.pyr   r      s    FD
CEr   r   c                       e Zd ZdZd Zd Zy)HandlerzHandles a DownloadData request.c                 J    || _         || _        || _        || _        || _        y)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_visibilitys         r   __init__zHandler.__init__$   s+    "  %- /#5 r   c                    | j                   }| j                  }| j                  }| j                  g }|j                  D ]+  }|j                  |j                  xs |j                         - |j                  D ]5  }|j                  |j                  xs |j                  j                         7 fd} ||      }g }d }	d }
|j                  D ]  }g }|j                  D ]0  }|j                   |	|j                  |j                                  2 i }|j                  D ]#  } |
|j                        }|j                  ||<   % |j                  D ]4  } |
|j                        }|j                  |j                  |             6 |j                   ||              |t        j                   k(  rd}t#        ||      }||fS |t        j$                  k(  r_d d}dd	t'        |      z  z  }d
j)                  t+        |            dz   }dj)                  fd|D              }d}||z   |z   |z   }||fS |t        j,                  k(  rat/        j0                         }t3        j4                  |      }|j7                  |       |j9                  |       |j;                         }d}||fS t=        j>                  d|z        )zHandles the request specified on construction.

        Returns:
          A response body.
          A mime type (string) for the response.
        c                 T    t        |       D cg c]
  \  }}|s	| c}}S c c}}w )N)zip)rowvaluevisible
visibilitys      r   _filter_columnsz$Handler.run.<locals>._filter_columnsN   s$    03C0DPneWEPPPs   
$$c                     | j                  d      r| j                  S | j                  d      r| j                  S | j                  d      r| j                  S y)Nnumber_valuestring_value
bool_value )HasFieldr+   r,   r-   )r&   s    r   
_get_valuezHandler.run.<locals>._get_valueU   sM    ~~n-)))~~n-)))~~l+'''r   c                 :    | j                   dz   | j                  z   S )N.)grouptag)metrics    r   _get_metric_idz#Handler.run.<locals>._get_metric_id_   s    <<#%

22r   zapplication/json)headerrowsc                 r   | yt        | t              rd| z  S t        | t              rnt        j                  |       ry| t        d      t        d      fv rd| dk  rdz  S dz  S d	| z  }d
|v r$|j                  d
      \  }}d|t        |      fz  S d|z  S | j                  dd      j                  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exponents       r   latex_formatz!Handler.run.<locals>.latex_formatt   s    =s+!E>)u-zz%(0uuV} ==,uqyJJcJJ!'%Jj(0:0@0@0E-X3'M7    "J..}}S%088eDDr   zapplication/x-latexz'\begin{table}[tbp]
\begin{tabular}{%s}
l & z \\ \hline
r.   c              3   Z   K   | ]"  }d j                  t        |            dz    $ yw)rL   z \\
N)joinmap).0r%   rJ   s     r   	<genexpr>zHandler.run.<locals>.<genexpr>   s+      "CF

3|S12Y>"s   (+z!\hline
\end{tabular}
\end{table}
ztext/csvzInvalid reponses format: %s) r   r   r   r   hparam_infosappenddisplay_namenamemetric_infosr4   r   hparamsmetric_valuesr&   getr   r   dictr   lenrN   rO   r   ioStringIOr   writerwriterow	writerowsgetvaluer   HParamsError)r   r   r   r   r7   hparam_infometric_infor)   r8   r0   r6   r3   r%   rX   metric_value	metric_id	mime_typebodytop_partheader_partmiddle_partbottom_part	string_ior^   rJ   r(   s                           @@r   runzHandler.run;   s    %%
--//--
%22 	HKMM+22Fk6F6FG	H &22 	LKMM+22Jk6F6F6J6JK	L	Q !(		3 $22 	.EC)66 H

:emmK4D4D&EFGHM % 3 3 >*<+<+<=	+7+=+=i(>  *66 9*;+;+;<	

=,,Y789 KK,-	. l///*IvD1D\ Y[  2 22E( .IDc&k!H 

3|V458II  '' "JN" K DKk)K7+ED Y  0 00IZZ	*FOOF#T"%%'D"I
 Y $$-? r   N)r	   r
   r   r   r!   rn   r   r   r   r   r   !   s    )6.dr   r   )r   r   r\   rC   tensorboard.plugins.hparamsr   r   r   r   r   r   <module>rp      s/    D  	  - ~ ~r   