r = _random.Random()
self.assertRaises(TypeError, pickle.dumps, r, proto)
+ @test.support.cpython_only
+ def test_bug_42008(self):
+ # _random.Random should call seed with first element of arg tuple
+ import _random
+ r1 = _random.Random()
+ r1.seed(8675309)
+ r2 = _random.Random(8675309)
+ self.assertEqual(r1.random(), r2.random())
+
def test_bug_1727780(self):
# verify that version-2-pickles can be loaded
# fine, whether they are created on 32-bit or 64-bit
{
RandomObject *self;
PyObject *tmp;
+ PyObject *arg = NULL;
_randomstate *state = _randomstate_type(type);
if (type == (PyTypeObject*)state->Random_Type &&
self = (RandomObject *)PyType_GenericAlloc(type, 0);
if (self == NULL)
return NULL;
- tmp = random_seed(self, args);
+
+ if (PyTuple_GET_SIZE(args) > 1) {
+ PyErr_SetString(PyExc_TypeError, "Random() requires 0 or 1 argument");
+ return NULL;
+ }
+
+ if (PyTuple_GET_SIZE(args) == 1)
+ arg = PyTuple_GET_ITEM(args, 0);
+
+ tmp = random_seed(self, arg);
if (tmp == NULL) {
Py_DECREF(self);
return NULL;
}
Py_DECREF(tmp);
+
return (PyObject *)self;
}