From 80af6da7489c3b28e0a46c73849da34273972e3b Mon Sep 17 00:00:00 2001 From: Alexandre Vassalotti Date: Wed, 4 Jun 2008 20:41:44 +0000 Subject: Fixed complex.__getnewargs__() to not emit another complex object. --- Lib/test/test_complex.py | 8 ++++++++ Objects/complexobject.c | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py index 5f623a1..9a33101 100644 --- a/Lib/test/test_complex.py +++ b/Lib/test/test_complex.py @@ -373,6 +373,14 @@ class ComplexTest(unittest.TestCase): except (OSError, IOError): pass + def test_getnewargs(self): + self.assertEqual((1+2j).__getnewargs__(), (1.0, 2.0)) + self.assertEqual((1-2j).__getnewargs__(), (1.0, -2.0)) + self.assertEqual((2j).__getnewargs__(), (0.0, 2.0)) + self.assertEqual((-0j).__getnewargs__(), (0.0, -0.0)) + self.assertEqual(complex(0, INF).__getnewargs__(), (0.0, INF)) + self.assertEqual(complex(INF, 0).__getnewargs__(), (INF, 0.0)) + if float.__getformat__("double").startswith("IEEE"): def test_plus_minus_0j(self): # test that -0j and 0j literals are not identified diff --git a/Objects/complexobject.c b/Objects/complexobject.c index e22c200..6110b99 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -822,7 +822,8 @@ PyDoc_STRVAR(complex_conjugate_doc, static PyObject * complex_getnewargs(PyComplexObject *v) { - return Py_BuildValue("(D)", &v->cval); + Py_complex c = v->cval; + return Py_BuildValue("(dd)", c.real, c.imag); } #if 0 -- cgit v0.12