Index: Objects/longobject.c =================================================================== --- Objects/longobject.c (revision 69470) +++ Objects/longobject.c (working copy) @@ -557,7 +557,7 @@ if (Py_SIZE(v) < 0) { ndigits = -(Py_SIZE(v)); if (!is_signed) { - PyErr_SetString(PyExc_TypeError, + PyErr_SetString(PyExc_OverflowError, "can't convert negative long to unsigned"); return -1; } Index: Doc/c-api/long.rst =================================================================== --- Doc/c-api/long.rst (revision 69470) +++ Doc/c-api/long.rst (working copy) @@ -163,11 +163,14 @@ .. cfunction:: unsigned PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject *pylong) - Return a C :ctype:`unsigned long long` from a Python long integer. If *pylong* - cannot be represented as an :ctype:`unsigned long long`, an :exc:`OverflowError` - will be raised if the value is positive, or a :exc:`TypeError` will be raised if - the value is negative. + .. index:: + single: OverflowError (built-in exception) + Return a C :ctype:`unsigned long long` from a Python long + integer. If *pylong* cannot be represented as an :ctype:`unsigned + long long` or the value is negative, an :exc:`OverflowError` will + be raised. + .. versionadded:: 2.2 Index: Lib/test/test_struct.py =================================================================== --- Lib/test/test_struct.py (revision 69470) +++ Lib/test/test_struct.py (working copy) @@ -48,7 +48,7 @@ def deprecated_err(func, *args): try: func(*args) - except (struct.error, TypeError): + except (struct.error, OverflowError): pass except DeprecationWarning: if not PY_STRUCT_OVERFLOW_MASKING: @@ -185,7 +185,7 @@ def test_native_qQ(self): # can't pack -1 as unsigned regardless - self.assertRaises((struct.error, TypeError), struct.pack, "Q", -1) + self.assertRaises((struct.error, OverflowError), struct.pack, "Q", -1) # can't pack string as 'q' regardless self.assertRaises(struct.error, struct.pack, "q", "a") # ditto, but 'Q'