aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/autograph/converters/asserts.py
diff options
context:
space:
mode:
authorGravatar Dan Moldovan <mdan@google.com>2018-09-11 16:20:49 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-09-11 16:32:19 -0700
commit668c079f4e6020131978b7a812c3b92eea9c47b9 (patch)
tree269836fd98f37b3a099e6b4cceeb3256416705fa /tensorflow/python/autograph/converters/asserts.py
parentefd9e0d073a6632f7632f7fe43ae4364cc2c834b (diff)
Move AutoGraph to core. This CL moves the entirety of the code base, keeping the frontend autograph module in contrib for backward compatibility. Certain files, like notebooks and the readme file may be referenced from the outside, so a copy of those is kept as well. In addition, the notebooks subdirectory of examples is also kept in contrib because the extension the build file relies on is not available in the PIP package.
PiperOrigin-RevId: 212543067
Diffstat (limited to 'tensorflow/python/autograph/converters/asserts.py')
-rw-r--r--tensorflow/python/autograph/converters/asserts.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/tensorflow/python/autograph/converters/asserts.py b/tensorflow/python/autograph/converters/asserts.py
new file mode 100644
index 0000000000..56a97534c4
--- /dev/null
+++ b/tensorflow/python/autograph/converters/asserts.py
@@ -0,0 +1,49 @@
+# Copyright 2016 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.
+# ==============================================================================
+"""Converts assert statements to their corresponding TF calls."""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import gast
+
+from tensorflow.python.autograph.core import converter
+from tensorflow.python.autograph.pyct import templates
+
+
+class AssertTransformer(converter.Base):
+ """Transforms Assert nodes to Call so they can be handled as functions."""
+
+ def visit_Assert(self, node):
+ self.generic_visit(node)
+
+ # Note: The lone tf.Assert call will be wrapped with control_dependencies
+ # by side_effect_guards.
+ template = """
+ tf.Assert(test, (msg,))
+ """
+
+ if node.msg is None:
+ return templates.replace(
+ template, test=node.test, msg=gast.Str('Assertion error'))
+ elif isinstance(node.msg, gast.Str):
+ return templates.replace(template, test=node.test, msg=node.msg)
+ else:
+ raise NotImplementedError('can only convert string messages for now.')
+
+
+def transform(node, ctx):
+ return AssertTransformer(ctx).visit(node)