Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-msgpack for openSUSE:Factory 
checked in at 2025-10-18 14:36:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-msgpack (Old)
 and      /work/SRC/openSUSE:Factory/.python-msgpack.new.18484 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-msgpack"

Sat Oct 18 14:36:05 2025 rev:19 rq:1311807 version:1.1.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-msgpack/python-msgpack.changes    
2025-07-15 16:43:47.383723651 +0200
+++ /work/SRC/openSUSE:Factory/.python-msgpack.new.18484/python-msgpack.changes 
2025-10-18 14:37:05.604608347 +0200
@@ -1,0 +2,10 @@
+Thu Oct 16 11:41:58 UTC 2025 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 1.1.2
+  * Update Cython to v3.1.4
+  * Update cibuildwheel to v3.2.0
+  * Drop Python 3.8
+  * Add Python 3.14
+  * Add windows-arm
+
+-------------------------------------------------------------------

Old:
----
  msgpack-1.1.1.tar.gz

New:
----
  msgpack-1.1.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-msgpack.spec ++++++
--- /var/tmp/diff_new_pack.PkMmz8/_old  2025-10-18 14:37:06.372640476 +0200
+++ /var/tmp/diff_new_pack.PkMmz8/_new  2025-10-18 14:37:06.380640811 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-msgpack
-Version:        1.1.1
+Version:        1.1.2
 Release:        0
 Summary:        MessagePack (de)serializer
 License:        Apache-2.0

++++++ msgpack-1.1.1.tar.gz -> msgpack-1.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/PKG-INFO new/msgpack-1.1.2/PKG-INFO
--- old/msgpack-1.1.1/PKG-INFO  2025-06-13 08:50:18.641291900 +0200
+++ new/msgpack-1.1.2/PKG-INFO  2025-10-08 11:03:44.975888000 +0200
@@ -1,9 +1,9 @@
 Metadata-Version: 2.4
 Name: msgpack
-Version: 1.1.1
+Version: 1.1.2
 Summary: MessagePack serializer
 Author-email: Inada Naoki <[email protected]>
-License: Apache 2.0
+License-Expression: Apache-2.0
 Project-URL: Homepage, https://msgpack.org/
 Project-URL: Documentation, https://msgpack-python.readthedocs.io/
 Project-URL: Repository, https://github.com/msgpack/msgpack-python/
@@ -14,16 +14,9 @@
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: File Formats
 Classifier: Intended Audience :: Developers
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3.13
-Classifier: Programming Language :: Python :: 3.14
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
-Requires-Python: >=3.8
+Requires-Python: >=3.9
 Description-Content-Type: text/markdown
 License-File: COPYING
 Dynamic: license-file
