Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r71355:f7d70d54b9d9
Date: 2014-05-06 16:58 -0700
http://bitbucket.org/pypy/pypy/changeset/f7d70d54b9d9/
Log: merge default
diff --git a/lib_pypy/_pypy_interact.py b/lib_pypy/_pypy_interact.py
--- a/lib_pypy/_pypy_interact.py
+++ b/lib_pypy/_pypy_interact.py
@@ -3,6 +3,8 @@
import sys
import os
+irc_header = "And now for something completely different"
+
def interactive_console(mainmodule=None, quiet=False):
# set sys.{ps1,ps2} just before invoking the interactive interpreter. This
@@ -15,8 +17,7 @@
if not quiet:
try:
from _pypy_irc_topic import some_topic
- text = "And now for something completely different: ``%s''" % (
- some_topic(),)
+ text = "%s: ``%s''" % ( irc_header, some_topic())
while len(text) >= 80:
i = text[:80].rfind(' ')
print(text[:i])
diff --git a/pypy/doc/cpython_differences.rst b/pypy/doc/cpython_differences.rst
--- a/pypy/doc/cpython_differences.rst
+++ b/pypy/doc/cpython_differences.rst
@@ -348,4 +348,9 @@
type and vice versa. For builtin types, a dictionary will be returned that
cannot be changed (but still looks and behaves like a normal dictionary).
+* PyPy prints a random line from past #pypy IRC topics at startup in
+ interactive mode. In a released version, this behaviour is supressed, but
+ setting the environment variable PYPY_IRC_TOPIC will bring it back. Note that
+ downstream package providers have been known to totally disable this feature.
+
.. include:: _ref.txt
diff --git a/pypy/doc/how-to-release.rst b/pypy/doc/how-to-release.rst
--- a/pypy/doc/how-to-release.rst
+++ b/pypy/doc/how-to-release.rst
@@ -28,7 +28,10 @@
pypy/doc/tool/makecontributor.py generates the list of contributors
* rename pypy/doc/whatsnew_head.rst to whatsnew_VERSION.rst
and create a fresh whatsnew_head.rst after the release
-* update README
+* merge PYPY_IRC_TOPIC environment variable handling from previous release
+ in pypy/doc/getting-started-dev.rst, pypy/doc/man/pypy.1.rst, and
+ pypy/interpreter/app_main.py so release versions will not print a random
+ IRC topic by default.
* change the tracker to have a new release tag to file bugs against
* go to pypy/tool/release and run:
force-builds.py <release branch>
diff --git a/pypy/doc/release-2.3.0.rst b/pypy/doc/release-2.3.0.rst
--- a/pypy/doc/release-2.3.0.rst
+++ b/pypy/doc/release-2.3.0.rst
@@ -1,5 +1,5 @@
=======================================
-PyPy 2.3 - Easier Than Ever
+PyPy 2.3 - Terrestrial Arthropod Trap
=======================================
We're pleased to announce PyPy 2.3, which targets version 2.7.6 of the Python
diff --git a/pypy/interpreter/test/test_app_main.py
b/pypy/interpreter/test/test_app_main.py
--- a/pypy/interpreter/test/test_app_main.py
+++ b/pypy/interpreter/test/test_app_main.py
@@ -7,6 +7,11 @@
from rpython.tool.udir import udir
from contextlib import contextmanager
from pypy.conftest import pypydir
+from pypy.module.sys.version import PYPY_VERSION
+from lib_pypy._pypy_interact import irc_header
+
+is_release = PYPY_VERSION[3] == "final"
+
python3 = os.environ.get("PYTHON3", "python3")
@@ -250,6 +255,10 @@
child = self.spawn([])
child.expect('Python ') # banner
child.expect('>>> ') # prompt
+ if is_release:
+ assert irc_header not in child.before
+ else:
+ assert irc_header in child.before
child.sendline('[6*7]')
child.expect(re.escape('[42]'))
child.sendline('def f(x):')
diff --git a/pypy/module/operator/test/test_operator.py
b/pypy/module/operator/test/test_operator.py
--- a/pypy/module/operator/test/test_operator.py
+++ b/pypy/module/operator/test/test_operator.py
@@ -179,6 +179,8 @@
assert operator.index(42) == 42
assert operator.__index__(42) == 42
raises(TypeError, operator.index, "abc")
+ exc = raises(TypeError, operator.index, "abc")
+ assert str(exc.value) == "'str' object cannot be interpreted as an
index"
def test_indexOf(self):
import operator
diff --git a/pypy/module/pypyjit/test_pypy_c/test_struct.py
b/pypy/module/pypyjit/test_pypy_c/test_struct.py
--- a/pypy/module/pypyjit/test_pypy_c/test_struct.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_struct.py
@@ -1,6 +1,18 @@
+import sys
from pypy.module.pypyjit.test_pypy_c.test_00_model import BaseTestPyPyC
+if sys.maxsize == 2 ** 63 - 1:
+ extra = """
+ i8 = int_ge(i4, -2147483648)
+ guard_true(i8, descr=...)
+ i9 = int_le(i4, 2147483647)
+ guard_true(i9, descr=...)
+ """
+else:
+ extra = ""
+
+
class TestStruct(BaseTestPyPyC):
def test_struct_function(self):
def main(n):
@@ -20,10 +32,7 @@
assert loop.match_by_id("struct", """
guard_not_invalidated(descr=...)
# struct.pack
- i8 = int_ge(i4, -2147483648)
- guard_true(i8, descr=...)
- i9 = int_le(i4, 2147483647)
- guard_true(i9, descr=...)
+ %s
i11 = int_and(i4, 255)
i13 = int_rshift(i4, 8)
i14 = int_and(i13, 255)
@@ -41,7 +50,7 @@
guard_false(i28, descr=...)
i30 = int_lshift(i20, 24)
i31 = int_or(i26, i30)
- """)
+ """ % extra)
def test_struct_object(self):
def main(n):
@@ -60,10 +69,7 @@
assert loop.match_by_id('struct', """
guard_not_invalidated(descr=...)
# struct.pack
- i8 = int_ge(i4, -2147483648)
- guard_true(i8, descr=...)
- i9 = int_le(i4, 2147483647)
- guard_true(i9, descr=...)
+ %s
i11 = int_and(i4, 255)
i13 = int_rshift(i4, 8)
i14 = int_and(i13, 255)
@@ -81,4 +87,4 @@
guard_false(i28, descr=...)
i30 = int_lshift(i20, 24)
i31 = int_or(i26, i30)
- """)
+ """ % extra)
diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -632,13 +632,18 @@
l = ["space.isinstance_w(w_result, %s)" % x
for x in checkerspec]
checker = " or ".join(l)
+ if targetname == 'index':
+ msg = "'%%T' object cannot be interpreted as an index"
+ else:
+ msg = "unsupported operand type for %(targetname)s(): '%%T'"
+ msg = msg % locals()
source = """if 1:
def %(targetname)s(space, w_obj):
w_impl = space.lookup(w_obj, %(specialname)r)
if w_impl is None:
raise oefmt(space.w_TypeError,
- "unsupported operand type for %(targetname)s(): "
- "'%%T'", w_obj)
+ %(msg)r,
+ w_obj)
w_result = space.get_and_call_function(w_impl, w_obj)
if %(checker)s:
diff --git a/rpython/tool/version.py b/rpython/tool/version.py
--- a/rpython/tool/version.py
+++ b/rpython/tool/version.py
@@ -2,7 +2,7 @@
import os
from subprocess import Popen, PIPE
import rpython
-rpythondir = os.path.dirname(os.path.abspath(rpython.__file__))
+rpythondir = os.path.dirname(os.path.realpath(rpython.__file__))
rpythonroot = os.path.dirname(rpythondir)
default_retval = '?', '?'
diff --git a/rpython/translator/c/genc.py b/rpython/translator/c/genc.py
--- a/rpython/translator/c/genc.py
+++ b/rpython/translator/c/genc.py
@@ -537,6 +537,8 @@
pypkgpath = localpath.pypkgpath()
if pypkgpath:
relpypath = localpath.relto(pypkgpath.dirname)
+ assert relpypath, ("%r should be relative to %r" %
+ (localpath, pypkgpath.dirname))
return relpypath.replace('.py', '.c')
return None
if hasattr(node.obj, 'graph'):
diff --git a/rpython/translator/goal/richards.py
b/rpython/translator/goal/richards.py
--- a/rpython/translator/goal/richards.py
+++ b/rpython/translator/goal/richards.py
@@ -102,13 +102,13 @@
self.task_waiting = False
self.task_holding = False
return self
-
+
def waitingWithPacket(self):
self.packet_pending = True
self.task_waiting = True
self.task_holding = False
return self
-
+
def isPacketPending(self):
return self.packet_pending
@@ -154,6 +154,7 @@
self.holdCount = 0
self.qpktCount = 0
+taskWorkArea = TaskWorkArea()
class Task(TaskState):
@@ -235,7 +236,7 @@
if t is None:
raise Exception("Bad task id %d" % id)
return t
-
+
# DeviceTask
@@ -309,7 +310,7 @@
else:
i.control = i.control/2 ^ 0xd008
return self.release(I_DEVB)
-
+
# WorkTask
@@ -384,7 +385,7 @@
wkq = None;
DeviceTask(I_DEVA, 4000, wkq, TaskState().waiting(),
DeviceTaskRec());
DeviceTask(I_DEVB, 5000, wkq, TaskState().waiting(),
DeviceTaskRec());
-
+
schedule()
if taskWorkArea.holdCount == 9297 and taskWorkArea.qpktCount ==
23246:
diff --git a/rpython/translator/platform/__init__.py
b/rpython/translator/platform/__init__.py
--- a/rpython/translator/platform/__init__.py
+++ b/rpython/translator/platform/__init__.py
@@ -170,6 +170,9 @@
ofile = cfile.new(ext=ext)
if ofile.relto(udir):
return ofile
+ assert ofile.relto(rpythonroot), (
+ "%r should be relative to either %r or %r" % (
+ ofile, rpythonroot, udir))
ofile = udir.join(ofile.relto(rpythonroot))
ofile.dirpath().ensure(dir=True)
return ofile
diff --git a/rpython/translator/platform/posix.py
b/rpython/translator/platform/posix.py
--- a/rpython/translator/platform/posix.py
+++ b/rpython/translator/platform/posix.py
@@ -253,6 +253,9 @@
if fpath.dirpath() == self.makefile_dir:
return fpath.basename
elif fpath.dirpath().dirpath() == self.makefile_dir.dirpath():
+ assert fpath.relto(self.makefile_dir.dirpath()), (
+ "%r should be relative to %r" % (
+ fpath, self.makefile_dir.dirpath()))
path = '../' + fpath.relto(self.makefile_dir.dirpath())
return path.replace('\\', '/')
else:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit