[pygobject] Clobber GLib.Error with custom implementation
- From: Simon Feltman <sfeltman src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] Clobber GLib.Error with custom implementation
- Date: Mon, 5 May 2014 07:27:14 +0000 (UTC)
commit 4c2e6914bf0277ebc3a6a4426f33a1b378a04b00
Author: Simon Feltman <sfeltman src gnome org>
Date: Sun May 4 23:19:30 2014 -0700
Clobber GLib.Error with custom implementation
Clobber the introspection GLib.Error class with the custom Python
implementation found in gi._error.GError. Update references to GLib.GError
to use GLib.Error.
https://bugzilla.gnome.org/show_bug.cgi?id=712519
gi/_error.py | 3 ++-
gi/overrides/GLib.py | 9 ++++++---
gi/pygi-error.c | 10 +++++-----
tests/test_error.py | 24 ++++++++++++------------
4 files changed, 25 insertions(+), 21 deletions(-)
---
diff --git a/gi/_error.py b/gi/_error.py
index 34a5317..6b684ce 100644
--- a/gi/_error.py
+++ b/gi/_error.py
@@ -38,7 +38,8 @@ class GError(RuntimeError):
return "%s: %s (%d)" % (self.domain, self.message, self.code)
def __repr__(self):
- return "GLib.GError('%s', '%s', %d)" % (self.message, self.domain, self.code)
+ return "%s.%s('%s', '%s', %d)" % (GError.__module__, GError.__name__,
+ self.message, self.domain, self.code)
def copy(self):
return GError(self.message, self.domain, self.code)
diff --git a/gi/overrides/GLib.py b/gi/overrides/GLib.py
index d25d374..214d507 100644
--- a/gi/overrides/GLib.py
+++ b/gi/overrides/GLib.py
@@ -42,6 +42,7 @@ __all__.append('option')
from gi._gi import _glib
from gi._error import GError
+Error = GError
OptionContext = _glib.OptionContext
OptionGroup = _glib.OptionGroup
Pid = _glib.Pid
@@ -70,11 +71,13 @@ def gerror_new_literal(domain, message, code):
# Monkey patch methods that rely on GLib introspection to be loaded at runtime.
-GError.matches = gerror_matches
-GError.new_literal = staticmethod(gerror_new_literal)
+Error.__name__ = 'Error'
+Error.__module__ = 'GLib'
+Error.matches = gerror_matches
+Error.new_literal = staticmethod(gerror_new_literal)
-__all__ += ['GError', 'OptionContext', 'OptionGroup', 'Pid',
+__all__ += ['GError', 'Error', 'OptionContext', 'OptionGroup', 'Pid',
'spawn_async', 'threads_init']
diff --git a/gi/pygi-error.c b/gi/pygi-error.c
index 73b7fbe..2e9150f 100644
--- a/gi/pygi-error.c
+++ b/gi/pygi-error.c
@@ -146,14 +146,14 @@ pygi_gerror_exception_check (GError **error)
py_message = PyObject_GetAttrString(value, "message");
if (!py_message || !PYGLIB_PyUnicode_Check(py_message)) {
- bad_gerror_message = "gi._glib.GError instances must have a 'message' string attribute";
+ bad_gerror_message = "GLib.Error instances must have a 'message' string attribute";
Py_XDECREF(py_message);
goto bad_gerror;
}
py_domain = PyObject_GetAttrString(value, "domain");
if (!py_domain || !PYGLIB_PyUnicode_Check(py_domain)) {
- bad_gerror_message = "gi._glib.GError instances must have a 'domain' string attribute";
+ bad_gerror_message = "GLib.Error instances must have a 'domain' string attribute";
Py_DECREF(py_message);
Py_XDECREF(py_domain);
goto bad_gerror;
@@ -161,7 +161,7 @@ pygi_gerror_exception_check (GError **error)
py_code = PyObject_GetAttrString(value, "code");
if (!py_code || !PYGLIB_PyLong_Check(py_code)) {
- bad_gerror_message = "gi._glib.GError instances must have a 'code' int attribute";
+ bad_gerror_message = "GLib.Error instances must have a 'code' int attribute";
Py_DECREF(py_message);
Py_DECREF(py_domain);
Py_XDECREF(py_code);
@@ -178,7 +178,7 @@ pygi_gerror_exception_check (GError **error)
bad_gerror:
Py_DECREF(value);
- g_set_error(error, g_quark_from_static_string("pyglib"), 0, "%s", bad_gerror_message);
+ g_set_error(error, g_quark_from_static_string("pygi"), 0, "%s", bad_gerror_message);
PyErr_SetString(PyExc_ValueError, bad_gerror_message);
PyErr_Print();
return -2;
@@ -189,7 +189,7 @@ bad_gerror:
* @name: name of the exception
* @error_domain: error domain
*
- * Registers a new glib.GError exception subclass called #name for
+ * Registers a new GLib.Error exception subclass called #name for
* a specific #domain. This exception will be raised when a GError
* of the same domain is passed in to pygi_error_check().
*
diff --git a/tests/test_error.py b/tests/test_error.py
index a509b8a..f392248 100644
--- a/tests/test_error.py
+++ b/tests/test_error.py
@@ -31,14 +31,14 @@ from gi.repository import GIMarshallingTests
class TestType(unittest.TestCase):
def test_attributes(self):
- e = GLib.GError('test message', 'mydomain', 42)
+ e = GLib.Error('test message', 'mydomain', 42)
self.assertEqual(e.message, 'test message')
self.assertEqual(e.domain, 'mydomain')
self.assertEqual(e.code, 42)
def test_new_literal(self):
mydomain = GLib.quark_from_string('mydomain')
- e = GLib.GError.new_literal(mydomain, 'test message', 42)
+ e = GLib.Error.new_literal(mydomain, 'test message', 42)
self.assertEqual(e.message, 'test message')
self.assertEqual(e.domain, 'mydomain')
self.assertEqual(e.code, 42)
@@ -46,23 +46,23 @@ class TestType(unittest.TestCase):
def test_matches(self):
mydomain = GLib.quark_from_string('mydomain')
notmydomain = GLib.quark_from_string('notmydomain')
- e = GLib.GError('test message', 'mydomain', 42)
+ e = GLib.Error('test message', 'mydomain', 42)
self.assertTrue(e.matches(mydomain, 42))
self.assertFalse(e.matches(notmydomain, 42))
self.assertFalse(e.matches(mydomain, 40))
def test_str(self):
- e = GLib.GError('test message', 'mydomain', 42)
+ e = GLib.Error('test message', 'mydomain', 42)
self.assertEqual(str(e),
'mydomain: test message (42)')
def test_repr(self):
- e = GLib.GError('test message', 'mydomain', 42)
+ e = GLib.Error('test message', 'mydomain', 42)
self.assertEqual(repr(e),
- "GLib.GError('test message', 'mydomain', 42)")
+ "GLib.Error('test message', 'mydomain', 42)")
def test_inheritance(self):
- self.assertTrue(issubclass(GLib.GError, RuntimeError))
+ self.assertTrue(issubclass(GLib.Error, RuntimeError))
class TestMarshalling(unittest.TestCase):
@@ -72,13 +72,13 @@ class TestMarshalling(unittest.TestCase):
# set, invoke would attempt to free the C array as if it were a GArray.
# This crash is only for C arrays. It does not happen for C functions which
# take in GArrays. See https://bugzilla.gnome.org/show_bug.cgi?id=642708
- self.assertRaises(GLib.GError, GIMarshallingTests.gerror_array_in, [1, 2, 3])
+ self.assertRaises(GLib.Error, GIMarshallingTests.gerror_array_in, [1, 2, 3])
def test_out(self):
# See https://bugzilla.gnome.org/show_bug.cgi?id=666098
error, debug = GIMarshallingTests.gerror_out()
- self.assertIsInstance(error, GLib.GError)
+ self.assertIsInstance(error, GLib.Error)
self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
@@ -88,7 +88,7 @@ class TestMarshalling(unittest.TestCase):
# See https://bugzilla.gnome.org/show_bug.cgi?id=666098
error, debug = GIMarshallingTests.gerror_out_transfer_none()
- self.assertIsInstance(error, GLib.GError)
+ self.assertIsInstance(error, GLib.Error)
self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
@@ -98,13 +98,13 @@ class TestMarshalling(unittest.TestCase):
# See https://bugzilla.gnome.org/show_bug.cgi?id=666098
error = GIMarshallingTests.gerror_return()
- self.assertIsInstance(error, GLib.GError)
+ self.assertIsInstance(error, GLib.Error)
self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
def test_exception(self):
- self.assertRaises(GLib.GError, GIMarshallingTests.gerror)
+ self.assertRaises(GLib.Error, GIMarshallingTests.gerror)
try:
GIMarshallingTests.gerror()
except Exception:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]