Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-quicktions for 
openSUSE:Factory checked in at 2024-06-17 19:33:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-quicktions (Old)
 and      /work/SRC/openSUSE:Factory/.python-quicktions.new.19518 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-quicktions"

Mon Jun 17 19:33:43 2024 rev:12 rq:1181278 version:1.18

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-quicktions/python-quicktions.changes      
2024-03-25 21:19:40.546711671 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-quicktions.new.19518/python-quicktions.changes
   2024-06-17 19:33:48.479797802 +0200
@@ -1,0 +2,8 @@
+Mon Jun 10 09:45:47 UTC 2024 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.18:
+  * New binary wheels were added built with gcc 12
+    (manylinux_2_28).
+- use PEP517/wheel build
+
+-------------------------------------------------------------------

Old:
----
  quicktions-1.17.tar.gz

New:
----
  quicktions-1.18.tar.gz

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

Other differences:
------------------
++++++ python-quicktions.spec ++++++
--- /var/tmp/diff_new_pack.ikXSyc/_old  2024-06-17 19:33:49.035818231 +0200
+++ /var/tmp/diff_new_pack.ikXSyc/_new  2024-06-17 19:33:49.039818377 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-quicktions
-Version:        1.17
+Version:        1.18
 Release:        0
 Summary:        Fast fractions data type for rational numbers
 License:        Python-2.0
@@ -26,7 +26,9 @@
 Source:         
https://files.pythonhosted.org/packages/source/q/quicktions/quicktions-%{version}.tar.gz
 BuildRequires:  %{python_module Cython >= 3}
 BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 # SECTION test requirements
@@ -54,10 +56,10 @@
 
 %build
 export CFLAGS="%{optflags}"
-%python_build
+%pyproject_wheel
 
 %install
-%python_install
+%pyproject_install
 %python_expand %fdupes %{buildroot}%{$python_sitearch}
 
 %check
@@ -67,5 +69,6 @@
 %files %{python_files}
 %doc CHANGES.rst README.rst
 %license LICENSE
