code: def test_arbitary_port_updates(self):
      table = Table(data)
      port_ids = []
  
      for i in range(10):
          port_ids.append(table.make_port())
  
      assert port_ids == list(range(1, 11))
  
      port = random.randint(0, 10)
  
      table.update(data, port_id=port)
  
      assert table.size() == 8
  
      assert table.view().to_dict() == {
          "a": [1, 2, 3, 4] * 2,
          "b": ["a", "b", "c", "d"] * 2,
          "c": [True, False, True, False] * 2,
      }
  
file_path: perspective/python/perspective/perspective/tests/table/test_ports.py
imports: import random
  from perspective.table import Table
label_desc: Use image node_id 3 for calling the TestPorts obj's underlying member method code with example usage: obj.test_arbitary_port_updates() without return types