# Copyright: 2005 Gentoo Foundation # Author(s): Brian Harring (ferringb@gentoo.org) # License: GPL2 class CacheError(Exception): pass class InitializationError(CacheError): def __init__(self, class_name, error): self.error, self.class_name = error, class_name def __str__(self): return "Creation of instance %s failed due to %s" % \ (self.class_name, str(self.error)) class CacheCorruption(CacheError): def __init__(self, key, ex): self.key, self.ex = key, ex def __str__(self): return "%s is corrupt: %s" % (self.key, str(self.ex)) class GeneralCacheCorruption(CacheError): def __init__(self,ex): self.ex = ex def __str__(self): return "corruption detected: %s" % str(self.ex) class InvalidRestriction(CacheError): def __init__(self, key, restriction, exception=None): if exception == None: exception = '' self.key, self.restriction, self.ex = key, restriction, ex def __str__(self): return "%s:%s is not valid: %s" % \ (self.key, self.restriction, str(self.ex)) class ReadOnlyRestriction(CacheError): def __init__(self, info=''): self.info = info def __str__(self): return "cache is non-modifiable"+str(self.info) class StatCollision(CacheError): """ If the content of a cache entry changes and neither the file mtime nor size changes, it will prevent rsync from detecting changes. Cache backends may raise this exception from _setitem() if they detect this type of stat collision. See bug #139134. """ def __init__(self, key, filename, mtime, size): self.key = key self.filename = filename self.mtime = mtime self.size = size def __str__(self): return "%s has stat collision with size %s and mtime %s" % \ (self.key, self.size, self.mtime) def __repr__(self): return "portage.cache.cache_errors.StatCollision(%s)" % \ (', '.join((repr(self.key), repr(self.filename), repr(self.mtime), repr(self.size))),)