Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-numba for openSUSE:Factory 
checked in at 2023-01-04 17:51:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-numba (Old)
 and      /work/SRC/openSUSE:Factory/.python-numba.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-numba"

Wed Jan  4 17:51:09 2023 rev:36 rq:1046630 version:0.56.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-numba/python-numba.changes        
2022-10-11 18:05:22.438067751 +0200
+++ /work/SRC/openSUSE:Factory/.python-numba.new.1563/python-numba.changes      
2023-01-04 17:51:31.829802424 +0100
@@ -1,0 +2,32 @@
+Tue Jan  3 12:13:00 UTC 2023 - Ben Greiner <c...@bnavigator.de>
+
+- Split out python flavors into testing multibuilds. Depending on
+  the obs worker, the test suite can take almost an hour per
+  flavor.
+- Replace allow-numpy-1.24.patch with an updated
+  numba-pr8620-np1.24.patch to also work with still present numpy
+  1.23 in Factory (discussed upstream in gh#numba/numba#8620)
+- Merge fix-cli-test.patch into skip-failing-tests.patch
+
+-------------------------------------------------------------------
+Mon Jan  2 21:27:24 UTC 2023 - Ben Greiner <c...@bnavigator.de>
+
+- Clean up the specfile
+  * restore the multibuild
+  * Patch allow-numpy-1.24.patch is the WIP gh#numba/numba#8620
+
+-------------------------------------------------------------------
+Sun Jan  1 11:41:11 UTC 2023 - Matej Cepl <mc...@suse.com>
+
+- Update to 0.56.4:
+  - This is a bugfix release to fix a regression in the CUDA
+    target in relation to the .view() method on CUDA device
+    arrays that is present when using NumPy version 1.23.0 or
+    later.
+  - This is a bugfix release to remove the version restriction
+    applied to the setuptools package and to fix a bug in the
+    CUDA target in relation to copying zero length device arrays
+    to zero length host arrays.
+- Add allow-numpy-1.24.patch to allow work with numpy 1.24
+
+-------------------------------------------------------------------

Old:
----
  fix-cli-test.patch
  numba-0.56.2.tar.gz

New:
----
  numba-0.56.4.tar.gz
  numba-pr8620-np1.24.patch

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

Other differences:
------------------
++++++ python-numba.spec ++++++
--- /var/tmp/diff_new_pack.XWJ64l/_old  2023-01-04 17:51:32.765807941 +0100
+++ /var/tmp/diff_new_pack.XWJ64l/_new  2023-01-04 17:51:32.797808129 +0100
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,35 +16,59 @@
 #
 
 
-%{?!python_module:%define python_module() python3-%{**}}
 %define skip_python2 1
+# Not compatible with Python 3.11 yet. If this changes, and the python311
+# flavor is active, make sure to expand the multibuild test flavors
+# https://github.com/numba/numba/issues/8304
+%define skip_python311 1
 %define plainpython python
 # upper bound is exclusive: min-numpy_ver <= numpy < max_numpy_ver
 %define min_numpy_ver 1.18
-%define max_numpy_ver 1.24
+%define max_numpy_ver 1.25
+
 %global flavor @BUILD_FLAVOR@%{nil}
-%if "%{flavor}" == "test"
-%define psuffix -test
-%bcond_without test
-%else
+%if "%{flavor}" == ""
 %define psuffix %{nil}
 %bcond_with test
 %endif
-Name:           python-numba%{psuffix}
-Version:        0.56.2
+%if "%{flavor}" == "test-py38"
+%define psuffix -test-py38
+%define skip_python39 1
+%define skip_python310 1
+%bcond_without test
+%endif
+%if "%{flavor}" == "test-py39"
+%define psuffix -test-py39
+%define skip_python38 1
+%define skip_python310 1
+%bcond_without test
+%endif
+%if "%{flavor}" == "test-py310"
+%define psuffix -test-py310
+%define skip_python38 1
+%define skip_python39 1
+%bcond_without test
+%endif
+
+Name:           python-numba%{?psuffix}
+Version:        0.56.4
 Release:        0
 Summary:        NumPy-aware optimizing compiler for Python using LLVM
 License:        BSD-2-Clause
 URL:            https://numba.pydata.org/
+# SourceRepository: https://github.com/numba/numba
 Source:         
https://files.pythonhosted.org/packages/source/n/numba/numba-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM numba-pr8620-np1.24.patch gh#numba/numba#8620 + raising 
upper bound in setup.py and numba/__init__.py
+Patch1:         numba-pr8620-np1.24.patch
 # PATCH-FIX-OPENSUSE skip tests failing due to OBS specifics
-Patch2:         fix-cli-test.patch
 Patch3:         skip-failing-tests.patch
 # PATCH-FIX-OPENSUSE update-tbb-backend-calls-2021.6.patch, based on 
gh#numba/numba#7608
 Patch4:         update-tbb-backend-calls-2021.6.patch
 BuildRequires:  %{python_module devel >= 3.7}
 BuildRequires:  %{python_module numpy-devel >= %{min_numpy_ver} with 
%python-numpy-devel < %{max_numpy_ver}}
+BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  gcc-c++
 BuildRequires:  python-rpm-macros
@@ -116,19 +140,18 @@
 %build
 %if !%{with test}
 export CFLAGS="%{optflags} -fPIC"
-%python_build
+%pyproject_wheel
 %endif
 
 %install
 %if !%{with test}
-%python_install
+%pyproject_install
 %{python_expand #
 %fdupes %{buildroot}%{$python_sitearch}
 find %{buildroot}%{$python_sitearch} -name '*.[ch]' > 
devel-files0-%{$python_bin_suffix}.files
 sed 's|^%{buildroot}||' devel-files0-%{$python_bin_suffix}.files > 
devel-files-%{$python_bin_suffix}.files
 sed 's|^%{buildroot}|%%exclude |' devel-files0-%{$python_bin_suffix}.files > 
devel-files-exclude-%{$python_bin_suffix}.files
 }
-
 %python_clone -a %{buildroot}%{_bindir}/numba
 %python_clone -a %{buildroot}%{_bindir}/pycc
 %endif
@@ -139,7 +162,7 @@
 mkdir emptytestdir
 pushd emptytestdir
 %{python_expand # numbatests: check specific tests with `osc build -M test 
--define="numbatests <testnames>"`
-%{_bindir}/numba-%{$python_bin_suffix} -s
+%{_bindir}/numba-%%{$python_bin_suffix} -s
 $python -m numba.runtests -v -b --exclude-tags='long_running' -m 
%{_smp_build_ncpus} -- %{?!numbatests:numba.tests}%{?numbatests}
 }
 popd
@@ -158,7 +181,7 @@
 %python_alternative %{_bindir}/numba
 %python_alternative %{_bindir}/pycc
 %{python_sitearch}/numba/
-%{python_sitearch}/numba-%{version}-py*.egg-info
+%{python_sitearch}/numba-%{version}.dist-info
 
 %files %{python_files devel} -f devel-files-%{python_bin_suffix}.files
 %license LICENSE

++++++ _multibuild ++++++
--- /var/tmp/diff_new_pack.XWJ64l/_old  2023-01-04 17:51:33.097809898 +0100
+++ /var/tmp/diff_new_pack.XWJ64l/_new  2023-01-04 17:51:33.125810063 +0100
@@ -1,4 +1,6 @@
 <multibuild>
-  <package>test</package>
+  <package>test-py38</package>
+  <package>test-py39</package>
+  <package>test-py310</package>
 </multibuild>
 

++++++ numba-0.56.2.tar.gz -> numba-0.56.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/CHANGE_LOG new/numba-0.56.4/CHANGE_LOG
--- old/numba-0.56.2/CHANGE_LOG 2022-09-02 05:48:15.974872600 +0200
+++ new/numba-0.56.4/CHANGE_LOG 2022-11-03 16:41:43.800891400 +0100
@@ -1,3 +1,43 @@
+Version 0.56.4 (3 November, 2022)
+---------------------------------
+
+This is a bugfix release to fix a regression in the CUDA target in relation to
+the ``.view()`` method on CUDA device arrays that is present when using NumPy
+version 1.23.0 or later.
+
+Pull-Requests:
+
+* PR `#8537 <https://github.com/numba/numba/pull/8537>`_: Make 
ol_compatible_view accessible on all targets (`gmarkall 
<https://github.com/gmarkall>`_)
+* PR `#8552 <https://github.com/numba/numba/pull/8552>`_: Update version 
support table for 0.56.4. (`stuartarchibald 
<https://github.com/stuartarchibald>`_)
+* PR `#8553 <https://github.com/numba/numba/pull/8553>`_: Update CHANGE_LOG 
for 0.56.4 (`stuartarchibald <https://github.com/stuartarchibald>`_)
+* PR `#8570 <https://github.com/numba/numba/pull/8570>`_: Release 0.56 branch: 
Fix overloads with ``target="generic"`` for CUDA (`gmarkall 
<https://github.com/gmarkall>`_)
+* PR `#8571 <https://github.com/numba/numba/pull/8571>`_: Additional update to 
CHANGE_LOG for 0.56.4 (`stuartarchibald <https://github.com/stuartarchibald>`_)
+
+Authors:
+
+* `gmarkall <https://github.com/gmarkall>`_
+* `stuartarchibald <https://github.com/stuartarchibald>`_
+
+Version 0.56.3 (13 October, 2022)
+---------------------------------
+
+This is a bugfix release to remove the version restriction applied to the
+``setuptools`` package and to fix a bug in the CUDA target in relation to
+copying zero length device arrays to zero length host arrays.
+
+Pull-Requests:
+
+* PR `#8475 <https://github.com/numba/numba/pull/8475>`_: Remove setuptools 
version pin (`gmarkall <https://github.com/gmarkall>`_)
+* PR `#8482 <https://github.com/numba/numba/pull/8482>`_: Fix #8477: Allow 
copies with different strides for 0-length data (`gmarkall 
<https://github.com/gmarkall>`_)
+* PR `#8486 <https://github.com/numba/numba/pull/8486>`_: Restrict the TBB 
development package to supported version in Azure. (`stuartarchibald 
<https://github.com/stuartarchibald>`_)
+* PR `#8503 <https://github.com/numba/numba/pull/8503>`_: Update version 
support table for 0.56.3 (`stuartarchibald 
<https://github.com/stuartarchibald>`_)
+* PR `#8504 <https://github.com/numba/numba/pull/8504>`_: Update CHANGE_LOG 
for 0.56.3 (`stuartarchibald <https://github.com/stuartarchibald>`_)
+
+Authors:
+
+* `gmarkall <https://github.com/gmarkall>`_
+* `stuartarchibald <https://github.com/stuartarchibald>`_
+
 Version 0.56.2 (1 September, 2022)
 ----------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/PKG-INFO new/numba-0.56.4/PKG-INFO
--- old/numba-0.56.2/PKG-INFO   2022-09-02 05:48:23.630758300 +0200
+++ new/numba-0.56.4/PKG-INFO   2022-11-03 16:41:52.920761300 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: numba
-Version: 0.56.2
+Version: 0.56.4
 Summary: compiling Python code using LLVM
 Home-page: https://numba.pydata.org
 License: BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/docs/source/user/installing.rst 
new/numba-0.56.4/docs/source/user/installing.rst
--- old/numba-0.56.2/docs/source/user/installing.rst    2022-09-02 
05:48:15.978872500 +0200
+++ new/numba-0.56.4/docs/source/user/installing.rst    2022-11-03 
16:41:43.808891300 +0100
@@ -194,14 +194,14 @@
 
 * Required build time:
 
-  * ``setuptools<60``
+  * ``setuptools``
   * ``numpy``
   * ``llvmlite``
   * Compiler toolchain mentioned above
 
 * Required run time:
 
-  * ``setuptools<60``
+  * ``setuptools``
   * ``numpy``
   * ``llvmlite``
 
@@ -278,6 +278,10 @@
 
+===========+==============+===========================+============================+==============================+===================+=============================+
 | 0.57.x    | TBC          | 3.8.x <= version < 3.12   | 1.19 <= version < 
1.24     | 0.40.x                       | 11.x              | 2021.x            
          |
 
+-----------+--------------+---------------------------+----------------------------+------------------------------+-------------------+-----------------------------+
+| 0.56.4    | 2022-11-03   | 3.7.x <= version < 3.11   | 1.18 <= version < 
1.24     | 0.39.x                       | 11.x              | 2021.x            
          |
++-----------+--------------+---------------------------+----------------------------+------------------------------+-------------------+-----------------------------+
+| 0.56.3    | 2022-10-13   | 3.7.x <= version < 3.11   | 1.18 <= version < 
1.24     | 0.39.x                       | 11.x              | 2021.x            
          |
++-----------+--------------+---------------------------+----------------------------+------------------------------+-------------------+-----------------------------+
 | 0.56.2    | 2022-09-01   | 3.7.x <= version < 3.11   | 1.18 <= version < 
1.24     | 0.39.x                       | 11.x              | 2021.x            
          |
 
+-----------+--------------+---------------------------+----------------------------+------------------------------+-------------------+-----------------------------+
 | 0.56.0    | 2022-07-25   | 3.7.x <= version < 3.11   | 1.18 <= version < 
1.23     | 0.39.x                       | 11.x              | 2021.x            
          |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/numba/_version.py 
new/numba-0.56.4/numba/_version.py
--- old/numba-0.56.2/numba/_version.py  2022-09-02 05:48:23.630758300 +0200
+++ new/numba-0.56.4/numba/_version.py  2022-11-03 16:41:52.920761300 +0100
@@ -4,8 +4,8 @@
 # unpacked source archive. Distribution tarballs contain a pre-generated copy
 # of this file.
 
-version_version = '0.56.2'
-version_full = 'd6731f6d22f6695ee7abc305f81f81115639e2a4'
+version_version = '0.56.4'
+version_full = '288a38bbd5a15418a211bf067878dfdf3c139509'
 def get_versions(default={}, verbose=False):
     return {'version': version_version, 'full': version_full}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/numba/cuda/compiler.py 
new/numba-0.56.4/numba/cuda/compiler.py
--- old/numba-0.56.2/numba/cuda/compiler.py     2022-09-02 05:48:15.978872500 
+0200
+++ new/numba-0.56.4/numba/cuda/compiler.py     2022-11-03 16:41:43.816891200 
+0100
@@ -207,14 +207,16 @@
         flags.nvvm_options = nvvm_options
 
     # Run compilation pipeline
-    cres = compiler.compile_extra(typingctx=typingctx,
-                                  targetctx=targetctx,
-                                  func=pyfunc,
-                                  args=args,
-                                  return_type=return_type,
-                                  flags=flags,
-                                  locals={},
-                                  pipeline_class=CUDACompiler)
+    from numba.core.target_extension import target_override
+    with target_override('cuda'):
+        cres = compiler.compile_extra(typingctx=typingctx,
+                                      targetctx=targetctx,
+                                      func=pyfunc,
+                                      args=args,
+                                      return_type=return_type,
+                                      flags=flags,
+                                      locals={},
+                                      pipeline_class=CUDACompiler)
 
     library = cres.library
     library.finalize()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/numba/cuda/cudadrv/devicearray.py 
new/numba-0.56.4/numba/cuda/cudadrv/devicearray.py
--- old/numba-0.56.2/numba/cuda/cudadrv/devicearray.py  2022-09-02 
05:48:15.882874000 +0200
+++ new/numba-0.56.4/numba/cuda/cudadrv/devicearray.py  2022-11-03 
16:41:43.660893400 +0100
@@ -895,6 +895,8 @@
     if ary1sq.shape != ary2sq.shape:
         raise ValueError('incompatible shape: %s vs. %s' %
                          (ary1.shape, ary2.shape))
-    if ary1sq.strides != ary2sq.strides:
+    # We check strides only if the size is nonzero, because strides are
+    # irrelevant (and can differ) for zero-length copies.
+    if ary1.size and ary1sq.strides != ary2sq.strides:
         raise ValueError('incompatible strides: %s vs. %s' %
                          (ary1.strides, ary2.strides))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/numba-0.56.2/numba/cuda/tests/cudadrv/test_cuda_ndarray.py 
new/numba-0.56.4/numba/cuda/tests/cudadrv/test_cuda_ndarray.py
--- old/numba-0.56.2/numba/cuda/tests/cudadrv/test_cuda_ndarray.py      
2022-09-02 05:48:15.886874000 +0200
+++ new/numba-0.56.4/numba/cuda/tests/cudadrv/test_cuda_ndarray.py      
2022-11-03 16:41:43.664893400 +0100
@@ -420,6 +420,41 @@
         got = np.asarray(dary)
         self.assertEqual(got.dtype, dary.dtype)
 
+    @skip_on_cudasim('DeviceNDArray class not present in simulator')
+    def test_issue_8477(self):
+        # Ensure that we can copy a zero-length device array to a zero-length
+        # host array when the strides of the device and host arrays differ -
+        # this should be possible because the strides are irrelevant when the
+        # length is zero. For more info see
+        # https://github.com/numba/numba/issues/8477.
+
+        # Create a device array with shape (0,) and strides (8,)
+        dev_array = devicearray.DeviceNDArray(shape=(0,), strides=(8,),
+                                              dtype=np.int8)
+
+        # Create a host array with shape (0,) and strides (0,)
+        host_array = np.ndarray(shape=(0,), strides=(0,), dtype=np.int8)
+
+        # Sanity check for this test - ensure our destination has the strides
+        # we expect, because strides can be ignored in some cases by the
+        # ndarray constructor - checking here ensures that we haven't failed to
+        # account for unexpected behaviour across different versions of NumPy
+        self.assertEqual(host_array.strides, (0,))
+
+        # Ensure that the copy succeeds in both directions
+        dev_array.copy_to_host(host_array)
+        dev_array.copy_to_device(host_array)
+
+        # Ensure that a device-to-device copy also succeeds when the strides
+        # differ - one way of doing this is to copy the host array across and
+        # use that for copies in both directions.
+        dev_array_from_host = cuda.to_device(host_array)
+        self.assertEqual(dev_array_from_host.shape, (0,))
+        self.assertEqual(dev_array_from_host.strides, (0,))
+
+        dev_array.copy_to_device(dev_array_from_host)
+        dev_array_from_host.copy_to_device(dev_array)
+
 
 class TestRecarray(CUDATestCase):
     def test_recarray(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/numba/np/arrayobj.py 
new/numba-0.56.4/numba/np/arrayobj.py
--- old/numba-0.56.2/numba/np/arrayobj.py       2022-09-02 05:48:15.982872500 
+0200
+++ new/numba-0.56.4/numba/np/arrayobj.py       2022-11-03 16:41:43.820891100 
+0100
@@ -2420,7 +2420,7 @@
     pass
 
 
-@overload(_compatible_view)
+@overload(_compatible_view, target='generic')
 def ol_compatible_view(a, dtype):
     """Determines if the array and dtype are compatible for forming a view."""
     # NOTE: NumPy 1.23+ uses this check.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/numba/testing/main.py 
new/numba-0.56.4/numba/testing/main.py
--- old/numba-0.56.2/numba/testing/main.py      2022-09-02 05:48:15.906873700 
+0200
+++ new/numba-0.56.4/numba/testing/main.py      2022-11-03 16:41:43.824891000 
+0100
@@ -207,7 +207,8 @@
         parser.add_argument('-g', '--gitdiff', dest='gitdiff', 
type=git_diff_str,
                             default=False, nargs='?',
                             help=('Run tests from changes made against '
-                                  'origin/main as identified by `git diff`. '
+                                  'origin/release0.56 as identified by'
+                                  '`git diff`. '
                                   'If set to "ancestor", the diff compares '
                                   'against the common ancestor.'))
         return parser
@@ -399,9 +400,9 @@
     path = os.path.join('numba', 'tests')
     if use_common_ancestor:
         print(f"Git diff by common ancestor")
-        target = 'origin/main...HEAD'
+        target = 'origin/release0.56...HEAD'
     else:
-        target = 'origin/main..HEAD'
+        target = 'origin/release0.56..HEAD'
     gdiff_paths = repo.git.diff(target, path, name_only=True).split()
     # normalise the paths as they are unix style from repo.git.diff
     gdiff_paths = [os.path.normpath(x) for x in gdiff_paths]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numba-0.56.2/setup.py new/numba-0.56.4/setup.py
--- old/numba-0.56.2/setup.py   2022-09-02 05:48:15.990872400 +0200
+++ new/numba-0.56.4/setup.py   2022-11-03 16:41:43.832891000 +0100
@@ -375,7 +375,7 @@
 install_requires = [
     'llvmlite >={},<{}'.format(min_llvmlite_version, max_llvmlite_version),
     'numpy >={},<{}'.format(min_numpy_run_version, max_numpy_run_version),
-    'setuptools<60',
+    'setuptools',
     'importlib_metadata; python_version < "3.9"',
 ]
 

++++++ numba-pr8620-np1.24.patch ++++++
Index: numba-0.56.4/numba/cuda/tests/cudapy/test_intrinsics.py
===================================================================
--- numba-0.56.4.orig/numba/cuda/tests/cudapy/test_intrinsics.py
+++ numba-0.56.4/numba/cuda/tests/cudapy/test_intrinsics.py
@@ -619,7 +619,7 @@ class TestCudaIntrinsic(CUDATestCase):
         arg2 = np.float16(4.)
         compiled[1, 1](ary, arg1, arg2)
         np.testing.assert_allclose(ary[0], arg2)
-        arg1 = np.float(5.)
+        arg1 = np.float16(5.)
         compiled[1, 1](ary, arg1, arg2)
         np.testing.assert_allclose(ary[0], arg1)
 
@@ -631,7 +631,7 @@ class TestCudaIntrinsic(CUDATestCase):
         arg2 = np.float16(4.)
         compiled[1, 1](ary, arg1, arg2)
         np.testing.assert_allclose(ary[0], arg1)
-        arg1 = np.float(5.)
+        arg1 = np.float16(5.)
         compiled[1, 1](ary, arg1, arg2)
         np.testing.assert_allclose(ary[0], arg2)
 
Index: numba-0.56.4/numba/np/arraymath.py
===================================================================
--- numba-0.56.4.orig/numba/np/arraymath.py
+++ numba-0.56.4/numba/np/arraymath.py
@@ -4177,6 +4177,10 @@ iinfo = namedtuple('iinfo', _iinfo_suppo
 # This module is imported under the compiler lock which should deal with the
 # lack of thread safety in the warning filter.
 def _gen_np_machar():
+    # NumPy 1.24 removed np.MachAr
+    if numpy_version >= (1, 24):
+        return
+
     np122plus = numpy_version >= (1, 22)
     w = None
     with warnings.catch_warnings(record=True) as w:
Index: numba-0.56.4/numba/np/ufunc/_internal.c
===================================================================
--- numba-0.56.4.orig/numba/np/ufunc/_internal.c
+++ numba-0.56.4/numba/np/ufunc/_internal.c
@@ -285,9 +285,7 @@ static struct _ufunc_dispatch {
     PyCFunctionWithKeywords ufunc_accumulate;
     PyCFunctionWithKeywords ufunc_reduceat;
     PyCFunctionWithKeywords ufunc_outer;
-#if NPY_API_VERSION >= 0x00000008
     PyCFunction ufunc_at;
-#endif
 } ufunc_dispatch;
 
 static int
@@ -303,10 +301,8 @@ init_ufunc_dispatch(int *numpy_uses_fast
             if (strncmp(crnt_name, "accumulate", 11) == 0) {
                 ufunc_dispatch.ufunc_accumulate =
                     (PyCFunctionWithKeywords)crnt->ml_meth;
-#if NPY_API_VERSION >= 0x00000008
             } else if (strncmp(crnt_name, "at", 3) == 0) {
                 ufunc_dispatch.ufunc_at = crnt->ml_meth;
-#endif
             } else {
                 result = -1;
             }
@@ -326,10 +322,15 @@ init_ufunc_dispatch(int *numpy_uses_fast
             } else if (strncmp(crnt_name, "reduceat", 9) == 0) {
                 ufunc_dispatch.ufunc_reduceat =
                     (PyCFunctionWithKeywords)crnt->ml_meth;
+            } else if (strncmp(crnt_name, "resolve_dtypes", 15) == 0) {
+              /* Ignored */
             } else {
                 result = -1;
             }
             break;
+        case '_':
+            // We ignore private methods
+            break;
         default:
             result = -1; /* Unknown method */
         }
@@ -341,6 +342,8 @@ init_ufunc_dispatch(int *numpy_uses_fast
                 *numpy_uses_fastcall = crnt->ml_flags & METH_FASTCALL;
             }
             else if (*numpy_uses_fastcall != (crnt->ml_flags & METH_FASTCALL)) 
{
+                PyErr_SetString(PyExc_RuntimeError,
+                    "ufunc.at() flags do not match numpy_uses_fastcall");
                 return -1;
             }
         }
@@ -351,11 +354,13 @@ init_ufunc_dispatch(int *numpy_uses_fast
                   && (ufunc_dispatch.ufunc_accumulate != NULL)
                   && (ufunc_dispatch.ufunc_reduceat != NULL)
                   && (ufunc_dispatch.ufunc_outer != NULL)
-#if NPY_API_VERSION >= 0x00000008
                   && (ufunc_dispatch.ufunc_at != NULL)
-#endif
                   );
+    } else {
+        char const * const fmt = "Unexpected ufunc method %s()";
+        PyErr_Format(PyExc_RuntimeError, fmt, crnt_name);
     }
+
     return result;
 }
 
@@ -425,13 +430,11 @@ dufunc_outer_fast(PyDUFuncObject * self,
 }
 
 
-#if NPY_API_VERSION >= 0x00000008
 static PyObject *
 dufunc_at(PyDUFuncObject * self, PyObject * args)
 {
     return ufunc_dispatch.ufunc_at((PyObject*)self->ufunc, args);
 }
-#endif
 
 static PyObject *
 dufunc__compile_for_args(PyDUFuncObject * self, PyObject * args,
@@ -609,11 +612,9 @@ static struct PyMethodDef dufunc_methods
     {"outer",
         (PyCFunction)dufunc_outer,
         METH_VARARGS | METH_KEYWORDS, NULL},
-#if NPY_API_VERSION >= 0x00000008
     {"at",
         (PyCFunction)dufunc_at,
         METH_VARARGS, NULL},
-#endif
     {"_compile_for_args",
         (PyCFunction)dufunc__compile_for_args,
         METH_VARARGS | METH_KEYWORDS,
@@ -643,11 +644,9 @@ static struct PyMethodDef dufunc_methods
     {"outer",
         (PyCFunction)dufunc_outer_fast,
         METH_FASTCALL | METH_KEYWORDS, NULL},
-#if NPY_API_VERSION >= 0x00000008
     {"at",
         (PyCFunction)dufunc_at,
         METH_VARARGS, NULL},
-#endif
     {"_compile_for_args",
         (PyCFunction)dufunc__compile_for_args,
         METH_VARARGS | METH_KEYWORDS,
@@ -791,9 +790,7 @@ MOD_INIT(_internal)
     if (PyModule_AddIntMacro(m, PyUFunc_One)
         || PyModule_AddIntMacro(m, PyUFunc_Zero)
         || PyModule_AddIntMacro(m, PyUFunc_None)
-#if NPY_API_VERSION >= 0x00000007
         || PyModule_AddIntMacro(m, PyUFunc_ReorderableNone)
-#endif
         )
         return MOD_ERROR_VAL;
 
Index: numba-0.56.4/numba/stencils/stencilparfor.py
===================================================================
--- numba-0.56.4.orig/numba/stencils/stencilparfor.py
+++ numba-0.56.4/numba/stencils/stencilparfor.py
@@ -21,6 +21,7 @@ from numba.core.ir_utils import (get_cal
                             find_callname, require, find_const, GuardException)
 from numba.core.errors import NumbaValueError
 from numba.core.utils import OPERATORS_TO_BUILTINS
+from numba.np import numpy_support
 
 
 def _compute_last_ind(dim_size, index_const):
@@ -264,7 +265,11 @@ class StencilPass(object):
             dtype_g_np_assign = ir.Assign(dtype_g_np, dtype_g_np_var, loc)
             init_block.body.append(dtype_g_np_assign)
 
-            dtype_np_attr_call = ir.Expr.getattr(dtype_g_np_var, 
return_type.dtype.name, loc)
+            return_type_name = numpy_support.as_dtype(
+                               return_type.dtype).type.__name__
+            if return_type_name == 'bool':
+                return_type_name = 'bool_'
+            dtype_np_attr_call = ir.Expr.getattr(dtype_g_np_var, 
return_type_name, loc)
             dtype_attr_var = ir.Var(scope, mk_unique_var("$np_attr_attr"), loc)
             self.typemap[dtype_attr_var.name] = 
types.functions.NumberClass(return_type.dtype)
             dtype_attr_assign = ir.Assign(dtype_np_attr_call, dtype_attr_var, 
loc)
Index: numba-0.56.4/numba/tests/test_array_methods.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_array_methods.py
+++ numba-0.56.4/numba/tests/test_array_methods.py
@@ -1193,7 +1193,7 @@ class TestArrayMethods(MemoryLeakMixin,
         pyfunc = array_sum_dtype_kws
         cfunc = jit(nopython=True)(pyfunc)
         all_dtypes = [np.float64, np.float32, np.int64, np.int32, np.uint32,
-                      np.uint64, np.complex64, np.complex128, TIMEDELTA_M]
+                      np.uint64, np.complex64, np.complex128]
         all_test_arrays = [
             [np.ones((7, 6, 5, 4, 3), arr_dtype),
              np.ones(1, arr_dtype),
@@ -1207,8 +1207,7 @@ class TestArrayMethods(MemoryLeakMixin,
                       np.dtype('uint32'): [np.float64, np.int64, np.float32],
                       np.dtype('uint64'): [np.float64, np.int64],
                       np.dtype('complex64'): [np.complex64, np.complex128],
-                      np.dtype('complex128'): [np.complex128],
-                      np.dtype(TIMEDELTA_M): [np.dtype(TIMEDELTA_M)]}
+                      np.dtype('complex128'): [np.complex128]}
 
         for arr_list in all_test_arrays:
             for arr in arr_list:
@@ -1216,15 +1215,15 @@ class TestArrayMethods(MemoryLeakMixin,
                     subtest_str = ("Testing np.sum with {} input and {} output"
                                    .format(arr.dtype, out_dtype))
                     with self.subTest(subtest_str):
-                        self.assertPreciseEqual(pyfunc(arr, dtype=out_dtype),
-                                                cfunc(arr, dtype=out_dtype))
+                            self.assertPreciseEqual(pyfunc(arr, 
dtype=out_dtype),
+                                                    cfunc(arr, 
dtype=out_dtype))
 
     def test_sum_axis_dtype_kws(self):
         """ test sum with axis and dtype parameters over a whole range of 
dtypes """
         pyfunc = array_sum_axis_dtype_kws
         cfunc = jit(nopython=True)(pyfunc)
         all_dtypes = [np.float64, np.float32, np.int64, np.int32, np.uint32,
-                      np.uint64, np.complex64, np.complex128, TIMEDELTA_M]
+                      np.uint64, np.complex64, np.complex128]
         all_test_arrays = [
             [np.ones((7, 6, 5, 4, 3), arr_dtype),
              np.ones(1, arr_dtype),
@@ -1238,9 +1237,7 @@ class TestArrayMethods(MemoryLeakMixin,
                       np.dtype('uint32'): [np.float64, np.int64, np.float32],
                       np.dtype('uint64'): [np.float64, np.uint64],
                       np.dtype('complex64'): [np.complex64, np.complex128],
-                      np.dtype('complex128'): [np.complex128],
-                      np.dtype(TIMEDELTA_M): [np.dtype(TIMEDELTA_M)],
-                      np.dtype(TIMEDELTA_Y): [np.dtype(TIMEDELTA_Y)]}
+                      np.dtype('complex128'): [np.complex128]}
 
         for arr_list in all_test_arrays:
             for arr in arr_list:
Index: numba-0.56.4/numba/tests/test_comprehension.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_comprehension.py
+++ numba-0.56.4/numba/tests/test_comprehension.py
@@ -11,6 +11,7 @@ from numba import jit, typed
 from numba.core import types, utils
 from numba.core.errors import TypingError, LoweringError
 from numba.core.types.functions import _header_lead
+from numba.np.numpy_support import numpy_version
 from numba.tests.support import tag, _32bit, captured_stdout
 
 
@@ -360,6 +361,7 @@ class TestArrayComprehension(unittest.Te
         self.check(comp_nest_with_array_conditional, 5,
                    assert_allocate_list=True)
 
+    @unittest.skipUnless(numpy_version < (1, 24), 'Removed in NumPy 1.24')
     def test_comp_nest_with_dependency(self):
         def comp_nest_with_dependency(n):
             l = np.array([[i * j for j in range(i+1)] for i in range(n)])
Index: numba-0.56.4/numba/tests/test_linalg.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_linalg.py
+++ numba-0.56.4/numba/tests/test_linalg.py
@@ -1122,6 +1122,32 @@ class TestLinalgSvd(TestLinalgBase):
     Tests for np.linalg.svd.
     """
 
+    # This checks that A ~= U*S*V**H, i.e. SV decomposition ties out.  This is
+    # required as NumPy uses only double precision LAPACK routines and
+    # computation of SVD is numerically sensitive. Numba uses type-specific
+    # routines and therefore sometimes comes out with a different answer to
+    # NumPy (orthonormal bases are not unique, etc.).
+
+    def check_reconstruction(self, a, got, expected):
+        u, sv, vt = got
+
+        # Check they are dimensionally correct
+        for k in range(len(expected)):
+            self.assertEqual(got[k].shape, expected[k].shape)
+
+        # Columns in u and rows in vt dictates the working size of s
+        s = np.zeros((u.shape[1], vt.shape[0]))
+        np.fill_diagonal(s, sv)
+
+        rec = np.dot(np.dot(u, s), vt)
+        resolution = np.finfo(a.dtype).resolution
+        np.testing.assert_allclose(
+            a,
+            rec,
+            rtol=10 * resolution,
+            atol=100 * resolution  # zeros tend to be fuzzy
+        )
+
     @needs_lapack
     def test_linalg_svd(self):
         """
@@ -1150,34 +1176,8 @@ class TestLinalgSvd(TestLinalgBase):
                     # plain match failed, test by reconstruction
                     use_reconstruction = True
 
-            # if plain match fails then reconstruction is used.
-            # this checks that A ~= U*S*V**H
-            # i.e. SV decomposition ties out
-            # this is required as numpy uses only double precision lapack
-            # routines and computation of svd is numerically
-            # sensitive, numba using the type specific routines therefore
-            # sometimes comes out with a different answer (orthonormal bases
-            # are not unique etc.).
             if use_reconstruction:
-                u, sv, vt = got
-
-                # check they are dimensionally correct
-                for k in range(len(expected)):
-                    self.assertEqual(got[k].shape, expected[k].shape)
-
-                # regardless of full_matrices cols in u and rows in vt
-                # dictates the working size of s
-                s = np.zeros((u.shape[1], vt.shape[0]))
-                np.fill_diagonal(s, sv)
-
-                rec = np.dot(np.dot(u, s), vt)
-                resolution = np.finfo(a.dtype).resolution
-                np.testing.assert_allclose(
-                    a,
-                    rec,
-                    rtol=10 * resolution,
-                    atol=100 * resolution  # zeros tend to be fuzzy
-                )
+                self.check_reconstruction(a, got, expected)
 
             # Ensure proper resource management
             with self.assertNoNRTLeak():
@@ -1238,8 +1238,11 @@ class TestLinalgSvd(TestLinalgBase):
         got = func(X, False)
         np.testing.assert_allclose(X, X_orig)
 
-        for e_a, g_a in zip(expected, got):
-            np.testing.assert_allclose(e_a, g_a)
+        try:
+            for e_a, g_a in zip(expected, got):
+                np.testing.assert_allclose(e_a, g_a)
+        except AssertionError:
+            self.check_reconstruction(X, got, expected)
 
 
 class TestLinalgQr(TestLinalgBase):
Index: numba-0.56.4/numba/tests/test_mathlib.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_mathlib.py
+++ numba-0.56.4/numba/tests/test_mathlib.py
@@ -516,7 +516,7 @@ class TestMathLib(TestCase):
             with warnings.catch_warnings():
                 warnings.simplefilter("error", RuntimeWarning)
                 self.assertRaisesRegexp(RuntimeWarning,
-                                        'overflow encountered in .*_scalars',
+                                        'overflow encountered in .*scalar',
                                         naive_hypot, val, val)
 
     def test_hypot_npm(self):
Index: numba-0.56.4/numba/tests/test_np_functions.py
===================================================================
--- numba-0.56.4.orig/numba/tests/test_np_functions.py
+++ numba-0.56.4/numba/tests/test_np_functions.py
@@ -932,11 +932,11 @@ class TestNPFunctions(MemoryLeakMixin, T
             yield np.inf, None
             yield np.PINF, None
             yield np.asarray([-np.inf, 0., np.inf]), None
-            yield np.NINF, np.zeros(1, dtype=np.bool)
-            yield np.inf, np.zeros(1, dtype=np.bool)
-            yield np.PINF, np.zeros(1, dtype=np.bool)
+            yield np.NINF, np.zeros(1, dtype=np.bool_)
+            yield np.inf, np.zeros(1, dtype=np.bool_)
+            yield np.PINF, np.zeros(1, dtype=np.bool_)
             yield np.NINF, np.empty(12)
-            yield np.asarray([-np.inf, 0., np.inf]), np.zeros(3, dtype=np.bool)
+            yield np.asarray([-np.inf, 0., np.inf]), np.zeros(3, 
dtype=np.bool_)
 
         pyfuncs = [isneginf, isposinf]
         for pyfunc in pyfuncs:
@@ -4775,6 +4775,7 @@ def foo():
         eval(compile(funcstr, '<string>', 'exec'))
         return locals()['foo']
 
+    @unittest.skipIf(numpy_version >= (1, 24), "NumPy < 1.24 required")
     def test_MachAr(self):
         attrs = ('ibeta', 'it', 'machep', 'eps', 'negep', 'epsneg', 'iexp',
                  'minexp', 'xmin', 'maxexp', 'xmax', 'irnd', 'ngrd',
@@ -4817,7 +4818,8 @@ def foo():
             cfunc = jit(nopython=True)(iinfo)
             cfunc(np.float64(7))
 
-    @unittest.skipUnless(numpy_version >= (1, 22), "Needs NumPy >= 1.22")
+    @unittest.skipUnless((1, 22) <= numpy_version < (1, 24),
+                         "Needs NumPy >= 1.22, < 1.24")
     @TestCase.run_test_in_subprocess
     def test_np_MachAr_deprecation_np122(self):
         # Tests that Numba is replaying the NumPy 1.22 deprecation warning
Index: numba-0.56.4/setup.py
===================================================================
--- numba-0.56.4.orig/setup.py
+++ numba-0.56.4/setup.py
@@ -23,7 +23,7 @@ min_python_version = "3.7"
 max_python_version = "3.11"  # exclusive
 min_numpy_build_version = "1.11"
 min_numpy_run_version = "1.18"
-max_numpy_run_version = "1.24"
+max_numpy_run_version = "1.25" # exclusive
 min_llvmlite_version = "0.39.0dev0"
 max_llvmlite_version = "0.40"
 
Index: numba-0.56.4/numba/__init__.py
===================================================================
--- numba-0.56.4.orig/numba/__init__.py
+++ numba-0.56.4/numba/__init__.py
@@ -142,8 +142,8 @@ def _ensure_critical_deps():
 
     if numpy_version < (1, 18):
         raise ImportError("Numba needs NumPy 1.18 or greater")
-    elif numpy_version > (1, 23):
-        raise ImportError("Numba needs NumPy 1.23 or less")
+    elif numpy_version > (1, 24):
+        raise ImportError("Numba needs NumPy 1.24 or less")
 
     try:
         import scipy

++++++ skip-failing-tests.patch ++++++
--- /var/tmp/diff_new_pack.XWJ64l/_old  2023-01-04 17:51:34.229816570 +0100
+++ /var/tmp/diff_new_pack.XWJ64l/_new  2023-01-04 17:51:34.265816782 +0100
@@ -1,8 +1,11 @@
-Index: numba-0.54.0/numba/tests/test_parfors.py
-===================================================================
---- numba-0.54.0.orig/numba/tests/test_parfors.py
-+++ numba-0.54.0/numba/tests/test_parfors.py
-@@ -1146,6 +1146,7 @@ class TestParforNumPy(TestParforsBase):
+---
+ numba/tests/test_parfors.py        |    5 +++--
+ numba/tests/test_parfors_passes.py |    1 +
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+--- a/numba/tests/test_parfors.py
++++ b/numba/tests/test_parfors.py
+@@ -1174,6 +1174,7 @@ class TestParforNumPy(TestParforsBase):
          self.check_variants(test_impl2, data_gen)
          self.count_parfors_variants(test_impl2, data_gen)
  
@@ -10,7 +13,7 @@
      def test_ndarray_fill(self):
          def test_impl(x):
              x.fill(7.0)
-@@ -3890,7 +3891,7 @@ class TestParforsVectorizer(TestPrangeBa
+@@ -4396,7 +4397,7 @@ class TestParforsVectorizer(TestPrangeBa
      # to check vsqrtpd operates on zmm
      match_vsqrtpd_on_zmm = re.compile('\n\s+vsqrtpd\s+.*zmm.*\n')
  
@@ -19,7 +22,7 @@
      def test_vectorizer_fastmath_asm(self):
          """ This checks that if fastmath is set and the underlying hardware
          is suitable, and the function supplied is amenable to fastmath based
-@@ -3933,7 +3934,7 @@ class TestParforsVectorizer(TestPrangeBa
+@@ -4439,7 +4440,7 @@ class TestParforsVectorizer(TestPrangeBa
              # check no zmm addressing is present
              self.assertTrue('zmm' not in v)
  
@@ -28,10 +31,8 @@
      def test_unsigned_refusal_to_vectorize(self):
          """ This checks that if fastmath is set and the underlying hardware
          is suitable, and the function supplied is amenable to fastmath based
-Index: numba-0.54.0/numba/tests/test_parfors_passes.py
-===================================================================
---- numba-0.54.0.orig/numba/tests/test_parfors_passes.py
-+++ numba-0.54.0/numba/tests/test_parfors_passes.py
+--- a/numba/tests/test_parfors_passes.py
++++ b/numba/tests/test_parfors_passes.py
 @@ -516,6 +516,7 @@ class TestConvertLoopPass(BaseTest):
              str(raises.exception),
          )
@@ -40,4 +41,16 @@
      def test_init_prange(self):
          def test_impl():
              n = 20
+Index: numba-0.56.2/numba/tests/test_cli.py
+===================================================================
+--- numba-0.56.2.orig/numba/tests/test_cli.py
++++ numba-0.56.2/numba/tests/test_cli.py
+@@ -264,6 +264,7 @@ class TestGDBCLIInfoBrokenGdbs(TestCase)
+             self.assertIn("No such file or directory", stdout)
+             self.assertIn(path, stdout)
+ 
++    @unittest.skip("Fails on type check in OBS")
+     def test_nonsense_gdb_binary(self):
+         # Tests that a nonsense binary specified as gdb it picked up ok
+         env = os.environ.copy()
 

++++++ update-tbb-backend-calls-2021.6.patch ++++++
--- /var/tmp/diff_new_pack.XWJ64l/_old  2023-01-04 17:51:34.405817608 +0100
+++ /var/tmp/diff_new_pack.XWJ64l/_new  2023-01-04 17:51:34.441817820 +0100
@@ -1,7 +1,9 @@
-Index: numba-0.56.2/numba/np/ufunc/tbbpool.cpp
-===================================================================
---- numba-0.56.2.orig/numba/np/ufunc/tbbpool.cpp
-+++ numba-0.56.2/numba/np/ufunc/tbbpool.cpp
+---
+ numba/np/ufunc/tbbpool.cpp |   29 ++++++++++++++++++++++++-----
+ 1 file changed, 24 insertions(+), 5 deletions(-)
+
+--- a/numba/np/ufunc/tbbpool.cpp
++++ b/numba/np/ufunc/tbbpool.cpp
 @@ -12,6 +12,7 @@ Implement parallel vectorize workqueue o
  #undef _XOPEN_SOURCE
  #endif

Reply via email to