[pypy-commit] pypy struct-double: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: struct-double
Changeset: r95965:877a16704f95
Date: 2019-02-12 09:19 +0200
http://bitbucket.org/pypy/pypy/changeset/877a16704f95/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy numpy-record-type-pure-python: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: numpy-record-type-pure-python
Changeset: r95964:32693f76ec8f
Date: 2019-02-12 09:19 +0200
http://bitbucket.org/pypy/pypy/changeset/32693f76ec8f/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy numpypy-ctypes: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: numpypy-ctypes
Changeset: r95963:7dc47b5a8a95
Date: 2019-02-12 09:18 +0200
http://bitbucket.org/pypy/pypy/changeset/7dc47b5a8a95/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy jit-sys-exc-info: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: jit-sys-exc-info
Changeset: r95967:b1f2ea41a0c5
Date: 2019-02-12 09:20 +0200
http://bitbucket.org/pypy/pypy/changeset/b1f2ea41a0c5/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy dynamic-specialized-tuple: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: dynamic-specialized-tuple
Changeset: r95966:5b69b3275f06
Date: 2019-02-12 09:19 +0200
http://bitbucket.org/pypy/pypy/changeset/5b69b3275f06/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy inline-taskengine: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: inline-taskengine
Changeset: r95962:468c9599a1f6
Date: 2019-02-12 09:18 +0200
http://bitbucket.org/pypy/pypy/changeset/468c9599a1f6/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy taskengine-sorted-optionals: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: taskengine-sorted-optionals
Changeset: r95961:879181847bd8
Date: 2019-02-12 09:18 +0200
http://bitbucket.org/pypy/pypy/changeset/879181847bd8/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy unicode-utf8-py3: fix logic, remove dead code

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8-py3
Changeset: r95960:5a61af129d87
Date: 2019-02-12 01:33 +0200
http://bitbucket.org/pypy/pypy/changeset/5a61af129d87/

Log:fix logic, remove dead code

diff --git a/pypy/objspace/std/unicodeobject.py 
b/pypy/objspace/std/unicodeobject.py
--- a/pypy/objspace/std/unicodeobject.py
+++ b/pypy/objspace/std/unicodeobject.py
@@ -1901,8 +1901,7 @@
 utf8 = space.utf8_w(w_unistr)
 lgt =  space.len_w(w_unistr) 
 result = StringBuilder(lgt)
-itr = rutf8.Utf8StringIterator(utf8)
-for uchr in itr:
+for uchr in rutf8.Utf8StringIterator(utf8):
 if uchr > 127:
 if unicodedb.isspace(uchr):
 result.append(' ')
@@ -1910,23 +1909,9 @@
 try:
 uchr = ord(u'0') + unicodedb.decimal(uchr)
 except KeyError:
-w_encoding = space.newtext('decimal')
-pos = itr.get_pos()
-w_start = space.newint(pos)
-w_end = space.newint(pos+1)
-w_reason = space.newtext('invalid decimal Unicode string')
-raise OperationError(space.w_UnicodeEncodeError,
- space.newtuple([w_encoding, w_unistr,
- w_start, w_end,
- w_reason]))
-result.append(chr(uchr))
+pass
+result.append(rutf8.unichr_as_utf8(r_uint(uchr), True))
 return result.build()
 
-from rpython.rlib.runicode import unicode_encode_utf8_forbid_surrogates
-@jit.elidable
-def XXX_g_encode_utf8(value):
-"""This is a global function because of jit.conditional_call_value"""
-return unicode_encode_utf8_forbid_surrogates(value, len(value))
-
 _repr_function = rutf8.make_utf8_escape_function(
 pass_printable=True, quotes=True, prefix='')
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy Opcode-class: Close obsolete branch

2019-02-11 Thread rlamy
Author: Ronan Lamy 
Branch: Opcode-class
Changeset: r95959:0cdae6b1a07e
Date: 2019-02-11 19:05 +
http://bitbucket.org/pypy/pypy/changeset/0cdae6b1a07e/

Log:Close obsolete branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy cpyext-gc-trialdeletion: Close branch cpyext-gc-trialdeletion.

2019-02-11 Thread stevie_92
Author: Stefan Beyer 
Branch: cpyext-gc-trialdeletion
Changeset: r95958:8ec9653041d2
Date: 2019-02-11 18:35 +
http://bitbucket.org/pypy/pypy/changeset/8ec9653041d2/

Log:Close branch cpyext-gc-trialdeletion.

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy matplotlib: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: matplotlib
Changeset: r95955:6fcafa0bb5ea
Date: 2019-02-11 19:06 +0200
http://bitbucket.org/pypy/pypy/changeset/6fcafa0bb5ea/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy cpyext-debug-type_dealloc: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: cpyext-debug-type_dealloc
Changeset: r95953:91b5766bb8c6
Date: 2019-02-11 19:04 +0200
http://bitbucket.org/pypy/pypy/changeset/91b5766bb8c6/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy pypy3-release-2.3.x: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: pypy3-release-2.3.x
Changeset: r95947:25560ec3b2f5
Date: 2019-02-11 18:56 +0200
http://bitbucket.org/pypy/pypy/changeset/25560ec3b2f5/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy ndarray-promote: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: ndarray-promote
Changeset: r95945:cf24682f0f6d
Date: 2019-02-11 18:55 +0200
http://bitbucket.org/pypy/pypy/changeset/cf24682f0f6d/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy win32-vmprof: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: win32-vmprof
Changeset: r95956:e4e1582c4390
Date: 2019-02-11 19:07 +0200
http://bitbucket.org/pypy/pypy/changeset/e4e1582c4390/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy default: skip test that crashes on old zlib version

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: 
Changeset: r95943:c080e584813c
Date: 2019-02-11 14:02 +0200
http://bitbucket.org/pypy/pypy/changeset/c080e584813c/

Log:skip test that crashes on old zlib version

