e = BlockingIOError(*args[:n])
with self.assertRaises(AttributeError):
e.characters_written
+ with self.assertRaises(AttributeError):
+ del e.characters_written
e = BlockingIOError("a", "b", 3)
self.assertEqual(e.characters_written, 3)
e.characters_written = 5
self.assertEqual(e.characters_written, 5)
+ del e.characters_written
+ with self.assertRaises(AttributeError):
+ e.characters_written
class ExplicitSubclassingTest(unittest.TestCase):
static int
OSError_written_set(PyOSErrorObject *self, PyObject *arg, void *context)
{
+ if (arg == NULL) {
+ if (self->written == -1) {
+ PyErr_SetString(PyExc_AttributeError, "characters_written");
+ return -1;
+ }
+ self->written = -1;
+ return 0;
+ }
Py_ssize_t n;
n = PyNumber_AsSsize_t(arg, PyExc_ValueError);
if (n == -1 && PyErr_Occurred())