[Python-checkins] cpython: Issue #20204: Deprecation warning is now raised for builtin type without the

serhiy.storchaka python-checkins at python.org
Sun Mar 1 09:04:28 CET 2015


https://hg.python.org/cpython/rev/d6dff5a5290a
changeset:   94796:d6dff5a5290a
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Sun Mar 01 10:03:02 2015 +0200
summary:
  Issue #20204: Deprecation warning is now raised for builtin type without the
__module__ attribute.

files:
  Doc/whatsnew/3.5.rst |  5 +++++
  Misc/NEWS            |  6 ++++++
  Objects/typeobject.c |  6 ++++++
  3 files changed, 17 insertions(+), 0 deletions(-)


diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -561,3 +561,8 @@
 * 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
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -88,6 +88,12 @@
 - 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
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -2808,6 +2808,12 @@
         _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;
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list