@@ -33,7 +26,7 @@
 [![Build 
Status](https://github.com/msgpack/msgpack-python/actions/workflows/wheel.yml/badge.svg)](https://github.com/msgpack/msgpack-python/actions/workflows/wheel.yml)
 [![Documentation 
Status](https://readthedocs.org/projects/msgpack-python/badge/?version=latest)](https://msgpack-python.readthedocs.io/en/latest/?badge=latest)
 
-## What's this
+## What is this?
 
 [MessagePack](https://msgpack.org/) is an efficient binary serialization 
format.
 It lets you exchange data among multiple languages like JSON.
@@ -55,9 +48,9 @@
 
 ### Windows
 
-When you can't use a binary distribution, you need to install Visual Studio
-or Windows SDK on Windows.
-Without extension, using pure Python implementation on CPython runs slowly.
+If you can't use a binary distribution, you need to install Visual Studio
+or the Windows SDK on Windows.
+Without the extension, the pure Python implementation on CPython runs slowly.
 
 
 ## How to use
@@ -65,11 +58,11 @@
 ### One-shot pack & unpack
 
 Use `packb` for packing and `unpackb` for unpacking.
-msgpack provides `dumps` and `loads` as an alias for compatibility with
+msgpack provides `dumps` and `loads` as aliases for compatibility with
 `json` and `pickle`.
 
-`pack` and `dump` packs to a file-like object.
-`unpack` and `load` unpacks from a file-like object.
+`pack` and `dump` pack to a file-like object.
+`unpack` and `load` unpack from a file-like object.
 
 ```pycon
 >>> import msgpack
@@ -103,7 +96,7 @@
 ```
 
 
-### Packing/unpacking of custom data type
+### Packing/unpacking of custom data types
 
 It is also possible to pack/unpack custom data types. Here is an example for
 `datetime.datetime`.
@@ -170,8 +163,8 @@
 ### Advanced unpacking control
 
 As an alternative to iteration, `Unpacker` objects provide `unpack`,
-`skip`, `read_array_header` and `read_map_header` methods. The former two
-read an entire message from the stream, respectively de-serialising and 
returning
+`skip`, `read_array_header`, and `read_map_header` methods. The former two
+read an entire message from the stream, respectively deserializing and 
returning
 the result, or ignoring it. The latter two methods return the number of 
elements
 in the upcoming container, so that each element in an array, or key-value pair
 in a map, can be unpacked or skipped individually.
@@ -179,7 +172,7 @@
 
 ## Notes
 
-### string and binary type in old msgpack spec
+### String and binary types in the old MessagePack spec
 
 Early versions of msgpack didn't distinguish string and binary types.
 The type for representing both string and binary types was named **raw**.
@@ -197,7 +190,7 @@
 
 ### ext type
 
-To use the **ext** type, pass `msgpack.ExtType` object to packer.
+To use the **ext** type, pass a `msgpack.ExtType` object to the packer.
 
 ```pycon
 >>> import msgpack
@@ -211,26 +204,26 @@
 
 ### Security
 
-To unpacking data received from unreliable source, msgpack provides
+When unpacking data received from an unreliable source, msgpack provides
 two security options.
 
 `max_buffer_size` (default: `100*1024*1024`) limits the internal buffer size.
-It is used to limit the preallocated list size too.
+It is also used to limit preallocated list sizes.
 
 `strict_map_key` (default: `True`) limits the type of map keys to bytes and 
str.
-While msgpack spec doesn't limit the types of the map keys,
-there is a risk of the hashdos.
+While the MessagePack spec doesn't limit map key types,
+there is a risk of a hash DoS.
 If you need to support other types for map keys, use `strict_map_key=False`.
 
 
 ### Performance tips
 
-CPython's GC starts when growing allocated object.
-This means unpacking may cause useless GC.
-You can use `gc.disable()` when unpacking large message.
+CPython's GC starts when the number of allocated objects grows.
+This means unpacking may trigger unnecessary GC.
+You can use `gc.disable()` when unpacking a large message.
 
-List is the default sequence type of Python.
-But tuple is lighter than list.
+A list is the default sequence type in Python.
+However, a tuple is lighter than a list.
 You can use `use_list=False` while unpacking when performance is important.
 
 
@@ -238,7 +231,7 @@
 
 ### msgpack 0.5
 
-Package name on PyPI was changed from `msgpack-python` to `msgpack` from 0.5.
+The package name on PyPI was changed from `msgpack-python` to `msgpack` in 0.5.
 
 When upgrading from msgpack-0.4 or earlier, do `pip uninstall msgpack-python` 
before
 `pip install -U msgpack`.
@@ -248,25 +241,25 @@
 
 * Python 2 support
 
-  * The extension module does not support Python 2 anymore.
+  * The extension module no longer supports Python 2.
     The pure Python implementation (`msgpack.fallback`) is used for Python 2.
   
   * msgpack 1.0.6 drops official support of Python 2.7, as pip and
-    GitHub Action (setup-python) no longer support Python 2.7.
+    GitHub Action "setup-python" no longer supports Python 2.7.
 
 * Packer
 
   * Packer uses `use_bin_type=True` by default.
-    Bytes are encoded in bin type in msgpack.
-  * The `encoding` option is removed.  UTF-8 is used always.
+    Bytes are encoded in the bin type in MessagePack.
+  * The `encoding` option is removed. UTF-8 is always used.
 
 * Unpacker
 
-  * Unpacker uses `raw=False` by default.  It assumes str types are valid 
UTF-8 string
-    and decode them to Python str (unicode) object.
+  * Unpacker uses `raw=False` by default. It assumes str values are valid 
UTF-8 strings
+    and decodes them to Python str (Unicode) objects.
   * `encoding` option is removed.  You can use `raw=True` to support old 
format (e.g. unpack into bytes, not str).
-  * Default value of `max_buffer_size` is changed from 0 to 100 MiB to avoid 
DoS attack.
+  * The default value of `max_buffer_size` is changed from 0 to 100 MiB to 
avoid DoS attacks.
     You need to pass `max_buffer_size=0` if you have large but safe data.
-  * Default value of `strict_map_key` is changed to True to avoid hashdos.
-    You need to pass `strict_map_key=False` if you have data which contain map 
keys
-    which type is not bytes or str.
+  * The default value of `strict_map_key` is changed to True to avoid hash DoS.
+    You need to pass `strict_map_key=False` if you have data that contain map 
keys
+    whose type is neither bytes nor str.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/README.md new/msgpack-1.1.2/README.md
--- old/msgpack-1.1.1/README.md 2025-06-13 08:42:29.000000000 +0200
+++ new/msgpack-1.1.2/README.md 2025-10-08 10:59:19.000000000 +0200
@@ -3,7 +3,7 @@
 [![Build 
Status](https://github.com/msgpack/msgpack-python/actions/workflows/wheel.yml/badge.svg)](https://github.com/msgpack/msgpack-python/actions/workflows/wheel.yml)
 [![Documentation 
Status](https://readthedocs.org/projects/msgpack-python/badge/?version=latest)](https://msgpack-python.readthedocs.io/en/latest/?badge=latest)
 
-## What's this
+## What is this?
 
 [MessagePack](https://msgpack.org/) is an efficient binary serialization 
format.
 It lets you exchange data among multiple languages like JSON.
@@ -25,9 +25,9 @@
 
 ### Windows
 
-When you can't use a binary distribution, you need to install Visual Studio
-or Windows SDK on Windows.
-Without extension, using pure Python implementation on CPython runs slowly.
+If you can't use a binary distribution, you need to install Visual Studio
+or the Windows SDK on Windows.
+Without the extension, the pure Python implementation on CPython runs slowly.
 
 
 ## How to use
@@ -35,11 +35,11 @@
 ### One-shot pack & unpack
 
 Use `packb` for packing and `unpackb` for unpacking.
-msgpack provides `dumps` and `loads` as an alias for compatibility with
+msgpack provides `dumps` and `loads` as aliases for compatibility with
 `json` and `pickle`.
 
-`pack` and `dump` packs to a file-like object.
-`unpack` and `load` unpacks from a file-like object.
+`pack` and `dump` pack to a file-like object.
+`unpack` and `load` unpack from a file-like object.
 
 ```pycon
 >>> import msgpack
@@ -73,7 +73,7 @@
 ```
 
 
-### Packing/unpacking of custom data type
+### Packing/unpacking of custom data types
 
 It is also possible to pack/unpack custom data types. Here is an example for
 `datetime.datetime`.
@@ -140,8 +140,8 @@
 ### Advanced unpacking control
 
 As an alternative to iteration, `Unpacker` objects provide `unpack`,
-`skip`, `read_array_header` and `read_map_header` methods. The former two
-read an entire message from the stream, respectively de-serialising and 
returning
+`skip`, `read_array_header`, and `read_map_header` methods. The former two
+read an entire message from the stream, respectively deserializing and 
returning
 the result, or ignoring it. The latter two methods return the number of 
elements
 in the upcoming container, so that each element in an array, or key-value pair
 in a map, can be unpacked or skipped individually.
@@ -149,7 +149,7 @@
 
 ## Notes
 
-### string and binary type in old msgpack spec
+### String and binary types in the old MessagePack spec
 
 Early versions of msgpack didn't distinguish string and binary types.
 The type for representing both string and binary types was named **raw**.
@@ -167,7 +167,7 @@
 
 ### ext type
 
-To use the **ext** type, pass `msgpack.ExtType` object to packer.
+To use the **ext** type, pass a `msgpack.ExtType` object to the packer.
 
 ```pycon
 >>> import msgpack
@@ -181,26 +181,26 @@
 
 ### Security
 
-To unpacking data received from unreliable source, msgpack provides
+When unpacking data received from an unreliable source, msgpack provides
 two security options.
 
 `max_buffer_size` (default: `100*1024*1024`) limits the internal buffer size.
-It is used to limit the preallocated list size too.
+It is also used to limit preallocated list sizes.
 
 `strict_map_key` (default: `True`) limits the type of map keys to bytes and 
str.
-While msgpack spec doesn't limit the types of the map keys,
-there is a risk of the hashdos.
+While the MessagePack spec doesn't limit map key types,
+there is a risk of a hash DoS.
 If you need to support other types for map keys, use `strict_map_key=False`.
 
 
 ### Performance tips
 
-CPython's GC starts when growing allocated object.
-This means unpacking may cause useless GC.
-You can use `gc.disable()` when unpacking large message.
+CPython's GC starts when the number of allocated objects grows.
+This means unpacking may trigger unnecessary GC.
+You can use `gc.disable()` when unpacking a large message.
 
-List is the default sequence type of Python.
-But tuple is lighter than list.
+A list is the default sequence type in Python.
+However, a tuple is lighter than a list.
 You can use `use_list=False` while unpacking when performance is important.
 
 
@@ -208,7 +208,7 @@
 
 ### msgpack 0.5
 
-Package name on PyPI was changed from `msgpack-python` to `msgpack` from 0.5.
+The package name on PyPI was changed from `msgpack-python` to `msgpack` in 0.5.
 
 When upgrading from msgpack-0.4 or earlier, do `pip uninstall msgpack-python` 
before
 `pip install -U msgpack`.
@@ -218,25 +218,25 @@
 
 * Python 2 support
 
-  * The extension module does not support Python 2 anymore.
+  * The extension module no longer supports Python 2.
     The pure Python implementation (`msgpack.fallback`) is used for Python 2.
   
   * msgpack 1.0.6 drops official support of Python 2.7, as pip and
-    GitHub Action (setup-python) no longer support Python 2.7.
+    GitHub Action "setup-python" no longer supports Python 2.7.
 
 * Packer
 
   * Packer uses `use_bin_type=True` by default.
-    Bytes are encoded in bin type in msgpack.
-  * The `encoding` option is removed.  UTF-8 is used always.
+    Bytes are encoded in the bin type in MessagePack.
+  * The `encoding` option is removed. UTF-8 is always used.
 
 * Unpacker
 
-  * Unpacker uses `raw=False` by default.  It assumes str types are valid 
UTF-8 string
-    and decode them to Python str (unicode) object.
+  * Unpacker uses `raw=False` by default. It assumes str values are valid 
UTF-8 strings
+    and decodes them to Python str (Unicode) objects.
   * `encoding` option is removed.  You can use `raw=True` to support old 
format (e.g. unpack into bytes, not str).
-  * Default value of `max_buffer_size` is changed from 0 to 100 MiB to avoid 
DoS attack.
+  * The default value of `max_buffer_size` is changed from 0 to 100 MiB to 
avoid DoS attacks.
     You need to pass `max_buffer_size=0` if you have large but safe data.
-  * Default value of `strict_map_key` is changed to True to avoid hashdos.
-    You need to pass `strict_map_key=False` if you have data which contain map 
keys
-    which type is not bytes or str.
+  * The default value of `strict_map_key` is changed to True to avoid hash DoS.
+    You need to pass `strict_map_key=False` if you have data that contain map 
keys
+    whose type is neither bytes nor str.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/msgpack/__init__.py 
new/msgpack-1.1.2/msgpack/__init__.py
--- old/msgpack-1.1.1/msgpack/__init__.py       2025-06-13 08:42:29.000000000 
+0200
+++ new/msgpack-1.1.2/msgpack/__init__.py       2025-10-08 10:59:19.000000000 
+0200
@@ -4,8 +4,8 @@
 from .exceptions import *  # noqa: F403
 from .ext import ExtType, Timestamp
 
-version = (1, 1, 1)
-__version__ = "1.1.1"
+version = (1, 1, 2)
+__version__ = "1.1.2"
 
 
 if os.environ.get("MSGPACK_PUREPYTHON"):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/msgpack/_cmsgpack.c 
new/msgpack-1.1.2/msgpack/_cmsgpack.c
--- old/msgpack-1.1.1/msgpack/_cmsgpack.c       2025-06-13 08:42:33.000000000 
+0200
+++ new/msgpack-1.1.2/msgpack/_cmsgpack.c       2025-10-08 10:59:29.000000000 
+0200
@@ -1,4 +1,4 @@
-/* Generated by Cython 3.1.2 */
+/* Generated by Cython 3.1.4 */
 
 #ifndef PY_SSIZE_T_CLEAN
 #define PY_SSIZE_T_CLEAN
@@ -14,8 +14,8 @@
 #elif PY_VERSION_HEX < 0x03080000
     #error Cython requires Python 3.8+.
 #else
-#define __PYX_ABI_VERSION "3_1_2"
-#define CYTHON_HEX_VERSION 0x030102F0
+#define __PYX_ABI_VERSION "3_1_4"
+#define CYTHON_HEX_VERSION 0x030104F0
 #define CYTHON_FUTURE_DIVISION 1
 /* CModulePreamble */
 #include <stddef.h>
@@ -378,6 +378,9 @@
     enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == 
sizeof(void*)) };
   #endif
 #endif
+#ifndef CYTHON_LOCK_AND_GIL_DEADLOCK_AVOIDANCE_TIME
+  #define CYTHON_LOCK_AND_GIL_DEADLOCK_AVOIDANCE_TIME 100
+#endif
 #ifndef __has_attribute
   #define __has_attribute(x) 0
 #endif
@@ -2320,22 +2323,22 @@
 static int __Pyx_setup_reduce(PyObject* type_obj);
 
 /* TypeImport.proto */
-#ifndef __PYX_HAVE_RT_ImportType_proto_3_1_2
-#define __PYX_HAVE_RT_ImportType_proto_3_1_2
+#ifndef __PYX_HAVE_RT_ImportType_proto_3_1_4
+#define __PYX_HAVE_RT_ImportType_proto_3_1_4
 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
 #include <stdalign.h>
 #endif
 #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus 
>= 201103L
-#define __PYX_GET_STRUCT_ALIGNMENT_3_1_2(s) alignof(s)
+#define __PYX_GET_STRUCT_ALIGNMENT_3_1_4(s) alignof(s)
 #else
-#define __PYX_GET_STRUCT_ALIGNMENT_3_1_2(s) sizeof(void*)
+#define __PYX_GET_STRUCT_ALIGNMENT_3_1_4(s) sizeof(void*)
 #endif
-enum __Pyx_ImportType_CheckSize_3_1_2 {
-   __Pyx_ImportType_CheckSize_Error_3_1_2 = 0,
-   __Pyx_ImportType_CheckSize_Warn_3_1_2 = 1,
-   __Pyx_ImportType_CheckSize_Ignore_3_1_2 = 2
+enum __Pyx_ImportType_CheckSize_3_1_4 {
+   __Pyx_ImportType_CheckSize_Error_3_1_4 = 0,
+   __Pyx_ImportType_CheckSize_Warn_3_1_4 = 1,
+   __Pyx_ImportType_CheckSize_Ignore_3_1_4 = 2
 };
-static PyTypeObject *__Pyx_ImportType_3_1_2(PyObject* module, const char 
*module_name, const char *class_name, size_t size, size_t alignment, enum 
__Pyx_ImportType_CheckSize_3_1_2 check_size);
+static PyTypeObject *__Pyx_ImportType_3_1_4(PyObject* module, const char 
*module_name, const char *class_name, size_t size, size_t alignment, enum 
__Pyx_ImportType_CheckSize_3_1_4 check_size);
 #endif
 
 /* Import.proto */
@@ -2976,7 +2979,7 @@
 static const char __pyx_k_A_O1_5_AQ_1D_Q_4q_1D_6_S_Q_1[] = 
"\200A\330\010\014\210O\2301\330\010\013\2105\220\002\220!\330\014\022\220*\230A\230Q\330\010\032\230!\2301\230D\240\005\240Q\330\010\013\2104\210q\330\014\022\320\022+\2501\250D\260\003\2606\270\024\270S\300\001\330\014\020\220\003\220:\230Q\330\014\023\2201";
 static const char __pyx_k_list_hook_must_be_a_callable[] = "list_hook must be 
a callable.";
 static const char __pyx_k_A_O1_fAU_Q_1_aq_4q_1D_6_S_Q_1[] = 
"\200A\340\010\014\210O\2301\330\010\t\330\014\022\220$\220f\230A\230U\240!\340\014\020\220\003\220:\230Q\330\014\r\330\010\013\2101\330\014\022\220,\230a\230q\330\010\013\2104\210q\330\014\022\320\022+\2501\250D\260\003\2606\270\024\270S\300\001\330\014\020\220\003\220:\230Q\330\014\023\2201";
-static const char __pyx_k_7q_00A_Q_Q_A_gQ_q_aq_4q_a_4q_a[] = 
"\320\000\036\320\0367\260q\330\014 \320 
0\3200A\300\021\330\014\r\330\014-\250Q\330\014\r\330\014\r\330\014\r\330\014\r\330\014\r\360\036\000\005\033\230!\360\010\000\005\026\220Q\340\004\034\230A\340\004\007\200\220g\230Q\330\010\017\210q\340\004\030\230\001\230\030\240\021\240&\250\001\250\025\250a\250q\340\004\007\200|\2204\220q\330\010\026\220a\330\004\007\200|\2204\220q\330\010\026\220a\330\004\007\200~\220T\230\021\330\010\030\230\001\330\004\007\200|\2204\220q\330\010\026\220g\230R\230q\330\004\007\200|\2204\220q\330\010\026\220a\340\004\005\330\010\020\220\001\220\021\220%\220}\320$7\260{\300!\330\021\033\2305\240\013\320+;\2701\330\021\036\230m\250?\270-\300q\330\010\016\320\016\036\230a\230q\240\005\240U\250)\2601\260A\340\010\030\230\001\230\021\230!\340\004\007\200t\2103\210a\330\010\016\210k\230\021\230!\2301\330\010\013\2104\210r\220\021\330\014\022\220)\2301\230E\320!:\270!\2703\270a\270u\300G\3101\310A\33
 
0\010\017\210q\330\004\020\220\001\220\021\220!\330\004\007\200t\2103\210a\330\010\016\210j\230\001\230\021\330\t\r\210T\220\021\330\010\016\210a\330\t\r\210T\220\021\330\010\016\210a\330\004\n\210*\220A\320\0254\260A";
+static const char __pyx_k_7q_00A_Q_Q_A_gQ_q_aq_4q_a_4q_a[] = 
"\320\000\036\320\0367\260q\330\014 \320 
0\3200A\300\021\330\014\r\330\014-\250Q\330\014\r\330\014\r\330\014\r\330\014\r\330\014\r\360\036\000\005\033\230!\360\010\000\005\026\220Q\340\004\034\230A\340\004\007\200\177\220g\230Q\330\010\017\210q\340\004\030\230\001\230\030\240\021\240&\250\001\250\025\250a\250q\340\004\007\200|\2204\220q\330\010\026\220a\330\004\007\200|\2204\220q\330\010\026\220a\330\004\007\200~\220T\230\021\330\010\030\230\001\330\004\007\200|\2204\220q\330\010\026\220g\230R\230q\330\004\007\200|\2204\220q\330\010\026\220a\340\004\005\330\010\020\220\001\220\021\220%\220}\320$7\260{\300!\330\021\033\2305\240\013\320+;\2701\330\021\036\230m\250?\270-\300q\330\010\016\320\016\036\230a\230q\240\005\240U\250)\2601\260A\340\010\030\230\001\230\021\230!\340\004\007\200t\2103\210a\330\010\016\210k\230\021\230!\2301\330\010\013\2104\210r\220\021\330\014\022\220)\2301\230E\320!:\270!\2703\270a\270u\300G\3101\310A
 
