Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-healpy for openSUSE:Factory 
checked in at 2023-05-31 21:54:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-healpy (Old)
 and      /work/SRC/openSUSE:Factory/.python-healpy.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-healpy"

Wed May 31 21:54:49 2023 rev:6 rq:1089962 version:1.16.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-healpy/python-healpy.changes      
2022-10-11 18:05:58.878126659 +0200
+++ /work/SRC/openSUSE:Factory/.python-healpy.new.1533/python-healpy.changes    
2023-05-31 21:54:55.549157310 +0200
@@ -1,0 +2,9 @@
+Wed May 31 08:31:02 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.16.2:
+  * Add `resize_alm` function to change a Alm array to a
+    different ell max
+  * Build wheels for Python 3.11
+  * Instructions on how to build an optimized package for healpy
+
+-------------------------------------------------------------------

Old:
----
  healpy-1.16.1.tar.gz

New:
----
  healpy-1.16.2.tar.gz

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

Other differences:
------------------
++++++ python-healpy.spec ++++++
--- /var/tmp/diff_new_pack.lT9IPH/_old  2023-05-31 21:54:56.037160194 +0200
+++ /var/tmp/diff_new_pack.lT9IPH/_new  2023-05-31 21:54:56.045160241 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-healpy
 #
-# 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,11 +16,9 @@
 #
 
 
-# Builds on astropy, which is python >= 3.7 on TW
-%define skip_python2 1
-%define skip_python36 1
+%{?sle15_python_module_pythons}
 Name:           python-healpy
-Version:        1.16.1
+Version:        1.16.2
 Release:        0
 Summary:        Python library to handle pixelated data on the sphere based on 
HEALPix
 License:        GPL-2.0-only

++++++ healpy-1.16.1.tar.gz -> healpy-1.16.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/CHANGELOG.rst 
new/healpy-1.16.2/CHANGELOG.rst
--- old/healpy-1.16.1/CHANGELOG.rst     2022-07-23 01:28:49.000000000 +0200
+++ new/healpy-1.16.2/CHANGELOG.rst     2023-01-10 05:52:33.000000000 +0100
@@ -1,5 +1,11 @@
 Unreleased
 
+Release 1.16.2 26 October 2022
+
+* Add `resize_alm` function to change a Alm array to a different ell max 
https://github.com/healpy/healpy/pull/803
+* Build wheels for Python 3.11 https://github.com/healpy/healpy/pull/793
+* Instructions on how to build an optimized package for healpy 
https://github.com/healpy/healpy/pull/779
+
 Release 1.16.1 22 July 2022, included in HEALPix 3.8.2
 
 * Updated CFITSIO included in `healpy` to 4.1.0, necessary for compatibility 
with Apple ARM chips https://github.com/healpy/healpy/pull/776
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/INSTALL.rst 
new/healpy-1.16.2/INSTALL.rst
--- old/healpy-1.16.1/INSTALL.rst       2022-07-23 01:28:49.000000000 +0200
+++ new/healpy-1.16.2/INSTALL.rst       2023-01-10 05:52:33.000000000 +0100
@@ -1,6 +1,11 @@
 Installation procedure for Healpy
 =================================
 
+(NOTE: if high performance of the installed package is important, e.g. when
+installing in computing centers or for performing benchmarks, please be sure
+to read the `Generating native binaries`_ section below.)
+
+
 Requirements
 ------------
 
@@ -227,6 +232,24 @@
 
 In case of compilation errors, see the note above in the ``pip`` section.
 
+Generating native binaries
+--------------------------
+
+Using pre-compiled wheels is typically the easiest and quickest way
+to install ``healpy`` on a system. However, the performance of the installed
+package may not be optimal, since the wheel has to work on all CPUs of a given
+architecture (e.g. x86_64) and will therefore probably not use all features
+present in your local CPU. A ``healpy`` installation which is custom-tailored
+for a specific target CPU may be two or three times faster for some operations
+(most notably ``alm2map*`` and ``map2alm*`` calls).
+
+To achieve target-specific compilation, ``healpy`` must be installed from 
source
+and the ``-march=native`` flag has to be passed to the compilers.
+While details may vary slightly depending on the target platform,
+the installation command will have this basic form::
+
+    CC=gcc CXX=g++ CFLAGS="-fPIC -O3 -march=native" CXXFLAGS="-fPIC -O3 
-march=native" pip3 install --user --no-binary healpy healpy
+
 Clean
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/PKG-INFO new/healpy-1.16.2/PKG-INFO
--- old/healpy-1.16.1/PKG-INFO  2022-07-23 01:29:28.953338100 +0200
+++ new/healpy-1.16.2/PKG-INFO  2023-01-10 05:52:59.115606800 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: healpy
-Version: 1.16.1
+Version: 1.16.2
 Summary: Healpix tools package for Python
 Home-page: http://github.com/healpy
 Author: C. Rosset, A. Zonca
