Author: Amaury Forgeot d'Arc <[email protected]>
Branch:
Changeset: r44676:e1ccacc49ec0
Date: 2011-05-28 13:41 +0200
http://bitbucket.org/pypy/pypy/changeset/e1ccacc49ec0/
Log: Implement PyNumber_Index()
diff --git a/pypy/module/cpyext/number.py b/pypy/module/cpyext/number.py
--- a/pypy/module/cpyext/number.py
+++ b/pypy/module/cpyext/number.py
@@ -49,6 +49,13 @@
failure. This is the equivalent of the Python expression long(o)."""
return space.long(w_obj)
+@cpython_api([PyObject], PyObject)
+def PyNumber_Index(space, w_obj):
+ """Returns the o converted to a Python int or long on success or NULL with
a
+ TypeError exception raised on failure.
+ """
+ return space.index(w_obj)
+
def func_rename(newname):
return lambda func: func_with_new_name(func, newname)
diff --git a/pypy/module/cpyext/stubs.py b/pypy/module/cpyext/stubs.py
--- a/pypy/module/cpyext/stubs.py
+++ b/pypy/module/cpyext/stubs.py
@@ -1920,13 +1920,6 @@
Reference counts are still not increased in this case."""
raise NotImplementedError
-@cpython_api([PyObject], PyObject)
-def PyNumber_Index(space, o):
- """Returns the o converted to a Python int or long on success or NULL with
a
- TypeError exception raised on failure.
- """
- raise NotImplementedError
-
@cpython_api([PyObject, rffi.INT_real], PyObject)
def PyNumber_ToBase(space, n, base):
"""Returns the integer n converted to base as a string with a base
diff --git a/pypy/module/cpyext/test/test_number.py
b/pypy/module/cpyext/test/test_number.py
--- a/pypy/module/cpyext/test/test_number.py
+++ b/pypy/module/cpyext/test/test_number.py
@@ -25,6 +25,15 @@
assert api.PyInt_CheckExact(w_l)
w_l = api.PyNumber_Int(space.wrap(2 << 65))
assert api.PyLong_CheckExact(w_l)
+ w_l = api.PyNumber_Int(space.wrap(42.3))
+ assert api.PyInt_CheckExact(w_l)
+
+ def test_number_index(self, space, api):
+ w_l = api.PyNumber_Index(space.wrap(123L))
+ assert api.PyLong_CheckExact(w_l)
+ w_l = api.PyNumber_Index(space.wrap(42.3))
+ assert w_l is None
+ api.PyErr_Clear()
def test_numbermethods(self, space, api):
assert "ab" == space.unwrap(
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit