class_docstr: Monitors kubernetes resources managed by the launch agent.
  
  Note: this class is forced to be a singleton in order to prevent multiple
  threads from being created that monitor the same kubernetes resources.
docstr: Start monitoring a namespaces for resources.
docstr_tok: ["Start","monitoring","a","namespaces","for","resources","."]
code: def monitor_namespace(
      cls,
      namespace: str,
      custom_resource: Optional[CustomResource] = None,
  ) -> None:
      """Start monitoring a namespaces for resources."""
      if cls._instance is None:
          raise LaunchError(
              "LaunchKubernetesMonitor not initialized, cannot monitor namespace."
          )
      cls._instance.__monitor_namespace(
          namespace, custom_resource=custom_resource
      )
  
imports: import asyncio
  import logging
  import sys
  import traceback
  from typing import Any, Dict, List, Optional, Tuple, Union
  import kubernetes_asyncio
  import urllib3
  from kubernetes_asyncio import watch
  from kubernetes_asyncio.client import ApiException, BatchV1Api, CoreV1Api, CustomObjectsApi, V1PodStatus
  import wandb
  from wandb.sdk.launch.agent import LaunchAgent
  from wandb.sdk.launch.errors import LaunchError
  from wandb.sdk.launch.runner.abstract import State, Status
  from wandb.sdk.launch.utils import get_kube_context_and_api_client
label_desc: Use image node_id 3 for calling the LaunchKubernetesMonitor obj's underlying member method code with example usage: obj.monitor_namespace(cls, namespace, custom_resource) without return types