Ejemplo n.º 1
0
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])
    })
Ejemplo n.º 2
0
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()})
Ejemplo n.º 3
0
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])
  })
Ejemplo n.º 4
0
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])
  })
Ejemplo n.º 5
0
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"])
  })
Ejemplo n.º 6
0
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]),
  })
Ejemplo n.º 7
0
    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])
Ejemplo n.º 8
0
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"])
  })
Ejemplo n.º 9
0
 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)