Changes 54857 and 54840 broke code and were reverted in Py2.5 just before

it was released, but that reversion never made it to the Py2.6 head.
This commit is contained in:
Raymond Hettinger 2008-01-25 19:24:46 +00:00
parent 8608d91e07
commit 3dbd4c536d
3 changed files with 8 additions and 16 deletions

View File

@ -200,14 +200,6 @@ class DictTest(unittest.TestCase):
self.assertRaises(ValueError, {}.update, [(1, 2, 3)])
# SF #1615701: make d.update(m) honor __getitem__() and keys() in dict subclasses
class KeyUpperDict(dict):
def __getitem__(self, key):
return key.upper()
d.clear()
d.update(KeyUpperDict.fromkeys('abc'))
self.assertEqual(d, {'a':'A', 'b':'B', 'c':'C'})
def test_fromkeys(self):
self.assertEqual(dict.fromkeys('abc'), {'a':None, 'b':None, 'c':None})
d = {}

View File

@ -1406,7 +1406,7 @@ PyDict_Merge(PyObject *a, PyObject *b, int override)
return -1;
}
mp = (PyDictObject*)a;
if (PyDict_CheckExact(b)) {
if (PyDict_Check(b)) {
other = (PyDictObject*)b;
if (other == mp || other->ma_used == 0)
/* a.update(a) or a.update({}); nothing to do */

View File

@ -912,7 +912,7 @@ set_update_internal(PySetObject *so, PyObject *other)
{
PyObject *key, *it;
if (PyAnySet_CheckExact(other))
if (PyAnySet_Check(other))
return set_merge(so, other);
if (PyDict_CheckExact(other)) {
@ -1207,7 +1207,7 @@ set_intersection(PySetObject *so, PyObject *other)
if (result == NULL)
return NULL;
if (PyAnySet_CheckExact(other)) {
if (PyAnySet_Check(other)) {
Py_ssize_t pos = 0;
setentry *entry;
@ -1398,7 +1398,7 @@ set_difference_update_internal(PySetObject *so, PyObject *other)
if ((PyObject *)so == other)
return set_clear_internal(so);
if (PyAnySet_CheckExact(other)) {
if (PyAnySet_Check(other)) {
setentry *entry;
Py_ssize_t pos = 0;
@ -1447,7 +1447,7 @@ set_difference(PySetObject *so, PyObject *other)
setentry *entry;
Py_ssize_t pos = 0;
if (!PyAnySet_CheckExact(other) && !PyDict_CheckExact(other)) {
if (!PyAnySet_Check(other) && !PyDict_CheckExact(other)) {
result = set_copy(so);
if (result == NULL)
return NULL;
@ -1554,7 +1554,7 @@ set_symmetric_difference_update(PySetObject *so, PyObject *other)
Py_RETURN_NONE;
}
if (PyAnySet_CheckExact(other)) {
if (PyAnySet_Check(other)) {
Py_INCREF(other);
otherset = (PySetObject *)other;
} else {
@ -1637,7 +1637,7 @@ set_issubset(PySetObject *so, PyObject *other)
setentry *entry;
Py_ssize_t pos = 0;
if (!PyAnySet_CheckExact(other)) {
if (!PyAnySet_Check(other)) {
PyObject *tmp, *result;
tmp = make_new_set(&PySet_Type, other);
if (tmp == NULL)
@ -1666,7 +1666,7 @@ set_issuperset(PySetObject *so, PyObject *other)
{
PyObject *tmp, *result;
if (!PyAnySet_CheckExact(other)) {
if (!PyAnySet_Check(other)) {
tmp = make_new_set(&PySet_Type, other);
if (tmp == NULL)
return NULL;