docstr: Convert dictionary (and ordered dictionary) into a ConfigTree
  :param dictionary: dictionary to convert
  :type dictionary: dict
  :return: Config object
  :type return: Config
docstr_tok: ["Convert","dictionary","(","and","ordered","dictionary",")","into","a","ConfigTree",":","param","dictionary",":","dictionary","to","convert",":","type","dictionary",":","dict",":","return",":","Config","object",":","type","return",":","Config"]
code: def from_dict(cls, dictionary, root=False):
      """Convert dictionary (and ordered dictionary) into a ConfigTree
      :param dictionary: dictionary to convert
      :type dictionary: dict
      :return: Config object
      :type return: Config
      """
  
      def create_tree(value):
          if isinstance(value, dict):
              res = ConfigTree(root=root)
              for key, child_value in value.items():
                  res.put(key, create_tree(child_value))
              return res
          if isinstance(value, list):
              return [create_tree(v) for v in value]
          else:
              return value
  
      return create_tree(dictionary)
  
imports: import itertools
  import re
  import os
  import socket
  import contextlib
  import codecs
  from datetime import timedelta
  from pyparsing import Forward, Keyword, QuotedString, Word, Literal, Suppress, Regex, Optional, SkipTo, ZeroOrMore, Group, lineno, col, TokenConverter, replaceWith, alphanums, alphas8bit, ParseSyntaxException, StringEnd
  from pyparsing import ParserElement
  from .config_tree import ConfigTree, ConfigSubstitution, ConfigList, ConfigValues, ConfigUnquotedString, ConfigInclude, NoneValue, ConfigQuotedString
  from .exceptions import ConfigSubstitutionException, ConfigMissingException, ConfigException
  import logging
  import copy
label_desc: Use image node_id 4 for calling the ConfigFactory obj's underlying member method code with example usage: obj.from_dict(cls, dictionary, root) and returns: create_tree, res, unknown, value