-%{python_sitearch}/*
+%{python_sitearch}/quicktions.cpython-*so
+%{python_sitearch}/quicktions-%{version}.dist-info
 

++++++ quicktions-1.17.tar.gz -> quicktions-1.18.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/CHANGES.rst 
new/quicktions-1.18/CHANGES.rst
--- old/quicktions-1.17/CHANGES.rst     2024-03-24 20:22:29.000000000 +0100
+++ new/quicktions-1.18/CHANGES.rst     2024-04-03 10:30:42.000000000 +0200
@@ -1,6 +1,16 @@
 ChangeLog
 =========
 
+1.18 (2024-04-03)
+-----------------
+
+* New binary wheels were added built with gcc 12 (manylinux_2_28).
+
+* x86_64 wheels now require SSE4.2.
+
+* Built using Cython 3.0.10.
+
+
 1.17 (2024-03-24)
 -----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/PKG-INFO new/quicktions-1.18/PKG-INFO
--- old/quicktions-1.17/PKG-INFO        2024-03-24 20:22:38.246904900 +0100
+++ new/quicktions-1.18/PKG-INFO        2024-04-03 10:30:51.333240000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: quicktions
-Version: 1.17
+Version: 1.18
 Summary: Fast fractions data type for rational numbers. Cythonized version of 
'fractions.Fraction'.
 Home-page: https://github.com/scoder/quicktions
 Author: Stefan Behnel
@@ -72,6 +72,16 @@
 ChangeLog
 =========
 
+1.18 (2024-04-03)
+-----------------
+
+* New binary wheels were added built with gcc 12 (manylinux_2_28).
+
+* x86_64 wheels now require SSE4.2.
+
+* Built using Cython 3.0.10.
+
+
 1.17 (2024-03-24)
 -----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/benchmark/telco_fractions.py 
new/quicktions-1.18/benchmark/telco_fractions.py
--- old/quicktions-1.17/benchmark/telco_fractions.py    2024-03-24 
20:22:29.000000000 +0100
+++ new/quicktions-1.18/benchmark/telco_fractions.py    2024-04-03 
10:30:42.000000000 +0200
@@ -104,18 +104,20 @@
 def main(n, cls=Fraction):
     for _ in range(5):
         run(cls)  # warmup
-    times = []
-    for _ in range(n):
-        times.append(run(cls))
+    times = [run(cls) for _ in range(n)]
     return times
 
 
+def percentile(values, percent):
+    return values[len(values) * percent // 100]
+
+
 if __name__ == "__main__":
     import optparse
     parser = optparse.OptionParser(
         usage="%prog [options]",
         description="Test the performance of the Telco fractions benchmark")
-    parser.add_option("-n", "--num_runs", action="store", type="int", 
default=16,
+    parser.add_option("-n", "--num_runs", action="store", type="int", 
default=200,
                       dest="num_runs", help="Number of times to repeat the 
benchmark.")
     parser.add_option("--use-decimal", action="store_true", default=False,
                       dest="use_decimal", help="Run benchmark with Decimal 
instead of Fraction.")
@@ -130,10 +132,12 @@
         from fractions import Fraction as num_class
 
     results = main(options.num_runs, num_class)
-    for result in results:
-        print(result)
+    #for result in results:
+    #    print(result)
+    #print()
 
-    print()
     results.sort()
+    print('%.4f  (15%%)' % percentile(results, 15))
+    print('%.4f  (median)' % percentile(results, 50))
+    print('%.4f  (85%%)' % percentile(results, 85))
     print('%.4f  (mean)' % (fsum(results[1:-1]) / (len(results) - 2)))
-    print('%.4f  (median)' % (results[len(results) // 2]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/pyproject.toml 
new/quicktions-1.18/pyproject.toml
--- old/quicktions-1.17/pyproject.toml  2024-03-24 20:22:29.000000000 +0100
+++ new/quicktions-1.18/pyproject.toml  2024-04-03 10:30:42.000000000 +0200
@@ -1,5 +1,5 @@
 [build-system]
-requires = ["Cython>=3.0.8", "setuptools", "wheel"]
+requires = ["Cython>=3.0.10", "setuptools", "wheel"]
 
 [tool.cibuildwheel]
 build-verbosity = 2
@@ -11,14 +11,25 @@
 repair-wheel-command = "auditwheel repair --strip -w {dest_dir} {wheel}"
 
 [tool.cibuildwheel.linux.environment]
-CFLAGS = "-O3 -g1 -pipe -fPIC -march=core2"
+CFLAGS = "-O3 -g1 -pipe -fPIC"
 AR = "gcc-ar"
 NM = "gcc-nm"
 RANLIB = "gcc-ranlib"
 
 [[tool.cibuildwheel.overrides]]
+select = "*linux_i686"
+inherit.environment = "append"
+environment.CFLAGS = "-O3 -g1 -pipe -fPIC -march=core2 -mtune=generic"
+
+[[tool.cibuildwheel.overrides]]
+select = "*linux_x86_64"
+inherit.environment = "append"
+environment.CFLAGS = "-O3 -g1 -pipe -fPIC -march=core2 -msse4.1 -msse4.2 
-mtune=generic"
+
+[[tool.cibuildwheel.overrides]]
 select = "*aarch64"
-environment = {CFLAGS = "-O3 -g1 -pipe -fPIC -march=armv8-a 
-mtune=cortex-a72", AR = "gcc-ar", NM = "gcc-nm", RANLIB = "gcc-ranlib" }
+inherit.environment = "append"
+environment.CFLAGS = "-O3 -g1 -pipe -fPIC -march=armv8-a -mtune=cortex-a72"
 
 [tool.cibuildwheel.windows]
 archs = ["AMD64", "x86"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/requirements.txt 
new/quicktions-1.18/requirements.txt
--- old/quicktions-1.17/requirements.txt        2024-03-24 20:22:29.000000000 
+0100
+++ new/quicktions-1.18/requirements.txt        2024-04-03 10:30:42.000000000 
+0200
@@ -1,6 +1,6 @@
 tox
 pytest
 coverage
-Cython>=3.0.8
+Cython>=3.0.10
 codecov
 wheel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/src/quicktions.c 
new/quicktions-1.18/src/quicktions.c
--- old/quicktions-1.17/src/quicktions.c        2024-03-24 20:22:38.000000000 
+0100
+++ new/quicktions-1.18/src/quicktions.c        2024-04-03 10:30:51.000000000 
+0200
@@ -1,4 +1,4 @@
-/* Generated by Cython 3.0.9 */
+/* Generated by Cython 3.0.10 */
 
 /* BEGIN: Cython Metadata
 {
@@ -37,10 +37,10 @@
 #else
 #define __PYX_EXTRA_ABI_MODULE_NAME ""
 #endif
-#define CYTHON_ABI "3_0_9" __PYX_EXTRA_ABI_MODULE_NAME
+#define CYTHON_ABI "3_0_10" __PYX_EXTRA_ABI_MODULE_NAME
 #define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
 #define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
-#define CYTHON_HEX_VERSION 0x030009F0
+#define CYTHON_HEX_VERSION 0x03000AF0
 #define CYTHON_FUTURE_DIVISION 1
 #include <stddef.h>
 #ifndef offsetof
@@ -132,6 +132,8 @@
   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
   #endif
+  #undef CYTHON_USE_FREELISTS
+  #define CYTHON_USE_FREELISTS 0
 #elif defined(PYPY_VERSION)
   #define CYTHON_COMPILING_IN_PYPY 1
   #define CYTHON_COMPILING_IN_CPYTHON 0
@@ -193,6 +195,8 @@
   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
   #endif
+  #undef CYTHON_USE_FREELISTS
+  #define CYTHON_USE_FREELISTS 0
 #elif defined(CYTHON_LIMITED_API)
   #ifdef Py_LIMITED_API
     #undef __PYX_LIMITED_VERSION_HEX
@@ -254,6 +258,8 @@
   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
   #endif
+  #undef CYTHON_USE_FREELISTS
+  #define CYTHON_USE_FREELISTS 0
 #elif defined(Py_GIL_DISABLED) || defined(Py_NOGIL)
   #define CYTHON_COMPILING_IN_PYPY 0
   #define CYTHON_COMPILING_IN_CPYTHON 0
@@ -263,11 +269,17 @@
   #ifndef CYTHON_USE_TYPE_SLOTS
     #define CYTHON_USE_TYPE_SLOTS 1
   #endif
+  #ifndef CYTHON_USE_TYPE_SPECS
+    #define CYTHON_USE_TYPE_SPECS 0
+  #endif
   #undef CYTHON_USE_PYTYPE_LOOKUP
   #define CYTHON_USE_PYTYPE_LOOKUP 0
   #ifndef CYTHON_USE_ASYNC_SLOTS
     #define CYTHON_USE_ASYNC_SLOTS 1
   #endif
+  #ifndef CYTHON_USE_PYLONG_INTERNALS
+    #define CYTHON_USE_PYLONG_INTERNALS 0
+  #endif
   #undef CYTHON_USE_PYLIST_INTERNALS
   #define CYTHON_USE_PYLIST_INTERNALS 0
   #ifndef CYTHON_USE_UNICODE_INTERNALS
@@ -275,8 +287,6 @@
   #endif
   #undef CYTHON_USE_UNICODE_WRITER
   #define CYTHON_USE_UNICODE_WRITER 0
-  #undef CYTHON_USE_PYLONG_INTERNALS
-  #define CYTHON_USE_PYLONG_INTERNALS 0
   #ifndef CYTHON_AVOID_BORROWED_REFS
     #define CYTHON_AVOID_BORROWED_REFS 0
   #endif
@@ -288,11 +298,22 @@
   #endif
   #undef CYTHON_FAST_THREAD_STATE
   #define CYTHON_FAST_THREAD_STATE 0
+  #undef CYTHON_FAST_GIL
+  #define CYTHON_FAST_GIL 0
+  #ifndef CYTHON_METH_FASTCALL
+    #define CYTHON_METH_FASTCALL 1
+  #endif
   #undef CYTHON_FAST_PYCALL
   #define CYTHON_FAST_PYCALL 0
+  #ifndef CYTHON_PEP487_INIT_SUBCLASS
+    #define CYTHON_PEP487_INIT_SUBCLASS 1
+  #endif
   #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
     #define CYTHON_PEP489_MULTI_PHASE_INIT 1
   #endif
+  #ifndef CYTHON_USE_MODULE_STATE
+    #define CYTHON_USE_MODULE_STATE 0
+  #endif
   #ifndef CYTHON_USE_TP_FINALIZE
     #define CYTHON_USE_TP_FINALIZE 1
   #endif
@@ -300,6 +321,12 @@
   #define CYTHON_USE_DICT_VERSIONS 0
   #undef CYTHON_USE_EXC_INFO_STACK
   #define CYTHON_USE_EXC_INFO_STACK 0
+  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
+  #endif
+  #ifndef CYTHON_USE_FREELISTS
+    #define CYTHON_USE_FREELISTS 0
+  #endif
 #else
   #define CYTHON_COMPILING_IN_PYPY 0
   #define CYTHON_COMPILING_IN_CPYTHON 1
@@ -390,6 +417,9 @@
   #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
     #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
   #endif
+  #ifndef CYTHON_USE_FREELISTS
+    #define CYTHON_USE_FREELISTS 1
+  #endif
 #endif
 #if !defined(CYTHON_FAST_PYCCALL)
 #define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 
0x030600B1)
@@ -2493,22 +2523,22 @@
 #endif
 
 /* TypeImport.proto */
