code: def override_config_dict(
      config_dict: Any, overrides: Optional[List[List[str]]]
  ) -> Any:
      for override in chain.from_iterable(overrides or ()):
          try:
              key, _, value = override.rpartition("=")
              path = key.split(".")
              param_type = extract_nested_type(ConfigSchema, path)
              # this is a bit of a hack; we should do something better
              # but this is convenient for specifying lists of strings
              # e.g. edge_paths
              if has_origin(param_type, list):
                  value = value.split(",")
              # Convert numbers (caution: ignore bools, which are ints)
              if (
                  isinstance(param_type, type)
                  and issubclass(param_type, (int, float))
                  and not issubclass(param_type, bool)
              ):
                  value = param_type(value)
              inject_nested_value(config_dict, path, value)
          except Exception as err:
              raise RuntimeError(
                  "Can't parse override: %s" % override
              ) from err
      return config_dict
  
imports: import argparse
  import importlib
  import logging
  import os.path
  import shutil
  import sys
  import tempfile
  import uuid
  from enum import Enum
  from itertools import chain
  from typing import Any, ClassVar, Dict, List, Optional
  import attr
  from attr.validators import optional
  from torchbiggraph.schema import DeepTypeError, extract_nested_type, has_origin, inject_nested_value, non_empty, non_negative, positive, Schema, schema
label_desc: Use image node_id 1 for calling a global function with example usage: override_config_dict(config_dict, overrides) and returns: config_dict