Add OfflineImapError class

This Exception can be thrown whenever a sync error occurs. It is used
for outputting sensible error messages to the user and it denotes a
"severity", it can tell offlineimap if we need to abort a message, a
folder, a repo sync, or whether we should indeed abort immediately.

The exception is not yet used in the code.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
Sebastian Spaeth 2011-05-04 16:45:24 +02:00 committed by Nicolas Sebrecht
parent 3446b592f3
commit bc004a911a
2 changed files with 34 additions and 0 deletions

View File

@ -18,6 +18,7 @@ to distribute it under the conditions laid out in COPYING."""
__homepage__ = "http://github.com/nicolas33/offlineimap" __homepage__ = "http://github.com/nicolas33/offlineimap"
__license__ = "Licensed under the GNU GPL v2+ (v2 or any later version)." __license__ = "Licensed under the GNU GPL v2+ (v2 or any later version)."
from offlineimap.error import OfflineImapError
# put this last, so we don't run into circular dependencies using # put this last, so we don't run into circular dependencies using
# e.g. offlineimap.__version__. # e.g. offlineimap.__version__.
from offlineimap.init import OfflineImap from offlineimap.init import OfflineImap

33
offlineimap/error.py Normal file
View File

@ -0,0 +1,33 @@
class OfflineImapError(Exception):
"""An Error during offlineimap synchronization"""
class ERROR:
"""Severity levels"""
MESSAGE = 0
FOLDER = 10
REPO = 20
CRITICAL = 30
def __init__(self, reason, severity, errcode=None):
"""
:param reason: Human readable string suitable for logging
:param severity: denoting which operations should be
aborted. E.g. a ERROR.MESSAGE can occur on a faulty
message, but a ERROR.REPO occurs when the server is
offline.
:param errcode: optional number denoting a predefined error
situation (which let's us exit with a predefined exit
value). So far, no errcodes have been defined yet.
:type severity: OfflineImapError.ERROR value"""
self.errcode = errcode
self.severity = severity
# 'reason' is stored in the Exception().args tuple.
super(OfflineImapError, self).__init__(reason)
@property
def reason(self):
return self.args[0]