-#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_9
-#define __PYX_HAVE_RT_ImportType_proto_3_0_9
+#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_10
+#define __PYX_HAVE_RT_ImportType_proto_3_0_10
 #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_0_9(s) alignof(s)
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_10(s) alignof(s)
 #else
-#define __PYX_GET_STRUCT_ALIGNMENT_3_0_9(s) sizeof(void*)
+#define __PYX_GET_STRUCT_ALIGNMENT_3_0_10(s) sizeof(void*)
 #endif
-enum __Pyx_ImportType_CheckSize_3_0_9 {
-   __Pyx_ImportType_CheckSize_Error_3_0_9 = 0,
-   __Pyx_ImportType_CheckSize_Warn_3_0_9 = 1,
-   __Pyx_ImportType_CheckSize_Ignore_3_0_9 = 2
+enum __Pyx_ImportType_CheckSize_3_0_10 {
+   __Pyx_ImportType_CheckSize_Error_3_0_10 = 0,
+   __Pyx_ImportType_CheckSize_Warn_3_0_10 = 1,
+   __Pyx_ImportType_CheckSize_Ignore_3_0_10 = 2
 };
-static PyTypeObject *__Pyx_ImportType_3_0_9(PyObject* module, const char 
*module_name, const char *class_name, size_t size, size_t alignment, enum 
__Pyx_ImportType_CheckSize_3_0_9 check_size);
+static PyTypeObject *__Pyx_ImportType_3_0_10(PyObject* module, const char 
*module_name, const char *class_name, size_t size, size_t alignment, enum 
__Pyx_ImportType_CheckSize_3_0_10 check_size);
 #endif
 
 /* Import.proto */
@@ -3016,7 +3046,7 @@
 static const char __pyx_k_sub[] = "sub";
 static const char __pyx_k_sys[] = "sys";
 static const char __pyx_k_u_2[] = "u'";
-static const char __pyx_k_1_17[] = "1.17";
+static const char __pyx_k_1_18[] = "1.18";
 static const char __pyx_k_Real[] = "Real";
 static const char __pyx_k_ceil[] = "__ceil__";
 static const char __pyx_k_copy[] = "__copy__";
@@ -3266,7 +3296,7 @@
   PyObject *__pyx_kp_u_0;
   PyObject *__pyx_kp_s_0_2;
   PyObject *__pyx_kp_u_0_2;
-  PyObject *__pyx_kp_s_1_17;
+  PyObject *__pyx_kp_s_1_18;
   PyObject *__pyx_kp_s_6;
   PyObject *__pyx_n_s_AttributeError;
   PyObject *__pyx_kp_u_Cannot_convert;
@@ -3551,7 +3581,7 @@
   Py_CLEAR(clear_module_state->__pyx_kp_u_0);
   Py_CLEAR(clear_module_state->__pyx_kp_s_0_2);
   Py_CLEAR(clear_module_state->__pyx_kp_u_0_2);
-  Py_CLEAR(clear_module_state->__pyx_kp_s_1_17);
+  Py_CLEAR(clear_module_state->__pyx_kp_s_1_18);
   Py_CLEAR(clear_module_state->__pyx_kp_s_6);
   Py_CLEAR(clear_module_state->__pyx_n_s_AttributeError);
   Py_CLEAR(clear_module_state->__pyx_kp_u_Cannot_convert);
@@ -3814,7 +3844,7 @@
   Py_VISIT(traverse_module_state->__pyx_kp_u_0);
   Py_VISIT(traverse_module_state->__pyx_kp_s_0_2);
   Py_VISIT(traverse_module_state->__pyx_kp_u_0_2);
-  Py_VISIT(traverse_module_state->__pyx_kp_s_1_17);
+  Py_VISIT(traverse_module_state->__pyx_kp_s_1_18);
   Py_VISIT(traverse_module_state->__pyx_kp_s_6);
   Py_VISIT(traverse_module_state->__pyx_n_s_AttributeError);
   Py_VISIT(traverse_module_state->__pyx_kp_u_Cannot_convert);
@@ -4109,7 +4139,7 @@
 #define __pyx_kp_u_0 __pyx_mstate_global->__pyx_kp_u_0
 #define __pyx_kp_s_0_2 __pyx_mstate_global->__pyx_kp_s_0_2
 #define __pyx_kp_u_0_2 __pyx_mstate_global->__pyx_kp_u_0_2
-#define __pyx_kp_s_1_17 __pyx_mstate_global->__pyx_kp_s_1_17
+#define __pyx_kp_s_1_18 __pyx_mstate_global->__pyx_kp_s_1_18
 #define __pyx_kp_s_6 __pyx_mstate_global->__pyx_kp_s_6
 #define __pyx_n_s_AttributeError __pyx_mstate_global->__pyx_n_s_AttributeError
 #define __pyx_kp_u_Cannot_convert 
__pyx_mstate_global->__pyx_kp_u_Cannot_convert
@@ -13797,10 +13827,7 @@
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     }
     if (!(likely(PyDict_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || 
__Pyx_RaiseUnexpectedTypeError("dict", __pyx_t_1))) __PYX_ERR(0, 844, 
__pyx_L1_error)
-#pragma GCC diagnostic push
-    #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
     __pyx_t_2 = __pyx_f_10quicktions_8Fraction__format_general(__pyx_v_self, 
((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, 
__pyx_L1_error)
-    #pragma GCC diagnostic pop
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_r = __pyx_t_2;
@@ -13919,10 +13946,7 @@
  */
       __Pyx_XDECREF(__pyx_r);
       if 
(!(likely(PyDict_CheckExact(__pyx_v_match_groups))||((__pyx_v_match_groups) == 
Py_None) || __Pyx_RaiseUnexpectedTypeError("dict", __pyx_v_match_groups))) 
__PYX_ERR(0, 851, __pyx_L1_error)
-#pragma GCC diagnostic push
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_2 = 
__pyx_f_10quicktions_8Fraction__format_float_style(__pyx_v_self, 
((PyObject*)__pyx_v_match_groups)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 851, 
__pyx_L1_error)
-      #pragma GCC diagnostic pop
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -17938,10 +17962,7 @@
  *                 result = (<Fraction>a)._eq(b)
  */
       __Pyx_XDECREF(__pyx_r);
-#pragma GCC diagnostic push
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_2 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b); if 
(unlikely(!__pyx_t_2)) __PYX_ERR(0, 1135, __pyx_L1_error)
-      #pragma GCC diagnostic pop
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -17973,10 +17994,7 @@
  *                 return NotImplemented if result is NotImplemented else not 
result
  *         else:
  */
-#pragma GCC diagnostic push
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_2 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b); if 
(unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, __pyx_L1_error)
-      #pragma GCC diagnostic pop
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_v_result = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -18059,10 +18077,7 @@
  *                 result = (<Fraction>a)._eq(b)
  */
       __Pyx_XDECREF(__pyx_r);
-#pragma GCC diagnostic push
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_4 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b); if 
(unlikely(!__pyx_t_4)) __PYX_ERR(0, 1142, __pyx_L1_error)
-      #pragma GCC diagnostic pop
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_r = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -18094,10 +18109,7 @@
  *                 return NotImplemented if result is NotImplemented else not 
