[pypy-commit] pypy default: test, fix for missing nb_* slot, what else is missing?

mattip pypy.commits at gmail.com
Fri Jul 29 11:11:17 EDT 2016


Author: mattip <matti.picus at gmail.com>
Branch: 
Changeset: r85908:d67646a1ac41
Date: 2016-07-29 10:10 -0500
http://bitbucket.org/pypy/pypy/changeset/d67646a1ac41/

Log:	test, fix for missing nb_* slot, what else is missing?

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
@@ -381,6 +381,7 @@
                           ('tp_as_number.c_nb_invert', '__invert__'),
                           ('tp_as_number.c_nb_index', '__index__'),
                           ('tp_as_number.c_nb_hex', '__hex__'),
+                          ('tp_as_number.c_nb_oct', '__oct__'),
                           ('tp_str', '__str__'),
                           ('tp_repr', '__repr__'),
                           ('tp_iter', '__iter__'),
diff --git a/pypy/module/cpyext/test/test_longobject.py b/pypy/module/cpyext/test/test_longobject.py
--- a/pypy/module/cpyext/test/test_longobject.py
+++ b/pypy/module/cpyext/test/test_longobject.py
@@ -259,8 +259,19 @@
                     ret = PyLong_FromLong(-1);
                 Py_DECREF(obj);
                 return ret;
+             """),
+            ("has_oct", "METH_NOARGS",
+             """
+                PyObject *ret, *obj = PyLong_FromLong(42);
+                if (obj->ob_type->tp_as_number->nb_oct)
+                    ret = obj->ob_type->tp_as_number->nb_oct(obj);
+                else
+                    ret = PyLong_FromLong(-1);
+                Py_DECREF(obj);
+                return ret;
              """)])
         assert module.has_sub() == 0
         assert module.has_pow() == 0
         assert module.has_hex() == '0x2aL'
+        assert module.has_oct() == '052L'
                 


More information about the pypy-commit mailing list