code: def test_passing_arguments_by_value_out_of_the_box(
      ray_start_shared_local_modes,
  ):
      @ray.remote
      def f(x):
          return x
  
      # Test passing lambdas.
  
      def temp():
          return 1
  
      assert ray.get(f.remote(temp))() == 1
      assert ray.get(f.remote(lambda x: x + 1))(3) == 4
  
      # Test sets.
      assert ray.get(f.remote(set())) == set()
      s = {1, (1, 2, "hi")}
      assert ray.get(f.remote(s)) == s
  
      # Test types.
      assert ray.get(f.remote(int)) == int
      assert ray.get(f.remote(float)) == float
      assert ray.get(f.remote(str)) == str
  
      class Foo:
          def __init__(self):
              pass
  
      # Make sure that we can put and get a custom type. Note that the result
      # won't be "equal" to Foo.
      ray.get(ray.put(Foo))
  
imports: import logging
  import os
  import pickle
  import random
  import sys
  import time
  import pytest
  import ray
  import ray.cluster_utils
  from ray._private.test_utils import SignalActor, client_test_enabled, get_error_message, run_string_as_driver
label_desc: Use image node_id 22 for calling a global function with example usage: test_passing_arguments_by_value_out_of_the_box(ray_start_shared_local_modes) and returns: x, int