\330\010\017\210q\330\004\020\220\001\220\021\220!\330\004\007\200t\2103\210a\330\010\016\210j\230\001\230\021\330\t\r\210T\220\021\330\010\016\210a\330\t\r\210T\220\021\330\010\016\210a\330\004\n\210*\220A\320\0254\260A";
 static const char __pyx_k_Unpack_failed_incomplete_input[] = "Unpack failed: 
incomplete input";
 static const char __pyx_k_object_hook_must_be_a_callable[] = "object_hook must 
be a callable.";
 static const char __pyx_k_Existing_exports_of_data_Packer[] = "Existing 
exports of data: Packer cannot be changed";
@@ -16336,87 +16339,87 @@
   /*--- Type import code ---*/
   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if 
(unlikely(!__pyx_t_1)) __PYX_ERR(6, 9, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_mstate->__pyx_ptype_7cpython_4type_type = 
__Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
+  __pyx_mstate->__pyx_ptype_7cpython_4type_type = 
__Pyx_ImportType_3_1_4(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyTypeObject),
+  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyTypeObject),
   #elif CYTHON_COMPILING_IN_LIMITED_API
   0, 0,
   #else
-  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyHeapTypeObject),
+  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyHeapTypeObject),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(6, 9, __pyx_L1_error)
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(6, 9, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if 
(unlikely(!__pyx_t_1)) __PYX_ERR(7, 8, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_mstate->__pyx_ptype_7cpython_4bool_bool = 
__Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool",
+  __pyx_mstate->__pyx_ptype_7cpython_4bool_bool = 
__Pyx_ImportType_3_1_4(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyLongObject),
+  sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyLongObject),
   #elif CYTHON_COMPILING_IN_LIMITED_API
   0, 0,
   #else
-  sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyLongObject),
+  sizeof(PyLongObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyLongObject),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(7, 8, __pyx_L1_error)
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(7, 8, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if 
(unlikely(!__pyx_t_1)) __PYX_ERR(8, 16, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_mstate->__pyx_ptype_7cpython_7complex_complex = 
__Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex",
+  __pyx_mstate->__pyx_ptype_7cpython_7complex_complex = 
__Pyx_ImportType_3_1_4(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyComplexObject),
+  sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyComplexObject),
   #elif CYTHON_COMPILING_IN_LIMITED_API
   0, 0,
   #else
-  sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyComplexObject),
+  sizeof(PyComplexObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyComplexObject),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(8, 16, 
__pyx_L1_error)
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(8, 16, 
__pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = PyImport_ImportModule("datetime"); if (unlikely(!__pyx_t_1)) 
__PYX_ERR(3, 43, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_mstate->__pyx_ptype_7cpython_8datetime_date = 
__Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "date",
+  __pyx_mstate->__pyx_ptype_7cpython_8datetime_date = 
__Pyx_ImportType_3_1_4(__pyx_t_1, "datetime", "date",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Date),
+  sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Date),
   #elif CYTHON_COMPILING_IN_LIMITED_API
-  sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Date),
+  sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Date),
   #else
