Author: Armin Rigo <ar...@tunes.org>
Branch: cpyext-ext
Changeset: r82566:f112de2bd0fa
Date: 2016-02-26 15:22 +0100
http://bitbucket.org/pypy/pypy/changeset/f112de2bd0fa/

Log:    (fijal, arigo) nb_float

diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -349,6 +349,10 @@
     return space.int(w_self)
 
 @cpython_api([PyObject], PyObject, header=None)
+def slot_nb_float(space, w_self):
+    return space.float(w_self)
+
+@cpython_api([PyObject], PyObject, header=None)
 def slot_tp_iter(space, w_self):
     return space.iter(w_self)
 
diff --git a/pypy/module/cpyext/test/test_typeobject.py 
b/pypy/module/cpyext/test/test_typeobject.py
--- a/pypy/module/cpyext/test/test_typeobject.py
+++ b/pypy/module/cpyext/test/test_typeobject.py
@@ -488,6 +488,24 @@
         assert module.nb_int(-12.3) == -12
         raises(ValueError, module.nb_int, "123")
 
+    def test_nb_float(self):
+        module = self.import_extension('foo', [
+            ("nb_float", "METH_O",
+             '''
+                 if (!args->ob_type->tp_as_number ||
+                     !args->ob_type->tp_as_number->nb_float)
+                 {
+                     PyErr_SetNone(PyExc_ValueError);
+                     return NULL;
+                 }
+                 return args->ob_type->tp_as_number->nb_float(args);
+             '''
+             )
+            ])
+        assert module.nb_float(10) == 10.0
+        assert module.nb_float(-12.3) == -12.3
+        raises(ValueError, module.nb_float, "123")
+
     def test_tp_call(self):
         module = self.import_extension('foo', [
             ("tp_call", "METH_VARARGS",
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to