1d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# Copyright 2017 The TensorFlow Authors. All Rights Reserved. 2d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# 3d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# Licensed under the Apache License, Version 2.0 (the "License"); 4d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# you may not use this file except in compliance with the License. 5d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# You may obtain a copy of the License at 6d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# 7d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# http://www.apache.org/licenses/LICENSE-2.0 8d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# 9d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# Unless required by applicable law or agreed to in writing, software 10d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# distributed under the License is distributed on an "AS IS" BASIS, 11d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# See the License for the specific language governing permissions and 13d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# limitations under the License. 14d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower# ============================================================================== 15d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower"""Tests for ast_util module.""" 16d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 17d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerfrom __future__ import absolute_import 18d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerfrom __future__ import division 19d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerfrom __future__ import print_function 20d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 21d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerimport ast 22d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 23d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerfrom tensorflow.contrib.py2tf.pyct import ast_util 24d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerfrom tensorflow.contrib.py2tf.pyct import qual_names 25d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerfrom tensorflow.python.platform import test 26d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 27d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 28d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerclass AstUtilTest(test.TestCase): 29d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 30d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower def test_rename_symbols(self): 31d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower node = ast.Tuple([ 32d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ast.Name('a', ast.Load()), 33d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ast.Name('b', ast.Load()), 34d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ast.Attribute(ast.Name('b', None), 'c', ast.Store()), 35d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ast.Attribute( 36d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ast.Attribute(ast.Name('b', None), 'c', ast.Load()), 'd', 37d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower None) 38d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ], None) 39d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower node = qual_names.resolve(node) 40d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower node = ast_util.rename_symbols( 41d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower node, 42d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower { 43d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower qual_names.QN('a'): qual_names.QN('renamed_a'), 44d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower qual_names.QN('b.c'): qual_names.QN('renamed_b_c'), 45d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower }) 46d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 47d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertEqual(node.elts[0].id, 'renamed_a') 48d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertTrue(isinstance(node.elts[0].ctx, ast.Load)) 49d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertEqual(node.elts[1].id, 'b') 50d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertEqual(node.elts[2].id, 'renamed_b_c') 51d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertTrue(isinstance(node.elts[2].ctx, ast.Store)) 52d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertEqual(node.elts[3].value.id, 'renamed_b_c') 53d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertTrue(isinstance(node.elts[3].value.ctx, ast.Load)) 54d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 55d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower def test_copy_clean(self): 56d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ret = ast.Return( 57d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower ast.BinOp( 58d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower op=ast.Add(), 59d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower left=ast.Name(id='a', ctx=ast.Load()), 60d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower right=ast.Num(1))) 61d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower setattr(ret, '__foo', 'bar') 62d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower node = ast.FunctionDef( 63d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower name='f', 64d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower args=ast.arguments( 65d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower args=[ast.Name(id='a', ctx=ast.Param())], 66d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower vararg=None, 67d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower kwarg=None, 68d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower defaults=[]), 69d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower body=[ret], 70d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower decorator_list=[], 71d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower returns=None) 72d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower new_node = ast_util.copy_clean(node) 73d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertFalse(node is new_node) 74d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertFalse(ret is new_node.body[0]) 75d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower self.assertFalse(hasattr(new_node.body[0], '__foo')) 76d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 77d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower 78d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlowerif __name__ == '__main__': 79d9df4313a98fdc62187a94c5ab6d8955b699e9f2A. Unique TensorFlower test.main() 80