code: def parse_file(cls, filename, encoding='utf-8', required=True, resolve=True, unresolved_value=DEFAULT_SUBSTITUTION):
          
          try:
              with codecs.open(filename, 'r', encoding=encoding) as fd:
                  content = fd.read()
                  return cls.parse_string(content, os.path.dirname(filename), resolve, unresolved_value)
          except IOError as e:
              if required:
                  raise e
              logger.warn('Cannot include file %s. File does not exist or cannot be read.', filename)
              return []
docs: Parse file
  
          :param filename: filename
          :type filename: basestring
          :param encoding: file encoding
          :type encoding: basestring
          :param required: If true, raises an exception if can't load file
          :type required: boolean
          :param resolve: if true, resolve substitutions
          :type resolve: boolean
          :param unresolved_value: assigned value value to unresolved substitution.
          If overriden with a default value, it will replace all unresolved value to the default value.
          If it is set to to pyhocon.STR_SUBSTITUTION then it will replace the value by its substitution expression (e.g., ${x})
          :type unresolved_value: boolean
          :return: Config object
          :type return: Config