#8 Backport patch for Python 3.11 compatibility
Closed 2 years ago by thrnciar. Opened 2 years ago by thrnciar.
rpms/ thrnciar/python-msgpack backport-py3.11-patch  into  rawhide

file added
+72
@@ -0,0 +1,72 @@ 

+ From b24ca29ff92738269848bd7753ee0ad4754307cf Mon Sep 17 00:00:00 2001

+ From: Victor Stinner <vstinner@python.org>

+ Date: Sat, 12 Mar 2022 00:45:38 +0100

+ Subject: [PATCH] Use PyFloat_Pack8() on Python 3.11a7

+ 

+ Python 3.11a7 adds public functions:

+ 

+ * PyFloat_Pack4(), PyFloat_Pack8()

+ * PyFloat_Unpack4(), PyFloat_Unpack8()

+ 

+ https://bugs.python.org/issue46906

+ ---

+  msgpack/pack_template.h   |  9 +++++++++

+  msgpack/unpack_template.h | 14 ++++++++++++--

+  2 files changed, 21 insertions(+), 2 deletions(-)

+ 

+ diff --git a/msgpack/pack_template.h b/msgpack/pack_template.h

+ index 0e940b84..7d479b6d 100644

+ --- a/msgpack/pack_template.h

+ +++ b/msgpack/pack_template.h

+ @@ -568,7 +568,12 @@ static inline int msgpack_pack_float(msgpack_packer* x, float d)

+  {

+      unsigned char buf[5];

+      buf[0] = 0xca;

+ +

+ +#if PY_VERSION_HEX >= 0x030B00A7

+ +    PyFloat_Pack4(d, (char *)&buf[1], 0);

+ +#else

+      _PyFloat_Pack4(d, &buf[1], 0);

+ +#endif

+      msgpack_pack_append_buffer(x, buf, 5);

+  }

+  

+ @@ -576,7 +581,11 @@ static inline int msgpack_pack_double(msgpack_packer* x, double d)

+  {

+      unsigned char buf[9];

+      buf[0] = 0xcb;

+ +#if PY_VERSION_HEX >= 0x030B00A7

+ +    PyFloat_Pack8(d, (char *)&buf[1], 0);

+ +#else

+      _PyFloat_Pack8(d, &buf[1], 0);

+ +#endif

+      msgpack_pack_append_buffer(x, buf, 9);

+  }

+  

+ diff --git a/msgpack/unpack_template.h b/msgpack/unpack_template.h

+ index 9924b9c6..8b9fcc19 100644

+ --- a/msgpack/unpack_template.h

+ +++ b/msgpack/unpack_template.h

+ @@ -243,10 +243,20 @@ static inline int unpack_execute(unpack_context* ctx, const char* data, Py_ssize

+                                            _msgpack_load32(uint32_t,n)+1,

+                                            _ext_zero);

+              case CS_FLOAT: {

+ -                    double f = _PyFloat_Unpack4((unsigned char*)n, 0);

+ +                    double f;

+ +#if PY_VERSION_HEX >= 0x030B00A7

+ +                    f = PyFloat_Unpack4((const char*)n, 0);

+ +#else

+ +                    f = _PyFloat_Unpack4((unsigned char*)n, 0);

+ +#endif

+                      push_fixed_value(_float, f); }

+              case CS_DOUBLE: {

+ -                    double f = _PyFloat_Unpack8((unsigned char*)n, 0);

+ +                    double f;

+ +#if PY_VERSION_HEX >= 0x030B00A7

+ +                    f = PyFloat_Unpack8((const char*)n, 0);

+ +#else

+ +                    f = _PyFloat_Unpack8((unsigned char*)n, 0);

+ +#endif

+                      push_fixed_value(_double, f); }

+              case CS_UINT_8:

+                  push_fixed_value(_uint8, *(uint8_t*)n);

file modified
+4 -1
@@ -10,6 +10,9 @@ 

  URL:            https://msgpack.org/

  Source0:        https://github.com/msgpack/msgpack-python/archive/v%{version}/%{srcname}-%{version}.tar.gz

  

+ # Patch needed for compatibility with Python 3.11

+ Patch:          https://github.com/msgpack/msgpack-python/pull/499.patch

+ 

  BuildRequires:  gcc-c++

  

  %description
@@ -36,7 +39,7 @@ 

  This is a Python %{python3_version} (de)serializer for MessagePack.

  

  %prep

- %autosetup -n %{srcname}-python-%{version}

+ %autosetup -p1 -n %{srcname}-python-%{version}

  # There is a circular dependency with python-msgpack-ext

  rm -rf test/test_timestamp.py

  

no initial comment

Oh, you are right. Sorry for the noise.

Pull-Request has been closed by thrnciar

2 years ago
Metadata