class_docstr: Mock implementation of a BatchingNodeProvider.
code: def __init__(
      self,
      provider_config: Dict[str, Any],
      cluster_name: str,
      _allow_multiple: bool = False,
  ) -> None:
      BatchingNodeProvider.__init__(
          self, provider_config, cluster_name, _allow_multiple
      )
      # Fake cluster manager state:
      self._node_data_dict: Dict[NodeID, NodeData] = {}
  
      self._add_node(node_type="head", node_kind=NODE_KIND_HEAD)
      # Allow unit test to the control output of safe_to_scale.
      self._safe_to_scale_flag = True
      self._scale_request_submitted_count = 0
      # Track non_terminated_nodes_calls for use in test_autoscaler.py
      self.num_non_terminated_nodes_calls = 0
  
imports: from copy import copy
  from uuid import uuid4
  import os
  import random
  import sys
  from typing import Any, Dict
  from collections import defaultdict
  import pytest
  from ray.autoscaler.batching_node_provider import BatchingNodeProvider, NodeData, ScaleRequest
  from ray.autoscaler._private.util import NodeID, NodeType
  from ray.autoscaler.tags import STATUS_UP_TO_DATE, TAG_RAY_USER_NODE_TYPE, TAG_RAY_NODE_KIND, TAG_RAY_NODE_STATUS, NODE_KIND_HEAD, NODE_KIND_WORKER
  from ray.autoscaler._private.constants import DISABLE_LAUNCH_CONFIG_CHECK_KEY, DISABLE_NODE_UPDATERS_KEY, FOREGROUND_NODE_LAUNCH_KEY
label_desc: Use image node_id 1 to create a new MockBatchingNodeProvider object from inherited base classes: BatchingNodeProvider with example: obj = MockBatchingNodeProvider(provider_config, cluster_name, _allow_multiple)