From: Serhiy Storchaka Date: Sun, 1 Mar 2015 08:03:02 +0000 (+0200) Subject: Issue #20204: Deprecation warning is now raised for builtin type without the X-Git-Tag: v3.5.0a2~62 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=490055a1673b524da2ebe2312f072aba2a826036;p=python Issue #20204: Deprecation warning is now raised for builtin type without the __module__ attribute. --- diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst index 2a77729396..8027fa3898 100644 --- a/Doc/whatsnew/3.5.rst +++ b/Doc/whatsnew/3.5.rst @@ -561,3 +561,8 @@ Changes in the C API * Removed non-documented macro :c:macro:`PyObject_REPR` which leaked references. Use format character ``%R`` in :c:func:`PyUnicode_FromFormat`-like functions to format the :func:`repr` of the object. + +* Because the lack of the :attr:`__module__` attribute breaks pickling and + introspection, a deprecation warning now is raised for builtin type without + the :attr:`__module__` attribute. Would be an AttributeError in future. + (:issue:`20204`) diff --git a/Misc/NEWS b/Misc/NEWS index d62e695fa2..1c6a90ce33 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -88,6 +88,12 @@ Build - Issue #23445: pydebug builds now use "gcc -Og" where possible, to make the resulting executable faster. +C API +----- + +- Issue #20204: Deprecation warning is now raised for builtin type without the + __module__ attribute. + Windows ------- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index f0ad7fd560..d59108ef2c 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2808,6 +2808,12 @@ PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases) _PyDict_SetItemId(type->tp_dict, &PyId___module__, PyUnicode_FromStringAndSize( spec->name, (Py_ssize_t)(s - spec->name))); + else { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "builtin type %.200s has no the __module__ attribute", + spec->name)) + goto fail; + } return (PyObject*)res;