f96877b65adde0d87052c1f3c68f9e6f4733318e
[gpgme.git] / lang / python / pyme / errors.py
1 # Copyright (C) 2004 Igor Belyi <belyi@users.sourceforge.net>
2 # Copyright (C) 2002 John Goerzen <jgoerzen@complete.org>
3 #
4 #    This library is free software; you can redistribute it and/or
5 #    modify it under the terms of the GNU Lesser General Public
6 #    License as published by the Free Software Foundation; either
7 #    version 2.1 of the License, or (at your option) any later version.
8 #
9 #    This library is distributed in the hope that it will be useful,
10 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 #    Lesser General Public License for more details.
13 #
14 #    You should have received a copy of the GNU Lesser General Public
15 #    License along with this library; if not, write to the Free Software
16 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
17
18 from . import pygpgme
19 from . import util
20
21 util.process_constants('GPG_ERR_', globals())
22
23 class GPGMEError(Exception):
24     def __init__(self, error = None, message = None):
25         self.error = error
26         self.message = message
27
28     @classmethod
29     def fromSyserror(cls):
30         return cls(pygpgme.gpgme_err_code_from_syserror())
31
32     def getstring(self):
33         message = "%s: %s" % (pygpgme.gpgme_strsource(self.error),
34                               pygpgme.gpgme_strerror(self.error))
35         if self.message != None:
36             message = "%s: %s" % (self.message, message)
37         return message
38
39     def getcode(self):
40         return pygpgme.gpgme_err_code(self.error)
41
42     def getsource(self):
43         return pygpgme.gpgme_err_source(self.error)
44
45     def __str__(self):
46         return "%s (%d,%d)"%(self.getstring(), self.getsource(), self.getcode())
47
48 def errorcheck(retval, extradata = None):
49     if retval:
50         raise GPGMEError(retval, extradata)