-  sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Date),
+  sizeof(PyDateTime_Date), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Date),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_date) __PYX_ERR(3, 43, 
__pyx_L1_error)
-  __pyx_mstate->__pyx_ptype_7cpython_8datetime_time = 
__Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "time",
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_date) __PYX_ERR(3, 43, 
__pyx_L1_error)
+  __pyx_mstate->__pyx_ptype_7cpython_8datetime_time = 
__Pyx_ImportType_3_1_4(__pyx_t_1, "datetime", "time",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Time),
+  sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Time),
   #elif CYTHON_COMPILING_IN_LIMITED_API
-  sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Time),
+  sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Time),
   #else
-  sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Time),
+  sizeof(PyDateTime_Time), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Time),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_time) __PYX_ERR(3, 56, 
__pyx_L1_error)
-  __pyx_mstate->__pyx_ptype_7cpython_8datetime_datetime = 
__Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "datetime",
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_time) __PYX_ERR(3, 56, 
__pyx_L1_error)
+  __pyx_mstate->__pyx_ptype_7cpython_8datetime_datetime = 
__Pyx_ImportType_3_1_4(__pyx_t_1, "datetime", "datetime",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyDateTime_DateTime), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_DateTime),
+  sizeof(PyDateTime_DateTime), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_DateTime),
   #elif CYTHON_COMPILING_IN_LIMITED_API
