class_docstr: Specifies resources usage or resource limits for execution.
  
  The value `None` represents unknown resource usage or an unspecified limit.
class_docstr_tok: ["Specifies","resources","usage","or","resource","limits","for","execution",".","The","value","`","None","`","represents","unknown","resource","usage","or","an","unspecified","limit","."]
docstr: Adds execution resources.
  
  Returns:
      A new ExecutionResource object with summed resources.
docstr_tok: ["Adds","execution","resources",".","Returns",":","A","new","ExecutionResource","object","with","summed","resources","."]
code: def add(self, other: "ExecutionResources") -> "ExecutionResources":
      """Adds execution resources.
  
      Returns:
          A new ExecutionResource object with summed resources.
      """
      total = ExecutionResources()
      if self.cpu is not None or other.cpu is not None:
          total.cpu = (self.cpu or 0.0) + (other.cpu or 0.0)
      if self.gpu is not None or other.gpu is not None:
          total.gpu = (self.gpu or 0.0) + (other.gpu or 0.0)
      if (
          self.object_store_memory is not None
          or other.object_store_memory is not None
      ):
          total.object_store_memory = (
              self.object_store_memory or 0.0
          ) + (other.object_store_memory or 0.0)
      return total
  
file_path: ray/python/ray/data/_internal/execution/interfaces/execution_options.py
imports: import os
  from dataclasses import dataclass, field
  from typing import List, Optional, Union
  from .common import NodeIdStr
  from ray.data._internal.execution.util import memory_string
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 2 for calling the ExecutionResources obj's underlying member method code with example usage: obj.add(other) and returns: total