code: def request_batch(
      self, uri_batch: List[str]
  ) -> Iterator[Dict[str, bytes]]:
      for uri in uri_batch:
          run_name, sub_name, resource_path = self.decode_uri(
              self.repo, uri
          )
          self.runs_pool[run_name].append(
              (uri, sub_name, resource_path)
          )
  
      for run_name in self.runs_pool.keys():
          run_containers = {}
          for uri, sub_name, resource_path in self.runs_pool[run_name]:
              container = run_containers.get(sub_name)
              if not container:
                  container = self._get_container(run_name, sub_name)
                  run_containers[sub_name] = container
  
              resource_path = decode_path(bytes.fromhex(resource_path))
  
              # TODO: [MV] change to some other implementation of view when available
              #  which won't collect in case of custom objects
              data = container.tree().subtree(resource_path).collect()
              if isinstance(data, BLOB):
                  data = data.load()
              yield {uri: data}
          del run_containers
  
      # clear runs pool
      self.runs_pool.clear()
  
file_path: aim/aim/sdk/uri_service.py
imports: from cryptography.fernet import Fernet
  from collections import defaultdict
  from typing import Iterator, List, Optional, Dict
  from typing import TYPE_CHECKING
  from aim.storage.encoding import encode_path, decode_path
  from aim.storage.types import BLOB
label_desc: Use image node_id 4 for calling the URIService obj's underlying member method code with example usage: obj.request_batch(uri_batch) without return types