result
  *             elif op == Py_LT:
  */
-#pragma GCC diagnostic push
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_4 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b); if 
(unlikely(!__pyx_t_4)) __PYX_ERR(0, 1144, __pyx_L1_error)
-      #pragma GCC diagnostic pop
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_result = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -18275,10 +18287,7 @@
  *     @cython.final
  */
   __Pyx_XDECREF(__pyx_r);
-#pragma GCC diagnostic push
-  #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
   __pyx_t_4 = __pyx_f_10quicktions_8Fraction__richcmp(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b, __pyx_v_op); if 
(unlikely(!__pyx_t_4)) __PYX_ERR(0, 1156, __pyx_L1_error)
-  #pragma GCC diagnostic pop
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
@@ -18988,10 +18997,7 @@
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       }
-#pragma GCC diagnostic push
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_3 = __pyx_f_10quicktions_8Fraction__richcmp(__pyx_v_self, 
__pyx_t_4, __pyx_v_op); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1201, 
__pyx_L1_error)
-      #pragma GCC diagnostic pop
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_r = __pyx_t_3;
@@ -32133,7 +32139,7 @@
     {&__pyx_kp_u_0, __pyx_k_0, sizeof(__pyx_k_0), 0, 1, 0, 0},
     {&__pyx_kp_s_0_2, __pyx_k_0_2, sizeof(__pyx_k_0_2), 0, 0, 1, 0},
     {&__pyx_kp_u_0_2, __pyx_k_0_2, sizeof(__pyx_k_0_2), 0, 1, 0, 0},
-    {&__pyx_kp_s_1_17, __pyx_k_1_17, sizeof(__pyx_k_1_17), 0, 0, 1, 0},
+    {&__pyx_kp_s_1_18, __pyx_k_1_18, sizeof(__pyx_k_1_18), 0, 0, 1, 0},
     {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
     {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, 
sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
     {&__pyx_kp_u_Cannot_convert, __pyx_k_Cannot_convert, 
sizeof(__pyx_k_Cannot_convert), 0, 1, 0, 0},
@@ -33005,15 +33011,15 @@
   /*--- Type import code ---*/
   __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if 
(unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_9(__pyx_t_1, 
__Pyx_BUILTIN_MODULE_NAME, "type", 
+  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_10(__pyx_t_1, 
__Pyx_BUILTIN_MODULE_NAME, "type", 
   #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
-  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_9(PyTypeObject),
+  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_10(PyTypeObject),
   #elif CYTHON_COMPILING_IN_LIMITED_API
-  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_9(PyTypeObject),
+  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_10(PyTypeObject),
   #else
-  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_9(PyHeapTypeObject),
+  sizeof(PyHeapTypeObject), 
__PYX_GET_STRUCT_ALIGNMENT_3_0_10(PyHeapTypeObject),
   #endif
-  __Pyx_ImportType_CheckSize_Warn_3_0_9); if 
(!__pyx_ptype_7cpython_4type_type) __PYX_ERR(1, 9, __pyx_L1_error)
+  __Pyx_ImportType_CheckSize_Warn_3_0_10); if 
(!__pyx_ptype_7cpython_4type_type) __PYX_ERR(1, 9, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_RefNannyFinishContext();
   return 0;
@@ -33332,7 +33338,7 @@
  * 
  * __all__ = ['Fraction']             # <<<<<<<<<<<<<<
  * 
- * __version__ = '1.17'
+ * __version__ = '1.18'
  */
   __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 26, 
__pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -33345,11 +33351,11 @@
   /* "quicktions.pyx":28
  * __all__ = ['Fraction']
  * 
- * __version__ = '1.17'             # <<<<<<<<<<<<<<
+ * __version__ = '1.18'             # <<<<<<<<<<<<<<
  * 
  * cimport cython
  */
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_1_17) < 0) 
__PYX_ERR(0, 28, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_kp_s_1_18) < 0) 
__PYX_ERR(0, 28, __pyx_L1_error)
 
   /* "quicktions.pyx":42
  * 
@@ -38231,10 +38237,10 @@
 #endif
 
 /* TypeImport */
-#ifndef __PYX_HAVE_RT_ImportType_3_0_9
-#define __PYX_HAVE_RT_ImportType_3_0_9
-static PyTypeObject *__Pyx_ImportType_3_0_9(PyObject *module, const char 
*module_name, const char *class_name,
-    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_9 
check_size)
+#ifndef __PYX_HAVE_RT_ImportType_3_0_10
+#define __PYX_HAVE_RT_ImportType_3_0_10
+static PyTypeObject *__Pyx_ImportType_3_0_10(PyObject *module, const char 
*module_name, const char *class_name,
+    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_10 
check_size)
 {
     PyObject *result = 0;
     char warning[200];
@@ -38288,7 +38294,7 @@
             module_name, class_name, size, basicsize+itemsize);
         goto bad;
     }
-    if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_9 &&
+    if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_10 &&
             ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < 
size)) {
         PyErr_Format(PyExc_ValueError,
             "%.200s.%.200s size changed, may indicate binary incompatibility. "
@@ -38296,7 +38302,7 @@
             module_name, class_name, size, basicsize, basicsize+itemsize);
         goto bad;
     }
-    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_9 && 
(size_t)basicsize > size) {
+    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_10 && 
(size_t)basicsize > size) {
         PyOS_snprintf(warning, sizeof(warning),
             "%s.%s size changed, may indicate binary incompatibility. "
             "Expected %zd from C header, got %zd from PyObject",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/src/quicktions.egg-info/PKG-INFO 
new/quicktions-1.18/src/quicktions.egg-info/PKG-INFO
--- old/quicktions-1.17/src/quicktions.egg-info/PKG-INFO        2024-03-24 
20:22:38.000000000 +0100
+++ new/quicktions-1.18/src/quicktions.egg-info/PKG-INFO        2024-04-03 
10:30:51.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: quicktions
-Version: 1.17
+Version: 1.18
 Summary: Fast fractions data type for rational numbers. Cythonized version of 
'fractions.Fraction'.
 Home-page: https://github.com/scoder/quicktions
 Author: Stefan Behnel
@@ -72,6 +72,16 @@
 ChangeLog
 =========
 
+1.18 (2024-04-03)
+-----------------
+
+* New binary wheels were added built with gcc 12 (manylinux_2_28).
+
+* x86_64 wheels now require SSE4.2.
+
+* Built using Cython 3.0.10.
+
+
 1.17 (2024-03-24)
 -----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/src/quicktions.html 
new/quicktions-1.18/src/quicktions.html
--- old/quicktions-1.17/src/quicktions.html     2024-03-24 20:22:38.000000000 
+0100
+++ new/quicktions-1.18/src/quicktions.html     2024-04-03 10:30:51.000000000 
+0200
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<!-- Generated by Cython 3.0.9 -->
+<!-- Generated by Cython 3.0.10 -->
 <html>
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
@@ -289,7 +289,7 @@
     </style>
 </head>
 <body class="cython">
-<p><span style="border-bottom: solid 1px grey;">Generated by Cython 
3.0.9</span></p>
+<p><span style="border-bottom: solid 1px grey;">Generated by Cython 
3.0.10</span></p>
 <p>
     <span style="background-color: #FFFF00">Yellow lines</span> hint at Python 
interaction.<br />
     Click on a line that starts with a "<code>+</code>" to see the C code that 
Cython generated for it.
@@ -334,8 +334,8 @@
   if (<span class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_all, 
__pyx_t_2) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 26, 
__pyx_L1_error)</span>
   <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 0;
 </pre><pre class="cython line score-0">&#xA0;<span class="">0027</span>: </pre>
-<pre class="cython line score-5" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">0028</span>: __version__ = '1.17'</pre>
-<pre class='cython code score-5 '>  if (<span 
class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_version, 
__pyx_kp_s_1_17) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 28, 
__pyx_L1_error)</span>
+<pre class="cython line score-5" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">0028</span>: __version__ = '1.18'</pre>
+<pre class='cython code score-5 '>  if (<span 
class='py_c_api'>PyDict_SetItem</span>(__pyx_d, __pyx_n_s_version, 
__pyx_kp_s_1_18) &lt; 0) <span class='error_goto'>__PYX_ERR(0, 28, 
__pyx_L1_error)</span>
 </pre><pre class="cython line score-0">&#xA0;<span class="">0029</span>: </pre>
 <pre class="cython line score-0">&#xA0;<span class="">0030</span>: cimport 