diff --git a/pypy/module/zlib/test/test_zlib.py 
b/pypy/module/zlib/test/test_zlib.py
--- a/pypy/module/zlib/test/test_zlib.py
+++ b/pypy/module/zlib/test/test_zlib.py
@@ -3,17 +3,18 @@
 """
 
 import sys
+import py
 try:
 import zlib
 except ImportError:
-import py; py.test.skip("no zlib module on this host Python")
+py.test.skip("no zlib module on this host Python")
 
 from pypy.interpreter.gateway import interp2app
 try:
 from pypy.module.zlib import interp_zlib
 from rpython.rlib import rzlib
 except ImportError:
-import py; py.test.skip("no zlib C library on this machine")
+py.test.skip("no zlib C library on this machine")
 
 def test_unsigned_to_signed_32bit():
 assert interp_zlib.unsigned_to_signed_32bit(123) == 123
@@ -344,6 +345,7 @@
 
 assert (d1 + from_copy) == (d1 + from_compressor)
 
+@py.test.mark.skipif(rzlib.ZLIB_VERSION == '1.2.8', reason='does not error 
check')
 def test_cannot_copy_compressor_with_stream_in_inconsistent_state(self):
 if self.runappdirect: skip("can't run with -A")
 compressor = self.zlib.compressobj()
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy override-tp_as-methods: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: override-tp_as-methods
Changeset: r95954:6e767f90b99a
Date: 2019-02-11 19:05 +0200
http://bitbucket.org/pypy/pypy/changeset/6e767f90b99a/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy release-5.x: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: release-5.x
Changeset: r95950:1ce3b640e7d7
Date: 2019-02-11 18:58 +0200
http://bitbucket.org/pypy/pypy/changeset/1ce3b640e7d7/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy cpyext-inheritance: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: cpyext-inheritance
Changeset: r95952:fba889ae9aaa
Date: 2019-02-11 19:03 +0200
http://bitbucket.org/pypy/pypy/changeset/fba889ae9aaa/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy numpy_broadcast_nd: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: numpy_broadcast_nd
Changeset: r95951:a32aff107924
Date: 2019-02-11 18:59 +0200
http://bitbucket.org/pypy/pypy/changeset/a32aff107924/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy non-linux-vmprof-stacklet-switch-2: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: non-linux-vmprof-stacklet-switch-2
Changeset: r95957:fa16a566a0a7
Date: 2019-02-11 19:08 +0200
http://bitbucket.org/pypy/pypy/changeset/fa16a566a0a7/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy pypy3-release-2.6.x: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: pypy3-release-2.6.x
Changeset: r95946:7cf7426ddc77
Date: 2019-02-11 18:56 +0200
http://bitbucket.org/pypy/pypy/changeset/7cf7426ddc77/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy rmod-radd-slots: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: rmod-radd-slots
Changeset: r95944:ce5a8c7604a6
Date: 2019-02-11 18:43 +0200
http://bitbucket.org/pypy/pypy/changeset/ce5a8c7604a6/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy release-pypy3.3-v5: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: release-pypy3.3-v5
Changeset: r95949:6dfb3af9716d
Date: 2019-02-11 18:57 +0200
http://bitbucket.org/pypy/pypy/changeset/6dfb3af9716d/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy pypy3-release-2.4.x: close abandoned branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: pypy3-release-2.4.x
Changeset: r95948:072df3de15c5
Date: 2019-02-11 18:57 +0200
http://bitbucket.org/pypy/pypy/changeset/072df3de15c5/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy.org extradoc: document the site update process

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: extradoc
Changeset: r936:2cfb8fb9d732
Date: 2019-02-11 18:29 +0200
http://bitbucket.org/pypy/pypy.org/changeset/2cfb8fb9d732/

Log:document the site update process

diff --git a/README b/README
--- a/README
+++ b/README
@@ -2,3 +2,9 @@
 
 These html files are not written by hand!
 See source/README.
+
+The site is pull into pypy.org by a cron job on a psf-hosted instance,
+see 
https://github.com/python/psf-chef/blob/master/cookbooks/pypy-home/recipes/default.rb
+The people with access to the instance are the ones in
+https://github.com/python/psf-chef/tree/master/data_bags/users
+with pypy-home access
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy.org extradoc: fix the download links and regenerate HTML

2019-02-11 Thread antocuni
Author: Antonio Cuni 
Branch: extradoc
Changeset: r935:43d47b661208
Date: 2019-02-11 17:22 +0100
http://bitbucket.org/pypy/pypy.org/changeset/43d47b661208/

Log:fix the download links and regenerate HTML

diff --git a/download.html b/download.html
--- a/download.html
+++ b/download.html
@@ -112,16 +112,16 @@
 
 Python2.7 compatible PyPy 7.0
 
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-osx64.tar.bz2;>Mac 
OS X binary (64bit)
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-osx64.tar.bz2;>Mac
 OS X binary (64bit)
 FreeBSD x86 and x86_64: see http://www.freshports.org/lang/pypy;>FreshPorts
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-win32.zip;>Windows 
binary (32bit) (you might need the VS 2008 runtime library
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-win32.zip;>Windows
 binary (32bit) (you might need the VS 2008 runtime library
 installer http://www.microsoft.com/en-us/download/details.aspx?id=5582;>vcredist_x86.exe.)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-ppc64.tar.bz2;>PowerPC
 PPC64 Linux binary (64bit big-endian, Fedora 20) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-ppc64le.tar.bz2;>PowerPC
 PPC64le Linux binary (64bit little-endian, Fedora 21) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-s390x.tar.bz2;>s390x
 Linux binary (built on Redhat Linux 7.2) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-src.tar.bz2;>Source
 (tar.bz2); https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-src.zip;>Source 
(zip).  See below for more about the sources.
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-ppc64.tar.bz2;>PowerPC
 PPC64 Linux binary (64bit big-endian, Fedora 20) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-ppc64le.tar.bz2;>PowerPC
 PPC64le Linux binary (64bit little-endian, Fedora 21) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-s390x.tar.bz2;>s390x
 Linux binary (built on Redhat Linux 7.2) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-src.tar.bz2;>Source
 (tar.bz2); https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.0.0-src.zip;>Source 
(zip).  See below for more about the sources.
 https://bitbucket.org/pypy/pypy/downloads;>All our downloads, 
including previous versions.  We also have a
 http://buildbot.pypy.org/mirror/;>mirror, but please use only if you 
have troubles accessing the links above
 
@@ -129,12 +129,12 @@
 
 Python 3.5.3 compatible PyPy3.5 v7.0.0
 
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-osx64.tar.bz2;>Mac 
OS X binary (64bit) (High Sierra = 10.13, not for Sierra and below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-win32.zip;>Windows 
binary (32bit) BETA
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-s390x.tar.bz2;>s390x
 Linux binary (built on Redhat Linux 7.2) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-src.tar.bz2;>Source
 (tar.bz2); https://bitbucket.org/pypy/pypy/downloads/pypy3-v7.0.0-src.zip;>Source 
(zip).  See below for more about the sources.
+https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-osx64.tar.bz2;>Mac
 OS X binary (64bit) (High Sierra = 10.13, not for Sierra and 
below)
+https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-win32.zip;>Windows
 binary (32bit) BETA
+https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-s390x.tar.bz2;>s390x
 Linux binary (built on Redhat Linux 7.2) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-src.tar.bz2;>Source
 (tar.bz2); https://bitbucket.org/pypy/pypy/downloads/pypy3.5-v7.0.0-src.zip;>Source 
(zip).  See below for more about the sources.
 https://bitbucket.org/pypy/pypy/downloads;>All our downloads, 
including 

[pypy-commit] pypy bitset-intsets: implement difference and issubset

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz 
Branch: bitset-intsets
Changeset: r95941:9481b4febfd0
Date: 2016-02-27 16:33 +0100
http://bitbucket.org/pypy/pypy/changeset/9481b4febfd0/

Log:implement difference and issubset

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -1563,6 +1563,106 @@
 w_set.strategy = strategy
 w_set.sstorage = storage
 
+def difference(self, w_set, w_other):
+storage = self._difference_base(w_set, w_other)
+w_newset = w_set.from_storage_and_strategy(storage, w_set.strategy)
+return w_newset
+
+def _difference_base(self, w_set, w_other):
+if self is w_other.strategy:
+storage = self._difference_unwrapped(w_set, w_other)
+elif not w_set.strategy.may_contain_equal_elements(w_other.strategy):
+d = self.unerase(w_set.sstorage)
+storage = self.erase(d.copy())
+else:
+storage = self._difference_wrapped(w_set, w_other)
+return storage
+
+def _difference_unwrapped(self, w_set, w_other):
+self_dict = self.unerase(w_set.sstorage)
+other_dict = self.unerase(w_other.sstorage)
+result_dict = self.get_empty_dict()
+for key, value in self_dict.iteritems():
+new = value & (~other_dict.get(key, 0))
+if new:
+result_dict[key] = new
+return self.erase(result_dict)
+
+def _difference_update_unwrapped(self, w_set, w_other):
+my_dict = self.unerase(w_set.sstorage)
+if w_set.sstorage is w_other.sstorage:
+my_dict.clear()
+return
+other_dict = self.unerase(w_other.sstorage)
+for key, value in other_dict.iteritems():
+try:
+new = my_dict[key] & (~value)
+except KeyError:
+pass
+else:
+if new:
+my_dict[key] = new
+else:
+del my_dict[key]
+
+def _difference_update_wrapped(self, w_set, w_other):
+w_iterator = w_other.iter()
+while True:
+w_item = w_iterator.next_entry()
+if w_item is None:
+break
+w_set.remove(w_item)
+
+def difference_update(self, w_set, w_other):
+if self.length(w_set) < w_other.strategy.length(w_other):
+# small_set -= big_set: compute the difference as a new set
+storage = self._difference_base(w_set, w_other)
+w_set.sstorage = storage
+else:
+# big_set -= small_set: be more subtle
+if self is w_other.strategy:
+self._difference_update_unwrapped(w_set, w_other)
+elif w_set.strategy.may_contain_equal_elements(w_other.strategy):
+self._difference_update_wrapped(w_set, w_other)
+
+def equals(self, w_set, w_other):
+if w_set.length() != w_other.length():
+return False
+if w_set.length() == 0:
+return True
+# it's possible to have 0-length strategy that's not empty
+if w_set.strategy is w_other.strategy:
+return self._issubset_unwrapped(w_set, w_other)
+if not self.may_contain_equal_elements(w_other.strategy):
+return False
+items = self.unerase(w_set.sstorage).keys()
+for key in items:
+if not w_other.has_key(self.wrap(key)):
+return False
+return True
+
+def _issubset_unwrapped(self, w_set, w_other):
+d_set = self.unerase(w_set.sstorage)
+d_other = self.unerase(w_other.sstorage)
+for key, keyhash in iterkeys_with_hash(d_set):
+if not contains_with_hash(d_other, key, keyhash):
+return False
+return True
+
+def _issubset_wrapped(self, w_set, w_other):
+XXX
+
+def issubset(self, w_set, w_other):
+if w_set.length() == 0:
+return True
+
+if w_set.strategy is w_other.strategy:
+return self._issubset_unwrapped(w_set, w_other)
+elif not w_set.strategy.may_contain_equal_elements(w_other.strategy):
+return False
+else:
+return self._issubset_wrapped(w_set, w_other)
+
 
 class ObjectSetStrategy(AbstractUnwrappedSetStrategy, SetStrategy):
 erase, unerase = rerased.new_erasing_pair("object")
diff --git a/pypy/objspace/std/test/test_setobject.py 
b/pypy/objspace/std/test/test_setobject.py
--- a/pypy/objspace/std/test/test_setobject.py
+++ b/pypy/objspace/std/test/test_setobject.py
@@ -93,7 +93,7 @@
 w_set = W_SetObject(self.space)
 _initialize_set(self.space, w_set, w_list)
 assert w_set.strategy is intstr
-assert intstr.unerase(w_set.sstorage) == {1:None, 2:None, 3:None}
+#assert intstr.unerase(w_set.sstorage) == {1:None, 2:None, 3:None}
 
 w_list = 

[pypy-commit] pypy bitset-intsets: in-progress: start implementing integer sets as bitsets

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz 
Branch: bitset-intsets
Changeset: r95940:bfd90a10b38c
Date: 2016-02-27 15:39 +0100
http://bitbucket.org/pypy/pypy/changeset/bfd90a10b38c/

Log:in-progress: start implementing integer sets as bitsets

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -13,6 +13,14 @@
 from rpython.rlib.rarithmetic import intmask, r_uint
 from rpython.rlib import rerased, jit
 
+def popcount(i):
+# XXX
+i = r_uint(i)
+res = 0
+while i:
+res += i & 1
+i >>= 1
+return res
 
 UNROLL_CUTOFF = 5
 
@@ -687,7 +695,7 @@
 # __ methods called on W_SetObject _
 
 def clear(self, w_set):
-raise NotImplementedError
+w_set.switch_to_empty_strategy()
 
 def copy_real(self, w_set):
 raise NotImplementedError
@@ -878,9 +886,6 @@
 def length(self, w_set):
 return len(self.unerase(w_set.sstorage))
 
-def clear(self, w_set):
-w_set.switch_to_empty_strategy()
-
 def copy_real(self, w_set):
 # may be used internally on frozen sets, although frozenset().copy()
 # returns self in frozenset_copy__Frozenset.
@@ -1281,7 +1286,7 @@
 return UnicodeIteratorImplementation(self.space, self, w_set)
 
 
-class IntegerSetStrategy(AbstractUnwrappedSetStrategy, SetStrategy):
+class IntegerSetStrategy(SetStrategy):
 erase, unerase = rerased.new_erasing_pair("integer")
 erase = staticmethod(erase)
 unerase = staticmethod(unerase)
@@ -1289,6 +1294,9 @@
 intersect_jmp = jit.JitDriver(greens = [], reds = 'auto',
   name='set(int).intersect')
 
+BITMASK = 3
+KEYMASK = ~BITMASK
+
 def get_empty_storage(self):
 return self.erase({})
 
@@ -1296,7 +1304,16 @@
 return {}
 
 def listview_int(self, w_set):
-return self.unerase(w_set.sstorage).keys()
+result = []
+items = self.unerase(w_set.sstorage).iteritems()
+for key, value in items:
+i = 0
+while value:
+if value & 1:
+result.append(key | i)
+value >>= 1
+i += 1
+return result
 
 def is_correct_type(self, w_key):
 return type(w_key) is W_IntObject
@@ -1321,6 +1338,231 @@
 def iter(self, w_set):
 return IntegerIteratorImplementation(self.space, self, w_set)
 
+def _set_key(self, setdata, i):
+setdata[i & self.KEYMASK] = setdata.get(i & self.KEYMASK, 0) | (1 << 
(i & self.BITMASK))
+
+def _set_key_wrapped(self, setdata, w_key):
+self._set_key(setdata, self.unwrap(w_key))
+
+def _remove_key(self, setdata, i):
+key = i & self.KEYMASK
+item = setdata.get(key, 0)
+bit = (1 << (i & self.BITMASK))
+is_there = item & bit
+if is_there:
+if item & (~bit) == 0:
+del setdata[key]
+else:
+setdata[key] = item & (~bit)
+return bool(is_there)
+
+def _has_key(self, setdata, i):
+return bool(setdata.get(i & self.KEYMASK, 0) & (1 << (i & 
self.BITMASK)))
+
+def _has_key_wrapped(self, setdata, w_key):
+return self._has_key(setdata, self.unwrap(w_key))
+
+@jit.look_inside_iff(lambda self, list_w:
+jit.loop_unrolling_heuristic(list_w, len(list_w), UNROLL_CUTOFF))
+def get_storage_from_list(self, list_w):
+setdata = {}
+for w_item in list_w:
+self._set_key_wrapped(setdata, w_item)
+return self.erase(setdata)
+
+@jit.look_inside_iff(lambda self, items:
+jit.loop_unrolling_heuristic(items, len(items), UNROLL_CUTOFF))
+def get_storage_from_unwrapped_list(self, items):
+setdata = self.get_empty_dict()
+for item in items:
+self._set_key(setdata, item)
+return self.erase(setdata)
+
+def get_storage_copy(self, w_set):
+d = self.unerase(w_set.sstorage)
+copy = self.erase(d.copy())
+return copy
+
+def copy_real(self, w_set):
+# may be used internally on frozen sets, although frozenset().copy()
+# returns self in frozenset_copy__Frozenset.
+strategy = w_set.strategy
+d = self.unerase(w_set.sstorage)
+storage = self.erase(d.copy())
+clone = w_set.from_storage_and_strategy(storage, strategy)
+return clone
+
+def add(self, w_set, w_key):
+if self.is_correct_type(w_key):
+d = self.unerase(w_set.sstorage)
+self._set_key_wrapped(d, w_key)
+else:
+w_set.switch_to_object_strategy(self.space)
+w_set.add(w_key)
+
+def remove(self, w_set, w_item):
+d = self.unerase(w_set.sstorage)
+if not self.is_correct_type(w_item):
+#XXX check type of w_item and immediately return False in some 
cases
+  

[pypy-commit] pypy bitset-intsets: fix update

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz 
Branch: bitset-intsets
Changeset: r95942:6ce89c9c6bae
Date: 2016-02-27 17:31 +0100
http://bitbucket.org/pypy/pypy/changeset/6ce89c9c6bae/

Log:fix update

diff --git a/pypy/objspace/std/setobject.py b/pypy/objspace/std/setobject.py
--- a/pypy/objspace/std/setobject.py
+++ b/pypy/objspace/std/setobject.py
@@ -1442,7 +1442,8 @@
 if self is w_other.strategy:
 d_set = self.unerase(w_set.sstorage)
 d_other = self.unerase(w_other.sstorage)
-d_set.update(d_other)
+for key, item in d_other.iteritems():
+d_set[key] = d_set.get(key, 0) | item
 return
 if w_other.length() == 0:
 return
diff --git a/pypy/objspace/std/test/test_setstrategies.py 
b/pypy/objspace/std/test/test_setstrategies.py
--- a/pypy/objspace/std/test/test_setstrategies.py
+++ b/pypy/objspace/std/test/test_setstrategies.py
@@ -247,6 +247,17 @@
 assert not s.has_key(self.wrap(i))
 # XXX check that no additional keys
 
+@given(intlists, intlists)
+def test_union(self, c1, c2):
+s1 = self.intset(c1)
+s2 = self.intset(c2)
+s = s1.copy_real()
+s.update(s2)
+for i in c1:
+assert s.has_key(self.wrap(i))
+for i in c2:
+assert s.has_key(self.wrap(i))
+# XXX check that no additional keys
 
 @given(intlists, intlists)
 def test_issubset(self, c1, c2):
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy fix-longevity: close branch, it's superseded by the merged regalloc-playground

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz-Tereick 
Branch: fix-longevity
Changeset: r95938:147bb1ff2239
Date: 2019-02-11 12:34 +0100
http://bitbucket.org/pypy/pypy/changeset/147bb1ff2239/

Log:close branch, it's superseded by the merged regalloc-playground

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy sys-getsizeof: close abandoned branch

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz-Tereick 
Branch: sys-getsizeof
Changeset: r95937:ce962d90778a
Date: 2019-02-11 12:24 +0100
http://bitbucket.org/pypy/pypy/changeset/ce962d90778a/

Log:close abandoned branch

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy regalloc: close branch, it's superseded by the merged regalloc-playground

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz-Tereick 
Branch: regalloc
Changeset: r95939:a343830b763a
Date: 2019-02-11 12:39 +0100
http://bitbucket.org/pypy/pypy/changeset/a343830b763a/

Log:close branch, it's superseded by the merged regalloc-playground

___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy.org extradoc: rebuild pages

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: extradoc
Changeset: r934:4915afa633dc
Date: 2019-02-11 13:38 +0200
http://bitbucket.org/pypy/pypy.org/changeset/4915afa633dc/

Log:rebuild pages

diff --git a/download.html b/download.html
--- a/download.html
+++ b/download.html
@@ -66,10 +66,11 @@
 as stable as the release, but they contain numerous bugfixes and
 performance improvements.
 We provide binaries for x86, ARM, PPC and s390x running on different 
operating systems such as
-Linux, Mac OS X and Windows:
+Linux, Mac OS X and Windows (http://doc.pypy.org/en/latest/release-v7.0.0.html;>what's new in PyPy 
7.0?):
 
-the Python2.7 compatible release  PyPy2.7 v6.0 
 (http://doc.pypy.org/en/latest/release-v6.0.0.html;>what's new in 
PyPy2.7?)
-the Python3.5 compatible release  PyPy3.5 v6.0 
 (http://doc.pypy.org/en/latest/release-v6.0.0.html;>what's new in 
PyPy3.5?).
+the Python2.7 compatible release  PyPy2.7 v7.0
+the Python3.5 compatible release  PyPy3.5 v7.0
+the Python3.6 compatible release, alpha quality  PyPy3.6 
v7.0
 the Python2.7 Software Transactional Memory special release  
PyPy-STM 2.5.1 (Linux x86-64 only)
 
 
@@ -108,36 +109,32 @@
 or translate your own 
PyPy.
 
 
-
-Python2.7 compatible PyPy 6.0.0
+
+Python2.7 compatible PyPy 7.0
 
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-linux-armhf-raspbian.tar.bz2;>ARM
 Hardfloat Linux binary (ARMHF/gnueabihf, Raspbian) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-linux-armel.tar.bz2;>ARM
 Hardfloat Linux binary (ARMHF/gnueabihf, Ubuntu Raring) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-osx64.tar.bz2;>Mac 
OS X binary (64bit)
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-osx64.tar.bz2;>Mac 
OS X binary (64bit)
 FreeBSD x86 and x86_64: see http://www.freshports.org/lang/pypy;>FreshPorts
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-win32.zip;>Windows 
binary (32bit) (you might need the VS 2008 runtime library
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-win32.zip;>Windows 
binary (32bit) (you might need the VS 2008 runtime library
 installer http://www.microsoft.com/en-us/download/details.aspx?id=5582;>vcredist_x86.exe.)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.10.0-ppc64.tar.bz2;>PowerPC
 PPC64 Linux binary (64bit big-endian, Fedora 20) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.10.0-ppc64le.tar.bz2;>PowerPC
 PPC64le Linux binary (64bit little-endian, Fedora 21) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-s390x.tar.bz2;>s390x
 Linux binary (built on Redhat Linux 7.2) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-src.tar.bz2;>Source
 (tar.bz2); https://bitbucket.org/pypy/pypy/downloads/pypy2-v6.0.0-src.zip;>Source 
(zip).  See below for more about the sources.
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-ppc64.tar.bz2;>PowerPC
 PPC64 Linux binary (64bit big-endian, Fedora 20) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-ppc64le.tar.bz2;>PowerPC
 PPC64le Linux binary (64bit little-endian, Fedora 21) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-s390x.tar.bz2;>s390x
 Linux binary (built on Redhat Linux 7.2) (see [1] below)
+https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-src.tar.bz2;>Source
 (tar.bz2); https://bitbucket.org/pypy/pypy/downloads/pypy2-v7.0.0-src.zip;>Source 
(zip).  See below for more about the sources.
 https://bitbucket.org/pypy/pypy/downloads;>All our downloads, 
including previous versions.  We also have a
 http://buildbot.pypy.org/mirror/;>mirror, but please use only if you 
have troubles accessing the links above
 
 
-
-Python 3.5.3 compatible PyPy3.5 v6.0.0
+
+Python 3.5.3 compatible PyPy3.5 v7.0.0
 
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v6.0.0-linux32.tar.bz2;>Linux
 x86 binary (32bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v6.0.0-linux64.tar.bz2;>Linux
 x86-64 binary (64bit, built on Ubuntu 12.04 - 16.04) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v6.0.0-linux-armhf-raspbian.tar.bz2;>ARM
 Hardfloat Linux binary (ARMHF/gnueabihf, Raspbian) (see [1] below)
-https://bitbucket.org/pypy/pypy/downloads/pypy3-v6.0.0-linux-armel.tar.bz2;>ARM
 Softfloat Linux binary (ARMEL/gnueabi, Ubuntu Raring) (see [1] below)

[pypy-commit] pypy default: fix broken links

2019-02-11 Thread antocuni
Author: Antonio Cuni 
Branch: 
Changeset: r95936:7d3116e601d5
Date: 2019-02-11 11:50 +0100
http://bitbucket.org/pypy/pypy/changeset/7d3116e601d5/

Log:fix broken links

diff --git a/pypy/doc/release-v7.0.0.rst b/pypy/doc/release-v7.0.0.rst
--- a/pypy/doc/release-v7.0.0.rst
+++ b/pypy/doc/release-v7.0.0.rst
@@ -19,11 +19,12 @@
 Until we can work with downstream providers to distribute builds with PyPy, we
 have made packages for some common packages `available as wheels`_.
 
-The GC `hooks`_ , which can be used to gain more insights into its
+The `GC hooks`_ , which can be used to gain more insights into its
 performance, has been improved and it is now possible to manually manage the
 GC by using a combination of ``gc.disable`` and ``gc.collect_step``. See the
 `GC blog post`_.
 
+.. _`GC hooks`: 
http://doc.pypy.org/en/latest/gc_info.html#semi-manual-gc-management
 
 We updated the `cffi`_ module included in PyPy to version 1.12, and the
 `cppyy`_ backend to 1.4. Please use these to wrap your C and C++ code,
@@ -49,7 +50,7 @@
 
 We would also like to thank our contributors and encourage new people to join
 the project. PyPy has many layers and we need help with all of them: `PyPy`_
-and `RPython`_ documentation improvements, tweaking popular `modules`_ to run
+and `RPython`_ documentation improvements, tweaking popular modules to run
 on pypy, or general `help`_ with making RPython's JIT even better.
 
 .. _`PyPy`: index.html
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy default: make the test not fail

2019-02-11 Thread cfbolz
Author: Carl Friedrich Bolz-Tereick 
Branch: 
Changeset: r95935:413357a1f973
Date: 2019-02-11 10:25 +0100
http://bitbucket.org/pypy/pypy/changeset/413357a1f973/

Log:make the test not fail

we could do better here, but should be part of looking at some more
examples of the results of the register allocator more generally.

diff --git a/rpython/jit/backend/x86/test/test_regalloc.py 
b/rpython/jit/backend/x86/test/test_regalloc.py
--- a/rpython/jit/backend/x86/test/test_regalloc.py
+++ b/rpython/jit/backend/x86/test/test_regalloc.py
@@ -419,4 +419,6 @@
 # 1 because lifetime of i172 does not end at the int_xor
 # 1 ptr to save before call
 # 3 for argument shuffling
-assert len(self.filter_log_moves()) == 11
+
+# XXX there is an additional mov, find out why!
+assert len(self.filter_log_moves()) == 12
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy unicode-utf8-py3: remove most runicode from pypy, refactor FormatErrorW, add utf8 to SocketError

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8-py3
Changeset: r95933:914068c8b956
Date: 2019-02-11 00:03 +0200
http://bitbucket.org/pypy/pypy/changeset/914068c8b956/

Log:remove most runicode from pypy, refactor FormatErrorW, add utf8 to
SocketError

diff --git a/pypy/interpreter/error.py b/pypy/interpreter/error.py
--- a/pypy/interpreter/error.py
+++ b/pypy/interpreter/error.py
@@ -9,7 +9,7 @@
 from rpython.rlib.objectmodel import we_are_translated, specialize
 from rpython.rlib.objectmodel import dont_inline, not_rpython
 from rpython.rlib import rstack, rstackovf
-from rpython.rlib import rwin32, runicode
+from rpython.rlib import rwin32, rutf8
 
 from pypy.interpreter import debug
 
@@ -20,8 +20,8 @@
 def strerror(errno):
 """Translate an error code to a unicode message string."""
 from pypy.module._codecs.locale import str_decode_locale_surrogateescape
-uni = str_decode_locale_surrogateescape(os.strerror(errno))
-return runicode.unicode_encode_utf_8(uni, len(uni), 'strict'), len(uni)
+utf8, lgt = str_decode_locale_surrogateescape(os.strerror(errno))
+return utf8, lgt
 
 class OperationError(Exception):
 """Interpreter-level exception that signals an exception that should be
