diff -r 47f98a550d42 Doc/library/shutil.rst --- a/Doc/library/shutil.rst Tue Dec 18 22:02:39 2012 +0200 +++ b/Doc/library/shutil.rst Tue Dec 18 22:20:46 2012 +0200 @@ -393,11 +393,10 @@ errors.extend(err.args[0]) try: copystat(src, dst) - except WindowsError: + except OSError as why: # can't copy file access times on Windows - pass - except OSError as why: - errors.extend((src, dst, str(why))) + if why.winerror is None: + errors.extend((src, dst, str(why))) if errors: raise Error(errors) diff -r 47f98a550d42 Lib/ctypes/__init__.py --- a/Lib/ctypes/__init__.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/ctypes/__init__.py Tue Dec 18 22:20:46 2012 +0200 @@ -395,7 +395,7 @@ _type_ = "l" # _check_retval_ is called with the function's result when it # is used as restype. It checks for the FAILED bit, and - # raises a WindowsError if it is set. + # raises an OSError if it is set. # # The _check_retval_ method is implemented in C, so that the # method definition itself is not included in the traceback @@ -407,7 +407,7 @@ class OleDLL(CDLL): """This class represents a dll exporting functions using the Windows stdcall calling convention, and returning HRESULT. - HRESULT error values are automatically raised as WindowsError + HRESULT error values are automatically raised as OSError exceptions. """ _func_flags_ = _FUNCFLAG_STDCALL @@ -456,7 +456,7 @@ code = GetLastError() if descr is None: descr = FormatError(code).strip() - return WindowsError(None, descr, None, code) + return OSError(None, descr, None, code) if sizeof(c_uint) == sizeof(c_void_p): c_size_t = c_uint diff -r 47f98a550d42 Lib/ctypes/test/test_checkretval.py --- a/Lib/ctypes/test/test_checkretval.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/ctypes/test/test_checkretval.py Tue Dec 18 22:20:46 2012 +0200 @@ -31,7 +31,7 @@ pass else: def test_oledll(self): - self.assertRaises(WindowsError, + self.assertRaises(OSError, oledll.oleaut32.CreateTypeLib2, 0, None, None) diff -r 47f98a550d42 Lib/ctypes/test/test_win32.py --- a/Lib/ctypes/test/test_win32.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/ctypes/test/test_win32.py Tue Dec 18 22:20:46 2012 +0200 @@ -40,7 +40,7 @@ # Call functions with invalid arguments, and make sure # that access violations are trapped and raise an # exception. - self.assertRaises(WindowsError, windll.kernel32.GetModuleHandleA, 32) + self.assertRaises(OSError, windll.kernel32.GetModuleHandleA, 32) def test_noargs(self): # This is a special case on win32 x64 diff -r 47f98a550d42 Lib/idlelib/EditorWindow.py --- a/Lib/idlelib/EditorWindow.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/idlelib/EditorWindow.py Tue Dec 18 22:20:46 2012 +0200 @@ -536,7 +536,7 @@ if sys.platform[:3] == 'win': try: os.startfile(self.help_url) - except WindowsError as why: + except OSError as why: tkMessageBox.showerror(title='Document Start Failure', message=str(why), parent=self.text) else: @@ -845,7 +845,7 @@ if sys.platform[:3] == 'win': try: os.startfile(helpfile) - except WindowsError as why: + except OSError as why: tkMessageBox.showerror(title='Document Start Failure', message=str(why), parent=self.text) else: diff -r 47f98a550d42 Lib/importlib/_bootstrap.py --- a/Lib/importlib/_bootstrap.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/importlib/_bootstrap.py Tue Dec 18 22:20:46 2012 +0200 @@ -755,7 +755,7 @@ def _open_registry(cls, key): try: return _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, key) - except WindowsError: + except OSError: return _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, key) @classmethod @@ -769,7 +769,7 @@ try: with cls._open_registry(key) as hkey: filepath = _winreg.QueryValue(hkey, "") - except WindowsError: + except OSError: return None return filepath diff -r 47f98a550d42 Lib/multiprocessing/connection.py --- a/Lib/multiprocessing/connection.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/multiprocessing/connection.py Tue Dec 18 22:20:46 2012 +0200 @@ -676,7 +676,7 @@ 0, _winapi.NULL, _winapi.OPEN_EXISTING, _winapi.FILE_FLAG_OVERLAPPED, _winapi.NULL ) - except WindowsError as e: + except OSError as e: if e.winerror not in (_winapi.ERROR_SEM_TIMEOUT, _winapi.ERROR_PIPE_BUSY) or _check_timeout(t): raise diff -r 47f98a550d42 Lib/ntpath.py --- a/Lib/ntpath.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/ntpath.py Tue Dec 18 22:20:46 2012 +0200 @@ -331,7 +331,7 @@ """Test whether a path exists. Returns True for broken symbolic links""" try: st = os.lstat(path) - except (OSError, WindowsError): + except OSError: return False return True @@ -584,7 +584,7 @@ if path: # Empty path must return current working directory. try: path = _getfullpathname(path) - except WindowsError: + except OSError: pass # Bad path - return unchanged. elif isinstance(path, bytes): path = os.getcwdb() diff -r 47f98a550d42 Lib/platform.py --- a/Lib/platform.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/platform.py Tue Dec 18 22:20:46 2012 +0200 @@ -581,7 +578,7 @@ # Discard any type that isn't REG_SZ if type == REG_SZ and name.find("Server") != -1: product_type = VER_NT_SERVER - except WindowsError: + except OSError: # Use default of VER_NT_WORKSTATION pass diff -r 47f98a550d42 Lib/shutil.py --- a/Lib/shutil.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/shutil.py Tue Dec 18 22:20:46 2012 +0200 @@ -60,11 +60,6 @@ and unpacking registeries fails""" -try: - WindowsError -except NameError: - WindowsError = None - def copyfileobj(fsrc, fdst, length=16*1024): """copy data from file-like object fsrc to file-like object fdst""" while 1: @@ -334,10 +329,8 @@ try: copystat(src, dst) except OSError as why: - if WindowsError is not None and isinstance(why, WindowsError): - # Copying file access times may fail on Windows - pass - else: + # Copying file access times may fail on Windows + if why.winerror is None: errors.append((src, dst, str(why))) if errors: raise Error(errors) diff -r 47f98a550d42 Lib/tarfile.py --- a/Lib/tarfile.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/tarfile.py Tue Dec 18 22:20:46 2012 +0200 @@ -56,9 +56,9 @@ # os.symlink on Windows prior to 6.0 raises NotImplementedError symlink_exception = (AttributeError, NotImplementedError) try: - # WindowsError (1314) will be raised if the caller does not hold the + # OSError (winerror=1314) will be raised if the caller does not hold the # SeCreateSymbolicLinkPrivilege privilege - symlink_exception += (WindowsError,) + symlink_exception += (OSError,) except NameError: pass diff -r 47f98a550d42 Lib/test/test_codecs.py --- a/Lib/test/test_codecs.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/test/test_codecs.py Tue Dec 18 22:20:46 2012 +0200 @@ -2035,8 +2035,8 @@ def test_invalid_code_page(self): self.assertRaises(ValueError, codecs.code_page_encode, -1, 'a') self.assertRaises(ValueError, codecs.code_page_decode, -1, b'a') - self.assertRaises(WindowsError, codecs.code_page_encode, 123, 'a') - self.assertRaises(WindowsError, codecs.code_page_decode, 123, b'a') + self.assertRaises(OSError, codecs.code_page_encode, 123, 'a') + self.assertRaises(OSError, codecs.code_page_decode, 123, b'a') def test_code_page_name(self): self.assertRaisesRegex(UnicodeEncodeError, 'cp932', diff -r 47f98a550d42 Lib/test/test_mmap.py --- a/Lib/test/test_mmap.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/test/test_mmap.py Tue Dec 18 22:20:46 2012 +0200 @@ -658,7 +658,7 @@ m = mmap.mmap(f.fileno(), 0) f.close() try: - m.resize(0) # will raise WindowsError + m.resize(0) # will raise OSError except: pass try: diff -r 47f98a550d42 Lib/test/test_os.py --- a/Lib/test/test_os.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/test/test_os.py Tue Dec 18 22:20:46 2012 +0200 @@ -468,9 +468,9 @@ # Verify that an open file can be stat'ed try: os.stat(r"c:\pagefile.sys") - except WindowsError as e: - if e.errno == 2: # file does not exist; cannot run test - return + except FileNotFoundError: + pass # file does not exist; cannot run test + except OSError as e: self.fail("Could not stat pagefile.sys") @unittest.skipUnless(hasattr(os, "pipe"), "requires os.pipe()") @@ -1042,27 +1042,27 @@ class Win32ErrorTests(unittest.TestCase): def test_rename(self): - self.assertRaises(WindowsError, os.rename, support.TESTFN, support.TESTFN+".bak") + self.assertRaises(OSError, os.rename, support.TESTFN, support.TESTFN+".bak") def test_remove(self): - self.assertRaises(WindowsError, os.remove, support.TESTFN) + self.assertRaises(OSError, os.remove, support.TESTFN) def test_chdir(self): - self.assertRaises(WindowsError, os.chdir, support.TESTFN) + self.assertRaises(OSError, os.chdir, support.TESTFN) def test_mkdir(self): f = open(support.TESTFN, "w") try: - self.assertRaises(WindowsError, os.mkdir, support.TESTFN) + self.assertRaises(OSError, os.mkdir, support.TESTFN) finally: f.close() os.unlink(support.TESTFN) def test_utime(self): - self.assertRaises(WindowsError, os.utime, support.TESTFN, None) + self.assertRaises(OSError, os.utime, support.TESTFN, None) def test_chmod(self): - self.assertRaises(WindowsError, os.chmod, support.TESTFN, 0) + self.assertRaises(OSError, os.chmod, support.TESTFN, 0) class TestInvalidFD(unittest.TestCase): singles = ["fchdir", "dup", "fdopen", "fdatasync", "fstat", diff -r 47f98a550d42 Lib/test/test_winreg.py --- a/Lib/test/test_winreg.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/test/test_winreg.py Tue Dec 18 22:20:46 2012 +0200 @@ -54,13 +54,13 @@ def delete_tree(self, root, subkey): try: hkey = OpenKey(root, subkey, KEY_ALL_ACCESS) - except WindowsError: + except OSError: # subkey does not exist return while True: try: subsubkey = EnumKey(hkey, 0) - except WindowsError: + except OSError: # no more subkeys break self.delete_tree(hkey, subsubkey) @@ -176,7 +176,7 @@ try: key = OpenKey(root_key, test_key_name) self.fail("Could open the non-existent key") - except WindowsError: # Use this error name this time + except OSError: # Use this error name this time pass def _test_all(self, root_key, subkeystr="sub_key"): @@ -227,7 +227,7 @@ def test_inexistant_remote_registry(self): connect = lambda: ConnectRegistry("abcdefghijkl", HKEY_CURRENT_USER) - self.assertRaises(WindowsError, connect) + self.assertRaises(OSError, connect) def testExpandEnvironmentStrings(self): r = ExpandEnvironmentStrings("%windir%\\test") @@ -239,8 +239,8 @@ try: with ConnectRegistry(None, HKEY_LOCAL_MACHINE) as h: self.assertNotEqual(h.handle, 0) - raise WindowsError - except WindowsError: + raise OSError + except OSError: self.assertEqual(h.handle, 0) def test_changing_value(self): @@ -375,7 +373,7 @@ open_fail = lambda: OpenKey(HKEY_CURRENT_USER, test_reflect_key_name, 0, KEY_READ | KEY_WOW64_64KEY) - self.assertRaises(WindowsError, open_fail) + self.assertRaises(OSError, open_fail) # Now explicitly open the 64-bit version of the key with OpenKey(HKEY_CURRENT_USER, test_reflect_key_name, 0, @@ -415,7 +413,7 @@ open_fail = lambda: OpenKeyEx(HKEY_CURRENT_USER, test_reflect_key_name, 0, KEY_READ | KEY_WOW64_64KEY) - self.assertRaises(WindowsError, open_fail) + self.assertRaises(OSError, open_fail) # Make sure the 32-bit key is actually there with OpenKeyEx(HKEY_CURRENT_USER, test_reflect_key_name, 0, diff -r 47f98a550d42 Lib/test/test_winsound.py --- a/Lib/test/test_winsound.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/test/test_winsound.py Tue Dec 18 22:20:46 2012 +0200 @@ -22,7 +22,7 @@ key = winreg.OpenKeyEx(winreg.HKEY_CURRENT_USER, "AppEvents\Schemes\Apps\.Default\{0}\.Default".format(sound)) return winreg.EnumValue(key, 0)[1] != "" - except WindowsError: + except OSError: return False class BeepTest(unittest.TestCase): @@ -2573,7 +2573,7 @@ proxies['https'] = 'https://%s' % proxyServer proxies['ftp'] = 'ftp://%s' % proxyServer internetSettings.Close() - except (WindowsError, ValueError, TypeError): + except (OSError, ValueError, TypeError): # Either registry key not found etc, or the value in an # unexpected format. # proxies already set up to be empty so nothing to do @@ -2603,7 +2603,7 @@ proxyOverride = str(winreg.QueryValueEx(internetSettings, 'ProxyOverride')[0]) # ^^^^ Returned as Unicode but problems if not converted to ASCII - except WindowsError: + except OSError: return 0 if not proxyEnable or not proxyOverride: return 0 diff -r 47f98a550d42 Lib/webbrowser.py --- a/Lib/webbrowser.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Lib/webbrowser.py Tue Dec 18 22:20:46 2012 +0200 @@ -534,7 +534,7 @@ def open(self, url, new=0, autoraise=True): try: os.startfile(url) - except WindowsError: + except OSError: # [Error 22] No application is associated with the specified # file for this operation: '' return False diff -r 47f98a550d42 Tools/scripts/win_add2path.py --- a/Tools/scripts/win_add2path.py Tue Dec 18 22:02:39 2012 +0200 +++ b/Tools/scripts/win_add2path.py Tue Dec 18 22:20:46 2012 +0200 @@ -30,7 +30,7 @@ with winreg.CreateKey(HKCU, ENV) as key: try: envpath = winreg.QueryValueEx(key, PATH)[0] - except WindowsError: + except OSError: envpath = DEFAULT paths = [envpath] diff -r 47f98a550d42 Modules/_ctypes/callproc.c --- a/Modules/_ctypes/callproc.c Tue Dec 18 22:02:39 2012 +0200 +++ b/Modules/_ctypes/callproc.c Tue Dec 18 23:29:44 2012 +0200 @@ -257,18 +257,18 @@ to a virtual address for which it does not have the appropriate access. */ if (pr->ExceptionInformation[0] == 0) - PyErr_Format(PyExc_WindowsError, + PyErr_Format(PyExc_OSError, "exception: access violation reading %p", pr->ExceptionInformation[1]); else - PyErr_Format(PyExc_WindowsError, + PyErr_Format(PyExc_OSError, "exception: access violation writing %p", pr->ExceptionInformation[1]); break; case EXCEPTION_BREAKPOINT: /* A breakpoint was encountered. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: breakpoint encountered"); break; @@ -278,14 +278,14 @@ alignment. For example, 16-bit values must be aligned on 2-byte boundaries, 32-bit values on 4-byte boundaries, and so on. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: datatype misalignment"); break; case EXCEPTION_SINGLE_STEP: /* A trace trap or other single-instruction mechanism signaled that one instruction has been executed. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: single step"); break; @@ -293,7 +293,7 @@ /* The thread attempted to access an array element that is out of bounds, and the underlying hardware supports bounds checking. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: array bounds exceeded"); break; @@ -302,28 +302,28 @@ is denormal. A denormal value is one that is too small to represent as a standard floating-point value. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: floating-point operand denormal"); break; case EXCEPTION_FLT_DIVIDE_BY_ZERO: /* The thread attempted to divide a floating-point value by a floating-point divisor of zero. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: float divide by zero"); break; case EXCEPTION_FLT_INEXACT_RESULT: /* The result of a floating-point operation cannot be represented exactly as a decimal fraction. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: float inexact"); break; case EXCEPTION_FLT_INVALID_OPERATION: /* This exception represents any floating-point exception not included in this list. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: float invalid operation"); break; @@ -331,21 +331,21 @@ /* The exponent of a floating-point operation is greater than the magnitude allowed by the corresponding type. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: float overflow"); break; case EXCEPTION_FLT_STACK_CHECK: /* The stack overflowed or underflowed as the result of a floating-point operation. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: stack over/underflow"); break; case EXCEPTION_STACK_OVERFLOW: /* The stack overflowed or underflowed as the result of a floating-point operation. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: stack overflow"); break; @@ -353,21 +353,21 @@ /* The exponent of a floating-point operation is less than the magnitude allowed by the corresponding type. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: float underflow"); break; case EXCEPTION_INT_DIVIDE_BY_ZERO: /* The thread attempted to divide an integer value by an integer divisor of zero. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: integer divide by zero"); break; case EXCEPTION_INT_OVERFLOW: /* The result of an integer operation caused a carry out of the most significant bit of the result. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: integer overflow"); break; @@ -375,14 +375,14 @@ /* The thread attempted to execute an instruction whose operation is not allowed in the current machine mode. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: priviledged instruction"); break; case EXCEPTION_NONCONTINUABLE_EXCEPTION: /* The thread attempted to continue execution after a noncontinuable exception occurred. */ - PyErr_SetString(PyExc_WindowsError, + PyErr_SetString(PyExc_OSError, "exception: nocontinuable"); break; diff -r 47f98a550d42 Modules/_multiprocessing/multiprocessing.c --- a/Modules/_multiprocessing/multiprocessing.c Tue Dec 18 22:02:39 2012 +0200 +++ b/Modules/_multiprocessing/multiprocessing.c Tue Dec 18 23:29:44 2012 +0200 @@ -21,12 +21,12 @@ #ifdef MS_WINDOWS case MP_STANDARD_ERROR: if (Type == NULL) - Type = PyExc_WindowsError; + Type = PyExc_OSError; PyErr_SetExcFromWindowsErr(Type, 0); break; case MP_SOCKET_ERROR: if (Type == NULL) - Type = PyExc_WindowsError; + Type = PyExc_OSError; PyErr_SetExcFromWindowsErr(Type, WSAGetLastError()); break; #else /* !MS_WINDOWS */ diff -r 47f98a550d42 Modules/posixmodule.c --- a/Modules/posixmodule.c Tue Dec 18 22:02:39 2012 +0200 +++ b/Modules/posixmodule.c Tue Dec 18 23:29:44 2012 +0200 @@ -1041,7 +1041,7 @@ errno = GetLastError(); if (filename) return PyErr_SetExcFromWindowsErrWithFilenameObject( - PyExc_WindowsError, + PyExc_OSError, errno, filename); else diff -r 47f98a550d42 Objects/unicodeobject.c --- a/Objects/unicodeobject.c Tue Dec 18 22:02:39 2012 +0200 +++ b/Objects/unicodeobject.c Tue Dec 18 23:29:44 2012 +0200 @@ -6589,8 +6589,8 @@ * Decode a byte string from a Windows code page into unicode object in strict * mode. * - * Returns consumed size if succeed, returns -2 on decode error, or raise a - * WindowsError and returns -1 on other error. + * Returns consumed size if succeed, returns -2 on decode error, or raise an + * OSError and returns -1 on other error. */ static int decode_code_page_strict(UINT code_page, @@ -6641,7 +6641,7 @@ * Decode a byte string from a code page into unicode object with an error * handler. * - * Returns consumed size if succeed, or raise a WindowsError or + * Returns consumed size if succeed, or raise an OSError or * UnicodeDecodeError exception and returns -1 on error. */ static int @@ -6897,7 +6897,7 @@ * mode. * * Returns consumed characters if succeed, returns -2 on encode error, or raise - * a WindowsError and returns -1 on other error. + * an OSError and returns -1 on other error. */ static int encode_code_page_strict(UINT code_page, PyObject **outbytes, @@ -6993,7 +6993,7 @@ * Encode a Unicode string to a Windows code page into a byte string using a * error handler. * - * Returns consumed characters if succeed, or raise a WindowsError and returns + * Returns consumed characters if succeed, or raise an OSError and returns * -1 on other error. */ static int diff -r 47f98a550d42 PC/VC6/build_ssl.py --- a/PC/VC6/build_ssl.py Tue Dec 18 22:02:39 2012 +0200 +++ b/PC/VC6/build_ssl.py Tue Dec 18 23:29:44 2012 +0200 @@ -66,7 +66,7 @@ # note: do not abspath s; the build will fail if any # higher up directory name has spaces in it. fnames = os.listdir(s) - except os.error: + except OSError: fnames = [] for fname in fnames: fqn = os.path.join(s, fname) diff -r 47f98a550d42 PC/VS7.1/build_ssl.py --- a/PC/VS7.1/build_ssl.py Tue Dec 18 22:02:39 2012 +0200 +++ b/PC/VS7.1/build_ssl.py Tue Dec 18 23:29:44 2012 +0200 @@ -62,7 +62,7 @@ # note: do not abspath s; the build will fail if any # higher up directory name has spaces in it. fnames = os.listdir(s) - except os.error: + except OSError: fnames = [] for fname in fnames: fqn = os.path.join(s, fname) diff -r 47f98a550d42 PC/VS8.0/build_ssl.py --- a/PC/VS8.0/build_ssl.py Tue Dec 18 22:02:39 2012 +0200 +++ b/PC/VS8.0/build_ssl.py Tue Dec 18 23:29:44 2012 +0200 @@ -71,7 +71,7 @@ # note: do not abspath s; the build will fail if any # higher up directory name has spaces in it. fnames = os.listdir(s) - except os.error: + except OSError: fnames = [] for fname in fnames: fqn = os.path.join(s, fname) diff -r 47f98a550d42 PC/winreg.c --- a/PC/winreg.c Tue Dec 18 22:02:39 2012 +0200 +++ b/PC/winreg.c Tue Dec 18 23:29:44 2012 +0200 @@ -1794,9 +1794,9 @@ if (PyDict_SetItemString(d, "HKEYType", (PyObject *)&PyHKEY_Type) != 0) return NULL; - Py_INCREF(PyExc_WindowsError); + Py_INCREF(PyExc_OSError); if (PyDict_SetItemString(d, "error", - PyExc_WindowsError) != 0) + PyExc_OSError) != 0) return NULL; /* Add the relevant constants */ diff -r 47f98a550d42 Python/errors.c --- a/Python/errors.c Tue Dec 18 22:02:39 2012 +0200 +++ b/Python/errors.c Tue Dec 18 23:29:44 2012 +0200 @@ -588,7 +588,7 @@ PyObject *PyErr_SetFromWindowsErr(int ierr) { - return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError, + return PyErr_SetExcFromWindowsErrWithFilename(PyExc_OSError, ierr, NULL); } PyObject *PyErr_SetFromWindowsErrWithFilename( @@ -597,7 +597,7 @@ { PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL; PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject( - PyExc_WindowsError, + PyExc_OSError, ierr, name); Py_XDECREF(name); return result; @@ -611,7 +611,7 @@ PyUnicode_FromUnicode(filename, wcslen(filename)) : NULL; PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject( - PyExc_WindowsError, + PyExc_OSError, ierr, name); Py_XDECREF(name); return result;