@@ -16,6 +16,7 @@
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Topic :: Scientific/Engineering :: Astronomy
 Classifier: Topic :: Scientific/Engineering :: Visualization
 Requires-Python: >=3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/__init__.py 
new/healpy-1.16.2/healpy/__init__.py
--- old/healpy-1.16.1/healpy/__init__.py        2022-07-23 01:28:49.000000000 
+0200
+++ new/healpy-1.16.2/healpy/__init__.py        2023-01-10 05:52:33.000000000 
+0100
@@ -84,7 +84,8 @@
     check_max_nside,
     map2alm_spin,
     alm2map_spin,
-    blm_gauss
+    blm_gauss,
+    resize_alm
 )
 
 from ._query_disc import query_disc, query_strip, query_polygon, boundaries
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/newvisufunc.py 
new/healpy-1.16.2/healpy/newvisufunc.py
--- old/healpy-1.16.1/healpy/newvisufunc.py     2022-07-23 01:28:49.000000000 
+0200
+++ new/healpy-1.16.2/healpy/newvisufunc.py     2023-01-10 05:52:33.000000000 
+0100
@@ -113,7 +113,7 @@
     remove_dip=False,
     remove_mono=False,
     gal_cut=0,
-    **kwargs
+    **kwargs,
 ):
     """Plot a healpix map (given as an array) in the chosen projection.
 
@@ -379,9 +379,9 @@
             lpad = (
                 4 if override_plot_properties["vertical_tick_rotation"] != 90 
else lpad
             )
-        if title is not None: 
+        if title is not None:
             lpad += 8
-    
+
     # pass the default settings to the plot_properties dictionary
     plot_properties = {
         "cbar_shrink": shrink,
@@ -432,12 +432,8 @@
         else:
             nrows, ncols, idx = sub // 100, (sub % 100) // 10, (sub % 10)
         if idx < 1 or idx > ncols * nrows:
-            raise ValueError(
-                "Wrong values for sub: %d, %d, %d" % (nrows, ncols, idx)
-            )
+            raise ValueError("Wrong values for sub: %d, %d, %d" % (nrows, 
ncols, idx))
 
-
-            
         if not (hold or reuse_axes) and sub == 111:
             fig = plt.figure(
                 figsize=(
@@ -446,7 +442,7 @@
                         plot_properties["figure_width"]
                         * plot_properties["figure_size_ratio"]
                     ),
-                ),
+                )
             )
             extent = (0.02, 0.05, 0.96, 0.9)
         elif hold:
@@ -468,7 +464,7 @@
                             * plot_properties["figure_size_ratio"]
                         )
                         * (nrows / ncols),
-                    ),
+                    )
                 )
             else:
                 fig = plt.gcf()
@@ -494,7 +490,7 @@
             )
             """
         # FIXME: make a more general axes creation that works also with 
subplots
-        #ax = fig.add_axes(extent, projection=projection_type)
+        # ax = fig.add_axes(extent, projection=projection_type)
         if projection_type == "cart":
             ax = fig.add_subplot(nrows, ncols, idx)
         else:
@@ -509,12 +505,6 @@
     # end if not
     if graticule and graticule_labels:
         left += 0.02
-    plt.subplots_adjust(
-        left=left,
-        right=right,
-        top=top,
-        bottom=bottom,
-    )
 
     ysize = xsize // 2
     theta = np.linspace(np.pi, 0, ysize)
@@ -524,6 +514,7 @@
     if flip == "astro":
         longitude = longitude[::-1]
     if not return_only_data:
+        plt.subplots_adjust(left=left, right=right, top=top, bottom=bottom)
         # set property on ax so it can be used in newprojplot
         ax.healpy_flip = flip
 