@@ -524,7 +524,6 @@
 result = str(value.encode('utf-8'))
 lgt += len(value)
 else:
-from rpython.rlib import rutf8
 result = str(value)
 try:
 lgt += rutf8.check_utf8(result, True)
@@ -632,13 +631,14 @@
 if rwin32.WIN32 and isinstance(e, WindowsError):
 winerror = e.winerror
 try:
-msg = rwin32.FormatErrorW(winerror)
+msg, lgt = rwin32.FormatErrorW(winerror)
 except ValueError:
-msg = u'Windows Error %d' % winerror
+msg = 'Windows Error %d' % winerror
+lgt = len(msg)
 w_errno = space.w_None
 w_winerror = space.newint(winerror)
-msg_utf8 = runicode.unicode_encode_utf_8(msg, len(msg), 'strict')
-w_msg = space.newtext(msg_utf8, len(msg))
+msg_utf8 = rutf8.str_encode_utf_8(msg, lgt, 'strict')
+w_msg = space.newtext(msg_utf8, lgt)
 else:
 errno = e.errno
 if errno == EINTR:
diff --git a/pypy/interpreter/test/test_unicodehelper.py 
b/pypy/interpreter/test/test_unicodehelper.py
--- a/pypy/interpreter/test/test_unicodehelper.py
+++ b/pypy/interpreter/test/test_unicodehelper.py
@@ -9,7 +9,7 @@
 import struct
 import sys
 from pypy.interpreter.unicodehelper import (
-encode_utf8, str_decode_utf8, utf8_encode_utf_32_be, str_decode_utf_32_be)
+str_decode_utf8, utf8_encode_utf_32_be, str_decode_utf_32_be)
 from pypy.interpreter.unicodehelper import encode_utf8sp, decode_utf8sp
 from pypy.interpreter.unicodehelper import utf8_encode_ascii, str_decode_ascii
 from pypy.interpreter import unicodehelper as uh
