code: def purge                (self,
  	                          strategy           = "klogn",
  	                          keep               = None,
  	                          deleteNonSnapshots = False,
  	                          **kwargs):
  		
  		
  		assert(isinstance(keep, (list, set))  or  keep is None)
  		keep = set(keep or [])
  		if self.haveSnapshots:
  			if   strategy == "lastk":
  				keep.update(self.strategyLastK(self.latestSnapshotNum, **kwargs))
  			elif strategy == "klogn":
  				keep.update(self.strategyKLogN(self.latestSnapshotNum, **kwargs))
  			else:
  				raise ValueError("Unknown purge strategy "+str(None)+"!")
  			keep.update(["latest", str(self.latestSnapshotNum)])
  		keep = set(map(str, keep))
  		
  		snaps, nonSnaps    = self.listSnapshotDir(self.snapDir)
  		dirEntriesToDelete = set()
  		dirEntriesToDelete.update(snaps)
  		dirEntriesToDelete.update(nonSnaps if deleteNonSnapshots else set())
  		dirEntriesToDelete.difference_update(keep)
  		for dirEntry in dirEntriesToDelete:
  			self.rmR(os.path.join(self.snapDir, dirEntry))
  		
  		return self
docs: Purge snapshot directory of snapshots according to some strategy,
  		preserving however a given "keep" list or set of snapshot numbers.
  		
  		Available strategies are:
  		    "lastk":  Keep last k snapshots (Default: k=10)
  		    "klogn":  Keep every snapshot in the last k, 2k snapshots in
  		              the last k**2, 3k snapshots in the last k**3, ...
  		              (Default: k=4. k must be > 1).
  		
  		Returns `self`.