code: def make_requires(
      LATEST_STABLE_SYFT: str, __version__: str
  ) -> Callable:
      def requires(
          version_string: str, silent: bool = False
      ) -> Optional[bool]:
          syft_version = version.parse(__version__)
          parts = version_string.split(",")
          result = True
          all_requirements = []
          all_messages = []
          for part in parts:
              part_result, requirements, messages = check_rule(
                  version_string=part,
                  LATEST_STABLE_SYFT=LATEST_STABLE_SYFT,
                  __version__=__version__,
              )
              all_requirements += requirements
              all_messages += messages
              if not part_result:
                  result = False
  
          if silent:
              return result
  
          msg_requirements = " and ".join(all_requirements)
          if result:
              print(
                  f"✅ The installed version of syft=={syft_version} matches {msg_requirements}"
              )
          else:
              print(
                  f"❌ The installed version of syft=={syft_version} doesn't match {msg_requirements}"
              )
          if len(all_messages):
              print(
                  "This code or notebook may have issues if APIs have changed\n"
              )
              print("\n\n".join(all_messages))
          return None
  
      return requires
  
file_path: PySyft/packages/syft/src/syft/util/version_compare.py
imports: import operator
  from typing import Any
  from typing import Callable
  from typing import Optional
  from typing import Tuple
  from packaging import version
label_desc: Use image node_id 3 for calling a global function with example usage: make_requires(LATEST_STABLE_SYFT, __version__) and returns: requires, None, result