-  sizeof(PyDateTime_DateTime), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_DateTime),
+  sizeof(PyDateTime_DateTime), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_DateTime),
   #else
-  sizeof(PyDateTime_DateTime), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_DateTime),
+  sizeof(PyDateTime_DateTime), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_DateTime),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_datetime) __PYX_ERR(3, 82, 
__pyx_L1_error)
-  __pyx_mstate->__pyx_ptype_7cpython_8datetime_timedelta = 
__Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "timedelta",
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_datetime) __PYX_ERR(3, 82, 
__pyx_L1_error)
+  __pyx_mstate->__pyx_ptype_7cpython_8datetime_timedelta = 
__Pyx_ImportType_3_1_4(__pyx_t_1, "datetime", "timedelta",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Delta),
+  sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Delta),
   #elif CYTHON_COMPILING_IN_LIMITED_API
-  sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Delta),
+  sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Delta),
   #else
-  sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_Delta),
+  sizeof(PyDateTime_Delta), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_Delta),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_timedelta) __PYX_ERR(3, 120, 
__pyx_L1_error)
-  __pyx_mstate->__pyx_ptype_7cpython_8datetime_tzinfo = 
__Pyx_ImportType_3_1_2(__pyx_t_1, "datetime", "tzinfo",
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_timedelta) __PYX_ERR(3, 120, 
__pyx_L1_error)
+  __pyx_mstate->__pyx_ptype_7cpython_8datetime_tzinfo = 
__Pyx_ImportType_3_1_4(__pyx_t_1, "datetime", "tzinfo",
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyDateTime_TZInfo), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_TZInfo),
+  sizeof(PyDateTime_TZInfo), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_TZInfo),
   #elif CYTHON_COMPILING_IN_LIMITED_API
