
    1Vh                         d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ d
Z G d d      Z G d dej&                        Zy)zwThe TensorBoard Scalars plugin.

See `http_api.md` in this directory for specifications of the routes for
this plugin.
    N)wrappers)errors)plugin_util)	http_util)provider)base_plugin)metadatai  c                       e Zd ZdZdZdZy)OutputFormatz<An enum used to list the valid output formats for API calls.jsoncsvN)__name__
__module____qualname____doc__JSONCSV     Y/home/dcms/DCMS/lib/python3.12/site-packages/tensorboard/plugins/scalar/scalars_plugin.pyr   r   &   s    FD
Cr   r   c                       e Zd ZdZej
                  Zd Zd Zd Z	d Z
ddZd Zd	 Zej                  j                   d
        Zej                  j                   d        Zej                  j                   d        Zy)ScalarsPluginzScalars Plugin for TensorBoard.c                     |j                   xs i j                  | j                  t              | _        |j
                  | _        t        j                  dd      | _	        y)z}Instantiates ScalarsPlugin via TensorBoard core.

        Args:
          context: A base_plugin.TBContext instance.
        scalarr   )	data_kindlatest_known_versionN)
sampling_hintsgetplugin_name_DEFAULT_DOWNSAMPLING_downsample_todata_provider_data_providerr   _MetadataVersionChecker_version_checker)selfcontexts     r   __init__zScalarsPlugin.__init__2   sW      '55;@@3
 &33 + C C!"!
r   c                 J    | j                   | j                  | j                  dS )N)z/scalarsz/scalars_multirunz/tags)scalars_routescalars_multirun_route
tags_router&   s    r   get_plugin_appszScalarsPlugin.get_plugin_appsA   s%    **!%!<!<__
 	
r   c                      y)NFr   r-   s    r   	is_activezScalarsPlugin.is_activeH   s    r   c                 .    t        j                  d      S )Nztf-scalar-dashboard)element_name)r   FrontendMetadatar-   s    r   frontend_metadatazScalarsPlugin.frontend_metadataK   s    ++9NOOr   Nc                    | j                   j                  ||t        j                        }|D ci c]  }|i  }}|j	                         D ]  \  }}|j	                         D ]  \  }}t        j
                  |j                        }	| j                  j                  |	j                  ||      sMt        j                  |j                        }
|j                  |
d||   |<     |S c c}w )zJReturn {runName: {tagName: {displayName: ..., description:
        ...}}}.)experiment_idr   )displayNamedescription)r#   list_scalarsr	   PLUGIN_NAMEitemsparse_plugin_metadataplugin_contentr%   okversionr   markdown_to_safe_htmlr8   display_name)r&   ctx
experimentmappingrunresulttag_to_contenttag	metadatummdr8   s              r   
index_implzScalarsPlugin.index_implN   s     %%22$ ,, 3 

 &--c#r'--#*==? 	C"0"6"6"8 
Y33I4L4LM,,//

CE)??)) $-#9#9#.$sC 
	  .s   
C*c           
      t   | j                   j                  ||t        j                  | j                  t        j                  |g|g            }|j                  |i       j                  |d      }|t        j                  d|d|      |D cg c]%  }|j                  |j                  |j                  f' }	}|t        j                  k(  r_t        j                          }
t#        j$                  |
      }|j'                  g d       |j)                  |	       |
j+                         dfS |	dfS c c}w )	'Result of the form `(body, mime_type)`.runstagsr6   r   
downsamplerun_tag_filterNzNo scalar data for run=z, tag=)z	Wall timeStepValueztext/csvapplication/json)r#   read_scalarsr	   r:   r!   r   RunTagFilterr   r   NotFoundError	wall_timestepvaluer   r   ioStringIOr   writerwriterow	writerowsgetvalue)r&   rB   rH   rE   rC   output_formatall_scalarsscalarsxvalues	string_ior_   s               r   scalars_implzScalarsPlugin.scalars_imple   s   ))66$ ,,**#00se3%H 7 
 //#r*..sD9?&&7:C@  ;BBQ1;;0BBL,,,IZZ	*FOO:;V$&&(*55.// Cs   *D5c                 l   | j                   j                  ||t        j                  | j                  t        j                  ||g            }|j                         D ci c]:  \  }}|||   D cg c]%  }|j                  |j                  |j                  f' c}< }	}}}|	dfS c c}w c c}}}w )rM   rN   rQ   rV   )r#   rW   r	   r:   r!   r   rX   r;   rZ   r[   r\   )
r&   rB   rH   rO   rC   rd   rE   run_datarf   bodys
             r   scalars_multirun_implz#ScalarsPlugin.scalars_multirun_impl}   s    ))66$ ,,**#00d#G 7 
 $/#4#4#6
 
h (3-HQ1;;0HH
 
 ()) I
s   #B/3*B*B/*B/c                     t        j                  |j                        }t        j                  |j                        }| j	                  ||      }t        j                  ||d      S )N)rC   rV   )r   r'   environr6   rK   r   Respond)r&   requestrB   rC   indexs        r   r,   zScalarsPlugin.tags_route   sR    !!'//2 ..w?

;  %1CDDr   c                    |j                   j                  d      }|j                   j                  d      }||t        j                  d|d|      t	        j
                  |j                        }t	        j                  |j                        }|j                   j                  d      }| j                  |||||      \  }}t        j                  |||      S )z9Given a tag and single run, return array of ScalarEvents.rH   rE   z(Both run and tag must be specified: tag=z, run=format)argsr   r   InvalidArgumentErrorr   r'   ro   r6   ri   r   rp   )	r&   rq   rH   rE   rB   rC   rc   rl   	mime_types	            r   r*   zScalarsPlugin.scalars_route   s     llu%llu%;#+-- 
 !!'//2 ..w?
((2 --c:}
y   $	::r   c                    |j                   dk7  r t        j                  j                  dg      |j                  j                  d      }|j                  j                  d      }t        |      dk7  rt        j                  d      |d   }t        j                  |j                        }t        j                  |j                        }| j                  ||||      \  }}t        j                  |||      S )z@Given a tag and list of runs, return dict of ScalarEvent arrays.POSTrH   rO      z"tag must be specified exactly oncer   )methodwerkzeug
exceptionsMethodNotAllowedformgetlistlenr   rv   r   r'   ro   r6   rm   r   rp   )	r&   rq   rP   rO   rH   rB   rC   rl   rw   s	            r   r+   z$ScalarsPlugin.scalars_multirun_route   s     >>V#%%66x@@||##E*||##F+t9>--4  1g!!'//2 ..w?
 66dJ
y   $	::r   )N)r   r   r   r   r	   r:   r   r(   r.   r0   r4   rK   ri   rm   r   Requestapplicationr,   r*   r+   r   r   r   r   r   -   s    )&&K

P.00* !!E "E !!; ";$ !!; ";r   r   )r   r   r]   werkzeug.exceptionsr|   r   tensorboardr   r   tensorboard.backendr   tensorboard.datar   tensorboard.pluginsr   tensorboard.plugins.scalarr	   r    r   TBPluginr   r   r   r   <module>r      sN     	    # ) % + /  K;K(( K;r   