summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2017-01-24 18:49:26 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2017-01-24 18:49:26 (GMT)
commit713640c4c95df999957b5366fb8cd7f443906858 (patch)
tree810a234869418937b9d5d9df09605ff24a695c02
parentef107ee7a0a8ee27b0a54c542e3918807c981f83 (diff)
downloadcpython-713640c4c95df999957b5366fb8cd7f443906858.zip
cpython-713640c4c95df999957b5366fb8cd7f443906858.tar.gz
cpython-713640c4c95df999957b5366fb8cd7f443906858.tar.bz2
Issue #29337: Fixed possible BytesWarning when compare the code objects.
Warnings could be emitted at compile time.
-rw-r--r--Lib/test/test_compile.py3
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/codeobject.c6
3 files changed, 9 insertions, 3 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 824e843..4ea66a4 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -634,6 +634,7 @@ if 1:
f1 = ns['f1']
f2 = ns['f2']
self.assertIsNot(f1.__code__, f2.__code__)
+ self.assertNotEqual(f1.__code__, f2.__code__)
self.check_constant(f1, const1)
self.check_constant(f2, const2)
self.assertEqual(repr(f1()), repr(const1))
@@ -642,6 +643,8 @@ if 1:
check_different_constants(0, 0.0)
check_different_constants(+0.0, -0.0)
check_different_constants((0,), (0.0,))
+ check_different_constants('a', b'a')
+ check_different_constants(('a',), (b'a',))
# check_different_constants() cannot be used because repr(-0j) is
# '(-0-0j)', but when '(-0-0j)' is evaluated to 0j: we loose the sign.
diff --git a/Misc/NEWS b/Misc/NEWS
index dd68006..19d90af 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ Release date: XXXX-XX-XX
Core and Builtins
-----------------
+- Issue #29337: Fixed possible BytesWarning when compare the code objects.
+ Warnings could be emitted at compile time.
+
Library
-------
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index c334626..2f1bef2 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -521,7 +521,7 @@ _PyCode_ConstantKey(PyObject *op)
PyTuple_SET_ITEM(tuple, i, item_key);
}
- key = PyTuple_Pack(3, Py_TYPE(op), op, tuple);
+ key = PyTuple_Pack(2, tuple, op);
Py_DECREF(tuple);
}
else if (PyFrozenSet_CheckExact(op)) {
@@ -555,7 +555,7 @@ _PyCode_ConstantKey(PyObject *op)
if (set == NULL)
return NULL;
- key = PyTuple_Pack(3, Py_TYPE(op), op, set);
+ key = PyTuple_Pack(2, set, op);
Py_DECREF(set);
return key;
}
@@ -566,7 +566,7 @@ _PyCode_ConstantKey(PyObject *op)
if (obj_id == NULL)
return NULL;
- key = PyTuple_Pack(3, Py_TYPE(op), op, obj_id);
+ key = PyTuple_Pack(2, obj_id, op);
Py_DECREF(obj_id);
}
return key;