127 lines
4.3 KiB
Python
127 lines
4.3 KiB
Python
# Copyright 2019 The TensorFlow Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
# ==============================================================================
|
|
"""Collection of first-party plugins.
|
|
|
|
This module exists to isolate tensorboard.program from the potentially
|
|
heavyweight build dependencies for first-party plugins. This way people
|
|
doing custom builds of TensorBoard have the option to only pay for the
|
|
dependencies they want.
|
|
|
|
This module also grants the flexibility to those doing custom builds, to
|
|
automatically inherit the centrally-maintained list of standard plugins,
|
|
for less repetition.
|
|
"""
|
|
|
|
|
|
import logging
|
|
|
|
import pkg_resources
|
|
|
|
from tensorboard.plugins.audio import audio_plugin
|
|
from tensorboard.plugins.core import core_plugin
|
|
from tensorboard.plugins.custom_scalar import custom_scalars_plugin
|
|
from tensorboard.plugins.debugger_v2 import debugger_v2_plugin
|
|
from tensorboard.plugins.distribution import distributions_plugin
|
|
from tensorboard.plugins.graph import graphs_plugin
|
|
from tensorboard.plugins.histogram import histograms_plugin
|
|
from tensorboard.plugins.hparams import hparams_plugin
|
|
from tensorboard.plugins.image import images_plugin
|
|
from tensorboard.plugins.metrics import metrics_plugin
|
|
from tensorboard.plugins.pr_curve import pr_curves_plugin
|
|
from tensorboard.plugins.profile_redirect import profile_redirect_plugin
|
|
from tensorboard.plugins.scalar import scalars_plugin
|
|
from tensorboard.plugins.text import text_plugin
|
|
from tensorboard.plugins.mesh import mesh_plugin
|
|
from tensorboard.plugins.wit_redirect import wit_redirect_plugin
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
# Ordering matters. The order in which these lines appear determines the
|
|
# ordering of tabs in TensorBoard's GUI.
|
|
_PLUGINS = [
|
|
core_plugin.CorePluginLoader(include_debug_info=True),
|
|
metrics_plugin.MetricsPlugin,
|
|
scalars_plugin.ScalarsPlugin,
|
|
custom_scalars_plugin.CustomScalarsPlugin,
|
|
images_plugin.ImagesPlugin,
|
|
audio_plugin.AudioPlugin,
|
|
debugger_v2_plugin.DebuggerV2Plugin,
|
|
graphs_plugin.GraphsPlugin,
|
|
distributions_plugin.DistributionsPlugin,
|
|
histograms_plugin.HistogramsPlugin,
|
|
text_plugin.TextPlugin,
|
|
pr_curves_plugin.PrCurvesPlugin,
|
|
profile_redirect_plugin.ProfileRedirectPluginLoader,
|
|
hparams_plugin.HParamsPlugin,
|
|
mesh_plugin.MeshPlugin,
|
|
wit_redirect_plugin.WITRedirectPluginLoader,
|
|
]
|
|
|
|
|
|
def get_plugins():
|
|
"""Returns a list specifying all known TensorBoard plugins.
|
|
|
|
This includes both first-party, statically bundled plugins and
|
|
dynamic plugins.
|
|
|
|
This list can be passed to the `tensorboard.program.TensorBoard` API.
|
|
|
|
Returns:
|
|
The list of default first-party plugins.
|
|
"""
|
|
return get_static_plugins() + get_dynamic_plugins()
|
|
|
|
|
|
def get_static_plugins():
|
|
"""Returns a list specifying TensorBoard's default first-party plugins.
|
|
|
|
Plugins are specified in this list either via a TBLoader instance to load the
|
|
plugin, or the TBPlugin class itself which will be loaded using a BasicLoader.
|
|
|
|
This list can be passed to the `tensorboard.program.TensorBoard` API.
|
|
|
|
Returns:
|
|
The list of default first-party plugins.
|
|
|
|
:rtype: list[Type[base_plugin.TBLoader] | Type[base_plugin.TBPlugin]]
|
|
"""
|
|
|
|
return _PLUGINS[:]
|
|
|
|
|
|
def get_dynamic_plugins():
|
|
"""Returns a list specifying TensorBoard's dynamically loaded plugins.
|
|
|
|
A dynamic TensorBoard plugin is specified using entry_points [1] and it is
|
|
the robust way to integrate plugins into TensorBoard.
|
|
|
|
This list can be passed to the `tensorboard.program.TensorBoard` API.
|
|
|
|
Returns:
|
|
The list of dynamic plugins.
|
|
|
|
:rtype: list[Type[base_plugin.TBLoader] | Type[base_plugin.TBPlugin]]
|
|
|
|
[1]: https://packaging.python.org/specifications/entry-points/
|
|
"""
|
|
return [
|
|
entry_point.resolve()
|
|
for entry_point in pkg_resources.iter_entry_points(
|
|
"tensorboard_plugins"
|
|
)
|
|
]
|