code: def set_name(self, name, overwrite=False, increment=True):
          
  
          # check if the file exists
          exists = os.path.exists(os.path.join(self._path, self.increment_name(name, 0)))
  
          # make sure that we dont overwrite if overwrite and increment are both false
          warning = "Filename and path already exists, refusing to set filename without overwrite=True or increment=True"
          assert not (exists and not overwrite and not increment), warning
  
          if overwrite is True:
              increment = False
  
          # otherwise overwrite the file
          if increment is False:
              self.filepath = os.path.join(self._path, self.increment_name(name, 0))
              self.name = self.increment_name(name, 0)
              return self.name
  
          # or increment the filename
          i = 0
          while os.path.exists(os.path.join(self._path, self.increment_name(name, i))):
              i += 1
          self.name = self.increment_name(name, i)
          self.filepath = os.path.join(self._path, self.increment_name(name, i))
          return self.name
docs: Sets the name of the file to be saved.
  
          @params
              name - the name to the file
              increment - whether or not to increment the filename if there is an existing file ie test.txt => test1.txt
              overwrite - whether or not to overwrite existing local file, renders increment redundant