code: def test_upgrade_yanked_message(
      mock_run,
      backend_interface,
      user,
  ):
      run = mock_run(use_magic_mock=True)
      with backend_interface(run, initial_run=False) as interface:
          with unittest.mock.patch.object(
              wandb,
              "__version__",
              "0.0.3",
          ), unittest.mock.patch.object(
              wandb.sdk.internal.sender.update,
              "_find_available",
              lambda current_version: (
                  "0.0.8",
                  False,
                  False,
                  True,
                  "just cuz",
              ),
          ):
              handle = interface.deliver_check_version()
              result = handle.wait(timeout=10)
              assert result
              version = result.response.check_version_response
              assert (
                  version.upgrade_message
                  == "wandb version 0.0.8 is available!  To upgrade, please run:\n $ pip install wandb --upgrade"
              )
              assert not version.delete_message
              assert (
                  version.yank_message
                  == "wandb version 0.0.3 has been recalled!  (just cuz)  Please upgrade."
              )
  
          # We need a run to cleanly shutdown backend
          handle = interface.deliver_run(run)
          result = handle.wait(timeout=5)
          run_result = result.run_result
          assert run_result.HasField("error") is False
  
imports: import json
  import os
  import shutil
  import threading
  import time
  import unittest.mock
  import pytest
  import wandb
  from wandb.errors import CommError
  from wandb.proto import wandb_internal_pb2
  from wandb.sdk.interface.interface import InterfaceBase
  from wandb.sdk.lib import filesystem
label_desc: Use image node_id 18 for calling a global function with example usage: test_upgrade_yanked_message(mock_run, backend_interface, user) without return types