class_docstr: A "simple" resource scheduler that schedules resource requests based on the
  following rules:
      1. Enforce the minimal count of nodes for each worker node type.
      2. Enforce the cluster resource constraints.
      3. Schedule the gang resource requests.
      4. Schedule the tasks/actor resource requests
class_docstr_tok: ["A","``","simple","''","resource","scheduler","that","schedules","resource","requests","based","on","the","following","rules",":","1",".","Enforce","the","minimal","count","of","nodes","for","each","worker","node","type",".","2",".","Enforce","the","cluster","resource","constraints",".","3",".","Schedule","the","gang","resource","requests",".","4",".","Schedule","the","tasks\/actor","resource","requests"]
code: def _init_context(self, request: SchedulingRequest) -> None:
      self._ctx = self.ScheduleContext.from_schedule_request(request)
  
imports: import copy
  import logging
  from abc import ABC, abstractmethod
  from collections import defaultdict
  from dataclasses import dataclass, field
  from enum import Enum
  from typing import Dict, List, Optional, Tuple
  from google.protobuf.json_format import MessageToDict
  from ray.autoscaler._private.resource_demand_scheduler import UtilizationScore
  from ray.autoscaler.v2.instance_manager.config import NodeTypeConfig
  from ray.autoscaler.v2.schema import NodeType
  from ray.autoscaler.v2.utils import is_pending, resource_requests_by_count
  from ray.core.generated.autoscaler_pb2 import ClusterResourceConstraint, GangResourceRequest, NodeState, ResourceRequest, ResourceRequestByCount
  from ray.core.generated.instance_manager_pb2 import Instance
label_desc: Use image node_id 2 for calling the ResourceDemandScheduler obj's underlying member method code with example usage: obj._init_context(request) without return types