@@ -30,35 +30,6 @@
 def decode_utf8(u):
 return str_decode_utf8(u, "strict", True, fake_eh)
 
-def test_encode_utf8():
-space = FakeSpace()
-assert encode_utf8(space, u"abc") == "abc"
-assert encode_utf8(space, u"\u1234") == "\xe1\x88\xb4"
-py.test.raises(Hit, encode_utf8, space, u"\ud800")
-py.test.raises(Hit, encode_utf8, space, u"\udc00")
-if option.runappdirect or sys.maxunicode > 0x:
-# for the following test, go to lengths to avoid CPython's
-# optimizer and .pyc file storage, which collapse the two
-# surrogates into one
-c = u"\udc00"
-py.test.raises(Hit, encode_utf8, space, u"\ud800" + c)
-
-def test_encode_utf8_allow_surrogates():
-sp = FakeSpace()
-assert encode_utf8(sp, u"\ud800", allow_surrogates=True) == "\xed\xa0\x80"
-assert encode_utf8(sp, u"\udc00", allow_surrogates=True) == "\xed\xb0\x80"
-c = u"\udc00"
-got = encode_utf8(sp, u"\ud800" + c, allow_surrogates=True)
-assert got == "\xf0\x90\x80\x80"
-
-def test_encode_utf8sp():
-sp = FakeSpace()
-assert encode_utf8sp(sp, u"\ud800") == "\xed\xa0\x80"
-assert encode_utf8sp(sp, u"\udc00") == "\xed\xb0\x80"
-c = u"\udc00"
-got = encode_utf8sp(sp, u"\ud800" + c)
-assert got == "\xed\xa0\x80\xed\xb0\x80"
-
 def test_decode_utf8():
 assert decode_utf8("abc") == ("abc", 3, 3)
 assert decode_utf8("\xe1\x88\xb4") == ("\xe1\x88\xb4", 1, 3)
