[arch-commits] Commit in python-rapidjson/trunk (PKGBUILD python-3.8.patch)

Evangelos Foutras foutrelis at archlinux.org
Wed Nov 6 16:19:35 UTC 2019


    Date: Wednesday, November 6, 2019 @ 16:19:34
  Author: foutrelis
Revision: 524406

Add upstream fix for Python 3.8 compatibility

Added:
  python-rapidjson/trunk/python-3.8.patch
Modified:
  python-rapidjson/trunk/PKGBUILD

------------------+
 PKGBUILD         |    7 +++++--
 python-3.8.patch |   35 +++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 2 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-11-06 15:50:01 UTC (rev 524405)
+++ PKGBUILD	2019-11-06 16:19:34 UTC (rev 524406)
@@ -10,8 +10,10 @@
 depends=('python')
 makedepends=('python-setuptools' 'rapidjson')
 checkdepends=('python-pytest-runner' 'python-pytest-benchmark' 'python-pytz')
-source=("https://pypi.io/packages/source/p/python-rapidjson/python-rapidjson-$pkgver.tar.gz")
-sha512sums=('7d843cfe46a269c88a8f4c05ad6b3dc86d60fa3ceb24ac39639d95bbc8ed2bdba18f0467dd222c39416e48054b2ad70ae2b8219eb441a5571b872f28ba4872d7')
+source=("https://pypi.io/packages/source/p/python-rapidjson/python-rapidjson-$pkgver.tar.gz"
+        python-3.8.patch)
+sha512sums=('7d843cfe46a269c88a8f4c05ad6b3dc86d60fa3ceb24ac39639d95bbc8ed2bdba18f0467dd222c39416e48054b2ad70ae2b8219eb441a5571b872f28ba4872d7'
+            '39850c03e7b87d3c081e4af9ff7b0bb7d06791c818acb97828341564407737bcaa935f3e42c042d5d3cfc65e827965540416bd1735de1a652a0c4b5ee8f39930')
 
 prepare() {
   #rm -r python-rapidjson-$pkgver/rapidjson
@@ -18,6 +20,7 @@
   #sed -i 's/if not os.path.isdir/if os.path.isdir/' python-rapidjson-$pkgver/setup.py
   # Shared rapidjson fails tests.
 
+  patch -Np1 -d python-rapidjson-$pkgver <python-3.8.patch
   cp -a python-rapidjson-$pkgver{,-py2}
 }
 

Added: python-3.8.patch
===================================================================
--- python-3.8.patch	                        (rev 0)
+++ python-3.8.patch	2019-11-06 16:19:34 UTC (rev 524406)
@@ -0,0 +1,35 @@
+From aa16ff9daec2153f47c3c6977bde31df221bb097 Mon Sep 17 00:00:00 2001
+From: Lele Gaifax <lele at metapensiero.it>
+Date: Sat, 2 Nov 2019 14:31:16 +0100
+Subject: [PATCH] Use repr() instead of str() to obtain string representation
+ of PyLong instances
+
+In Python 3.8 they removed several __str__() implementations (see commit
+https://github.com/python/cpython/commit/96aeaec64738b730c719562125070a52ed570210), so
+under that version calling str() on an IntEnum instance gives something like
+"<EnumName.attr: 123>", not the literal integer value as before, so the right thing, that
+seems to work also on Python 3.7, is to use repr() instead.
+
+This fixes issue #125.
+---
+ rapidjson.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/rapidjson.cpp b/rapidjson.cpp
+index e649e52..32f527b 100644
+--- a/rapidjson.cpp
++++ b/rapidjson.cpp
+@@ -2267,11 +2267,11 @@ dumps_internal(
+                 writer->Uint64(ui);
+             }
+         } else {
+-            // Mimic stdlib json: subclasses of int may override __str__, but we still
++            // Mimic stdlib json: subclasses of int may override __repr__, but we still
+             // want to encode them as integers in JSON; one example within the standard
+             // library is IntEnum
+ 
+-            PyObject* intStrObj = PyLong_Type.tp_str(object);
++            PyObject* intStrObj = PyLong_Type.tp_repr(object);
+             if (intStrObj == NULL)
+                 return false;
+ 



More information about the arch-commits mailing list