Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-datashader for 
openSUSE:Factory checked in at 2022-02-02 22:40:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-datashader (Old)
 and      /work/SRC/openSUSE:Factory/.python-datashader.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-datashader"

Wed Feb  2 22:40:45 2022 rev:18 rq:950552 version:0.13.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-datashader/python-datashader.changes      
2021-04-06 17:31:38.747250273 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-datashader.new.1898/python-datashader.changes
    2022-02-02 22:41:53.939334494 +0100
@@ -1,0 +2,33 @@
+Mon Jan 31 21:47:35 UTC 2022 - Ben Greiner <[email protected]>
+
+- Update to 0.13.0
+  * Defined new dynspread metric based on counting the fraction of
+    non-empty pixels that have non-empty pixels within a given
+    radius. The resulting dynspread behavior is much more intuitive
+    than the old behavior, which counted already-spread pixels as
+    if they were neighbors (#1001)
+  * Added ds.count() as the default reduction for ds.by (#1004)
+  * Fixed array-bounds reading error in dynspread (#1001)
+  * Fix color_key argument for dsshow (#986)
+  * Added Matplotlib output to the 3_Interactivity getting started
+    page. (#1009)
+  * Misc docs fixes (#1007)
+  * Fix nan assignment to integer array in RaggedArray (#1008)
+  * Any usage of dynspread with datatypes other than points should
+    be replaced with spread(), which will do what was probably
+    intended by the original dynspread call, i.e. to make isolated
+    lines and shapes visible. Strictly speaking, dynspread could
+    still be useful for other glyph types if that glyph is
+    contained entirely in a pixel, e.g. if a polygon or line
+    segment is located within the pixel bounds, but that seems
+    unlikely.
+  * Dynspread may need to have the threshold or max_px arguments
+    updated to achieve the same spreading as in previous releases,
+    though the new behavior is normally going to be more useful
+    than the old. 
+- Drop datashader-pr996-numpy-ragged.patch
+- Add datashader-pr1022-RaggedTests.patch
+- Add datashader-pr1025-testfixes.patch
+- Skip remaining failing ragged tests gh#holoviz/datashader#1043
+
+-------------------------------------------------------------------

Old:
----
  datashader-0.12.1.tar.gz
  datashader-pr996-numpy-ragged.patch

New:
----
  datashader-0.13.0.tar.gz
  datashader-pr1022-RaggedTests.patch
  datashader-pr1025-testfixes.patch

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

Other differences:
------------------
++++++ python-datashader.spec ++++++
--- /var/tmp/diff_new_pack.2KshX1/_old  2022-02-02 22:41:54.859328258 +0100
+++ /var/tmp/diff_new_pack.2KshX1/_new  2022-02-02 22:41:54.867328204 +0100
@@ -1,7 +1,7 @@
 #
-# spec file for package python-datashader-test
+# spec file
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -28,21 +28,22 @@
 BuildArch:      noarch
 %endif
 %define         skip_python2 1
-%define         skip_python36 1
+# dask is not compatible with Python 3.10 yet
+%define         skip_python310 1
 Name:           python-datashader%{psuffix}
-Version:        0.12.1
+Version:        0.13.0
 Release:        0
 Summary:        Data visualization toolchain based on aggregating into a grid
 License:        BSD-3-Clause
 URL:            https://datashader.org
 Source0:        
https://files.pythonhosted.org/packages/source/d/datashader/datashader-%{version}.tar.gz
+Patch0:         datashader-pr1022-RaggedTests.patch
+Patch1:         datashader-pr1025-testfixes.patch
 Source100:      python-datashader-rpmlintrc
-# PATCH-FIX-UPSTREAM datashader-pr996-numpy-ragged.patch -- 
gh#holoviz/datashader#996
-Patch0:         
https://github.com/holoviz/datashader/pull/996.patch#/datashader-pr996-numpy-ragged.patch
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module numpy}
-BuildRequires:  %{python_module param >= 1.6.0}
-BuildRequires:  %{python_module pyct}
+BuildRequires:  %{python_module param >= 1.6.1}
+BuildRequires:  %{python_module pyct >= 0.4.5}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
@@ -51,17 +52,14 @@
 Requires:       python-PyYAML
 Requires:       python-bokeh
 Requires:       python-colorcet >= 0.9.0
-Requires:       python-dask >= 0.18.0
-Requires:       python-dask-bag
-Requires:       python-dask-dataframe
-Requires:       python-numba >= 0.37.0
+Requires:       python-dask-all >= 0.18.0
+Requires:       python-numba >= 0.51
 Requires:       python-numpy >= 1.7
 Requires:       python-pandas >= 0.24.1
-Requires:       python-param >= 1.6.0
-Requires:       python-pyct
+Requires:       python-param >= 1.6.1
+Requires:       python-pyct >= 0.4.5
 Requires:       python-scikit-image
 Requires:       python-scipy
-Requires:       python-toolz >= 0.7.4
 Requires:       python-xarray >= 0.9.6
 Requires(post): update-alternatives
 Requires(postun):update-alternatives
@@ -71,21 +69,18 @@
 BuildRequires:  %{python_module PyYAML}
 BuildRequires:  %{python_module bokeh}
 BuildRequires:  %{python_module colorcet >= 0.9.0}
-BuildRequires:  %{python_module dask >= 0.18.0}
-BuildRequires:  %{python_module dask-bag}
-BuildRequires:  %{python_module dask-dataframe}
+BuildRequires:  %{python_module dask-all >= 0.18.0}
 BuildRequires:  %{python_module fastparquet >= 0.1.6}
 BuildRequires:  %{python_module holoviews >= 1.10.0}
-BuildRequires:  %{python_module nbsmoke >= 0.4.0}
+BuildRequires:  %{python_module nbsmoke >= 0.5.0}
 BuildRequires:  %{python_module netCDF4}
-BuildRequires:  %{python_module numba >= 0.37.0}
+BuildRequires:  %{python_module numba >= 0.51}
 BuildRequires:  %{python_module numpy >= 1.7}
 BuildRequires:  %{python_module pandas >= 0.24.1}
 BuildRequires:  %{python_module pytest >= 3.9.3}
 BuildRequires:  %{python_module pytest-benchmark >= 3.0.0}
 BuildRequires:  %{python_module scikit-image}
 BuildRequires:  %{python_module scipy}
-BuildRequires:  %{python_module toolz >= 0.7.4}
 BuildRequires:  %{python_module xarray >= 0.9.6}
 %endif
 %python_subpackages
@@ -131,7 +126,11 @@
 %if %{with test}
 %check
 export PYTHONPATH=examples
-%pytest datashader/tests --doctest-modules --doctest-ignore-import-errors
+# https://github.com/holoviz/datashader/issues/1043
+donttest="(TestRaggedGetitem and test_getitem_invalid)"
+donttest+=" or (TestRaggedInterface and test_tolist)"
+donttest+=" or (TestRaggedMethods and test_where_series)"
+%pytest datashader/tests --doctest-modules --doctest-ignore-import-errors -k 
"not ($donttest)"
 %endif
 
 %if ! %{with test}

++++++ datashader-0.12.1.tar.gz -> datashader-0.13.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-datashader/datashader-0.12.1.tar.gz 
/work/SRC/openSUSE:Factory/.python-datashader.new.1898/datashader-0.13.0.tar.gz 
differ: char 5, line 1

++++++ datashader-pr1022-RaggedTests.patch ++++++
>From 1e818af09e35c9cf9cefdfed3e251fc57502e877 Mon Sep 17 00:00:00 2001
From: Ian Thomas <[email protected]>
Date: Tue, 14 Sep 2021 11:26:19 +0100
Subject: [PATCH 1/3] Fix Ragged tests

---
 datashader/datatypes.py            |  6 +++--
 datashader/tests/test_datatypes.py | 41 +++++++++++++++++++++++++++---
 2 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/datashader/datatypes.py b/datashader/datatypes.py
index 9a8f8488..94e4b1d3 100644
--- a/datashader/datatypes.py
+++ b/datashader/datatypes.py
@@ -442,7 +442,7 @@ def __getitem__(self, item):
                 # Check mask length is compatible
                 if len(item) != len(self):
                     raise IndexError(
-                        "boolean mask length ({}) doesn't match array length 
({})"
+                        "Boolean index has wrong length: {} instead of {}"
                         .format(len(item), len(self))
                     )
 
@@ -584,7 +584,9 @@ def take(self, indices, allow_fill=False, fill_value=None):
                         for i in indices]
         else:
             if len(self) == 0 and len(indices) > 0:
-                raise IndexError("cannot do a non-empty take")
+                raise IndexError(
+                    "cannot do a non-empty take from an empty axes"
+                )
 
             sequence = [self[i] for i in indices]
 
diff --git a/datashader/tests/test_datatypes.py 
b/datashader/tests/test_datatypes.py
index dbf2e2bd..f8b7ef7e 100644
--- a/datashader/tests/test_datatypes.py
+++ b/datashader/tests/test_datatypes.py
@@ -3,7 +3,6 @@
 import numpy as np
 import pandas as pd
 import pandas.tests.extension.base as eb
-import pandas.util.testing as tm
 
 from datashader.datatypes import RaggedDtype, RaggedArray
 
@@ -703,6 +702,13 @@ def test_item(self, data):
         with pytest.raises(ValueError, match=msg):
             s.item()
 
+    @pytest.mark.skip(
+        reason="Ellipsis not supported in RaggedArray.__getitem__"
+    )
+    def test_getitem_ellipsis_and_slice(self, data):
+        pass
+
+
 class TestRaggedGroupby(eb.BaseGroupbyTests):
     @pytest.mark.parametrize('op', [
         lambda x: 1,
@@ -727,7 +733,18 @@ def test_groupby_extension_apply(self, data_for_grouping, 
op):
     @pytest.mark.skip(reason="agg not supported")
     def test_groupby_agg_extension(self):
         pass
-        
+
+    @pytest.mark.skip(reason="numpy.ndarray unhashable")
+    def test_groupby_extension_transform(self):
+        pass
+
+    @pytest.mark.skip(reason="agg not supported")
+    def test_groupby_extension_agg(self):
+        pass
+
+    @pytest.mark.skip(reason="not supported")
+    def test_groupby_extension_apply(self):
+        pass
 
 
 class TestRaggedInterface(eb.BaseInterfaceTests):
@@ -743,7 +760,7 @@ def test_array_interface(self, data):
             if np.isscalar(a1):
                 assert np.isnan(a1) and np.isnan(a2)
             else:
-                tm.assert_numpy_array_equal(a2, a1)
+                np.testing.assert_array_equal(a1, a2)
 
     # # NotImplementedError: 'RaggedArray' does not support __setitem__
     @pytest.mark.skip(reason="__setitem__ not supported")
@@ -813,6 +830,10 @@ def test_combine_first(self):
     def test_searchsorted(self):
         pass
 
+    @pytest.mark.skip(reason="ragged cannot be used as categorical")
+    def test_sort_values_frame(self):
+        pass
+
 
 class TestRaggedPrinting(eb.BasePrintingTests):
     pass
@@ -830,6 +851,18 @@ def test_fillna_series(self):
     def test_fillna_frame(self):
         pass
 
+    @pytest.mark.skip(reason="Can't fill with nested sequences")
+    def test_fillna_limit_pad(self):
+        pass
+
+    @pytest.mark.skip(reason="Can't fill with nested sequences")
+    def test_fillna_limit_backfill(self):
+        pass
+
+    @pytest.mark.skip(reason="Can't fill with nested sequences")
+    def test_fillna_series_method(self):
+        pass
+
 
 class TestRaggedReshaping(eb.BaseReshapingTests):
     @pytest.mark.skip(reason="__setitem__ not supported")
@@ -843,4 +876,4 @@ def test_transpose(self):
     @pytest.mark.skip(reason="transpose with numpy array elements seems not 
supported")
     def test_transpose_frame(self):
         pass
-    
+

>From 4de94d86881ddcb7febfb5d1d45554fa16baf3ac Mon Sep 17 00:00:00 2001
From: Ian Thomas <[email protected]>
Date: Wed, 29 Sep 2021 10:44:26 +0100
Subject: [PATCH 2/3] Remove duplicated test function

---
 datashader/tests/test_datatypes.py | 23 ++---------------------
 1 file changed, 2 insertions(+), 21 deletions(-)

diff --git a/datashader/tests/test_datatypes.py 
b/datashader/tests/test_datatypes.py
index f8b7ef7e..0f142849 100644
--- a/datashader/tests/test_datatypes.py
+++ b/datashader/tests/test_datatypes.py
@@ -710,26 +710,6 @@ def test_getitem_ellipsis_and_slice(self, data):
 
 
 class TestRaggedGroupby(eb.BaseGroupbyTests):
-    @pytest.mark.parametrize('op', [
-        lambda x: 1,
-        lambda x: [1] * len(x),
-        # # Op below causes a:
-        # # ValueError: Names should be list-like for a MultiIndex
-        # lambda x: pd.Series([1] * len(x)),
-        lambda x: x,
-    ], ids=[
-        'scalar',
-        'list',
-        # 'series',
-        'object'])
-    def test_groupby_extension_apply(self, data_for_grouping, op):
-        df = pd.DataFrame({"A": [1, 1, 2, 2, 3, 3, 1, 4],
-                           "B": data_for_grouping})
-        df.groupby("B").apply(op)
-        df.groupby("B").A.apply(op)
-        df.groupby("A").apply(op)
-        df.groupby("A").B.apply(op)
-
     @pytest.mark.skip(reason="agg not supported")
     def test_groupby_agg_extension(self):
         pass
@@ -742,7 +722,8 @@ def test_groupby_extension_transform(self):
     def test_groupby_extension_agg(self):
         pass
 
-    @pytest.mark.skip(reason="not supported")
+    @pytest.mark.skip(
+        reason="numpy.ndarray unhashable and buffer wrong number of dims")
     def test_groupby_extension_apply(self):
         pass
 

>From d20b606bb58e4bfcad2f678c891f43188833c4ee Mon Sep 17 00:00:00 2001
From: "James A. Bednar" <[email protected]>
Date: Wed, 29 Sep 2021 11:37:45 -0500
Subject: [PATCH 3/3] Update datashader/datatypes.py

---
 datashader/datatypes.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/datashader/datatypes.py b/datashader/datatypes.py
index 94e4b1d3..43fd5aa9 100644
--- a/datashader/datatypes.py
+++ b/datashader/datatypes.py
@@ -585,7 +585,7 @@ def take(self, indices, allow_fill=False, fill_value=None):
         else:
             if len(self) == 0 and len(indices) > 0:
                 raise IndexError(
-                    "cannot do a non-empty take from an empty axes"
+                    "Cannot do a non-empty take from an empty axis"
                 )
 
             sequence = [self[i] for i in indices]

++++++ datashader-pr1025-testfixes.patch ++++++
>From ed398d9507d84f345f282d5738ff58472d94c7ae Mon Sep 17 00:00:00 2001
From: Ian Thomas <[email protected]>
Date: Mon, 18 Oct 2021 11:46:44 +0100
Subject: [PATCH 01/11] Fix CI part 2

---
 datashader/datatypes.py                      | 2 +-
 datashader/tests/benchmarks/test_bundling.py | 2 +-
 datashader/tests/test_bundling.py            | 4 ++--
 setup.py                                     | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

Index: datashader-0.13.0/datashader/datatypes.py
===================================================================
--- datashader-0.13.0.orig/datashader/datatypes.py
+++ datashader-0.13.0/datashader/datatypes.py
@@ -585,7 +585,7 @@ Invalid indices for take with allow_fill
         else:
             if len(self) == 0 and len(indices) > 0:
                 raise IndexError(
-                    "Cannot do a non-empty take from an empty axis"
+                    "cannot do a non-empty take from an empty axis|out of 
bounds"
                 )
 
             sequence = [self[i] for i in indices]
Index: datashader-0.13.0/datashader/tests/test_bundling.py
===================================================================
--- datashader-0.13.0.orig/datashader/tests/test_bundling.py
+++ datashader-0.13.0/datashader/tests/test_bundling.py
@@ -25,7 +25,7 @@ def edges():
     # Four edges originating from the center node and connected to each
     # corner
     edges_df = pd.DataFrame({'id': np.arange(4),
-                             'source': np.zeros(4, dtype=np.int),
+                             'source': np.zeros(4, dtype=int),
                              'target': np.arange(1, 5)})
     edges_df.set_index('id')
     return edges_df
@@ -36,7 +36,7 @@ def weighted_edges():
     # Four weighted edges originating from the center node and connected
     # to each corner
     edges_df = pd.DataFrame({'id': np.arange(4),
-                             'source': np.zeros(4, dtype=np.int),
+                             'source': np.zeros(4, dtype=int),
                              'target': np.arange(1, 5),
                              'weight': np.ones(4)})
     edges_df.set_index('id')
Index: datashader-0.13.0/setup.py
===================================================================
--- datashader-0.13.0.orig/setup.py
+++ datashader-0.13.0/setup.py
@@ -39,8 +39,8 @@ extras_require = {
         'pytest-cov',
         'codecov',
         'flake8',
-        'nbconvert <6',
-        'nbsmoke[all] >=0.4.0',
+        'nbconvert',
+        'nbsmoke[all] >0.5',
         'fastparquet >=0.1.6',  # optional dependency
         'holoviews >=1.10.0',
         'bokeh',
Index: datashader-0.13.0/datashader/bokeh_ext.py
===================================================================
--- datashader-0.13.0.orig/datashader/bokeh_ext.py
+++ datashader-0.13.0/datashader/bokeh_ext.py
@@ -86,7 +86,8 @@ def patch_event(image):
         JSON message containing patch events to update the plot
     """
     if bokeh_version > '0.12.9':
-        events = list(image.doc._held_events)
+        event_obj = image.doc.callbacks if bokeh_version >= '2.4' else 
image.doc
+        events = list(event_obj._held_events)
         if not events:
             return None
         if bokeh_version > '2.0.0':
@@ -94,7 +95,7 @@ def patch_event(image):
         else:
             protocol = Protocol("1.0")
         msg = protocol.create("PATCH-DOC", events)
-        image.doc._held_events = []
+        event_obj._held_events = []
         return msg
     data = dict(image.ds.data)
     data['image'] = [data['image'][0].tolist()]
Index: datashader-0.13.0/datashader/tests/test_bokeh_ext.py
===================================================================
--- datashader-0.13.0.orig/datashader/tests/test_bokeh_ext.py
+++ datashader-0.13.0/datashader/tests/test_bokeh_ext.py
@@ -5,7 +5,7 @@ import datashader as ds
 import datashader.transfer_functions as tf
 
 from bokeh.plotting import figure, Document
-from datashader.bokeh_ext import InteractiveImage
+from datashader.bokeh_ext import InteractiveImage, bokeh_version
 
 axis = ds.core.LinearAxis()
 lincoords = axis.compute_index(axis.compute_scale_and_translate((0, 1), 2), 2)
@@ -77,4 +77,5 @@ def test_interactive_image_update():
     assert image['shape'] == [1, 1]
 
     # Ensure events are cleared after update
-    assert img.doc._held_events == []
+    event_obj = img.doc.callbacks if bokeh_version >= '2.4' else img.doc
+    assert event_obj._held_events == []

Reply via email to