code: def remove(self, rel_path, propagate=False):
          '''Delete the file from the cache, and from the upstream'''
  
          if not self.upstream:
              raise Exception("CompressionCache must have an upstream")
  
          # Must always propagate, since this is really just a filter.
          self.upstream.remove(self._rename(rel_path), propagate)
  
          # In case someone called get()
          uc_rel_path = os.path.join('uncompressed', rel_path)
  
          self.upstream.remove(uc_rel_pathf remove(self, rel_path, propagate=False):
          '''Delete the file from the cache, and from the upstream'''
  
          if not self.upstream:
              raise Exception("CompressionCache must have an upstream")
  
          # Must always propagate, since this is really just a filter.
          self.upstream.remove(self._rename(rel_path), propagate)
  
          # In case someone called get()
          uc_rel_path = os.path.join('uncompressed', rel_path)
  
          self.upstream.remove(uc_rel_path)
docs: Delete the file from the cache, and from the upstream