code: def set_contents(self, contents, encoding=None):
          
          self.encoding = encoding
          changed = self._set_initial_contents(contents)
          if self._side_effect is not None:
              self._side_effect(self)
          return changed
docs: Sets the file contents and size and increases the modification time.
          Also executes the side_effects if available.
  
          Args:
            contents: (str, bytes, unicode) new content of file.
            encoding: (str) the encoding to be used for writing the contents
                      if they are a unicode string.
                      If not given, the locale preferred encoding is used.
  
          Raises:
            IOError: if `st_size` is not a non-negative integer,
                     or if it exceeds the available file system space.