[pypy-commit] pypy py3k: Fix two test files.
amauryfa
noreply at buildbot.pypy.org
Wed Oct 19 01:43:19 CEST 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r48216:72a97784aaf3
Date: 2011-10-18 20:35 +0200
http://bitbucket.org/pypy/pypy/changeset/72a97784aaf3/
Log: Fix two test files.
diff --git a/pypy/interpreter/astcompiler/test/test_compiler.py b/pypy/interpreter/astcompiler/test/test_compiler.py
--- a/pypy/interpreter/astcompiler/test/test_compiler.py
+++ b/pypy/interpreter/astcompiler/test/test_compiler.py
@@ -456,16 +456,6 @@
yield self.st, decl, 'A,A1,A2,B2,C,C1,C2,D1,E,G,G1,G2,N1', \
(6,6 ,4 ,1 ,5,5 ,5 ,3 ,8,2,2 ,2 ,7 )
- decl = py.code.Source("""
- def f((a, b)):
- def g((c, d)):
- return (a, b, c, d)
- return g
- x = f((1, 2))((3, 4))
- """)
- decl = str(decl) + "\n"
- yield self.st, decl, 'x', (1, 2, 3, 4)
-
source = """if 1:
def f(a):
del a
@@ -673,7 +663,7 @@
if not d: self.fail("Full mapping must compare to True")
# keys(), items(), iterkeys() ...
def check_iterandlist(iter, lst, ref):
- self.assert_(hasattr(iter, 'next'))
+ self.assert_(hasattr(iter, '__next__'))
self.assert_(hasattr(iter, '__iter__'))
x = list(iter)
self.assert_(set(x)==set(lst)==set(ref))
@@ -682,8 +672,8 @@
check_iterandlist(d.itervalues(), d.values(), self.reference.values())
check_iterandlist(d.iteritems(), d.items(), self.reference.items())
#get
- key, value = d.iteritems().next()
- knownkey, knownvalue = self.other.iteritems().next()
+ key, value = next(d.iteritems())
+ knownkey, knownvalue = next(self.other.iteritems())
self.assertEqual(d.get(key, knownvalue), value)
self.assertEqual(d.get(knownkey, knownvalue), knownvalue)
self.failIf(knownkey in d)
@@ -817,7 +807,7 @@
exec("def f():\n 'hi'", ns)
f = ns["f"]
save = sys.stdout
- sys.stdout = output = io.BytesIO()
+ sys.stdout = output = io.StringIO()
try:
dis.dis(f)
finally:
diff --git a/pypy/interpreter/test/test_code.py b/pypy/interpreter/test/test_code.py
--- a/pypy/interpreter/test/test_code.py
+++ b/pypy/interpreter/test/test_code.py
@@ -42,7 +42,7 @@
'co_flags': 0,
'co_consts': ("abs(number) -> number\n\nReturn the absolute value of the argument.",),
}),
- (object.__init__.im_func.func_code,
+ (object.__init__.func_code,
{#'co_name': '__init__', XXX getting descr__init__
'co_varnames': ('obj', 'args', 'keywords'),
'co_argcount': 1,
@@ -70,7 +70,7 @@
foo(g)
'''
d = {}
- exec src in d
+ exec(src, d)
assert list(sorted(d['f'].func_code.co_names)) == ['foo', 'g']
@@ -97,7 +97,7 @@
ccode.co_freevars,
ccode.co_cellvars)
d = {}
- exec co in d
+ exec(co, d)
assert d['c'] == 3
# test backwards-compatibility version with no freevars or cellvars
co = new.code(ccode.co_argcount,
@@ -113,7 +113,7 @@
ccode.co_firstlineno,
ccode.co_lnotab)
d = {}
- exec co in d
+ exec(co, d)
assert d['c'] == 3
def f(x):
y = 1
@@ -147,9 +147,9 @@
def test_hash(self):
d1 = {}
- exec "def f(): pass" in d1
+ exec("def f(): pass", d1)
d2 = {}
- exec "def f(): pass" in d2
+ exec("def f(): pass", d2)
assert d1['f'].func_code == d2['f'].func_code
assert hash(d1['f'].func_code) == hash(d2['f'].func_code)
@@ -164,47 +164,48 @@
assert i in res
def test_code_extra(self):
- exec """if 1:
+ d = {}
+ exec("""if 1:
def f():
"docstring"
'stuff'
56
-"""
+""", d)
# check for new flag, CO_NOFREE
- assert f.func_code.co_flags & 0x40
+ assert d['f'].func_code.co_flags & 0x40
- exec """if 1:
+ exec("""if 1:
def f(x):
def g(y):
return x+y
return g
-"""
+""", d)
# CO_NESTED
- assert f(4).func_code.co_flags & 0x10
- assert f.func_code.co_flags & 0x10 == 0
+ assert d['f'](4).func_code.co_flags & 0x10
+ assert d['f'].func_code.co_flags & 0x10 == 0
# check for CO_CONTAINSGLOBALS
- assert not f.func_code.co_flags & 0x0800
+ assert not d['f'].func_code.co_flags & 0x0800
- exec """if 1:
+ exec("""if 1:
r = range
def f():
return [l for l in r(100)]
def g():
return [l for l in [1, 2, 3, 4]]
-"""
+""", d)
# check for CO_CONTAINSGLOBALS
- assert f.func_code.co_flags & 0x0800
- assert not g.func_code.co_flags & 0x0800
+ assert d['f'].func_code.co_flags & 0x0800
+ assert not d['g'].func_code.co_flags & 0x0800
- exec """if 1:
+ exec("""if 1:
b = 2
def f(x):
- exec "a = 1";
+ exec("a = 1")
return a + b + x
-"""
+""", d)
# check for CO_CONTAINSGLOBALS
- assert f.func_code.co_flags & 0x0800
+ assert d['f'].func_code.co_flags & 0x0800
diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py
--- a/pypy/interpreter/typedef.py
+++ b/pypy/interpreter/typedef.py
@@ -472,6 +472,12 @@
return space.wrap(getattr(obj, name))
return GetSetProperty(fget, cls=cls, doc=doc)
+def interp_attrproperty_bytes(name, cls, doc=None):
+ "NOT_RPYTHON: initialization-time only"
+ def fget(space, obj):
+ return space.wrapbytes(getattr(obj, name))
+ return GetSetProperty(fget, cls=cls, doc=doc)
+
def interp_attrproperty_w(name, cls, doc=None):
"NOT_RPYTHON: initialization-time only"
def fget(space, obj):
@@ -686,7 +692,7 @@
co_nlocals = interp_attrproperty('co_nlocals', cls=PyCode),
co_stacksize = interp_attrproperty('co_stacksize', cls=PyCode),
co_flags = interp_attrproperty('co_flags', cls=PyCode),
- co_code = interp_attrproperty('co_code', cls=PyCode),
+ co_code = interp_attrproperty_bytes('co_code', cls=PyCode),
co_consts = GetSetProperty(PyCode.fget_co_consts),
co_names = GetSetProperty(PyCode.fget_co_names),
co_varnames = GetSetProperty(PyCode.fget_co_varnames),
@@ -695,7 +701,7 @@
co_filename = interp_attrproperty('co_filename', cls=PyCode),
co_name = interp_attrproperty('co_name', cls=PyCode),
co_firstlineno = interp_attrproperty('co_firstlineno', cls=PyCode),
- co_lnotab = interp_attrproperty('co_lnotab', cls=PyCode),
+ co_lnotab = interp_attrproperty_bytes('co_lnotab', cls=PyCode),
__weakref__ = make_weakref_descr(PyCode),
)
PyCode.typedef.acceptable_as_base_class = False
diff --git a/pypy/module/__builtin__/app_functional.py b/pypy/module/__builtin__/app_functional.py
--- a/pypy/module/__builtin__/app_functional.py
+++ b/pypy/module/__builtin__/app_functional.py
@@ -41,8 +41,8 @@
Returns the sum of a sequence of numbers (NOT strings) plus the value
of parameter 'start' (which defaults to 0). When the sequence is
empty, returns start."""
- if isinstance(start, basestring):
- raise TypeError("sum() can't sum strings")
+ if isinstance(start, str):
+ raise TypeError("sum() can't sum strings [use ''.join(seq) instead]")
last = start
for x in sequence:
# Very intentionally *not* +=, that would have different semantics if
@@ -162,4 +162,4 @@
item = seq[i]
if func(item):
result.append(item)
- return tuple(result)
\ No newline at end of file
+ return tuple(result)
diff --git a/pypy/module/__builtin__/app_io.py b/pypy/module/__builtin__/app_io.py
--- a/pypy/module/__builtin__/app_io.py
+++ b/pypy/module/__builtin__/app_io.py
@@ -78,6 +78,8 @@
def write(data):
if not isinstance(data, str):
data = str(data)
+ if getattr(fp, 'encoding', None):
+ data = data.encode(fp.encoding)
fp.write(data)
sep = kwargs.pop("sep", None)
if sep is not None:
More information about the pypy-commit
mailing list