[pypy-commit] pypy default: merge heads
arigo
noreply at buildbot.pypy.org
Wed Mar 5 12:51:43 CET 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r69722:d39482624aee
Date: 2014-03-05 12:50 +0100
http://bitbucket.org/pypy/pypy/changeset/d39482624aee/
Log: merge heads
diff --git a/pypy/module/micronumpy/tool/numready/main.py b/pypy/module/micronumpy/tool/numready/main.py
--- a/pypy/module/micronumpy/tool/numready/main.py
+++ b/pypy/module/micronumpy/tool/numready/main.py
@@ -39,7 +39,7 @@
return len(self._items)
class Item(object):
- def __init__(self, name, kind, subitems=None):
+ def __init__(self, name, kind, subitems=[]):
self.name = name
self.kind = kind
self.subitems = subitems
@@ -72,7 +72,7 @@
items = SearchableSet()
for line in lines:
kind, name = line.split(" : ", 1)
- subitems = None
+ subitems = []
if kind == KINDS["TYPE"] and name in SPECIAL_NAMES and attr is None:
subitems = find_numpy_items(python, modname, name)
items.add(Item(name, kind, subitems))
@@ -93,7 +93,8 @@
l[i].append(lst[k * lgt + i])
return l
-SPECIAL_NAMES = ["ndarray", "dtype", "generic", "flatiter", "ufunc"]
+SPECIAL_NAMES = ["ndarray", "dtype", "generic", "flatiter", "ufunc",
+ "nditer"]
def main(argv):
cpy_items = find_numpy_items("/usr/bin/python")
diff --git a/pypy/module/micronumpy/tool/numready/search.py b/pypy/module/micronumpy/tool/numready/search.py
--- a/pypy/module/micronumpy/tool/numready/search.py
+++ b/pypy/module/micronumpy/tool/numready/search.py
@@ -30,4 +30,4 @@
print kind, ":", name
if __name__ == "__main__":
- main(sys.argv)
\ No newline at end of file
+ main(sys.argv)
diff --git a/pypy/module/pypyjit/test_pypy_c/test_misc.py b/pypy/module/pypyjit/test_pypy_c/test_misc.py
--- a/pypy/module/pypyjit/test_pypy_c/test_misc.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_misc.py
@@ -176,14 +176,14 @@
loop, = log.loops_by_filename(self.filepath)
assert loop.match("""
guard_not_invalidated?
- i16 = int_ge(i11, i12)
- guard_false(i16, descr=...)
+ i16 = int_lt(i11, i12)
+ guard_true(i16, descr=...)
i20 = int_add(i11, 1)
i21 = force_token()
setfield_gc(p4, i20, descr=<.* .*W_AbstractSeqIterObject.inst_index .*>)
guard_not_invalidated?
- i25 = int_ge(i11, i9)
- guard_false(i25, descr=...)
+ i25 = int_lt(i11, i9)
+ guard_true(i25, descr=...)
i27 = int_add_ovf(i7, i11)
guard_no_overflow(descr=...)
--TICK--
@@ -214,10 +214,10 @@
i21 = force_token()
setfield_gc(p4, i20, descr=<.* .*W_AbstractSeqIterObject.inst_index .*>)
guard_not_invalidated?
- i23 = int_lt(i18, 0)
- guard_false(i23, descr=...)
- i25 = int_ge(i18, i9)
- guard_false(i25, descr=...)
+ i23 = int_ge(i18, 0)
+ guard_true(i23, descr=...)
+ i25 = int_lt(i18, i9)
+ guard_true(i25, descr=...)
i27 = int_add_ovf(i7, i18)
guard_no_overflow(descr=...)
--TICK--
diff --git a/pypy/objspace/std/test/test_rangeobject.py b/pypy/objspace/std/test/test_rangeobject.py
--- a/pypy/objspace/std/test/test_rangeobject.py
+++ b/pypy/objspace/std/test/test_rangeobject.py
@@ -109,6 +109,14 @@
assert not self.not_forced(r)
assert r == [1, 2, 3, 4, 5, 6, 7]
+ def test_getitem_simple(self):
+ r = range(4)
+ assert r[-1] == 3
+ assert r[3] == 3
+ assert r[-4] == 0
+ raises(IndexError, r.__getitem__, -5)
+ raises(IndexError, r.__getitem__, 4)
+
def test_reduce(self):
it = iter(range(10))
assert it.next() == 0
diff --git a/rpython/rlib/rposix.py b/rpython/rlib/rposix.py
--- a/rpython/rlib/rposix.py
+++ b/rpython/rlib/rposix.py
@@ -136,141 +136,92 @@
# - but rpython.rtyper.module.ll_os.py on Windows will replace these functions
# with other wrappers that directly handle unicode strings.
@specialize.argtype(0)
-def open(path, flags, mode):
+def _as_bytes(path):
assert path is not None
if isinstance(path, str):
- return os.open(path, flags, mode)
+ return path
else:
- return os.open(path.as_bytes(), flags, mode)
+ return path.as_bytes()
+
+ at specialize.argtype(0)
+def open(path, flags, mode):
+ return os.open(_as_bytes(path), flags, mode)
@specialize.argtype(0)
def stat(path):
- if isinstance(path, str):
- return os.stat(path)
- else:
- return os.stat(path.as_bytes())
+ return os.stat(_as_bytes(path))
@specialize.argtype(0)
def lstat(path):
- if isinstance(path, str):
- return os.lstat(path)
- else:
- return os.lstat(path.as_bytes())
+ return os.lstat(_as_bytes(path))
@specialize.argtype(0)
def statvfs(path):
- if isinstance(path, str):
- return os.statvfs(path)
- else:
- return os.statvfs(path.as_bytes())
+ return os.statvfs(_as_bytes(path))
@specialize.argtype(0)
def unlink(path):
- if isinstance(path, str):
- return os.unlink(path)
- else:
- return os.unlink(path.as_bytes())
+ return os.unlink(_as_bytes(path))
@specialize.argtype(0, 1)
def rename(path1, path2):
- if isinstance(path1, str):
- return os.rename(path1, path2)
- else:
- return os.rename(path1.as_bytes(), path2.as_bytes())
+ return os.rename(_as_bytes(path1), _as_bytes(path2))
@specialize.argtype(0)
def listdir(dirname):
- if isinstance(dirname, str):
- return os.listdir(dirname)
- else:
- return os.listdir(dirname.as_bytes())
+ return os.listdir(_as_bytes(dirname))
@specialize.argtype(0)
def access(path, mode):
- if isinstance(path, str):
- return os.access(path, mode)
- else:
- return os.access(path.as_bytes(), mode)
+ return os.access(_as_bytes(path), mode)
@specialize.argtype(0)
def chmod(path, mode):
- if isinstance(path, str):
- return os.chmod(path, mode)
- else:
- return os.chmod(path.as_bytes(), mode)
+ return os.chmod(_as_bytes(path), mode)
@specialize.argtype(0, 1)
def utime(path, times):
- if isinstance(path, str):
- return os.utime(path, times)
- else:
- return os.utime(path.as_bytes(), times)
+ return os.utime(_as_bytes(path), times)
@specialize.argtype(0)
def chdir(path):
- if isinstance(path, str):
- return os.chdir(path)
- else:
- return os.chdir(path.as_bytes())
+ return os.chdir(_as_bytes(path))
@specialize.argtype(0)
def mkdir(path, mode=0777):
- if isinstance(path, str):
- return os.mkdir(path, mode)
- else:
- return os.mkdir(path.as_bytes(), mode)
+ return os.mkdir(_as_bytes(path), mode)
@specialize.argtype(0)
def rmdir(path):
- if isinstance(path, str):
- return os.rmdir(path)
- else:
- return os.rmdir(path.as_bytes())
+ return os.rmdir(_as_bytes(path))
@specialize.argtype(0)
def mkfifo(path, mode):
- if isinstance(path, str):
- os.mkfifo(path, mode)
- else:
- os.mkfifo(path.as_bytes(), mode)
+ os.mkfifo(_as_bytes(path), mode)
@specialize.argtype(0)
def mknod(path, mode, device):
- if isinstance(path, str):
- os.mknod(path, mode, device)
- else:
- os.mknod(path.as_bytes(), mode, device)
+ os.mknod(_as_bytes(path), mode, device)
@specialize.argtype(0, 1)
def symlink(src, dest):
- if isinstance(src, str):
- os.symlink(src, dest)
- else:
- os.symlink(src.as_bytes(), dest.as_bytes())
+ os.symlink(_as_bytes(src), _as_bytes(dest))
if os.name == 'nt':
import nt
+ @specialize.argtype(0)
def _getfullpathname(path):
- if isinstance(path, str):
- return nt._getfullpathname(path)
- else:
- return nt._getfullpathname(path.as_bytes())
+ return nt._getfullpathname(_as_bytes(path))
@specialize.argtype(0, 1)
def putenv(name, value):
- if isinstance(name, str):
- os.environ[name] = value
- else:
- os.environ[name.as_bytes()] = value.as_bytes()
+ os.environ[_as_bytes(name)] = _as_bytes(value)
@specialize.argtype(0)
def unsetenv(name):
- if isinstance(name, str):
- del os.environ[name]
- else:
- del os.environ[name.as_bytes()]
+ del os.environ[_as_bytes(name)]
if os.name == 'nt':
from rpython.rlib import rwin32
More information about the pypy-commit
mailing list