mirror of
https://github.com/python/cpython.git
synced 2025-07-31 23:23:11 +00:00
Bug #1575169: operator.isSequenceType() now returns False for subclasses of dict.
This commit is contained in:
parent
5a0217efea
commit
4da5bf644a
2 changed files with 4 additions and 0 deletions
|
@ -215,6 +215,8 @@ class OperatorTestCase(unittest.TestCase):
|
||||||
self.failUnless(operator.isSequenceType(xrange(10)))
|
self.failUnless(operator.isSequenceType(xrange(10)))
|
||||||
self.failUnless(operator.isSequenceType('yeahbuddy'))
|
self.failUnless(operator.isSequenceType('yeahbuddy'))
|
||||||
self.failIf(operator.isSequenceType(3))
|
self.failIf(operator.isSequenceType(3))
|
||||||
|
class Dict(dict): pass
|
||||||
|
self.failIf(operator.isSequenceType(Dict()))
|
||||||
|
|
||||||
def test_lshift(self):
|
def test_lshift(self):
|
||||||
self.failUnlessRaises(TypeError, operator.lshift)
|
self.failUnlessRaises(TypeError, operator.lshift)
|
||||||
|
|
|
@ -1157,6 +1157,8 @@ PySequence_Check(PyObject *s)
|
||||||
{
|
{
|
||||||
if (s && PyInstance_Check(s))
|
if (s && PyInstance_Check(s))
|
||||||
return PyObject_HasAttrString(s, "__getitem__");
|
return PyObject_HasAttrString(s, "__getitem__");
|
||||||
|
if (PyObject_IsInstance(s, &PyDict_Type))
|
||||||
|
return 0;
|
||||||
return s != NULL && s->ob_type->tp_as_sequence &&
|
return s != NULL && s->ob_type->tp_as_sequence &&
|
||||||
s->ob_type->tp_as_sequence->sq_item != NULL;
|
s->ob_type->tp_as_sequence->sq_item != NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue