code: def _are_remote_args_compatible(prev_args, next_args):
      """Check if Ray remote arguments are compatible for merging."""
      prev_args = _canonicalize(prev_args)
      next_args = _canonicalize(next_args)
      remote_args = next_args.copy()
      for key in INHERITABLE_REMOTE_ARGS:
          if key in prev_args:
              remote_args[key] = prev_args[key]
      if prev_args != remote_args:
          return False
      return True
  
imports: from typing import List, Optional, Tuple
  from ray.data._internal.compute import get_compute, is_task_compute
  from ray.data._internal.execution.interfaces import PhysicalOperator, RefBundle, TaskContext
  from ray.data._internal.execution.operators.actor_pool_map_operator import ActorPoolMapOperator
  from ray.data._internal.execution.operators.base_physical_operator import AllToAllOperator
  from ray.data._internal.execution.operators.map_operator import MapOperator
  from ray.data._internal.execution.operators.task_pool_map_operator import TaskPoolMapOperator
  from ray.data._internal.logical.interfaces import PhysicalPlan, Rule
  from ray.data._internal.logical.operators.all_to_all_operator import AbstractAllToAll, RandomShuffle, Repartition
  from ray.data._internal.logical.operators.map_operator import AbstractUDFMap
  from ray.data._internal.stats import StatsDict
  from ray.data.context import DataContext
label_desc: Use image node_id 1 for calling a global function with example usage: _are_remote_args_compatible(prev_args, next_args) and returns: True, False