@@ -547,12 +538,7 @@
                 max = m[w].max()
 
         cm, nn = get_color_table(
-            min,
-            max,
-            m[w],
-            cmap=cmap,
-            norm=norm,
-            **norm_dict_defaults,
+            min, max, m[w], cmap=cmap, norm=norm, **norm_dict_defaults
         )
         grid_pix = ang2pix(nside, THETA, PHI, nest=nest)
         grid_map = m[grid_pix]
@@ -617,9 +603,7 @@
         elif phi_convention == "symmetrical":
             xtick_formatter = 
ThetaFormatterSymmetricPhi(longitude_grid_spacing)
 
-        ax.xaxis.set_major_formatter(
-            xtick_formatter,
-        )
+        ax.xaxis.set_major_formatter(xtick_formatter)
         
ax.yaxis.set_major_formatter(ThetaFormatterTheta(latitude_grid_spacing))
 
         if custom_xtick_labels is not None:
@@ -688,10 +672,10 @@
 
         # Hide all tickslabels not in tick variable. Do not delete tick-markers
         if show_tickmarkers:
-            ticks = list(set(cb.get_ticks()) | set(cbar_ticks))            
+            ticks = list(set(cb.get_ticks()) | set(cbar_ticks))
             ticks = np.sort(ticks)
-            ticks = ticks[ticks>=min]
-            ticks = ticks[ticks<=max]
+            ticks = ticks[ticks >= min]
+            ticks = ticks[ticks <= max]
             labels = [format % tick if tick in cbar_ticks else "" for tick in 
ticks]
 
             cb.set_ticks(ticks, labels)
@@ -701,10 +685,7 @@
 
         if cb_orientation == "horizontal":
             # labels = cb.ax.get_xticklabels() if norm is not None else labels
-            cb.ax.set_xticklabels(
-                labels,
-                fontname=fontname,
-            )
+            cb.ax.set_xticklabels(labels, fontname=fontname)
 
             cb.ax.xaxis.set_label_text(
                 unit, fontsize=fontsize_defaults["cbar_label"], 
fontname=fontname
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/rotator.py 
new/healpy-1.16.2/healpy/rotator.py
--- old/healpy-1.16.1/healpy/rotator.py 2022-07-23 01:28:49.000000000 +0200
+++ new/healpy-1.16.2/healpy/rotator.py 2023-01-10 05:52:33.000000000 +0100
@@ -285,7 +285,7 @@
             )
         rots = b._rots + self._rots
         coords = b._coords + self._coords
-        invs = self._invs + a._invs
+        invs = self._invs + b._invs
         return Rotator(rot=rots, coord=coords, inv=invs, deg=False)
 
     def __nonzero__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/sphtfunc.py 
new/healpy-1.16.2/healpy/sphtfunc.py
--- old/healpy-1.16.1/healpy/sphtfunc.py        2022-07-23 01:28:49.000000000 
+0200
+++ new/healpy-1.16.2/healpy/sphtfunc.py        2023-01-10 05:52:33.000000000 
+0100
@@ -1432,3 +1432,43 @@
         blm[2] = 1j * blm[1]
 
     return blm
