code: def _merge_config(full_config: Dict, config: Dict) -> Dict:
      """
      Merge the config to full_config, the config support flatten key, e.g.
  
      config={
          'scheduling.autoscale.enabled': True,
          'scheduling.autoscale.scheduler_check_interval': 1,
          'scheduling.autoscale.scheduler_backlog_timeout': 1,
          'scheduling.autoscale.worker_idle_timeout': 10,
          'scheduling.autoscale.min_workers': 1,
          'scheduling.autoscale.max_workers': 4
      }
      """
      if not config:
          return full_config
      if not isinstance(config, Dict):  # pragma: no cover
          raise ValueError(
              f"The config should be a dict, but the type is {type(config)}."
          )
      flatten_keys = set(
          k for k in config.keys() if isinstance(k, str) and "." in k
      )
      nested_flatten_config = flatten_dict_to_nested_dict(
          {k: config[k] for k in flatten_keys}
      )
      nested_config = {
          k: config[k] for k in config.keys() if k not in flatten_keys
      }
      config = merge_dict(
          nested_config, nested_flatten_config, overwrite=False
      )
      merge_dict(full_config, config)
      return full_config
  
file_path: mars/mars/deploy/utils.py
imports: import asyncio
  import os
  import time
  import warnings
  from typing import Callable, Dict, List, Union, TextIO
  import yaml
  from ..services import NodeRole
  from ..utils import merge_dict, flatten_dict_to_nested_dict
label_desc: Use image node_id 3 for calling a global function with example usage: _merge_config(full_config, config) and returns: full_config, full_config