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) < 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"> <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) < 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) < 0) <span class='error_goto'>__PYX_ERR(0, 28, __pyx_L1_error)</span> </pre><pre class="cython line score-0"> <span class="">0029</span>: </pre> <pre class="cython line score-0"> <span class="">0030</span>: cimport cython</pre> <pre class="cython line score-0"> <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 (<Fraction>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 = (<Fraction>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 (<Fraction>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 = (<Fraction>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 (<Fraction>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