+
+
+def resize_alm(alm, lmax, mmax, lmax_out, mmax_out):
+    """Returns a resized copy of the input a_lm, either truncated or
+    padded with zeros.
+
+    Parameters
+    ----------
+    alm : array or sequence of arrays, complex
+        A complex array of alm, or a sequence of such arrays.
+        Size of each array must be of the form mmax*(lmax-mmax+1)/2+lmax
+    lmax, mmax: int, scalar
+        maximum l and m multipole moments of the input alm
+    lmax_out, mmax_out: int, scalar
+        maximum l and m multipole moments of the output alm
+
+    Returns
+    -------
+    array or sequence of arrays, complex
+        A complex array of alm, or a sequence of such arrays.
+        Size of each array will be of the form 
mmax_out*(lmax_out-mmax_out+1)/2+lmax_out
+    """
+    alm = np.array(alm)
+    if alm.ndim < 1 or alm.ndim > 2:
+        raise ValueError("incorrect dimensionality of the input a_lm")
+    if alm.ndim == 2:
+        return [resize_alm(almi, lmax, mmax, lmax_out, mmax_out) for almi in 
alm]
+    # alm is a 1D array
+    if alm.shape[0] != Alm.getsize(lmax, mmax):
+        raise ValueError("inconsistent number of input a_lm")
+    res = np.zeros(Alm.getsize(lmax_out, mmax_out), dtype=alm.dtype)
+    lmaxmin = min(lmax, lmax_out)
+    mmaxmin = min(mmax, mmax_out)
+    ofs_i, ofs_o = 0, 0
+    for m in range(0, mmaxmin + 1):
+        nval = lmaxmin - m + 1
+        res[ofs_o : ofs_o + nval] = alm[ofs_i : ofs_i + nval]
+        ofs_i += lmax - m + 1
+        ofs_o += lmax_out - m + 1
+    return res
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/src/_healpy_pixel_lib.cc 
new/healpy-1.16.2/healpy/src/_healpy_pixel_lib.cc
--- old/healpy-1.16.1/healpy/src/_healpy_pixel_lib.cc   2022-07-23 
01:28:49.000000000 +0200
+++ new/healpy-1.16.2/healpy/src/_healpy_pixel_lib.cc   2023-01-10 
05:52:33.000000000 +0100
@@ -378,8 +378,8 @@
     {
       int64 nside = *(int64*)ip1;
       if (nside!=oldnside)
-        { oldnside=nside; hb.SetNside(nside, NEST);
-               /* ring and nest should give the same result */
+        { oldnside=nside; hb.SetNside(nside, RING);
+          /* RING and NEST should give the same result but use RING because 
NEST only allows power of 2 nside */
         }
       double max_pixrad = hb.max_pixrad();
       *(double *)op1 = max_pixrad;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/test/test_sphtfunc.py 
new/healpy-1.16.2/healpy/test/test_sphtfunc.py
--- old/healpy-1.16.1/healpy/test/test_sphtfunc.py      2022-07-23 
01:28:49.000000000 +0200
+++ new/healpy-1.16.2/healpy/test/test_sphtfunc.py      2023-01-10 
05:52:33.000000000 +0100
@@ -406,7 +406,7 @@
         """Test whether 'smoothing' wrapped with accept_ma works with only
         keyword arguments."""
 
-        ma = np.ones(12 * 16 ** 2)
+        ma = np.ones(12 * 16**2)
         try:
             hp.smoothing(map_in=ma)
         except IndexError:
@@ -417,10 +417,10 @@
 
         theta = np.linspace(0, np.radians(1.0), 1000)
         sigma = np.radians(10.0 / 60.0) / np.sqrt(8.0 * np.log(2.0))
-        gaussian_beam = np.exp(-0.5 * (theta / sigma) ** 2) / (2 * np.pi * 
sigma ** 2)
+        gaussian_beam = np.exp(-0.5 * (theta / sigma) ** 2) / (2 * np.pi * 
sigma**2)
 
         ell = np.arange(512 + 1.0)
-        gaussian_window = np.exp(-0.5 * ell * (ell + 1) * sigma ** 2)
+        gaussian_window = np.exp(-0.5 * ell * (ell + 1) * sigma**2)
 
         bl = hp.beam2bl(gaussian_beam, theta, 512)
         np.testing.assert_allclose(gaussian_window, bl, rtol=1e-4)
@@ -430,10 +430,10 @@
 
         theta = np.linspace(0, np.radians(3.0), 1000)
         sigma = np.radians(1.0) / np.sqrt(8.0 * np.log(2.0))
-        gaussian_beam = np.exp(-0.5 * (theta / sigma) ** 2) / (2 * np.pi * 
sigma ** 2)
+        gaussian_beam = np.exp(-0.5 * (theta / sigma) ** 2) / (2 * np.pi * 
sigma**2)
 
         ell = np.arange(2048 + 1.0)
-        gaussian_window = np.exp(-0.5 * ell * (ell + 1) * sigma ** 2)
+        gaussian_window = np.exp(-0.5 * ell * (ell + 1) * sigma**2)
 
         beam = hp.bl2beam(gaussian_window, theta)
         np.testing.assert_allclose(gaussian_beam, beam, rtol=1e-3)
@@ -452,7 +452,7 @@
 
     def test_pixwin_base(self):
         # Base case
-        nsides = [2 ** p for p in np.arange(1, 14)]
+        nsides = [2**p for p in np.arange(1, 14)]
         [hp.pixwin(nside) for nside in nsides]
 
         # Test invalid nside
@@ -645,5 +645,33 @@
 
         np.testing.assert_allclose(blm, blm_ref, atol=1e-7)
 
+
+@pytest.mark.parametrize(
+    "lmax, mmax, lmax_out, mmax_out", [(5, 5, 10, 10), (5, 5, 3, 3), (8, 5, 7, 
6)]
+)
+def test_resize_alm(lmax, mmax, lmax_out, mmax_out):
+    alm = np.random.uniform(size=hp.Alm.getsize(lmax, 
mmax)).astype(np.complex128)
+    alm_out = hp.resize_alm(alm, lmax, mmax, lmax_out, mmax_out)
+    lmaxmax = max(lmax, lmax_out)
+    lmaxmin = min(lmax, lmax_out)
+    for m in range(0, mmax + 1):
+        for l in range(m, lmax + 1):
+            idx1 = hp.Alm.getidx(lmax, l, m)
+            if l <= lmax_out and m <= mmax_out:
+                idx2 = hp.Alm.getidx(lmax_out, l, m)
+                assert alm[idx1] == alm_out[idx2]
+    for m in range(0, mmax_out + 1):
+        for l in range(m, lmax_out + 1):
+            idx2 = hp.Alm.getidx(lmax_out, l, m)
+            if l <= lmax and m <= mmax:
+                idx1 = hp.Alm.getidx(lmax, l, m)
+                assert alm[idx1] == alm_out[idx2]
+            else:
+                assert alm_out[idx2] == 0
+    alm_out2 = hp.resize_alm([alm, 2 * alm], lmax, mmax, lmax_out, mmax_out)
+    np.testing.assert_allclose(alm_out, alm_out2[0])
+    np.testing.assert_allclose(2 * alm_out, alm_out2[1])
+
+
 if __name__ == "__main__":
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy/version.py 
new/healpy-1.16.2/healpy/version.py
--- old/healpy-1.16.1/healpy/version.py 2022-07-23 01:28:49.000000000 +0200
+++ new/healpy-1.16.2/healpy/version.py 2023-01-10 05:52:33.000000000 +0100
@@ -1 +1 @@
-__version__ = "1.16.1"
+__version__ = "1.16.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/healpy.egg-info/PKG-INFO 
new/healpy-1.16.2/healpy.egg-info/PKG-INFO
--- old/healpy-1.16.1/healpy.egg-info/PKG-INFO  2022-07-23 01:29:28.000000000 
+0200
+++ new/healpy-1.16.2/healpy.egg-info/PKG-INFO  2023-01-10 05:52:58.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: healpy
-Version: 1.16.1
+Version: 1.16.2
 Summary: Healpix tools package for Python
 Home-page: http://github.com/healpy
 Author: C. Rosset, A. Zonca
@@ -16,6 +16,7 @@
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Classifier: Topic :: Scientific/Engineering :: Astronomy
 Classifier: Topic :: Scientific/Engineering :: Visualization
 Requires-Python: >=3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/pyproject.toml 
new/healpy-1.16.2/pyproject.toml
--- old/healpy-1.16.1/pyproject.toml    2022-07-23 01:28:49.000000000 +0200
+++ new/healpy-1.16.2/pyproject.toml    2023-01-10 05:52:33.000000000 +0100
@@ -17,4 +17,4 @@
 
 [tool.cibuildwheel.macos]
 before-all = "brew install automake"
-environment = {"CC" = "gcc-9", "CXX" = "g++-9"}
+environment = {"CC" = "gcc-11", "CXX" = "g++-11"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/healpy-1.16.1/setup.py new/healpy-1.16.2/setup.py
--- old/healpy-1.16.1/setup.py  2022-07-23 01:28:49.000000000 +0200
+++ new/healpy-1.16.2/setup.py  2023-01-10 05:52:33.000000000 +0100
@@ -336,6 +336,7 @@
         "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
+        "Programming Language :: Python :: 3.11",
         "Topic :: Scientific/Engineering :: Astronomy",
         "Topic :: Scientific/Engineering :: Visualization",
     ],

Reply via email to