-  sizeof(PyDateTime_TZInfo), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_TZInfo),
+  sizeof(PyDateTime_TZInfo), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_TZInfo),
   #else
-  sizeof(PyDateTime_TZInfo), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyDateTime_TZInfo),
+  sizeof(PyDateTime_TZInfo), 
__PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyDateTime_TZInfo),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_1_2); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_tzinfo) __PYX_ERR(3, 133, 
__pyx_L1_error)
+  __Pyx_ImportType_CheckSize_Warn_3_1_4); if 
(!__pyx_mstate->__pyx_ptype_7cpython_8datetime_tzinfo) __PYX_ERR(3, 133, 
__pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_RefNannyFinishContext();
   return 0;
@@ -19381,6 +19384,13 @@
 
 /* PyObjectCallMethod0 */
 static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* 
method_name) {
+#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || 
(!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))
+    PyObject *args[1] = {obj};
+    (void) __Pyx_PyObject_GetMethod;
+    (void) __Pyx_PyObject_CallOneArg;
+    (void) __Pyx_PyObject_CallNoArg;
+    return PyObject_VectorcallMethod(method_name, args, 1 | 
PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
+#else
     PyObject *method = NULL, *result = NULL;
     int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
     if (likely(is_method)) {
@@ -19393,6 +19403,7 @@
     Py_DECREF(method);
 bad:
     return result;
+#endif
 }
 
 /* RaiseNeedMoreValuesToUnpack */
@@ -20183,6 +20194,7 @@
                     changed = 1;
                 }
 #endif  // CYTHON_METH_FASTCALL
+#if !CYTHON_COMPILING_IN_PYPY
                 else if (strcmp(memb->name, "__module__") == 0) {
                     PyObject *descr;
                     assert(memb->type == T_OBJECT);
@@ -20197,11 +20209,13 @@
                     }
                     changed = 1;
                 }
+#endif  // !CYTHON_COMPILING_IN_PYPY
             }
             memb++;
         }
     }
 #endif  // !CYTHON_COMPILING_IN_LIMITED_API
+#if !CYTHON_COMPILING_IN_PYPY
     slot = spec->slots;
     while (slot && slot->slot && slot->slot != Py_tp_getset)
         slot++;
@@ -20233,6 +20247,7 @@
             ++getset;
         }
     }
+#endif  // !CYTHON_COMPILING_IN_PYPY
     if (changed)
         PyType_Modified(type);
 #endif  // PY_VERSION_HEX > 0x030900B1
@@ -20666,15 +20681,15 @@
 }
 
 /* TypeImport */
-#ifndef __PYX_HAVE_RT_ImportType_3_1_2
-#define __PYX_HAVE_RT_ImportType_3_1_2
-static PyTypeObject *__Pyx_ImportType_3_1_2(PyObject *module, const char 
*module_name, const char *class_name,
-    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_2 
check_size)
+#ifndef __PYX_HAVE_RT_ImportType_3_1_4
+#define __PYX_HAVE_RT_ImportType_3_1_4
+static PyTypeObject *__Pyx_ImportType_3_1_4(PyObject *module, const char 
*module_name, const char *class_name,
+    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_4 
check_size)
 {
     PyObject *result = 0;
     Py_ssize_t basicsize;
     Py_ssize_t itemsize;
-#if CYTHON_COMPILING_IN_LIMITED_API
+#ifdef Py_LIMITED_API
     PyObject *py_basicsize;
     PyObject *py_itemsize;
 #endif
@@ -20687,7 +20702,7 @@
             module_name, class_name);
         goto bad;
     }
-#if !CYTHON_COMPILING_IN_LIMITED_API
+#ifndef Py_LIMITED_API
     basicsize = ((PyTypeObject *)result)->tp_basicsize;
     itemsize = ((PyTypeObject *)result)->tp_itemsize;
 #else
@@ -20725,7 +20740,7 @@
             module_name, class_name, size, basicsize+itemsize);
         goto bad;
     }
-    if (check_size == __Pyx_ImportType_CheckSize_Error_3_1_2 &&
+    if (check_size == __Pyx_ImportType_CheckSize_Error_3_1_4 &&
             ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < 
size)) {
         PyErr_Format(PyExc_ValueError,
             "%.200s.%.200s size changed, may indicate binary incompatibility. "
@@ -20733,7 +20748,7 @@
             module_name, class_name, size, basicsize, basicsize+itemsize);
         goto bad;
     }