cython</pre>
 <pre class="cython line score-0">&#xA0;<span class="">0031</span>: from 
cpython.unicode cimport Py_UNICODE_TODECIMAL</pre>
@@ -6651,9 +6651,7 @@
       <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_2); __pyx_t_2 = 
0;
     }
     if (!(likely(<span 
class='py_c_api'>PyDict_CheckExact</span>(__pyx_t_1))||((__pyx_t_1) == Py_None) 
|| <span class='pyx_c_api'>__Pyx_RaiseUnexpectedTypeError</span>("dict", 
__pyx_t_1))) <span class='error_goto'>__PYX_ERR(0, 844, __pyx_L1_error)</span>
-    #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
     __pyx_t_2 = __pyx_f_10quicktions_8Fraction__format_general(__pyx_v_self, 
((PyObject*)__pyx_t_1));<span class='error_goto'> if (unlikely(!__pyx_t_2)) 
__PYX_ERR(0, 844, __pyx_L1_error)</span>
-    #pragma GCC diagnostic pop
     <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
     <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_r = __pyx_t_2;
@@ -6742,9 +6740,7 @@
 </pre><pre class="cython line score-8" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">0851</span>:                 return 
self._format_float_style(match_groups)</pre>
 <pre class='cython code score-8 '>      <span 
class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
       if (!(likely(<span 
class='py_c_api'>PyDict_CheckExact</span>(__pyx_v_match_groups))||((__pyx_v_match_groups)
 == Py_None) || <span 
class='pyx_c_api'>__Pyx_RaiseUnexpectedTypeError</span>("dict", 
__pyx_v_match_groups))) <span class='error_goto'>__PYX_ERR(0, 851, 
__pyx_L1_error)</span>
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_2 = 
__pyx_f_10quicktions_8Fraction__format_float_style(__pyx_v_self, 
((PyObject*)__pyx_v_match_groups));<span class='error_goto'> if 
(unlikely(!__pyx_t_2)) __PYX_ERR(0, 851, __pyx_L1_error)</span>
-      #pragma GCC diagnostic pop
       <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -9325,9 +9321,7 @@
     }
 </pre><pre class="cython line score-1" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">1135</span>:                 return (&lt;Fraction&gt;a)._eq(b)</pre>
 <pre class='cython code score-1 '>      <span 
