Skip to content
Open
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
7 changes: 7 additions & 0 deletions buildPIPandDeploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# remove later
bazel clean
pip uninstall tensorboard -y
rm -rf /tmp/tensorboard/
bazel run //tensorboard/pip_package:build_pip_package
pip install /tmp/tensorboard/dist/tensorboard-1.13.0a0-py3-none-any.whl

1 change: 1 addition & 0 deletions tensorboard/compat/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ py_library(
deps = [
":compat",
"//tensorboard/compat/tensorflow_stub",
"//tensorboard/compat/tensorboard",
],
)

Expand Down
3 changes: 3 additions & 0 deletions tensorboard/compat/proto/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ tb_proto_library(
"types.proto",
"verifier_config.proto",
"versions.proto",
"plugin_text.proto", # relative dir is not accepted. copt that.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can actually get all three of these from the plugins/ directory.

"plugin_pr_curve.proto", # relative dir is not accepted. copt that.
"layout.proto", # relative dir is not accepted. copt that.
],
visibility = ["//visibility:public"],
)
Expand Down
96 changes: 96 additions & 0 deletions tensorboard/compat/proto/layout.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
==============================================================================*/

syntax = "proto3";

package tensorboard;


/**
* Encapsulates information on a single chart. Many charts appear in a category.
*/
message Chart {
// The title shown atop this chart. Optional. Defaults to 'untitled'.
string title = 1;

// The content of the chart. This depends on the type of the chart.
oneof content {
MultilineChartContent multiline = 2;
MarginChartContent margin = 3;
}
}

/**
* Encapsulates information on a single line chart. This line chart may have
* lines associated with several tags.
*/
message MultilineChartContent {
// A list of regular expressions for tags that should appear in this chart.
// Tags are matched from beginning to end. Each regex captures a set of tags.
repeated string tag = 1;
}

/**
* Encapsulates information on a single margin chart. A margin chart uses fill
* area to visualize lower and upper bounds that surround a value.
*/
message MarginChartContent {
/**
* Encapsulates a tag of data for the chart.
*/
message Series {
// The exact tag string associated with the scalar summaries making up the
// main value between the bounds.
string value = 1;

// The exact tag string associated with the scalar summaries making up the
// lower bound.
string lower = 2;

// The exact tag string associated with the scalar summaries making up the
// upper bound.
string upper = 3;
}

// A list of data series to include within this margin chart.
repeated Series series = 1;
}

/**
* A category contains a group of charts. Each category maps to a collapsible
* within the dashboard.
*/
message Category {
// This string appears atop each grouping of charts within the dashboard.
string title = 1;

// Encapsulates data on charts to be shown in the category.
repeated Chart chart = 2;

// Whether this category should be initially closed. False by default.
bool closed = 3;
}

/**
* A layout encapsulates how charts are laid out within the custom scalars
* dashboard.
*/
message Layout {
// Version `0` is the only supported version.
int32 version = 1;

// The categories here are rendered from top to bottom.
repeated Category category = 2;
}
25 changes: 25 additions & 0 deletions tensorboard/compat/proto/plugin_pr_curve.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
==============================================================================*/

syntax = "proto3";

package tensorboard;

message PrCurvePluginData {
// Version `0` is the only supported version.
int32 version = 1;

uint32 num_thresholds = 2;
}
27 changes: 27 additions & 0 deletions tensorboard/compat/proto/plugin_text.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

replaces plugin_text.proto and plugin_pr_curve.proto with plugin_data.proto will lead to name confliction. How about using soft links?

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.
==============================================================================*/

syntax = "proto3";

package tensorboard;

// Text summaries created by the `tensorboard.plugins.text.summary`
// module will include `SummaryMetadata` whose `plugin_data` field has
// as `content` a binary string that is the encoding of an
// `TextPluginData` proto.
message TextPluginData {
// Version `0` is the only supported version.
int32 version = 1;
}
22 changes: 22 additions & 0 deletions tensorboard/compat/tensorboard/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Description:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of compat/tensorboard can we do compat/writer? @nfelt what are your thoughts on the right naming for this?

# TensorBoard, a dashboard for investigating TensorFlow

package(default_visibility = ["//tensorboard:internal"])

licenses(["notice"]) # Apache 2.0

exports_files(["LICENSE"])

py_library(
name = "tensorboard",
srcs = glob([
"*.py",
]),
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
deps = [
"//tensorboard:expect_numpy_installed",
"//tensorboard/compat/proto:protos_all_py_pb2",
"@org_pythonhosted_six",
],
)
37 changes: 37 additions & 0 deletions tensorboard/compat/tensorboard/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# 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.

"""Compatibility interfaces for TensorBoard."""

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

USING_TF = True

# Don't attempt to use TF at all if this import exists due to build rules.
try:
from tensorboard.compat import notf
USING_TF = False
except ImportError:
pass

if USING_TF:
try:
import tensorflow as tf
except ImportError:
USING_TF = False

if not USING_TF:
from tensorboard.compat import tensorflow_stub as tf
138 changes: 138 additions & 0 deletions tensorboard/compat/tensorboard/crc32c.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# Copyright 2015 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.
# ==============================================================================

import array


CRC_TABLE = (
0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4,
0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,
0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b,
0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,
0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b,
0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,
0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54,
0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,
0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a,
0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,
0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5,
0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,
0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45,
0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,
0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a,
0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,
0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48,
0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,
0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687,
0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,
0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927,
0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,
0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8,
0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,
0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096,
0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,
0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859,
0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,
0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9,
0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,
0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36,
0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,
0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c,
0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,
0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043,
0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,
0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3,
0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,
0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c,
0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,
0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652,
0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,
0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d,
0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,
0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d,
0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,
0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2,
0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,
0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530,
0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,
0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff,
0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,
0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f,
0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,
0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90,
0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,
0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee,
0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,
0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321,
0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,
0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81,
0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,
0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,
0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351,
)


CRC_INIT = 0

_MASK = 0xFFFFFFFF


def crc_update(crc, data):
"""Update CRC-32C checksum with data.

Args:
crc: 32-bit checksum to update as long.
data: byte array, string or iterable over bytes.

Returns:
32-bit updated CRC-32C as long.
"""

if type(data) != array.array or data.itemsize != 1:
buf = array.array("B", data)
else:
buf = data

crc ^= _MASK
for b in buf:
table_index = (crc ^ b) & 0xff
crc = (CRC_TABLE[table_index] ^ (crc >> 8)) & _MASK
return crc ^ _MASK


def crc_finalize(crc):
"""Finalize CRC-32C checksum.

This function should be called as last step of crc calculation.

Args:
crc: 32-bit checksum as long.

Returns:
finalized 32-bit checksum as long
"""
return crc & _MASK


def crc32c(data):
"""Compute CRC-32C checksum of the data.

Args:
data: byte array, string or iterable over bytes.

Returns:
32-bit CRC-32C checksum of data as long.
"""
return crc_finalize(crc_update(CRC_INIT, data))
Loading