code: def test_multiple_params() -> None:
      @required_args(["a", "b", "c"])
      def foo(a: str = "", *, b: str = "", c: str = "") -> str | None:
          return f"{a} {b} {c}"
  
      assert foo(a="a", b="b", c="c") == "a b c"
  
      error_message = r"Missing required arguments.*"
  
      with pytest.raises(TypeError, match=error_message):
          foo()
  
      with pytest.raises(TypeError, match=error_message):
          foo(a="a")
  
      with pytest.raises(TypeError, match=error_message):
          foo(b="b")
  
      with pytest.raises(TypeError, match=error_message):
          foo(c="c")
  
      with pytest.raises(
          TypeError, match=r"Missing required argument: 'a'"
      ):
          foo(b="a", c="c")
  
      with pytest.raises(
          TypeError, match=r"Missing required argument: 'b'"
      ):
          foo("a", c="c")
  
file_path: openai-python/tests/test_required_args.py
imports: from __future__ import annotations
  import pytest
  from openai._utils import required_args
label_desc: Use image node_id 4 for calling a global function with example usage: test_multiple_params() and returns: a, str, b, str, c