code: def load_bytes(self, paths):
      if len(paths) == 0:
          return CloseAfterUse(iter([]))
  
      s3 = S3(
          s3root=self.datastore_root,
          tmproot=ARTIFACT_LOCALROOT,
          external_client=self.s3_client,
      )
  
      def iter_results():
          # We similarly do things in parallel for many files. This is again
          # a hack.
          if len(paths) > 10:
              results = s3.get_many(
                  paths, return_missing=True, return_info=True
              )
              for r in results:
                  if r.exists:
                      yield r.key, r.path, r.metadata
                  else:
                      yield r.key, None, None
          else:
              for p in paths:
                  r = s3.get(p, return_missing=True, return_info=True)
                  if r.exists:
                      yield r.key, r.path, r.metadata
                  else:
                      yield r.key, None, None
  
      return CloseAfterUse(iter_results(), closer=s3)
  
file_path: metaflow/metaflow/plugins/datastores/s3_storage.py
imports: import os
  from itertools import starmap
  from metaflow.plugins.datatools.s3.s3 import S3, S3Client, S3PutObject, check_s3_deps
  from metaflow.metaflow_config import DATASTORE_SYSROOT_S3, ARTIFACT_LOCALROOT
  from metaflow.datastore.datastore_storage import CloseAfterUse, DataStoreStorage
label_desc: Use image node_id 8 for calling the S3Storage obj's underlying member method code with example usage: obj.load_bytes(paths) and returns: CloseAfterUse, CloseAfterUse