Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 5 additions & 30 deletions tensorboard/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -27,32 +27,7 @@ py_binary(
":program",
"//tensorboard:expect_tensorflow_installed",
"//tensorboard/plugins:base_plugin",
],
)

# The TensorBoard binary that serves the webapp without TensorFlow.
py_binary(
name = "tensorboard-notf",
srcs = ["main_notf.py"],
data = ["webfiles.zip"],
main = "main_notf.py",
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
deps = [
":program",
"//tensorboard/compat:no_tensorflow",
"//tensorboard/plugins:base_plugin",
"//tensorboard/plugins/audio:audio_plugin",
"//tensorboard/plugins/core:core_plugin",
"//tensorboard/plugins/custom_scalar:custom_scalars_plugin",
"//tensorboard/plugins/distribution:distributions_plugin",
"//tensorboard/plugins/graph:graphs_plugin",
"//tensorboard/plugins/histogram:histograms_plugin",
"//tensorboard/plugins/image:images_plugin",
"//tensorboard/plugins/pr_curve:pr_curves_plugin",
"//tensorboard/plugins/projector:projector_plugin",
"//tensorboard/plugins/scalar:scalars_plugin",
"//tensorboard/plugins/text:text_plugin",
"//tensorboard/util:tb_logging",
],
)

Expand Down Expand Up @@ -181,18 +156,18 @@ py_library(
deps = [
"//tensorboard/plugins:base_plugin",
"//tensorboard/plugins/audio:audio_plugin",
"//tensorboard/plugins/beholder:beholder_plugin",
"//tensorboard/plugins/beholder:beholder_plugin_loader",
"//tensorboard/plugins/core:core_plugin",
"//tensorboard/plugins/custom_scalar:custom_scalars_plugin",
"//tensorboard/plugins/debugger:debugger_plugin_loader",
"//tensorboard/plugins/distribution:distributions_plugin",
"//tensorboard/plugins/graph:graphs_plugin",
"//tensorboard/plugins/histogram:histograms_plugin",
"//tensorboard/plugins/hparams:hparams_plugin",
"//tensorboard/plugins/hparams:hparams_plugin_loader",
"//tensorboard/plugins/image:images_plugin",
"//tensorboard/plugins/interactive_inference:interactive_inference_plugin",
"//tensorboard/plugins/interactive_inference:interactive_inference_plugin_loader",
"//tensorboard/plugins/pr_curve:pr_curves_plugin",
"//tensorboard/plugins/profile:profile_plugin",
"//tensorboard/plugins/profile:profile_plugin_loader",
"//tensorboard/plugins/projector:projector_plugin",
"//tensorboard/plugins/scalar:scalars_plugin",
"//tensorboard/plugins/text:text_plugin",
Expand Down
19 changes: 11 additions & 8 deletions tensorboard/default.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,23 @@
import logging
import os

from tensorboard.compat import tf
from tensorboard.plugins import base_plugin
from tensorboard.plugins.audio import audio_plugin
from tensorboard.plugins.beholder import beholder_plugin
from tensorboard.plugins.beholder import beholder_plugin_loader
from tensorboard.plugins.core import core_plugin
from tensorboard.plugins.custom_scalar import custom_scalars_plugin
from tensorboard.plugins.debugger import debugger_plugin_loader
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.hparams import hparams_plugin_loader
from tensorboard.plugins.image import images_plugin
from tensorboard.plugins.interactive_inference import interactive_inference_plugin
from tensorboard.plugins.interactive_inference import (
interactive_inference_plugin_loader
)
from tensorboard.plugins.pr_curve import pr_curves_plugin
from tensorboard.plugins.profile import profile_plugin
from tensorboard.plugins.profile import profile_plugin_loader
from tensorboard.plugins.projector import projector_plugin
from tensorboard.plugins.scalar import scalars_plugin
from tensorboard.plugins.text import text_plugin
Expand All @@ -54,7 +57,7 @@

_PLUGINS = [
core_plugin.CorePluginLoader(),
beholder_plugin.BeholderPlugin,
beholder_plugin_loader.BeholderPluginLoader(),
scalars_plugin.ScalarsPlugin,
custom_scalars_plugin.CustomScalarsPlugin,
images_plugin.ImagesPlugin,
Expand All @@ -65,10 +68,10 @@
pr_curves_plugin.PrCurvesPlugin,
projector_plugin.ProjectorPlugin,
text_plugin.TextPlugin,
interactive_inference_plugin.InteractiveInferencePlugin,
profile_plugin.ProfilePluginLoader(),
interactive_inference_plugin_loader.InteractiveInferencePluginLoader(),
profile_plugin_loader.ProfilePluginLoader(),
debugger_plugin_loader.DebuggerPluginLoader(),
hparams_plugin.HParamsPlugin,
hparams_plugin_loader.HParamsPluginLoader(),
]

def get_plugins():
Expand Down
18 changes: 14 additions & 4 deletions tensorboard/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,28 @@

import sys

# Import TensorFlow here to fail immediately if it's not present, even though we
# don't actually use it yet, which results in a clearer error.
import tensorflow as tf # pylint: disable=unused-import

from tensorboard import default
from tensorboard import program
from tensorboard.compat import tf
from tensorboard.plugins import base_plugin
from tensorboard.util import tb_logging


logger = tb_logging.get_logger()

def run_main():
"""Initializes flags and calls main()."""
program.setup_environment()

if getattr(tf, '__version__', 'stub') == 'stub':
# Unless the user has explicitly requested running without TensorFlow by setting the
# TENSORBOARD_NO_TF environment variable, we check for TensorFlow here so that if it's
# missing we generate a clear and immediate error rather than partial functionality.
# TODO(#2027): Remove environment check once we have placeholder UI
if os.getenv('TENSORBOARD_NO_TF') is None:
import tensorflow # pylint: disable=unused-import
logger.warn("TensorFlow installation not found - running with reduced feature set.")

tensorboard = program.TensorBoard(default.get_plugins(),
program.get_default_assets_zip_provider())
try:
Expand Down
102 changes: 0 additions & 102 deletions tensorboard/main_notf.py

This file was deleted.

12 changes: 12 additions & 0 deletions tensorboard/plugins/beholder/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@ py_library(
],
)

py_library(
name = "beholder_plugin_loader",
srcs = ["beholder_plugin_loader.py"],
srcs_version = "PY2AND3",
deps = [
":beholder_plugin",
"//tensorboard/plugins:base_plugin",
"//tensorboard/util:tb_logging",
"@org_pythonhosted_six",
],
)

py_binary(
name = "beholder_demo",
srcs = ["beholder_demo.py"],
Expand Down
11 changes: 9 additions & 2 deletions tensorboard/plugins/beholder/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from tensorboard.plugins.beholder.beholder import Beholder
from tensorboard.plugins.beholder.beholder import BeholderHook
# Only import Beholder API when tensorflow is available.
try:
# pylint: disable=g-import-not-at-top,unused-import
import tensorflow
except ImportError:
pass
else:
from tensorboard.plugins.beholder.beholder import Beholder
from tensorboard.plugins.beholder.beholder import BeholderHook
46 changes: 46 additions & 0 deletions tensorboard/plugins/beholder/beholder_plugin_loader.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copyright 2017 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.
# ==============================================================================
"""Wrapper around plugin to conditionally enable it."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from tensorboard.plugins import base_plugin


class BeholderPluginLoader(base_plugin.TBLoader):
"""BeholderPlugin factory.

This class checks for `tensorflow` install and dependency.
"""

def load(self, context):
"""Returns the plugin, if possible.

Args:
context: The TBContext flags.

Returns:
A BeholderPlugin instance or None if it couldn't be loaded.
"""
try:
# pylint: disable=g-import-not-at-top,unused-import
import tensorflow
except ImportError:
return
# pylint: disable=g-import-not-at-top
from tensorboard.plugins.beholder.beholder_plugin import BeholderPlugin
return BeholderPlugin(context)
5 changes: 5 additions & 0 deletions tensorboard/plugins/debugger/debugger_plugin_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,11 @@ def load(self, context):
context.flags.debugger_port > 0):
return None
flags = context.flags
try:
# pylint: disable=g-import-not-at-top,unused-import
import tensorflow
except ImportError:
return None
try:
# pylint: disable=line-too-long,g-import-not-at-top
from tensorboard.plugins.debugger import debugger_plugin as debugger_plugin_lib
Expand Down
10 changes: 10 additions & 0 deletions tensorboard/plugins/hparams/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ py_library(
],
)

py_library(
name = "hparams_plugin_loader",
srcs = ["hparams_plugin_loader.py"],
srcs_version = "PY2AND3",
deps = [
":hparams_plugin",
"//tensorboard/plugins:base_plugin",
],
)

py_test(
name = "list_session_groups_test",
size = "small",
Expand Down
Loading