
    &Vf                         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dS )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dS )OutputFormatz<An enum used to list the valid output formats for API calls.jsoncsvN)__name__
__module____qualname____doc__JSONCSV     f/var/www/html/software/conda/lib/python3.11/site-packages/tensorboard/plugins/scalar/scalars_plugin.pyr   r   &   s        FFD
CCCr   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dS )ScalarsPluginzScalars Plugin for TensorBoard.c                     |j         pi                     | j        t                    | _        |j        | _        t          j        dd          | _	        dS )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   s`      '5;@@3
 
 &3 + C!"!
 !
 !
r   c                 ,    | 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                     dS )NFr   r-   s    r   	is_activezScalarsPlugin.is_activeH   s    ur   c                 ,    t          j        d          S )Nztf-scalar-dashboard)element_name)r   FrontendMetadatar-   s    r   frontend_metadatazScalarsPlugin.frontend_metadataK   s    +9NOOOOr   Nc                    | j                             ||t          j                  }d |D             }|                                D ]\  }}|                                D ]l\  }}t          j        |j                  }	| j                            |	j	        ||          s@t          j        |j                  }
|j        |
d||         |<   m|S )zJReturn {runName: {tagName: {displayName: ..., description:
        ...}}}.)experiment_idr   c                     i | ]}|i S r   r   ).0runs     r   
<dictcomp>z,ScalarsPlugin.index_impl.<locals>.<dictcomp>V   s    ---c#r---r   )displayNamedescription)r#   list_scalarsr	   PLUGIN_NAMEitemsparse_plugin_metadataplugin_contentr%   okversionr   markdown_to_safe_htmlr<   display_name)r&   ctx
experimentmappingresultr9   tag_to_contenttag	metadatummdr<   s              r   
index_implzScalarsPlugin.index_implN   s     %22$ , 3 
 

 .-W---%,]]__ 	 	!S.$2$8$8$:$: 
 
 i3I4LMM,//
CEE )?)  $-#9#.$ $sC  
 r   c           
      (   | j                             ||t          j        | j        t          j        |g|g                    }|                    |i                               |d          }|t          j	        d|d|          d |D             }|t          j        k    rit          j                    }	t          j        |	          }
|
                    g d           |
                    |           |	                                dfS |d	fS )
'Result of the form `(body, mime_type)`.runstagsr6   r   
downsamplerun_tag_filterNzNo scalar data for run=z, tag=c                 6    g | ]}|j         |j        |j        fS r   	wall_timestepvaluer8   xs     r   
<listcomp>z.ScalarsPlugin.scalars_impl.<locals>.<listcomp>s   s%    BBBQ1;0BBBr   )z	Wall timeStepValueztext/csvapplication/json)r#   read_scalarsr	   r>   r!   r   RunTagFilterr   r   NotFoundErrorr   r   ioStringIOr   writerwriterow	writerowsgetvalue)r&   rF   rK   r9   rG   output_formatall_scalarsscalarsvalues	string_iorg   s              r   scalars_implzScalarsPlugin.scalars_imple   s&   )66$ ,*#0se3%HHH 7 
 
 //#r**..sD99?&&7:ssCC@   CB'BBBL,,,IZ	**FOO:::;;;V$$$&&((*55.//r   c           
          | j                             ||t          j        | j        t          j        |g                    }fd|                                D             }|dfS )rP   rQ   rT   c                 <    i | ]\  }}|d  |         D             S )c                 6    g | ]}|j         |j        |j        fS r   rX   r\   s     r   r^   zBScalarsPlugin.scalars_multirun_impl.<locals>.<dictcomp>.<listcomp>   s%    HHHQ1;0HHHr   r   )r8   r9   run_datarK   s      r   r:   z7ScalarsPlugin.scalars_multirun_impl.<locals>.<dictcomp>   sB     
 
 
h HH(3-HHH
 
 
r   ra   )r#   rb   r	   r>   r!   r   rc   r?   )r&   rF   rK   rR   rG   rl   bodys     `    r   scalars_multirun_implz#ScalarsPlugin.scalars_multirun_impl}   s    )66$ ,*#0d#GGG 7 
 

 
 
 
#.#4#4#6#6
 
 
 ())r   c                     t          j        |j                  }t          j        |j                  }|                     ||          }t          j        ||d          S )N)rG   ra   )r   r'   environr6   rN   r   Respond)r&   requestrF   rG   indexs        r   r,   zScalarsPlugin.tags_route   sQ    !'/22 .w??

;; %1CDDDr   c                    |j                             d          }|j                             d          }||t          j        d|d|          t	          j        |j                  }t	          j        |j                  }|j                             d          }|                     |||||          \  }}t          j
        |||          S )z9Given a tag and single run, return array of ScalarEvents.rK   r9   Nz(Both run and tag must be specified: tag=z, run=format)argsr   r   InvalidArgumentErrorr   r'   rx   r6   rp   r   ry   )	r&   rz   rK   r9   rF   rG   rk   ru   	mime_types	            r   r*   zScalarsPlugin.scalars_route   s     lu%%lu%%;#+--33  
 !'/22 .w??
((22 --c:}
 
y  $	:::r   c                    |j         dk    r t          j                            dg          |j                            d          }|j                            d          }t          |          dk    rt          j        d          |d         }t          j
        |j                  }t          j        |j                  }|                     ||||          \  }}t          j        |||          S )z@Given a tag and list of runs, return dict of ScalarEvent arrays.POSTrK   rR      z"tag must be specified exactly oncer   )methodwerkzeug
exceptionsMethodNotAllowedformgetlistlenr   r   r   r'   rx   r6   rv   r   ry   )	r&   rz   rS   rR   rK   rF   rG   ru   r   s	            r   r+   z$ScalarsPlugin.scalars_multirun_route   s     >V##%66x@@@|##E**|##F++t99>>-4   1g!'/22 .w??
 66dJ
 
y  $	:::r   )N)r   r   r   r   r	   r>   r   r(   r.   r0   r4   rN   rp   rv   r   Requestapplicationr,   r*   r+   r   r   r   r   r   -   s        ))&K
 
 

 
 
  P P P   .0 0 00* * * !E E "!E !; ; "!;$ !; ; "!; ; ;r   r   )r   r   re   werkzeug.exceptionsr   r   tensorboardr   r   tensorboard.backendr   tensorboard.datar   tensorboard.pluginsr   tensorboard.plugins.scalarr	   r    r   TBPluginr   r   r   r   <module>r      s    


 				                 # # # # # # ) ) ) ) ) ) % % % % % % + + + + + + / / / / / /        K; K; K; K; K;K( K; K; K; K; K;r   