aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/debug
diff options
context:
space:
mode:
authorGravatar Shanqing Cai <cais@google.com>2018-06-21 15:05:29 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-06-21 15:08:24 -0700
commit4ff57a1098fa5353fa19d6994e76280465cc3fb4 (patch)
tree416943b85b3a823d8aaf70517af3ed87e88967cb /tensorflow/python/debug
parentdc0160a9b25cfb68d8a47d54634eda34e398019e (diff)
tfdbg CLI: Add command to print tensorflow version
Usage example: tfdbg> ver or tfdbg> version PiperOrigin-RevId: 201593552
Diffstat (limited to 'tensorflow/python/debug')
-rw-r--r--tensorflow/python/debug/BUILD2
-rw-r--r--tensorflow/python/debug/cli/debugger_cli_common.py35
-rw-r--r--tensorflow/python/debug/cli/debugger_cli_common_test.py29
-rw-r--r--tensorflow/python/debug/wrappers/local_cli_wrapper.py2
4 files changed, 66 insertions, 2 deletions
diff --git a/tensorflow/python/debug/BUILD b/tensorflow/python/debug/BUILD
index 09062abd74..78ef03a2d8 100644
--- a/tensorflow/python/debug/BUILD
+++ b/tensorflow/python/debug/BUILD
@@ -167,6 +167,7 @@ py_library(
srcs_version = "PY2AND3",
deps = [
"//tensorflow/python:platform",
+ "//third_party/py/numpy",
"@six_archive//:six",
],
)
@@ -802,6 +803,7 @@ py_test(
"//tensorflow/python:framework_test_lib",
"//tensorflow/python:platform",
"//tensorflow/python:platform_test",
+ "//third_party/py/numpy",
],
)
diff --git a/tensorflow/python/debug/cli/debugger_cli_common.py b/tensorflow/python/debug/cli/debugger_cli_common.py
index 12e79ab07a..02563fde84 100644
--- a/tensorflow/python/debug/cli/debugger_cli_common.py
+++ b/tensorflow/python/debug/cli/debugger_cli_common.py
@@ -23,9 +23,11 @@ import re
import sre_constants
import traceback
+import numpy as np
import six
from six.moves import xrange # pylint: disable=redefined-builtin
+from tensorflow.python import pywrap_tensorflow_internal
from tensorflow.python.platform import gfile
HELP_INDENT = " "
@@ -131,6 +133,25 @@ def rich_text_lines_from_rich_line_list(rich_text_list, annotations=None):
return RichTextLines(lines, font_attr_segs, annotations=annotations)
+def get_tensorflow_version_lines(include_dependency_versions=False):
+ """Generate RichTextLines with TensorFlow version info.
+
+ Args:
+ include_dependency_versions: Include the version of TensorFlow's key
+ dependencies, such as numpy.
+
+ Returns:
+ A formatted, multi-line `RichTextLines` object.
+ """
+ lines = ["TensorFlow version: %s" % pywrap_tensorflow_internal.__version__]
+ lines.append("")
+ if include_dependency_versions:
+ lines.append("Dependency version(s):")
+ lines.append(" numpy: %s" % np.__version__)
+ lines.append("")
+ return RichTextLines(lines)
+
+
class RichTextLines(object):
"""Rich multi-line text.
@@ -538,6 +559,8 @@ class CommandHandlerRegistry(object):
HELP_COMMAND = "help"
HELP_COMMAND_ALIASES = ["h"]
+ VERSION_COMMAND = "version"
+ VERSION_COMMAND_ALIASES = ["ver"]
def __init__(self):
# A dictionary from command prefix to handler.
@@ -562,6 +585,13 @@ class CommandHandlerRegistry(object):
"Print this help message.",
prefix_aliases=self.HELP_COMMAND_ALIASES)
+ # Register a default handler for the command "version".
+ self.register_command_handler(
+ self.VERSION_COMMAND,
+ self._version_handler,
+ "Print the versions of TensorFlow and its key dependencies.",
+ prefix_aliases=self.VERSION_COMMAND_ALIASES)
+
def register_command_handler(self,
prefix,
handler,
@@ -763,6 +793,11 @@ class CommandHandlerRegistry(object):
else:
return RichTextLines(["ERROR: help takes only 0 or 1 input argument."])
+ def _version_handler(self, args, screen_info=None):
+ del args # Unused currently.
+ del screen_info # Unused currently.
+ return get_tensorflow_version_lines(include_dependency_versions=True)
+
def _resolve_prefix(self, token):
"""Resolve command prefix from the prefix itself or its alias.
diff --git a/tensorflow/python/debug/cli/debugger_cli_common_test.py b/tensorflow/python/debug/cli/debugger_cli_common_test.py
index 1b7a5962fe..aba95e5820 100644
--- a/tensorflow/python/debug/cli/debugger_cli_common_test.py
+++ b/tensorflow/python/debug/cli/debugger_cli_common_test.py
@@ -21,6 +21,9 @@ import os
import stat
import tempfile
+import numpy as np
+
+from tensorflow.python import pywrap_tensorflow_internal
from tensorflow.python.debug.cli import debugger_cli_common
from tensorflow.python.framework import test_util
from tensorflow.python.platform import gfile
@@ -547,7 +550,10 @@ class CommandHandlerRegistryTest(test_util.TensorFlowTestCase):
" Show screen width in number of columns.", "", "",
"help", " Aliases: h", "", " Print this help message.",
"", "", "noop", " Aliases: n, NOOP", "",
- " No operation.", " I.e., do nothing.", "", ""],
+ " No operation.", " I.e., do nothing.", "", "",
+ "version", " Aliases: ver", "",
+ " Print the versions of TensorFlow and its key "
+ "dependencies.", "", ""],
output.lines)
# Get help for one specific command prefix.
@@ -575,7 +581,9 @@ class CommandHandlerRegistryTest(test_util.TensorFlowTestCase):
self.assertEqual(help_intro.lines + [
"help", " Aliases: h", "", " Print this help message.", "", "",
"noop", " Aliases: n, NOOP", "", " No operation.",
- " I.e., do nothing.", "", ""
+ " I.e., do nothing.", "", "",
+ "version", " Aliases: ver", "",
+ " Print the versions of TensorFlow and its key dependencies.", "", ""
], output.lines)
@@ -1147,5 +1155,22 @@ class MenuTest(test_util.TensorFlowTestCase):
self.assertEqual((40, 50, ["bold"]), output.font_attr_segs[0][2])
+class GetTensorFlowVersionLinesTest(test_util.TensorFlowTestCase):
+
+ def testGetVersionWithoutDependencies(self):
+ out = debugger_cli_common.get_tensorflow_version_lines()
+ self.assertEqual(2, len(out.lines))
+ self.assertEqual(
+ "TensorFlow version: %s" % pywrap_tensorflow_internal.__version__,
+ out.lines[0])
+
+ def testGetVersionWithDependencies(self):
+ out = debugger_cli_common.get_tensorflow_version_lines(True)
+ self.assertIn(
+ "TensorFlow version: %s" % pywrap_tensorflow_internal.__version__,
+ out.lines)
+ self.assertIn(" numpy: %s" % np.__version__, out.lines)
+
+
if __name__ == "__main__":
googletest.main()
diff --git a/tensorflow/python/debug/wrappers/local_cli_wrapper.py b/tensorflow/python/debug/wrappers/local_cli_wrapper.py
index c8625655e5..4e551ab995 100644
--- a/tensorflow/python/debug/wrappers/local_cli_wrapper.py
+++ b/tensorflow/python/debug/wrappers/local_cli_wrapper.py
@@ -290,6 +290,7 @@ class LocalCLIDebugWrapperSession(framework.BaseDebugWrapperSession):
if self._run_call_count == 1:
# Show logo at the onset of the first run.
help_intro.extend(cli_shared.get_tfdbg_logo())
+ help_intro.extend(debugger_cli_common.get_tensorflow_version_lines())
help_intro.extend(debugger_cli_common.RichTextLines("Upcoming run:"))
help_intro.extend(self._run_info)
@@ -466,6 +467,7 @@ class LocalCLIDebugWrapperSession(framework.BaseDebugWrapperSession):
if self._run_call_count == 1:
output.extend(cli_shared.get_tfdbg_logo())
+ output.extend(debugger_cli_common.get_tensorflow_version_lines())
output.extend(self._run_info)
if (not self._is_run_start and