code: def verify_adversarial_batches_without_images(self, adv_batches):
      attack_ids = list(self.submissions.attacks.keys()) + list(
          self.submissions.targeted_attacks.keys()
      )
      dataset_batch_ids = self.dataset_batches.data.keys()
      expected_batches = [
          {
              "dataset_batch_id": b_id,
              "submission_id": a_id,
              "images": {},
          }
          for (b_id, a_id) in itertools.product(
              dataset_batch_ids, attack_ids
          )
      ]
      assertCountEqual(
          self, expected_batches, adv_batches.data.values()
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import itertools
  import unittest
  from six import assertCountEqual
  from eval_lib import image_batches
  from eval_lib import submissions
  from eval_lib.tests import fake_cloud_client
label_desc: Use image node_id 2 for calling the AdversarialBatchesTest obj's underlying member method code with example usage: obj.verify_adversarial_batches_without_images(adv_batches) without return types