code: def test_s3_multipart_file_upload(
      self,
      api,
      example_file: Path,
  ):
      # Tests that s3 multipart calls upload on every part and retrieves the etag for every part
      multipart_parts = {
          1: "http://wandb-test/part=1",
          2: "http://wandb-test/part=2",
          3: "http://wandb-test/part=3",
      }
      hex_digests = {1: "abc1", 2: "abc2", 3: "abc3"}
      chunk_size = 1
      policy = WandbStoragePolicy(api=api)
      responses = []
      for idx in range(1, len(hex_digests) + 1):
          etag_response = requests.Response()
          etag_response.headers = {"ETag": hex_digests[idx]}
          responses.append(etag_response)
      api.upload_multipart_file_chunk_retry.side_effect = responses
  
      with mock.patch("builtins.open", mock.mock_open(read_data="abc")):
          etags = policy.s3_multipart_file_upload(
              example_file,
              chunk_size,
              hex_digests,
              multipart_parts,
              extra_headers={},
          )
          assert api.upload_multipart_file_chunk_retry.call_count == 3
          # Note Etags == hex_digest when there isn't an additional encryption method for uploading.
          assert len(etags) == len(hex_digests)
          for etag in etags:
              assert etag["hexMD5"] == hex_digests[etag["partNumber"]]
  
imports: import asyncio
  import functools
  import queue
  import shutil
  import unittest.mock
  from pathlib import Path
  from typing import TYPE_CHECKING, Any, Mapping, Optional
  from unittest.mock import Mock
  import pytest
  import requests
  from wandb.filesync.step_prepare import ResponsePrepare, StepPrepare
  from wandb.sdk.artifacts.artifact import Artifact
  from wandb.sdk.artifacts.artifact_file_cache import ArtifactFileCache
  from wandb.sdk.artifacts.artifact_instance_cache import artifact_instance_cache
  from wandb.sdk.artifacts.artifact_manifest_entry import ArtifactManifestEntry
  from wandb.sdk.artifacts.exceptions import ArtifactNotLoggedError
  from wandb.sdk.artifacts.storage_policies.wandb_storage_policy import WandbStoragePolicy
label_desc: Use image node_id 14 for calling the TestStoreFile obj's underlying member method code with example usage: obj.test_s3_multipart_file_upload(api, example_file) without return types