code: def _check_deprecate_placement_group(options: Dict[str, Any]):
      """Check if deprecated placement group option exists."""
      placement_group = options.get("placement_group", "default")
      scheduling_strategy = options.get("scheduling_strategy")
      # TODO(suquark): @ray.remote(placement_group=None) is used in
      # "python/ray.data._internal/remote_fn.py" and many other places,
      # while "ray.data.read_api.read_datasource" set "scheduling_strategy=SPREAD".
      # This might be a bug, but it is also ok to allow them co-exist.
      if (placement_group not in ("default", None)) and (
          scheduling_strategy is not None
      ):
          raise ValueError(
              "Placement groups should be specified via the "
              "scheduling_strategy option. "
              "The placement_group option is deprecated."
          )
  
file_path: ray/python/ray/_private/ray_option_utils.py
imports: import warnings
  from dataclasses import dataclass
  from typing import Any, Callable, Dict, Optional, Tuple, Union
  import ray
  from ray._private import ray_constants
  from ray._private.utils import get_ray_doc_version
  from ray.util.placement_group import PlacementGroup
  from ray.util.scheduling_strategies import NodeAffinitySchedulingStrategy, PlacementGroupSchedulingStrategy, NodeLabelSchedulingStrategy
label_desc: Use image node_id 6 for calling a global function with example usage: _check_deprecate_placement_group(options) without return types