-    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_1_2 && 
(size_t)basicsize > size) {
+    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_1_4 && 
(size_t)basicsize > size) {
         if (PyErr_WarnFormat(NULL, 0,
                 "%.200s.%.200s size changed, may indicate binary 
incompatibility. "
                 "Expected %zd from C header, got %zd from PyObject",
@@ -21077,7 +21092,7 @@
 }
 
 /* CommonTypesMetaclass */
-PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, 
CYTHON_UNUSED void* context) {
+static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject 
*self, CYTHON_UNUSED void* context) {
     return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
 }
 static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = {
@@ -21106,6 +21121,7 @@
         return -1;
     }
     mstate->__pyx_CommonTypesMetaclassType = 
__Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, 
bases);
+    Py_DECREF(bases);
     if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
         return -1;
     }
@@ -24838,6 +24854,10 @@
         PyCode_NewWithPosOnlyArgs
       #endif
         (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, 
lnos, __pyx_mstate_global->__pyx_empty_bytes);
+    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1
+    if (likely(result))
+        result->_co_firsttraceable = 0;
+    #endif
     return result;
   }
 #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/msgpack.egg-info/PKG-INFO 
new/msgpack-1.1.2/msgpack.egg-info/PKG-INFO
--- old/msgpack-1.1.1/msgpack.egg-info/PKG-INFO 2025-06-13 08:50:18.000000000 
+0200
+++ new/msgpack-1.1.2/msgpack.egg-info/PKG-INFO 2025-10-08 11:03:44.000000000 
+0200
@@ -1,9 +1,9 @@
 Metadata-Version: 2.4
 Name: msgpack
-Version: 1.1.1
+Version: 1.1.2
 Summary: MessagePack serializer
 Author-email: Inada Naoki <[email protected]>
-License: Apache 2.0
+License-Expression: Apache-2.0
 Project-URL: Homepage, https://msgpack.org/
 Project-URL: Documentation, https://msgpack-python.readthedocs.io/
 Project-URL: Repository, https://github.com/msgpack/msgpack-python/
@@ -14,16 +14,9 @@
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: File Formats
 Classifier: Intended Audience :: Developers
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
-Classifier: Programming Language :: Python :: 3.12
-Classifier: Programming Language :: Python :: 3.13
-Classifier: Programming Language :: Python :: 3.14
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
-Requires-Python: >=3.8
+Requires-Python: >=3.9
 Description-Content-Type: text/markdown
 License-File: COPYING
 Dynamic: license-file
