Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-xarray for openSUSE:Factory 
checked in at 2021-02-15 23:20:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-xarray (Old)
 and      /work/SRC/openSUSE:Factory/.python-xarray.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-xarray"

Mon Feb 15 23:20:40 2021 rev:24 rq:872502 version:0.16.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-xarray/python-xarray.changes      
2020-12-28 00:28:48.749783270 +0100
+++ /work/SRC/openSUSE:Factory/.python-xarray.new.28504/python-xarray.changes   
2021-02-15 23:23:02.844000446 +0100
@@ -1,0 +2,10 @@
+Mon Feb 15 12:30:53 UTC 2021 - Ben Greiner <c...@bnavigator.de>
+
+- Disable python36 build: python36-numpy is no longer in Tumbleweed
+  xarray will follow to drop Python 3.6 support on next release.
+  (NEP 29)
+- Add xarray-pr4884-dask2021.patch gh#pydata/xarray#4884
+- Enable parralel testing with pytest-xdist
+- Recommend/Suggest the extras
+
+-------------------------------------------------------------------

New:
----
  xarray-pr4884-dask2021.patch

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

Other differences:
------------------
++++++ python-xarray.spec ++++++
--- /var/tmp/diff_new_pack.sujNfH/_old  2021-02-15 23:23:03.432001324 +0100
+++ /var/tmp/diff_new_pack.sujNfH/_new  2021-02-15 23:23:03.432001324 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-xarray
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,6 +18,8 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
+# NEP 29: Numpy 1.20 dropped support for Python 3.6, python36-numpy is removed 
from Tumbleweed. xarray will follow on next release
+%define         skip_python36 1
 Name:           python-xarray
 Version:        0.16.2
 Release:        0
@@ -25,6 +27,8 @@
 License:        Apache-2.0
 URL:            https://github.com/pydata/xarray
 Source:         
https://files.pythonhosted.org/packages/source/x/xarray/xarray-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM xarray-pr4884-dask2021.patch gh#pydata/xarray#4884
+Patch0:         xarray-pr4884-dask2021.patch
 BuildRequires:  %{python_module numpy >= 1.15}
 BuildRequires:  %{python_module numpy-devel >= 1.14}
 BuildRequires:  %{python_module pandas >= 0.25}
@@ -34,15 +38,35 @@
 BuildRequires:  python-rpm-macros
 Requires:       python-numpy >= 1.15
 Requires:       python-pandas >= 0.25
-Recommends:     python-scipy >= 1.3
-Suggests:       python-dask >= 2.2
 Provides:       python-xray = %{version}
 Obsoletes:      python-xray < %{version}
 BuildArch:      noarch
+Suggests:       python-dask-all
+# SECTION extras accel
+Recommends:     python-scipy >= 1.3
+Recommends:     python-bottleneck
+Recommends:     python-numbagg
+# /SECTION
+# SECTION extras viz
+Suggests:       python-matplotlib
+Suggests:       python-seaborn
+Suggests:       python-nc-time-axis
+#/SECTION
+# SECTION extras io
+Suggests:       python-netCDF4
+Suggests:       python-h5netcdf
+Suggests:       python-scipy
+Suggests:       python-pydap
+Suggests:       python-zarr
+Suggests:       python-fsspec
+Suggests:       python-cftime
+Suggests:       python-rasterio
+Suggests:       python-cfgrib
+#/SECTION
 # SECTION tests
-# dask tests currently failing
-# BuildRequires:  %%{python_module dask-dataframe}
-BuildRequires:  %{python_module pytest >= 2.7.1}
+BuildRequires:  %{python_module dask-dataframe}
+BuildRequires:  %{python_module pytest-xdist}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module scipy}
 # /SECTION
 %python_subpackages
@@ -57,7 +81,7 @@
 The dataset is an in-memory representation of a netCDF file.
 
 %prep
-%setup -q -n xarray-%{version}
+%autosetup -p1 -n xarray-%{version}
 chmod -x xarray/util/print_versions.py
 
 %build
@@ -68,12 +92,16 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-# test_no_warning_from_dask_effective_get fails due to upstream scipy warning
-%pytest -k "not test_download_from_github and not 
test_no_warning_from_dask_effective_get" xarray
+if [ $(getconf LONG_BIT) -eq 32 ]; then
+  # precision errors on 32-bit
+  donttest="(test_interpolate_chunk_advanced and linear)"
+fi
+%pytest -n auto ${donttest:+ -k "not ($donttest)"} xarray
 
 %files %{python_files}
 %doc README.rst
 %license LICENSE licenses/
