From 30147710e8d6b2b5aebcf6f774fe289a4918958c Mon Sep 17 00:00:00 2001 From: Richard Oudkerk Date: Tue, 28 Aug 2012 19:33:26 +0100 Subject: Issue #15784: Modify OSError.__str__() to better distinguish between errno error numbers and Windows error numbers. --- Lib/test/test_exceptions.py | 4 ++-- Misc/NEWS | 3 +++ Objects/exceptions.c | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 55e9db3..413f4dd 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -216,14 +216,14 @@ class ExceptionTests(unittest.TestCase): self.assertEqual(w.winerror, 3) self.assertEqual(w.strerror, 'foo') self.assertEqual(w.filename, 'bar') - self.assertEqual(str(w), "[Error 3] foo: 'bar'") + self.assertEqual(str(w), "[WinError 3] foo: 'bar'") # Unknown win error becomes EINVAL (22) w = OSError(0, 'foo', None, 1001) self.assertEqual(w.errno, 22) self.assertEqual(w.winerror, 1001) self.assertEqual(w.strerror, 'foo') self.assertEqual(w.filename, None) - self.assertEqual(str(w), "[Error 1001] foo") + self.assertEqual(str(w), "[WinError 1001] foo") # Non-numeric "errno" w = OSError('bar', 'foo') self.assertEqual(w.errno, 'bar') diff --git a/Misc/NEWS b/Misc/NEWS index bc091f1..50baf86 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ What's New in Python 3.3.0 Release Candidate 2? Core and Builtins ----------------- +- Issue #15784: Modify OSError.__str__() to better distinguish between + errno error numbers and Windows error numbers. + Library ------- diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 74bb262..6b04700 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -1016,12 +1016,12 @@ OSError_str(PyOSErrorObject *self) #ifdef MS_WINDOWS /* If available, winerror has the priority over myerrno */ if (self->winerror && self->filename) - return PyUnicode_FromFormat("[Error %S] %S: %R", + return PyUnicode_FromFormat("[WinError %S] %S: %R", self->winerror ? self->winerror: Py_None, self->strerror ? self->strerror: Py_None, self->filename); if (self->winerror && self->strerror) - return PyUnicode_FromFormat("[Error %S] %S", + return PyUnicode_FromFormat("[WinError %S] %S", self->winerror ? self->winerror: Py_None, self->strerror ? self->strerror: Py_None); #endif -- cgit v0.12