@@ -33,7 +26,7 @@
 [![Build 
Status](https://github.com/msgpack/msgpack-python/actions/workflows/wheel.yml/badge.svg)](https://github.com/msgpack/msgpack-python/actions/workflows/wheel.yml)
 [![Documentation 
Status](https://readthedocs.org/projects/msgpack-python/badge/?version=latest)](https://msgpack-python.readthedocs.io/en/latest/?badge=latest)
 
-## What's this
+## What is this?
 
 [MessagePack](https://msgpack.org/) is an efficient binary serialization 
format.
 It lets you exchange data among multiple languages like JSON.
@@ -55,9 +48,9 @@
 
 ### Windows
 
-When you can't use a binary distribution, you need to install Visual Studio
-or Windows SDK on Windows.
-Without extension, using pure Python implementation on CPython runs slowly.
+If you can't use a binary distribution, you need to install Visual Studio
+or the Windows SDK on Windows.
+Without the extension, the pure Python implementation on CPython runs slowly.
 
 
 ## How to use
@@ -65,11 +58,11 @@
 ### One-shot pack & unpack
 
 Use `packb` for packing and `unpackb` for unpacking.
-msgpack provides `dumps` and `loads` as an alias for compatibility with
+msgpack provides `dumps` and `loads` as aliases for compatibility with
 `json` and `pickle`.
 
-`pack` and `dump` packs to a file-like object.
-`unpack` and `load` unpacks from a file-like object.
+`pack` and `dump` pack to a file-like object.
+`unpack` and `load` unpack from a file-like object.
 
 ```pycon
 >>> import msgpack
@@ -103,7 +96,7 @@
 ```
 
 
-### Packing/unpacking of custom data type
+### Packing/unpacking of custom data types
 
 It is also possible to pack/unpack custom data types. Here is an example for
 `datetime.datetime`.
@@ -170,8 +163,8 @@
 ### Advanced unpacking control
 
 As an alternative to iteration, `Unpacker` objects provide `unpack`,
-`skip`, `read_array_header` and `read_map_header` methods. The former two
-read an entire message from the stream, respectively de-serialising and 
returning
+`skip`, `read_array_header`, and `read_map_header` methods. The former two
+read an entire message from the stream, respectively deserializing and 
returning
 the result, or ignoring it. The latter two methods return the number of 
elements
 in the upcoming container, so that each element in an array, or key-value pair
 in a map, can be unpacked or skipped individually.
@@ -179,7 +172,7 @@
 
 ## Notes
 
-### string and binary type in old msgpack spec
+### String and binary types in the old MessagePack spec
 
 Early versions of msgpack didn't distinguish string and binary types.
 The type for representing both string and binary types was named **raw**.
@@ -197,7 +190,7 @@
 
 ### ext type
 
-To use the **ext** type, pass `msgpack.ExtType` object to packer.
+To use the **ext** type, pass a `msgpack.ExtType` object to the packer.
 
 ```pycon
 >>> import msgpack
@@ -211,26 +204,26 @@
 
 ### Security
 
-To unpacking data received from unreliable source, msgpack provides
+When unpacking data received from an unreliable source, msgpack provides
 two security options.
 
 `max_buffer_size` (default: `100*1024*1024`) limits the internal buffer size.
-It is used to limit the preallocated list size too.
+It is also used to limit preallocated list sizes.
 
 `strict_map_key` (default: `True`) limits the type of map keys to bytes and 
str.
-While msgpack spec doesn't limit the types of the map keys,
-there is a risk of the hashdos.
+While the MessagePack spec doesn't limit map key types,
+there is a risk of a hash DoS.
 If you need to support other types for map keys, use `strict_map_key=False`.
 
 
 ### Performance tips
 
-CPython's GC starts when growing allocated object.
-This means unpacking may cause useless GC.
-You can use `gc.disable()` when unpacking large message.
+CPython's GC starts when the number of allocated objects grows.
+This means unpacking may trigger unnecessary GC.
+You can use `gc.disable()` when unpacking a large message.
 
-List is the default sequence type of Python.
-But tuple is lighter than list.
+A list is the default sequence type in Python.
+However, a tuple is lighter than a list.
 You can use `use_list=False` while unpacking when performance is important.
 
 
@@ -238,7 +231,7 @@
 
 ### msgpack 0.5
 
-Package name on PyPI was changed from `msgpack-python` to `msgpack` from 0.5.
+The package name on PyPI was changed from `msgpack-python` to `msgpack` in 0.5.
 
 When upgrading from msgpack-0.4 or earlier, do `pip uninstall msgpack-python` 
before
 `pip install -U msgpack`.
@@ -248,25 +241,25 @@
 
 * Python 2 support
 
-  * The extension module does not support Python 2 anymore.
+  * The extension module no longer supports Python 2.
     The pure Python implementation (`msgpack.fallback`) is used for Python 2.
   
   * msgpack 1.0.6 drops official support of Python 2.7, as pip and
-    GitHub Action (setup-python) no longer support Python 2.7.
+    GitHub Action "setup-python" no longer supports Python 2.7.
 
 * Packer
 
   * Packer uses `use_bin_type=True` by default.
-    Bytes are encoded in bin type in msgpack.
-  * The `encoding` option is removed.  UTF-8 is used always.
+    Bytes are encoded in the bin type in MessagePack.
+  * The `encoding` option is removed. UTF-8 is always used.
 
 * Unpacker
 
-  * Unpacker uses `raw=False` by default.  It assumes str types are valid 
UTF-8 string
-    and decode them to Python str (unicode) object.
+  * Unpacker uses `raw=False` by default. It assumes str values are valid 
UTF-8 strings
+    and decodes them to Python str (Unicode) objects.
   * `encoding` option is removed.  You can use `raw=True` to support old 
format (e.g. unpack into bytes, not str).
-  * Default value of `max_buffer_size` is changed from 0 to 100 MiB to avoid 
DoS attack.
+  * The default value of `max_buffer_size` is changed from 0 to 100 MiB to 
avoid DoS attacks.
     You need to pass `max_buffer_size=0` if you have large but safe data.
-  * Default value of `strict_map_key` is changed to True to avoid hashdos.
-    You need to pass `strict_map_key=False` if you have data which contain map 
keys
-    which type is not bytes or str.
+  * The default value of `strict_map_key` is changed to True to avoid hash DoS.
+    You need to pass `strict_map_key=False` if you have data that contain map 
keys
+    whose type is neither bytes nor str.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/pyproject.toml 
new/msgpack-1.1.2/pyproject.toml
--- old/msgpack-1.1.1/pyproject.toml    2025-06-13 08:42:29.000000000 +0200
+++ new/msgpack-1.1.2/pyproject.toml    2025-10-08 10:59:19.000000000 +0200
@@ -1,31 +1,21 @@
 [build-system]
-# 75.3.0 is the latest version supporting Python 3.8
-requires = ["setuptools >= 75.3.0"]
+requires = ["setuptools >= 80.9.0"]
 build-backend = "setuptools.build_meta"
 
 [project]
 name = "msgpack"
 dynamic = ["version"]
-# `license = "Apache-2.0"` is preferred. But keep old syntax for Python 3.8 
compatibility.
-# https://github.com/msgpack/msgpack-python/pull/637
-license = {text="Apache 2.0"}
+license = "Apache-2.0"
 authors = [{name="Inada Naoki", email="[email protected]"}]
 description = "MessagePack serializer"
 readme = "README.md"
 keywords = ["msgpack", "messagepack", "serializer", "serialization", "binary"]
-requires-python = ">=3.8"
+requires-python = ">=3.9"
 classifiers = [
     "Development Status :: 5 - Production/Stable",
     "Operating System :: OS Independent",
     "Topic :: File Formats",
     "Intended Audience :: Developers",
-    "Programming Language :: Python :: 3.8",
-    "Programming Language :: Python :: 3.9",
-    "Programming Language :: Python :: 3.10",
-    "Programming Language :: Python :: 3.11",
-    "Programming Language :: Python :: 3.12",
-    "Programming Language :: Python :: 3.13",
-    "Programming Language :: Python :: 3.14",
     "Programming Language :: Python :: Implementation :: CPython",
     "Programming Language :: Python :: Implementation :: PyPy",
 ]
@@ -46,7 +36,7 @@
 
 [tool.ruff]
 line-length = 100
-target-version = "py38"
+target-version = "py39"
 lint.select = [
     "E", # pycodestyle
     "F", # Pyflakes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/msgpack-1.1.1/test/test_buffer.py 
new/msgpack-1.1.2/test/test_buffer.py
--- old/msgpack-1.1.1/test/test_buffer.py       2025-06-13 08:42:29.000000000 
+0200
+++ new/msgpack-1.1.2/test/test_buffer.py       2025-10-08 10:59:19.000000000 
+0200
@@ -17,7 +17,7 @@
     obj = unpackb(buf, use_list=1)
     assert [b"foo", b"bar"] == obj
     expected_type = bytes
-    assert all(type(s) == expected_type for s in obj)
+    assert all(type(s) is expected_type for s in obj)
 
 
 def test_unpack_memoryview():
@@ -26,7 +26,7 @@
     obj = unpackb(view, use_list=1)
     assert [b"foo", b"bar"] == obj
     expected_type = bytes
-    assert all(type(s) == expected_type for s in obj)
+    assert all(type(s) is expected_type for s in obj)
 
 
 def test_packer_getbuffer():

Reply via email to