-%{python_sitelib}/xarray*
+%{python_sitelib}/xarray
+%{python_sitelib}/xarray-%{version}*-info
 
 %changelog

++++++ xarray-pr4884-dask2021.patch ++++++
>From a825faaf60dc75e0365f18a0f24acb0fe288b263 Mon Sep 17 00:00:00 2001
From: crusaderky <crusade...@gmail.com>
Date: Tue, 9 Feb 2021 16:03:14 +0000
Subject: [PATCH 1/2] Compatibility with dask 2021.02.0

---
 ci/requirements/environment-windows.yml |  2 +-
 ci/requirements/environment.yml         |  2 +-
 xarray/core/dataset.py                  | 32 +++++++++++++++++++------
 3 files changed, 27 insertions(+), 9 deletions(-)

Index: xarray-0.16.2/xarray/core/dataset.py
===================================================================
--- xarray-0.16.2.orig/xarray/core/dataset.py
+++ xarray-0.16.2/xarray/core/dataset.py
@@ -809,13 +809,12 @@ class Dataset(Mapping, ImplementsDataset
         import dask
 
         info = [
-            (True, k, v.__dask_postcompute__())
+            (k, None) + v.__dask_postcompute__()
             if dask.is_dask_collection(v)
-            else (False, k, v)
+            else (k, v, None, None)
             for k, v in self._variables.items()
         ]
-        args = (
-            info,
+        construct_direct_args = (
             self._coord_names,
             self._dims,
             self._attrs,
@@ -823,19 +822,18 @@ class Dataset(Mapping, ImplementsDataset
             self._encoding,
             self._file_obj,
         )
-        return self._dask_postcompute, args
+        return self._dask_postcompute, (info, construct_direct_args)
 
     def __dask_postpersist__(self):
         import dask
 
         info = [
-            (True, k, v.__dask_postpersist__())
+            (k, None, v.__dask_keys__()) + v.__dask_postpersist__()
             if dask.is_dask_collection(v)
-            else (False, k, v)
+            else (k, v, None, None, None)
             for k, v in self._variables.items()
         ]
-        args = (
-            info,
+        construct_direct_args = (
             self._coord_names,
             self._dims,
             self._attrs,
@@ -843,45 +841,37 @@ class Dataset(Mapping, ImplementsDataset
             self._encoding,
             self._file_obj,
         )
-        return self._dask_postpersist, args
+        return self._dask_postpersist, (info, construct_direct_args)
 
     @staticmethod
-    def _dask_postcompute(results, info, *args):
+    def _dask_postcompute(results, info, construct_direct_args):
         variables = {}
-        results2 = list(results[::-1])
-        for is_dask, k, v in info:
-            if is_dask:
-                func, args2 = v
-                r = results2.pop()
-                result = func(r, *args2)
+        results_iter = iter(results)
+        for k, v, rebuild, rebuild_args in info:
+            if v is None:
+                variables[k] = rebuild(next(results_iter), *rebuild_args)
             else:
-                result = v
-            variables[k] = result
+                variables[k] = v
 
-        final = Dataset._construct_direct(variables, *args)
+        final = Dataset._construct_direct(variables, *construct_direct_args)
         return final
 
     @staticmethod
-    def _dask_postpersist(dsk, info, *args):
+    def _dask_postpersist(dsk, info, construct_direct_args):
+        from dask.optimization import cull
+
         variables = {}
         # postpersist is called in both dask.optimize and dask.persist
         # When persisting, we want to filter out unrelated keys for
         # each Variable's task graph.
-        is_persist = len(dsk) == len(info)
-        for is_dask, k, v in info:
-            if is_dask:
-                func, args2 = v
-                if is_persist:
-                    name = args2[1][0]
-                    dsk2 = {k: v for k, v in dsk.items() if k[0] == name}
-                else:
-                    dsk2 = dsk
-                result = func(dsk2, *args2)
+        for k, v, dask_keys, rebuild, rebuild_args in info:
+            if v is None:
+                dsk2, _ = cull(dsk, dask_keys)
+                variables[k] = rebuild(dsk2, *rebuild_args)
             else:
-                result = v
-            variables[k] = result
+                variables[k] = v
 
-        return Dataset._construct_direct(variables, *args)
+        return Dataset._construct_direct(variables, *construct_direct_args)
 
     def compute(self, **kwargs) -> "Dataset":
         """Manually trigger loading and/or computation of this dataset's data

Reply via email to