SF #1486663 -- Allow keyword args in subclasses of set() and frozenset().
This commit is contained in:
parent
a398e2d059
commit
9fdfadb06e
|
@ -468,6 +468,16 @@ class SetSubclass(set):
|
|||
class TestSetSubclass(TestSet):
|
||||
thetype = SetSubclass
|
||||
|
||||
class SetSubclassWithKeywordArgs(set):
|
||||
def __init__(self, iterable=[], newarg=None):
|
||||
set.__init__(self, iterable)
|
||||
|
||||
class TestSetSubclassWithKeywordArgs(TestSet):
|
||||
|
||||
def test_keywords_in_subclass(self):
|
||||
'SF bug #1486663 -- this used to erroneously raise a TypeError'
|
||||
SetSubclassWithKeywordArgs(newarg=1)
|
||||
|
||||
class TestFrozenSet(TestJointOps):
|
||||
thetype = frozenset
|
||||
|
||||
|
@ -1450,6 +1460,7 @@ def test_main(verbose=None):
|
|||
test_classes = (
|
||||
TestSet,
|
||||
TestSetSubclass,
|
||||
TestSetSubclassWithKeywordArgs,
|
||||
TestFrozenSet,
|
||||
TestFrozenSetSubclass,
|
||||
TestSetOfSets,
|
||||
|
|
|
@ -1004,7 +1004,7 @@ frozenset_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|||
{
|
||||
PyObject *iterable = NULL, *result;
|
||||
|
||||
if (!_PyArg_NoKeywords("frozenset()", kwds))
|
||||
if (type == &PyFrozenSet_Type && !_PyArg_NoKeywords("frozenset()", kwds))
|
||||
return NULL;
|
||||
|
||||
if (!PyArg_UnpackTuple(args, type->tp_name, 0, 1, &iterable))
|
||||
|
@ -1048,7 +1048,7 @@ PySet_Fini(void)
|
|||
static PyObject *
|
||||
set_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
{
|
||||
if (!_PyArg_NoKeywords("set()", kwds))
|
||||
if (type == &PySet_Type && !_PyArg_NoKeywords("set()", kwds))
|
||||
return NULL;
|
||||
|
||||
return make_new_set(type, NULL);
|
||||
|
|
Loading…
Reference in New Issue