def _create_one_value_prensor(): """Creates a prensor expression representing a list of flat protocol buffers. Returns: a RootPrensor representing: {} {foo:8} {} """ return prensor.create_prensor_from_descendant_nodes({ path.Path([]): prensor_test_util.create_root_node(3), path.Path(["foo"]): prensor_test_util.create_optional_leaf_node([1], [8]) })
def _get_prensor(subtree, values ): """Gets the prensor tree value of the subtree. Args: subtree: a mapping paths to expressions returned by expression.get_known_descendants. values: a mapping from expression ids to node values. Returns: a prensor tree. """ return prensor.create_prensor_from_descendant_nodes( {k: values[id(v)] for k, v in subtree.items()})
def create_four_layer_prensor(): """Creates prensor with four layers: root, event, doc, and nested_child. Returns: a prensor expression representing: { event: { doc: { nested_child: { bar:["a"], keep_me:False } } } } { event: { doc: { nested_child: { bar:["b","c"], keep_me:True }, nested_child: { bar:["d"] } }, doc: { nested_child: {} } } } {event: {}} """ return prensor.create_prensor_from_descendant_nodes({ path.Path([]): create_root_node(3), path.Path(["event"]): create_child_node([0, 1, 2], True), path.Path(["event", "doc"]): create_child_node([0, 1, 1], True), path.Path(["event", "doc", "nested_child"]): create_child_node([0, 1, 1, 2], True), path.Path(["event", "doc", "nested_child", "bar"]): create_repeated_leaf_node([0, 1, 1, 2], ["a", "b", "c", "d"]), path.Path(["event", "doc", "nested_child", "keep_me"]): create_optional_leaf_node([0, 1], [False, True]) })
def create_simple_prensor() -> prensor.Prensor: """Creates a prensor expression representing a list of flat protocol buffers. Returns: a RootPrensor representing: {foo:9, foorepeated:[9]} {foo:8, foorepeated:[8,7]} {foo:7, foorepeated:[6]} """ return prensor.create_prensor_from_descendant_nodes({ path.Path([]): create_root_node(3), path.Path(["foo"]): create_optional_leaf_node([0, 1, 2], [9, 8, 7]), path.Path(["foorepeated"]): create_repeated_leaf_node([0, 1, 1, 2], [9, 8, 7, 6]) })
def create_deep_prensor(): """Creates prensor with three layers: root, event, and doc. Returns: a prensor expression representing: { foo: 9, foorepeated: [9], user: [{friends:["a"]}], event: [{doc:[{bar:["a"], keep_me:False}]}] }, { foo: 8, foorepeated: [8,7], user: [{friends:["b", "c"]}, {friends:["d"]}], event: [{doc:[{bar:["b","c"], keep_me:True},{bar:["d"]}]}] }, { foo:7, foorepeated: [6], user: [{friends:["e"]}], event: [{}] } """ return prensor.create_prensor_from_descendant_nodes({ path.Path([]): create_root_node(3), path.Path(["event"]): create_child_node([0, 1, 2], True), path.Path(["event", "doc"]): create_child_node([0, 1, 1], True), path.Path(["event", "doc", "bar"]): create_repeated_leaf_node([0, 1, 1, 2], ["a", "b", "c", "d"]), path.Path(["event", "doc", "keep_me"]): create_optional_leaf_node([0, 1], [False, True]), path.Path(["foo"]): create_optional_leaf_node([0, 1, 2], [9, 8, 7]), path.Path(["foorepeated"]): create_repeated_leaf_node([0, 1, 1, 2], [9, 8, 7, 6]), path.Path(["user"]): create_child_node([0, 1, 1, 2], True), path.Path(["user", "friends"]): create_repeated_leaf_node([0, 1, 1, 2, 3], ["a", "b", "c", "d", "e"]) })
def create_big_prensor(): """Creates a prensor representing a list of nested protocol buffers. Returns: a prensor expression representing: { foo: 9, foorepeated: [9], doc: [{bar:["a"], keep_me:False}], user: [{friends:["a"]}] }, { foo: 8, foorepeated: [8, 7], doc: [{bar:["b","c"],keep_me:True},{bar:["d"]}], user: [{friends:["b", "c"]},{friends:["d"]}], }, { foo: 7, foorepeated: [6], user: [{friends:["e"]}] } """ return prensor.create_prensor_from_descendant_nodes({ path.Path([]): create_root_node(3), path.Path(["foo"]): create_optional_leaf_node([0, 1, 2], [9, 8, 7]), path.Path(["doc"]): create_child_node([0, 1, 1], True), path.Path(["doc", "keep_me"]): create_optional_leaf_node([0, 1], [False, True]), path.Path(["doc", "bar"]): create_repeated_leaf_node([0, 1, 1, 2], ["a", "b", "c", "d"]), path.Path(["user"]): create_child_node([0, 1, 1, 2], True), path.Path(["user", "friends"]): create_repeated_leaf_node([0, 1, 1, 2, 3], ["a", "b", "c", "d", "e"]), path.Path(["foorepeated"]): create_repeated_leaf_node([0, 1, 1, 2], [9, 8, 7, 6]), })
def test_map_many_values(self): expr = create_expression.create_expression_from_prensor( prensor.create_prensor_from_descendant_nodes({ path.Path([]): prensor_test_util.create_root_node(3), path.Path(["foo"]): prensor_test_util.create_optional_leaf_node([0, 2, 3], [9, 8, 7]), path.Path(["bar"]): prensor_test_util.create_optional_leaf_node([0, 2, 3], [10, 20, 30]) })) new_root, p = map_values.map_many_values(expr, path.Path([]), ["foo", "bar"], lambda x, y: x + y, tf.int64, "new_field") leaf_node = expression_test_util.calculate_value_slowly( new_root.get_descendant_or_error(p)) self.assertAllEqual(leaf_node.parent_index, [0, 2, 3]) self.assertAllEqual(leaf_node.values, [19, 28, 37])
def create_nested_prensor() -> prensor.Prensor: """Creates a prensor representing a list of nested protocol buffers. Returns: a prensor expression representing: {doc:[{bar:["a"], keep_me:False}], user:[{friends:["a"]}]} {doc:[{bar:["b","c"], keep_me:True}, {bar:["d"]}], user:[{friends:["b", "c"]}, {friends:["d"]}]} {user:[friends:["e"]]} """ return prensor.create_prensor_from_descendant_nodes({ path.Path([]): create_root_node(3), path.Path(["doc"]): create_child_node([0, 1, 1], True), path.Path(["doc", "bar"]): create_repeated_leaf_node([0, 1, 1, 2], ["a", "b", "c", "d"]), path.Path(["doc", "keep_me"]): create_optional_leaf_node([0, 1], [False, True]), path.Path(["user"]): create_child_node([0, 1, 1, 2], True), path.Path(["user", "friends"]): create_repeated_leaf_node([0, 1, 1, 2, 3], ["a", "b", "c", "d", "e"]) })
def calculate(self, sources, destinations, options, side_info=None): source_tree = prensor.create_prensor_from_descendant_nodes( {k: v for k, v in zip(self._get_source_paths(), sources)}) return self._operation(source_tree, options)