class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_2 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b);<span 
class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1135, 
__pyx_L1_error)</span>
-      #pragma GCC diagnostic pop
       <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -9338,9 +9332,7 @@
 /* … */
     }
 </pre><pre class="cython line score-0" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">1137</span>:                 result = (&lt;Fraction&gt;a)._eq(b)</pre>
-<pre class='cython code score-0 '>      #pragma GCC diagnostic ignored 
"-Wincompatible-pointer-types"
-      __pyx_t_2 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b);<span 
class='error_goto'> if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1137, 
__pyx_L1_error)</span>
-      #pragma GCC diagnostic pop
+<pre class='cython code score-0 '>      __pyx_t_2 = 
__pyx_f_10quicktions_8Fraction__eq(((struct __pyx_obj_10quicktions_Fraction 
*)__pyx_v_a), __pyx_v_b);<span class='error_goto'> if (unlikely(!__pyx_t_2)) 
__PYX_ERR(0, 1137, __pyx_L1_error)</span>
       <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_2);
       __pyx_v_result = __pyx_t_2;
       __pyx_t_2 = 0;
@@ -9379,9 +9371,7 @@
     }
 </pre><pre class="cython line score-1" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">1142</span>:                 return (&lt;Fraction&gt;a)._eq(b)</pre>
 <pre class='cython code score-1 '>      <span 
class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_4 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b);<span 
class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1142, 
__pyx_L1_error)</span>
-      #pragma GCC diagnostic pop
       <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
       __pyx_r = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -9392,9 +9382,7 @@
 /* … */
     }
 </pre><pre class="cython line score-0" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">1144</span>:                 result = (&lt;Fraction&gt;a)._eq(b)</pre>
-<pre class='cython code score-0 '>      #pragma GCC diagnostic ignored 
"-Wincompatible-pointer-types"
-      __pyx_t_4 = __pyx_f_10quicktions_8Fraction__eq(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b);<span 
class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1144, 
__pyx_L1_error)</span>
-      #pragma GCC diagnostic pop
+<pre class='cython code score-0 '>      __pyx_t_4 = 
__pyx_f_10quicktions_8Fraction__eq(((struct __pyx_obj_10quicktions_Fraction 
*)__pyx_v_a), __pyx_v_b);<span class='error_goto'> if (unlikely(!__pyx_t_4)) 
__PYX_ERR(0, 1144, __pyx_L1_error)</span>
       <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
       __pyx_v_result = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -9459,9 +9447,7 @@
   __pyx_L3:;
 </pre><pre class="cython line score-1" 
onclick="(function(s){s.display=s.display==='block'?'none':'block'})(this.nextElementSibling.style)">+<span
 class="">1156</span>:         return (&lt;Fraction&gt;a)._richcmp(b, op)</pre>
 <pre class='cython code score-1 '>  <span 
class='pyx_macro_api'>__Pyx_XDECREF</span>(__pyx_r);
-  #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
   __pyx_t_4 = __pyx_f_10quicktions_8Fraction__richcmp(((struct 
__pyx_obj_10quicktions_Fraction *)__pyx_v_a), __pyx_v_b, __pyx_v_op);<span 
class='error_goto'> if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1156, 
__pyx_L1_error)</span>
-  #pragma GCC diagnostic pop
   <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
@@ -9900,9 +9886,7 @@
         <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_4);
         <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_3); __pyx_t_3 
= 0;
       }
-      #pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
       __pyx_t_3 = __pyx_f_10quicktions_8Fraction__richcmp(__pyx_v_self, 
__pyx_t_4, __pyx_v_op);<span class='error_goto'> if (unlikely(!__pyx_t_3)) 
__PYX_ERR(0, 1201, __pyx_L1_error)</span>
-      #pragma GCC diagnostic pop
       <span class='refnanny'>__Pyx_GOTREF</span>(__pyx_t_3);
       <span class='pyx_macro_api'>__Pyx_DECREF</span>(__pyx_t_4); __pyx_t_4 = 
0;
       __pyx_r = __pyx_t_3;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/quicktions-1.17/src/quicktions.pyx 
new/quicktions-1.18/src/quicktions.pyx
--- old/quicktions-1.17/src/quicktions.pyx      2024-03-24 20:22:29.000000000 
+0100
+++ new/quicktions-1.18/src/quicktions.pyx      2024-04-03 10:30:42.000000000 
+0200
@@ -25,7 +25,7 @@
 
 __all__ = ['Fraction']
 
-__version__ = '1.17'
+__version__ = '1.18'
 
 cimport cython
 from cpython.unicode cimport Py_UNICODE_TODECIMAL

Reply via email to