class_docstr: Request for resources.
  
  This class is used to define a resource request. A resource request comprises one
  or more bundles of resources and instructions on the scheduling behavior.
  
  The resource request can be submitted to a resource manager, which will
  schedule the resources. Depending on the resource backend, this may instruct
  Ray to scale up (autoscaling).
  
  Resource requests are compatible with the most fine-grained low-level resource
  backend, which are Ray placement groups.
  
  Args:
      bundles: A list of bundles which represent the resources requirements.
          E.g. ``[{"CPU": 1, "GPU": 1}]``.
      strategy: The scheduling strategy to acquire the bundles.
  
       - "PACK": Packs Bundles into as few nodes as possible.
       - "SPREAD": Places Bundles across distinct nodes as even as possible.
       - "STRICT_PACK": Packs Bundles into one node. The group is
         not allowed to span multiple nodes.
       - "STRICT_SPREAD": Packs Bundles across distinct nodes.
      *args: Passed to the call of ``placement_group()``, if applicable.
      **kwargs: Passed to the call of ``placement_group()``, if applicable.
class_docstr_tok: ["Request","for","resources",".","This","class","is","used","to","define","a","resource","request",".","A","resource","request","comprises","one","or","more","bundles","of","resources","and","instructions","on","the","scheduling","behavior",".","The","resource","request","can","be","submitted","to","a","resource","manager",",","which","will","schedule","the","resources",".","Depending","on","the","resource","backend",",","this","may","instruct","Ray","to","scale","up","(","autoscaling",")",".","Resource","requests","are","compatible","with","the","most","fine-grained","low-level","resource","backend",",","which","are","Ray","placement","groups",".","Args",":","bundles",":","A","list","of","bundles","which","represent","the","resources","requirements",".","E.g",".","``","[","{","``","CPU","''",":","1",",","``","GPU","''",":","1","}","]","``",".","strategy",":","The","scheduling","strategy","to","acquire","the","bundles",".","-","``","PACK","''",":","Packs","Bundles","into","as","few","nodes","as","possible",".","-","``","SPREAD","''",":","Places","Bundles","across","distinct","nodes","as","even","as","possible",".","-","``","STRICT_PACK","''",":","Packs","Bundles","into","one","node",".","The","group","is","not","allowed","to","span","multiple","nodes",".","-","``","STRICT_SPREAD","''",":","Packs","Bundles","across","distinct","nodes",".","*","args",":","Passed","to","the","call","of","``","placement_group","(",")","``",",","if","applicable",".","*","*","kwargs",":","Passed","to","the","call","of","``","placement_group","(",")","``",",","if","applicable","."]
code: def __getstate__(self):
      state = self.__dict__.copy()
      state.pop("_hash", None)
      state.pop("_bound", None)
      return state
  
imports: import abc
  import json
  from copy import deepcopy
  from inspect import signature
  from typing import Dict, List, Union
  from dataclasses import dataclass
  import ray
  from ray.util import placement_group
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 11 for calling the ResourceRequest obj's underlying member method code with example usage: obj.__getstate__() and returns: state