code: def check_version(
      client_version: str,
      server_version: str,
      server_name: str,
      silent: bool = False,
  ) -> bool:
      client_syft_version = version.parse(client_version)
      node_syft_version = version.parse(server_version)
      msg = (
          f"You are running syft=={client_version} but "
          f"{server_name} node requires {server_version}"
      )
      if (
          client_syft_version.base_version
          != node_syft_version.base_version
      ):
          raise ValueError(msg)
      if client_syft_version.pre != node_syft_version.pre:
          if not silent:
              print(f"Warning: {msg}")
              return False
      return True
  
imports: from __future__ import annotations
  from typing import Callable
  from typing import List
  from typing import Optional
  from packaging import version
  from pydantic import BaseModel
  from pydantic import root_validator
  from ...abstract_node import NodeType
  from ...node.credentials import SyftVerifyKey
  from ...protocol.data_protocol import get_data_protocol
  from ...serde.serializable import serializable
  from ...types.syft_object import SYFT_OBJECT_VERSION_1
  from ...types.syft_object import SYFT_OBJECT_VERSION_2
  from ...types.syft_object import SYFT_OBJECT_VERSION_3
  from ...types.syft_object import StorableObjectType
  from ...types.syft_object import SyftObject
  from ...types.transforms import convert_types
  from ...types.transforms import drop
  from ...types.transforms import rename
  from ...types.transforms import transform
  from ...types.uid import UID
label_desc: Use image node_id 1 for calling a global function with example usage: check_version(client_version, server_version, server_name, silent) and returns: True, False