Author: Maciej Fijalkowski <fij...@gmail.com> 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 pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit