[pypy-commit] pypy bigint-with-int: Merge default
stian
noreply at buildbot.pypy.org
Sat Aug 3 22:37:12 CEST 2013
Author: stian
Branch: bigint-with-int
Changeset: r65940:044c71c8423f
Date: 2013-08-03 18:23 +0200
http://bitbucket.org/pypy/pypy/changeset/044c71c8423f/
Log: Merge default
diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -1305,7 +1305,7 @@
for i in xrange(_lib.sqlite3_column_count(self._statement)):
name = _lib.sqlite3_column_name(self._statement, i)
if name:
- name = _ffi.string(name).decode('utf-8').split("[")[0].strip()
+ name = _ffi.string(name).split("[")[0].strip()
desc.append((name, None, None, None, None, None, None))
return desc
diff --git a/pypy/module/cppyy/interp_cppyy.py b/pypy/module/cppyy/interp_cppyy.py
--- a/pypy/module/cppyy/interp_cppyy.py
+++ b/pypy/module/cppyy/interp_cppyy.py
@@ -592,11 +592,15 @@
def get(self, w_cppinstance, w_pycppclass):
cppinstance = self.space.interp_w(W_CPPInstance, w_cppinstance, can_be_None=True)
+ if not cppinstance:
+ raise OperationError(self.space.w_ReferenceError, self.space.wrap("attribute access requires an instance"))
offset = self._get_offset(cppinstance)
return self.converter.from_memory(self.space, w_cppinstance, w_pycppclass, offset)
def set(self, w_cppinstance, w_value):
cppinstance = self.space.interp_w(W_CPPInstance, w_cppinstance, can_be_None=True)
+ if not cppinstance:
+ raise OperationError(self.space.w_ReferenceError, self.space.wrap("attribute access requires an instance"))
offset = self._get_offset(cppinstance)
self.converter.to_memory(self.space, w_cppinstance, w_value, offset)
return self.space.w_None
diff --git a/pypy/module/cppyy/pythonify.py b/pypy/module/cppyy/pythonify.py
--- a/pypy/module/cppyy/pythonify.py
+++ b/pypy/module/cppyy/pythonify.py
@@ -426,6 +426,11 @@
# mostly for the benefit of the CINT backend, which treats std as special
gbl.std = make_cppnamespace(None, "std", None, False)
+ # install a type for enums to refer to
+ # TODO: this is correct for C++98, not for C++11 and in general there will
+ # be the same issue for all typedef'd builtin types
+ setattr(gbl, 'unsigned int', int)
+
# install for user access
cppyy.gbl = gbl
diff --git a/pypy/module/cppyy/test/test_datatypes.py b/pypy/module/cppyy/test/test_datatypes.py
--- a/pypy/module/cppyy/test/test_datatypes.py
+++ b/pypy/module/cppyy/test/test_datatypes.py
@@ -105,6 +105,13 @@
raises(IndexError, c.m_float_array.__getitem__, self.N)
raises(IndexError, c.m_double_array.__getitem__, self.N)
+ # can not access an instance member on the class
+ raises(ReferenceError, getattr, cppyy_test_data, 'm_bool')
+ raises(ReferenceError, getattr, cppyy_test_data, 'm_int')
+
+ assert not hasattr(cppyy_test_data, 'm_bool')
+ assert not hasattr(cppyy_test_data, 'm_int')
+
c.destruct()
def test03_instance_data_write_access(self):
@@ -428,12 +435,17 @@
c = cppyy_test_data()
assert isinstance(c, cppyy_test_data)
- # TODO: test that the enum is accessible as a type
+ # test that the enum is accessible as a type
+ assert cppyy_test_data.what
assert cppyy_test_data.kNothing == 6
assert cppyy_test_data.kSomething == 111
assert cppyy_test_data.kLots == 42
+ assert cppyy_test_data.what(cppyy_test_data.kNothing) == cppyy_test_data.kNothing
+ assert cppyy_test_data.what(6) == cppyy_test_data.kNothing
+ # TODO: only allow instantiations with correct values (C++11)
+
assert c.get_enum() == cppyy_test_data.kNothing
assert c.m_enum == cppyy_test_data.kNothing
@@ -455,6 +467,7 @@
assert cppyy_test_data.s_enum == cppyy_test_data.kSomething
# global enums
+ assert gbl.fruit # test type accessible
assert gbl.kApple == 78
assert gbl.kBanana == 29
assert gbl.kCitrus == 34
diff --git a/pypy/module/test_lib_pypy/test_sqlite3.py b/pypy/module/test_lib_pypy/test_sqlite3.py
--- a/pypy/module/test_lib_pypy/test_sqlite3.py
+++ b/pypy/module/test_lib_pypy/test_sqlite3.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Tests for _sqlite3.py"""
import pytest, sys
@@ -222,3 +223,8 @@
cur.execute("create table test(a)")
cur.executemany("insert into test values (?)", [[1], [2], [3]])
assert cur.lastrowid is None
+
+def test_issue1573(con):
+ cur = con.cursor()
+ cur.execute(u'SELECT 1 as méil')
+ assert cur.description[0][0] == u"méil".encode('utf-8')
diff --git a/pypy/tool/release/package.py b/pypy/tool/release/package.py
--- a/pypy/tool/release/package.py
+++ b/pypy/tool/release/package.py
@@ -3,7 +3,7 @@
It uses 'pypy/goal/pypy-c' and parts of the rest of the working
copy. Usage:
- package.py root-pypy-dir [--nostrip] [--without-tk] [name-of-archive] [name-of-pypy-c] [destination-for-tarball] [pypy-c-path]
+ package.py [--nostrip] [--without-tk] root-pypy-dir [name-of-archive] [name-of-pypy-c] [destination-for-tarball] [pypy-c-path]
Usually you would do: package.py ../../.. pypy-VER-PLATFORM
The output is found in the directory /tmp/usession-YOURNAME/build/.
More information about the pypy-commit
mailing list