code: def serialize(obj, **options):
      '''
      Serialize Python data to a configparser formatted string or file.
  
      :param obj: the data structure to serialize
      :param options: options given to lower configparser module.
      '''
  
      try:
          if not isinstance(obj, dict):
              raise TypeError("configparser can only serialize dictionaries, not {0}".format(type(obj)))
          fp = options.pop('fp', None)
          if six.PY3:
              cp = configparser.ConfigParser(**options)
          else:
              cp = configparser.SafeConfigParser(**options)
          _read_dict(cp, obj)
  
          if fp:
              return cp.write(fp)
          else:
              s = six.moves.StringIO()
              cp.write(s)
              return s.getvalue()
      except Exception as error:
          raise SerializationError(errorf serialize(obj, **options):
      '''
      Serialize Python data to a configparser formatted string or file.
  
      :param obj: the data structure to serialize
      :param options: options given to lower configparser module.
      '''
  
      try:
          if not isinstance(obj, dict):
              raise TypeError("configparser can only serialize dictionaries, not {0}".format(type(obj)))
          fp = options.pop('fp', None)
          if six.PY3:
              cp = configparser.ConfigParser(**options)
          else:
              cp = configparser.SafeConfigParser(**options)
          _read_dict(cp, obj)
  
          if fp:
              return cp.write(fp)
          else:
              s = six.moves.StringIO()
              cp.write(s)
              return s.getvalue()
      except Exception as error:
          raise SerializationError(error)
docs: Serialize Python data to a configparser formatted string or file.
  
      :param obj: the data structure to serialize
      :param options: options given to lower configparser module.