diff --git a/pypy/interpreter/unicodehelper.py 
b/pypy/interpreter/unicodehelper.py
--- a/pypy/interpreter/unicodehelper.py
+++ b/pypy/interpreter/unicodehelper.py
@@ -62,13 +62,18 @@
 if _WIN32:
 bytes = space.bytes_w(w_string)
 slen = len(bytes)
-uni, size = runicode.str_decode_mbcs(bytes, slen, 'strict', final=True,
+uni, lgt = runicode.str_decode_mbcs(bytes, slen, 'strict', final=True,
errorhandler=errorhandler, force_ignore=False)
+
+utf8 = uni.encode('utf-8')
+
+utf8 

[pypy-commit] pypy unicode-utf8-py3: fix merge

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8-py3
Changeset: r95932:c5c905981a21
Date: 2019-02-10 15:54 +0200
http://bitbucket.org/pypy/pypy/changeset/c5c905981a21/

Log:fix merge

diff --git a/pypy/interpreter/unicodehelper.py 
b/pypy/interpreter/unicodehelper.py
--- a/pypy/interpreter/unicodehelper.py
+++ b/pypy/interpreter/unicodehelper.py
@@ -56,6 +56,7 @@
 
 def fsdecode(space, w_string):
 from pypy.module._codecs import interp_codecs
+from rpython.rlib import runicode
 state = space.fromcache(interp_codecs.CodecState)
 errorhandler=state.decode_error_handler
 if _WIN32:
@@ -314,6 +315,7 @@
 
 def str_decode_mbcs(s, errors, final, errorhandler, force_ignore=True):
 slen = len(s)
+from rpython.rlib import runicode
 res, size = runicode.str_decode_mbcs(s, slen, errors, final=final,
errorhandler=errorhandler, 
force_ignore=force_ignore)
 res_utf8 = runicode.unicode_encode_utf_8(res, len(res), 'strict')
@@ -1624,7 +1626,7 @@
 if size == 0:
 return '', 0
 
-if runicode.MAXUNICODE < 65536:
+if rutf8.MAXUNICODE < 65536:
 unicode_bytes = 2
 else:
 unicode_bytes = 4
@@ -1651,7 +1653,7 @@
 for j in range(start, stop, step):
 t += r_uint(ord(s[pos + j])) << (h*8)
 h += 1
-if t > runicode.MAXUNICODE:
+if t > rutf8.MAXUNICODE:
 r, pos, rettype = errorhandler(errors, "unicode_internal",
 "unichr(%d) not in range" % (t,),
 s, pos, pos + unicode_bytes)
@@ -1668,7 +1670,7 @@
 if size == 0:
 return ''
 
-if runicode.MAXUNICODE < 65536:
+if rutf8.MAXUNICODE < 65536:
 unicode_bytes = 2
 else:
 unicode_bytes = 4
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy unicode-utf8-py3: merge unicode-utf8 into branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8-py3
Changeset: r95931:e08614e7b2b3
Date: 2019-02-09 20:38 +0100
http://bitbucket.org/pypy/pypy/changeset/e08614e7b2b3/

Log:merge unicode-utf8 into branch

diff too long, truncating to 2000 out of 4233 lines

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -61,3 +61,9 @@
 9112c8071614108b1042bfef0713915107004d62 release-pypy2.7-v7.0.0
 1f86f25937b6ae6c8b25236c35228fac587678bf release-pypy3.5-v7.0.0
 dab365a465140aa79a5f3ba4db784c4af4d5c195 release-pypy3.6-v7.0.0
+9112c8071614108b1042bfef0713915107004d62 release-pypy2.7-v7.0.0
+c8805ee6d7846ca2722b106eeaa2f128c699aba3 release-pypy2.7-v7.0.0
+1f86f25937b6ae6c8b25236c35228fac587678bf release-pypy3.5-v7.0.0
+928a4f70d3de7d17449456946154c5da6e600162 release-pypy3.5-v7.0.0
+dab365a465140aa79a5f3ba4db784c4af4d5c195 release-pypy3.6-v7.0.0
+fb40f7a5524c77b80e6c468e087d621610137261 release-pypy3.6-v7.0.0
diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -1,8 +1,6 @@
 * find a better way to run "find" without creating the index storage, if one
   if one is not already readily available (understand cost now, improve after 
merge)
-* write the correct jit_elidable in _get_index_storage (Armin)
 * improve performance of splitlines (CF)
-* stop using runicode/unicode and move MAXUNICODE to rutf8 (Matti)
 * think about cost of utf8 list strategy (CF)
 * revisit why runicode import str_decode_utf_8_impl needed instead of runicode
   import str_decode_utf_8
diff --git a/pypy/doc/release-v7.0.0.rst b/pypy/doc/release-v7.0.0.rst
--- a/pypy/doc/release-v7.0.0.rst
+++ b/pypy/doc/release-v7.0.0.rst
@@ -39,7 +39,7 @@
 
 The utf8 branch that changes internal representation of unicode to utf8 did not
 make it into the release, so there is still more goodness coming.
-You can download the v6.0 releases here:
+You can download the v7.0 releases here:
 
 http://pypy.org/download.html
 
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -5,6 +5,11 @@
 .. this is a revision shortly after release-pypy-7.0.0
 .. startrev: 481c69f7d81f
 
+.. branch: zlib-copying-third-time-a-charm
+
+Make sure zlib decompressobjs have their streams deallocated immediately
+on flush.
+
 .. branch: zlib-copying-redux
 
 Fix calling copy on already-flushed compressobjs.
@@ -15,7 +20,11 @@
 as they do on CPython.
 
 
-.. math-improvements
+.. branch: math-improvements
 
 Improve performance of long operations where one of the operands fits into
-an int.
\ No newline at end of file
+an int.
+
+.. branch: regalloc-playgrounds
+
+Improve register allocation in the JIT.
diff --git a/pypy/doc/whatsnew-pypy2-5.10.0.rst 
b/pypy/doc/whatsnew-pypy2-5.10.0.rst
--- a/pypy/doc/whatsnew-pypy2-5.10.0.rst
+++ b/pypy/doc/whatsnew-pypy2-5.10.0.rst
@@ -1,42 +1,42 @@
-==
-What's new in PyPy2.7 5.10
-==
-
-.. this is a revision shortly after release-pypy2.7-v5.9.0
-.. startrev:d56dadcef996
-
-
-.. branch: cppyy-packaging
-
-Cleanup and improve cppyy packaging
-
-.. branch: docs-osx-brew-openssl
-
-.. branch: keep-debug-symbols
-
-Add a smartstrip tool, which can optionally keep the debug symbols in a
-separate file, instead of just stripping them away. Use it in packaging
-
-.. branch: bsd-patches
-
-Fix failures on FreeBSD, contributed by David Naylor as patches on the issue
-tracker (issues 2694, 2695, 2696, 2697)
-
-.. branch: run-extra-tests
-
-Run extra_tests/ in buildbot
-
-.. branch: vmprof-0.4.10
-
-Upgrade the _vmprof backend to vmprof 0.4.10
-
-.. branch: fix-vmprof-stacklet-switch
-.. branch: fix-vmprof-stacklet-switch-2
-
-Fix a vmprof+continulets (i.e. greenelts, eventlet, gevent, ...)
-
-.. branch: win32-vcvars
-
-.. branch: rdict-fast-hash
-
-Make it possible to declare that the hash function of an r_dict is fast in 
RPython.
+==
+What's new in PyPy2.7 5.10
+==
+
+.. this is a revision shortly after release-pypy2.7-v5.9.0
+.. startrev:d56dadcef996
+
+
+.. branch: cppyy-packaging
+
+Cleanup and improve cppyy packaging
+
+.. branch: docs-osx-brew-openssl
+
+.. branch: keep-debug-symbols
+
+Add a smartstrip tool, which can optionally keep the debug symbols in a
+separate file, instead of just stripping them away. Use it in packaging
+
+.. branch: bsd-patches
+
+Fix failures on FreeBSD, contributed by David Naylor as patches on the issue
+tracker (issues 2694, 2695, 2696, 2697)
+
+.. branch: run-extra-tests
+
+Run extra_tests/ in buildbot
+
+.. branch: vmprof-0.4.10
+
+Upgrade the _vmprof backend to vmprof 0.4.10
+
+.. branch: fix-vmprof-stacklet-switch
+.. branch: fix-vmprof-stacklet-switch-2
+
+Fix a vmprof+continulets (i.e. greenelts, eventlet, gevent, ...)
+
+.. branch: win32-vcvars
+
+.. branch: rdict-fast-hash
+
+Make it possible to declare that the hash function of an r_dict is fast in 
RPython.
diff --git a/pypy/doc/whatsnew-pypy2-6.0.0.rst 

[pypy-commit] pypy unicode-utf8-py3: win32 fixes, still uses runicode for str_decode_mbcs

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8-py3
Changeset: r95934:18628545b899
Date: 2019-02-11 11:10 +0200
http://bitbucket.org/pypy/pypy/changeset/18628545b899/

Log:win32 fixes, still uses runicode for str_decode_mbcs

diff --git a/pypy/interpreter/error.py b/pypy/interpreter/error.py
--- a/pypy/interpreter/error.py
+++ b/pypy/interpreter/error.py
@@ -637,8 +637,7 @@
 lgt = len(msg)
 w_errno = space.w_None
 w_winerror = space.newint(winerror)
-msg_utf8 = rutf8.str_encode_utf_8(msg, lgt, 'strict')
-w_msg = space.newtext(msg_utf8, lgt)
+w_msg = space.newtext(msg, lgt)
 else:
 errno = e.errno
 if errno == EINTR:
diff --git a/pypy/interpreter/unicodehelper.py 
b/pypy/interpreter/unicodehelper.py
--- a/pypy/interpreter/unicodehelper.py
+++ b/pypy/interpreter/unicodehelper.py
@@ -321,8 +321,8 @@
 from rpython.rlib import runicode
 res, size = runicode.str_decode_mbcs(s, slen, errors, final=final,
errorhandler=errorhandler, 
force_ignore=force_ignore)
-res_utf8 = unicode_encode_utf_8(res, len(res), 'strict')
-return res_utf8, len(res), len(res)
+res_utf8 = runicode.unicode_encode_utf_8(res, size, 'strict')
+return res_utf8, len(res), size
 
 def str_decode_utf8(s, errors, final, errorhandler, allow_surrogates=False):
 """ Same as checking for the valid utf8, but we know the utf8 is not
diff --git a/rpython/rlib/rwin32.py b/rpython/rlib/rwin32.py
--- a/rpython/rlib/rwin32.py
+++ b/rpython/rlib/rwin32.py
@@ -306,7 +306,7 @@
 return result
 
 def llimpl_FormatErrorW(code):
-"Return a unicode message corresponding to the given Windows error 
code."
+"Return a utf8-encoded msg and its length"
 buf = lltype.malloc(rffi.CWCHARPP.TO, 1, flavor='raw')
 buf[0] = lltype.nullptr(rffi.CWCHARP.TO)
 try:
@@ -327,7 +327,8 @@
 buflen -= 1
 
 if buflen <= 0:
-result = u'Windows Error %d' % (code,)
+msg = 'Windows Error %d' % (code,)
+result = msg, len(msg)
 else:
 result = rffi.wcharpsize2utf8(s_buf, buflen), buflen
 finally:
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit


[pypy-commit] pypy unicode-utf8-py3: merge py3.5 into branch

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8-py3
Changeset: r95930:7b314aebd25c
Date: 2019-02-09 20:17 +0100
http://bitbucket.org/pypy/pypy/changeset/7b314aebd25c/

Log:merge py3.5 into branch

diff too long, truncating to 2000 out of 3827 lines

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -4,8 +4,10 @@
 *~
 .*.swp
 .idea
+.mypy_cache
 .project
 .pydevproject
+.vscode
 __pycache__
 .venv
 .cache
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -58,3 +58,6 @@
 3f6eaa010fce78cc7973bdc1dfdb95970f08fed2 release-pypy3.5-v5.10.1
 ab0b9caf307db6592905a80b8faffd69b39005b8 release-pypy2.7-v6.0.0
 fdd60ed87e941677e8ea11acf9f1819466521bf2 release-pypy3.5-v6.0.0
+9112c8071614108b1042bfef0713915107004d62 release-pypy2.7-v7.0.0
+1f86f25937b6ae6c8b25236c35228fac587678bf release-pypy3.5-v7.0.0
+dab365a465140aa79a5f3ba4db784c4af4d5c195 release-pypy3.6-v7.0.0
diff --git a/lib_pypy/_csv.py b/lib_pypy/_csv.py
deleted file mode 100644
--- a/lib_pypy/_csv.py
+++ /dev/null
@@ -1,573 +0,0 @@
-"""CSV parsing and writing.
-
-This module provides classes that assist in the reading and writing
-of Comma Separated Value (CSV) files, and implements the interface
-described by PEP 305.  Although many CSV files are simple to parse,
-the format is not formally defined by a stable specification and
-is subtle enough that parsing lines of a CSV file with something
-like line.split(\",\") is bound to fail.  The module supports three
-basic APIs: reading, writing, and registration of dialects.
-
-
-DIALECT REGISTRATION:
-
-Readers and writers support a dialect argument, which is a convenient
-handle on a group of settings.  When the dialect argument is a string,
-it identifies one of the dialects previously registered with the module.
-If it is a class or instance, the attributes of the argument are used as
-the settings for the reader or writer:
-
-class excel:
-delimiter = ','
-quotechar = '\"'
-escapechar = None
-doublequote = True
-skipinitialspace = False
-lineterminator = '\\r\\n'
-quoting = QUOTE_MINIMAL
-
-SETTINGS:
-
-* quotechar - specifies a one-character string to use as the 
-quoting character.  It defaults to '\"'.
-* delimiter - specifies a one-character string to use as the 
-field separator.  It defaults to ','.
-* skipinitialspace - specifies how to interpret whitespace which
-immediately follows a delimiter.  It defaults to False, which
-means that whitespace immediately following a delimiter is part
-of the following field.
-* lineterminator -  specifies the character sequence which should 
-terminate rows.
-* quoting - controls when quotes should be generated by the writer.
-It can take on any of the following module constants:
-
-csv.QUOTE_MINIMAL means only when required, for example, when a
-field contains either the quotechar or the delimiter
-csv.QUOTE_ALL means that quotes are always placed around fields.
-csv.QUOTE_NONNUMERIC means that quotes are always placed around
-fields which do not parse as integers or floating point
-numbers.
-csv.QUOTE_NONE means that quotes are never placed around fields.
-* escapechar - specifies a one-character string used to escape 
-the delimiter when quoting is set to QUOTE_NONE.
-* doublequote - controls the handling of quotes inside fields.  When
-True, two consecutive quotes are interpreted as one during read,
-and when writing, each quote character embedded in the data is
-written as two quotes.
-"""
-
-__version__ = "1.0"
-
-QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE = range(4)
-_dialects = {}
-_field_limit = 128 * 1024 # max parsed field size
-
-class Error(Exception):
-pass
-
-class Dialect(object):
-"""CSV dialect
-
-The Dialect type records CSV parsing and generation options."""
-
-__slots__ = ["_delimiter", "_doublequote", "_escapechar",
- "_lineterminator", "_quotechar", "_quoting",
- "_skipinitialspace", "_strict"]
-
-def __new__(cls, dialect, **kwargs):
-
-for name in kwargs:
-if '_' + name not in Dialect.__slots__:
-raise TypeError("unexpected keyword argument '%s'" %
-(name,))
-
-if dialect is not None:
-if isinstance(dialect, str):
-dialect = get_dialect(dialect)
-
-# Can we reuse this instance?
-if (isinstance(dialect, Dialect)
-and all(value is None for value in kwargs.values())):
-return dialect
-
-self = object.__new__(cls)
-
-
-def set_char(x):
-if x is None:
-return None
-if isinstance(x, str) and len(x) <= 1:
-return x
-raise TypeError("%r must be a 1-character string" % 

[pypy-commit] pypy unicode-utf8: remove done items from TODO

2019-02-11 Thread mattip
Author: Matti Picus 
Branch: unicode-utf8
Changeset: r95929:069cf9f2f5b3
Date: 2019-02-09 20:16 +0100
http://bitbucket.org/pypy/pypy/changeset/069cf9f2f5b3/

Log:remove done items from TODO

diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -1,6 +1,4 @@
 * find a better way to run "find" without creating the index storage,
   if one is not already readily available (understand cost now, improve after 
merge)
-* write the correct jit_elidable in _get_index_storage (Armin)
 * improve performance of splitlines
-* stop using runicode/unicode and move MAXUNICODE to rutf8 (Matti)
 * think about cost of utf8 list strategy (Armin and CF)
___
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit