From f7978225ea562e128b07cae936acd7926d9e64e7 Mon Sep 17 00:00:00 2001 From: Elvis Pranskevichus Date: Fri, 21 Jul 2023 15:30:33 -0700 Subject: [PATCH] Python 3.12 compatibility (#105) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also, drop 3.6 and 3.7 as unsupported. Fixes: #104 Closes: #97 Closes: #100 Closes: #103 Co-authored-by: Petr Vaněk Co-authored-by: Anton Agestam --- a/immutables/_map.c +++ b/immutables/_map.c @@ -529,10 +529,10 @@ _map_dump_format(_PyUnicodeWriter *writer, const char *format, ...) int ret; va_list vargs; -#ifdef HAVE_STDARG_PROTOTYPES - va_start(vargs, format); -#else +#if PY_VERSION_HEX < 0x030C00A1 && !defined(HAVE_STDARG_PROTOTYPES) va_start(vargs); +#else + va_start(vargs, format); #endif msg = PyUnicode_FromFormatV(format, vargs); va_end(vargs); @@ -1247,7 +1247,7 @@ map_node_bitmap_dealloc(MapNode_Bitmap *self) Py_ssize_t i; PyObject_GC_UnTrack(self); - Py_TRASHCAN_SAFE_BEGIN(self) + Py_TRASHCAN_BEGIN(self, map_node_bitmap_dealloc) if (len > 0) { i = len; @@ -1257,7 +1257,7 @@ map_node_bitmap_dealloc(MapNode_Bitmap *self) } Py_TYPE(self)->tp_free((PyObject *)self); - Py_TRASHCAN_SAFE_END(self) + Py_TRASHCAN_END } static int @@ -1664,7 +1664,7 @@ map_node_collision_dealloc(MapNode_Collision *self) Py_ssize_t len = Py_SIZE(self); PyObject_GC_UnTrack(self); - Py_TRASHCAN_SAFE_BEGIN(self) + Py_TRASHCAN_BEGIN(self, map_node_collision_dealloc) if (len > 0) { @@ -1674,7 +1674,7 @@ map_node_collision_dealloc(MapNode_Collision *self) } Py_TYPE(self)->tp_free((PyObject *)self); - Py_TRASHCAN_SAFE_END(self) + Py_TRASHCAN_END } static int @@ -2083,14 +2083,14 @@ map_node_array_dealloc(MapNode_Array *self) Py_ssize_t i; PyObject_GC_UnTrack(self); - Py_TRASHCAN_SAFE_BEGIN(self) + Py_TRASHCAN_BEGIN(self, map_node_array_dealloc) for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) { Py_XDECREF(self->a_array[i]); } Py_TYPE(self)->tp_free((PyObject *)self); - Py_TRASHCAN_SAFE_END(self) + Py_TRASHCAN_END } static int