Author: Maciej Fijalkowski <[email protected]>
Branch: dynamic-specialized-tuple
Changeset: r54480:91315032494a
Date: 2012-04-17 18:01 +0200
http://bitbucket.org/pypy/pypy/changeset/91315032494a/
Log: merge
diff --git a/pypy/module/cpyext/sequence.py b/pypy/module/cpyext/sequence.py
--- a/pypy/module/cpyext/sequence.py
+++ b/pypy/module/cpyext/sequence.py
@@ -46,7 +46,7 @@
isinstance(w_obj, tupleobject.W_TupleObject)):
return w_obj
try:
- return tupleobject.W_TupleObject(space.fixedview(w_obj))
+ return space.newtuple(space.fixedview(w_obj))
except OperationError:
raise OperationError(space.w_TypeError, space.wrap(rffi.charp2str(m)))
@@ -59,7 +59,7 @@
w_res = w_obj.getitem(index)
else:
assert isinstance(w_obj, tupleobject.W_TupleObject)
- w_res = w_obj.wrappeditems[index]
+ w_res = w_obj.getitem(space, index)
return borrow_from(w_obj, w_res)
@cpython_api([PyObject], Py_ssize_t, error=CANNOT_FAIL)
@@ -72,7 +72,7 @@
if isinstance(w_obj, listobject.W_ListObject):
return w_obj.length()
assert isinstance(w_obj, tupleobject.W_TupleObject)
- return len(w_obj.wrappeditems)
+ return w_obj.length()
@cpython_api([PyObject, Py_ssize_t, Py_ssize_t], PyObject)
def PySequence_GetSlice(space, w_obj, start, end):
diff --git a/pypy/module/cpyext/test/test_tupleobject.py
b/pypy/module/cpyext/test/test_tupleobject.py
--- a/pypy/module/cpyext/test/test_tupleobject.py
+++ b/pypy/module/cpyext/test/test_tupleobject.py
@@ -32,15 +32,12 @@
lltype.free(ar, flavor='raw')
def test_setitem(self, space, api):
- atuple = space.newtuple([space.wrap(0), space.wrap("hello")])
+ atuple = api.PyTuple_New(2)
assert api.PyTuple_Size(atuple) == 2
- assert space.eq_w(space.getitem(atuple, space.wrap(0)), space.wrap(0))
- assert space.eq_w(space.getitem(atuple, space.wrap(1)),
space.wrap("hello"))
w_obj = space.wrap(1)
api.Py_IncRef(w_obj)
api.PyTuple_SetItem(atuple, 1, w_obj)
assert api.PyTuple_Size(atuple) == 2
- assert space.eq_w(space.getitem(atuple, space.wrap(0)), space.wrap(0))
assert space.eq_w(space.getitem(atuple, space.wrap(1)), space.wrap(1))
def test_getslice(self, space, api):
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
@@ -150,7 +150,7 @@
def __init__(self):
self.foobar = 32
super(UnicodeSubclass2, self).__init__()
-
+
newobj = UnicodeSubclass2()
assert newobj.get_val() == 42
assert newobj.foobar == 32
@@ -282,7 +282,7 @@
class C(object):
pass
assert module.name_by_heaptype(C) == "C"
-
+
class TestTypes(BaseApiTest):
def test_type_attributes(self, space, api):
@@ -295,7 +295,7 @@
py_type = rffi.cast(PyTypeObjectPtr, ref)
assert py_type.c_tp_alloc
- assert from_ref(space, py_type.c_tp_mro).wrappeditems is w_class.mro_w
+ assert space.eq_w(from_ref(space, py_type.c_tp_mro),
space.newtuple(w_class.mro_w))
api.Py_DecRef(ref)
@@ -320,7 +320,7 @@
w_obj = api._PyType_Lookup(w_type, space.wrap("__invalid"))
assert w_obj is None
assert api.PyErr_Occurred() is None
-
+
class AppTestSlots(AppTestCpythonExtensionBase):
def test_some_slots(self):
module = self.import_extension('foo', [
diff --git a/pypy/module/cpyext/test/test_unicodeobject.py
b/pypy/module/cpyext/test/test_unicodeobject.py
--- a/pypy/module/cpyext/test/test_unicodeobject.py
+++ b/pypy/module/cpyext/test/test_unicodeobject.py
@@ -121,7 +121,7 @@
utf_8, None)
assert space.eq_w(encoded, encoded_obj)
self.raises(space, api, TypeError, api.PyUnicode_AsEncodedString,
- space.newtuple([1, 2, 3]), None, None)
+ space.newtuple([space.wrap(1), space.wrap(2), space.wrap(3)]),
None, None)
self.raises(space, api, TypeError, api.PyUnicode_AsEncodedString,
space.wrap(''), None, None)
ascii = rffi.str2charp('ascii')
@@ -176,13 +176,13 @@
w_res = api.PyUnicode_AsUTF8String(w_u)
assert space.type(w_res) is space.w_str
assert space.unwrap(w_res) == 'sp\xc3\xa4m'
-
+
def test_decode_utf8(self, space, api):
u = rffi.str2charp(u'sp�m'.encode("utf-8"))
w_u = api.PyUnicode_DecodeUTF8(u, 5, None)
assert space.type(w_u) is space.w_unicode
assert space.unwrap(w_u) == u'sp�m'
-
+
w_u = api.PyUnicode_DecodeUTF8(u, 2, None)
assert space.type(w_u) is space.w_unicode
assert space.unwrap(w_u) == 'sp'
@@ -314,7 +314,7 @@
ustr = "abcdef"
w_ustr = space.wrap(ustr.decode("ascii"))
result = api.PyUnicode_AsASCIIString(w_ustr)
-
+
assert space.eq_w(space.wrap(ustr), result)
w_ustr = space.wrap(u"abcd\xe9f")
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit