code: def _read_recursive(self, conf_root, verbose=True):
      conf = ConfigTree()
      if not conf_root:
          return conf
      conf_root = Path(conf_root)
  
      if not conf_root.exists():
          if verbose:
              print("No config in %s" % str(conf_root))
          return conf
  
      if verbose:
          print("Loading config from %s" % str(conf_root))
      for root, dirs, files in os.walk(str(conf_root)):
          rel_dir = str(Path(root).relative_to(conf_root))
          if rel_dir == ".":
              rel_dir = ""
          prefix = rel_dir.replace("/", ".")
  
          for filename in files:
              if not is_config_file(filename):
                  continue
  
              if prefix != "":
                  key = prefix + "." + Path(filename).stem
              else:
                  key = Path(filename).stem
  
              file_path = str(Path(root) / filename)
  
              conf.put(
                  key,
                  self._read_single_file(file_path, verbose=verbose),
              )
  
      return conf
  
imports: from __future__ import print_function
  import functools
  import json
  import logging
  import os
  import sys
  import warnings
  from fnmatch import fnmatch
  from os.path import expanduser
  from typing import Any
  import six
  from pathlib2 import Path
  from pyparsing import ParseFatalException, ParseException, RecursiveGrammarException, ParseSyntaxException
  from six.moves.urllib.parse import urlparse
  from .bucket_config import S3BucketConfig
  from .defs import Environment, DEFAULT_CONFIG_FOLDER, LOCAL_CONFIG_PATHS, ENV_CONFIG_PATHS, LOCAL_CONFIG_FILES, LOCAL_CONFIG_FILE_OVERRIDE_VAR, ENV_CONFIG_PATH_OVERRIDE_VAR, CONFIG_VERBOSE
  from .defs import is_config_file
  from .entry import Entry, NotSet
  from .errors import ConfigurationError
  from .log import initialize, logger
  from .utils import get_options
  from ..utilities.pyhocon import ConfigTree, ConfigFactory
label_desc: Use image node_id 18 for calling the Config obj's underlying member method code with example usage: obj._read_recursive(conf_root, verbose) and returns: conf, conf, conf