
    1Vh                         d 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  G d	 d
ej                        Zy)zThe TensorBoard Distributions (a.k.a. compressed histograms) plugin.

See `http_api.md` in this directory for specifications of the routes for
this plugin.
    )wrappers)plugin_util)	http_util)base_plugin)
compressor)metadata)histograms_pluginc                       e Zd ZdZej
                  ZdZd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zej"                  j$                  d        Zej"                  j$                  d        Zy)DistributionsPlugina  Distributions Plugin for TensorBoard.

    This supports both old-style summaries (created with TensorFlow ops
    that output directly to the `histo` field of the proto) and new-
    style summaries (as created by the
    `tensorboard.plugins.histogram.summary` module).
    i  c                 8    t        j                  |      | _        y)zInstantiates DistributionsPlugin via TensorBoard core.

        Args:
          context: A base_plugin.TBContext instance.
        N)r	   HistogramsPlugin_histograms_plugin)selfcontexts     e/home/dcms/DCMS/lib/python3.12/site-packages/tensorboard/plugins/distribution/distributions_plugin.py__init__zDistributionsPlugin.__init__/   s     #4"D"DW"M    c                 4    | j                   | j                  dS )N)z/distributionsz/tags)distributions_route
tags_router   s    r   get_plugin_appsz#DistributionsPlugin.get_plugin_apps7   s    "66__
 	
r   c                 6    | j                   j                         S )zThis plugin is active iff any run has at least one histogram tag.

        (The distributions plugin uses the same data source as the
        histogram plugin.)
        )r   	is_activer   s    r   r   zDistributionsPlugin.is_active=   s     &&0022r   c                 0    | j                   j                  fS N)r   plugin_namer   s    r   data_plugin_namesz%DistributionsPlugin.data_plugin_namesE   s    ''3355r   c                 .    t        j                  d      S )Nztf-distribution-dashboard)element_name)r   FrontendMetadatar   s    r   frontend_metadataz%DistributionsPlugin.frontend_metadataH   s    ++4
 	
r   c                     | j                   j                  ||||| j                        \  }}|D cg c]  }| j                  |       c}|fS c c}w )zResult of the form `(body, mime_type)`.

        Raises:
          tensorboard.errors.PublicError: On invalid request.
        )
experimentdownsample_to)r   histograms_implSAMPLE_SIZE	_compress)r   ctxtagrunr$   
histograms	mime_type	histograms           r   distributions_implz&DistributionsPlugin.distributions_implM   s`     #'"9"9"I"Icj@P@P #J #
Y 9CC9T^^I&C
 	
Cs   Ac                 B    |\  }}}t        j                  |      }|||gS r   )r   compress_histogram)r   r.   	wall_timestepbucketsconverted_bucketss         r   r(   zDistributionsPlugin._compress[   s-    %."D'&99'B4!233r   c                 <    | j                   j                  ||      S )Nr$   )r   
index_impl)r   r)   r$   s      r   r8   zDistributionsPlugin.index_impl`   s    &&11#*1MMr   c                     t        j                  |j                        }t        j                  |j                        }| j	                  ||      }t        j                  ||d      S )Nr7   zapplication/json)r   r   environexperiment_idr8   r   Respond)r   requestr)   r$   indexs        r   r   zDistributionsPlugin.tags_routec   sR    !!'//2 ..w?

;  %1CDDr   c                 H   t        j                  |j                        }t        j                  |j                        }|j                  j                  d      }|j                  j                  d      }| j                  ||||      \  }}t        j                  |||      S )zMGiven a tag and single run, return an array of compressed
        histograms.r*   r+   r7   )	r   r   r:   r;   argsgetr/   r   r<   )r   r=   r)   r$   r*   r+   bodyr-   s           r   r   z'DistributionsPlugin.distributions_routej   s     !!'//2 ..w?
llu%llu% 33cj 4 
y   $	::r   N)__name__
__module____qualname____doc__r   PLUGIN_NAMEr   r'   r   r   r   r   r"   r/   r(   r8   r   Requestapplicationr   r    r   r   r   r       s     &&K KN
36


4
N !!E "E !!
; "
;r   r   N)rF   werkzeugr   tensorboardr   tensorboard.backendr   tensorboard.pluginsr    tensorboard.plugins.distributionr   r   tensorboard.plugins.histogramr	   TBPluginr   rJ   r   r   <module>rR      s5     # ) + 7 5 ;U;+.. U;r   