code: def set(self, key, value):
          
          if value is None:
              return None
  
          self.parser.set(self.section, key, value)
  
          # Unfortunately ConfigParser attempts to write a string to the file
          # object, and NamedTemporaryFile uses binary mode. So we nee to create
          # the tempfile, and then re-open it.
          with NamedTemporaryFile(delete=False) as tmpfile:
              pass
          with codecs.open(tmpfile.name, 'w', encoding='utf8') as fp:
              self.parser.write(fp)
  
          self.file.close()
          shutil.move(tmpfile.name, self.file.name)
          self.file = open(self.file.name)
          return value
docs: Saves the input with the given key in the section that was
          passed to the constructor. If either the section or the key
          are not found, they are created.
  
          Does nothing if the given value is None.
  
          :type  key: str
          :param key: The key for which to define a value.
          :type  value: str|None
          :param value: The value that is defined, or None.
          :rtype:  str|None
          :return: The given value.