Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-traittypes for 
openSUSE:Factory checked in at 2026-11-09 16:04:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-traittypes (Old)
 and      /work/SRC/openSUSE:Factory/.python-traittypes.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-traittypes"

Mon Nov  9 16:04:26 2026 rev:13 rq:1396189 version:0.2.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-traittypes/python-traittypes.changes      
2024-03-03 20:20:06.227528915 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-traittypes.new.3759290/python-traittypes.changes
 2026-11-09 16:05:03.015835373 +0100
@@ -1,0 +2,13 @@
+Sun Nov  8 21:06:16 UTC 2026 - Dirk Müller <[email protected]>
+
+- Update to 0.2.3:
+  * Remove _bad_values which is not validated and make traitlets
+    fail
+  * Passing dtype to Pandas.Series
+- Drop obsolete patches:
+  * python-traittypes-remove-nose.patch (upstreamed)
+  * python-fix-nptypes.patch (upstreamed)
+- Add python-traittypes-fix-tests.patch:
+  * Fix test suite failures with modern xarray and pandas
+
+-------------------------------------------------------------------

Old:
----
  python-fix-nptypes.patch
  python-traittypes-remove-nose.patch
  traittypes-0.2.1.tar.gz

New:
----
  python-traittypes-fix-tests.patch
  traittypes-0.2.3.tar.gz

----------(Old B)----------
  Old:  * python-traittypes-remove-nose.patch (upstreamed)
  * python-fix-nptypes.patch (upstreamed)
- Add python-traittypes-fix-tests.patch:
  Old:- Drop obsolete patches:
  * python-traittypes-remove-nose.patch (upstreamed)
  * python-fix-nptypes.patch (upstreamed)
----------(Old E)----------

----------(New B)----------
  New:  * python-fix-nptypes.patch (upstreamed)
- Add python-traittypes-fix-tests.patch:
  * Fix test suite failures with modern xarray and pandas
----------(New E)----------

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

Other differences:
------------------
++++++ python-traittypes.spec ++++++
--- /var/tmp/diff_new_pack.9CAjqD/_old  2026-11-09 16:05:04.484896960 +0100
+++ /var/tmp/diff_new_pack.9CAjqD/_new  2026-11-09 16:05:04.485897002 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-traittypes
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,15 @@
 
 
 Name:           python-traittypes
-Version:        0.2.1
+Version:        0.2.3
 Release:        0
 Summary:        Scipy trait types
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
 URL:            https://github.com/jupyter-widgets/traittypes
 Source:         
https://files.pythonhosted.org/packages/source/t/traittypes/traittypes-%{version}.tar.gz
-# PATCH-FEATURE-UPSTREAM gh#jupyter-widgets/traittypes#43
-Patch0:         python-traittypes-remove-nose.patch
-# PATCH-FIX-UPSTREAM gh#jupyter-widgets/traittypes#32
-Patch1:         python-fix-nptypes.patch
+# PATCH-FIX-OPENSUSE python-traittypes-fix-tests.patch -- Fix test failures 
with modern xarray and pandas
+Patch0:         python-traittypes-fix-tests.patch
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools}
@@ -61,9 +59,7 @@
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
 %check
-# no xarray for Python 3.9 anymore
-python39_ignore="--ignore traittypes/tests/test_traittypes.py"
-%pytest traittypes ${$python_ignore}
+%pytest traittypes
 
 %files %{python_files}
 %doc README.md

++++++ python-traittypes-fix-tests.patch ++++++
Index: traittypes-0.2.3/traittypes/tests/test_traittypes.py
===================================================================
--- traittypes-0.2.3.orig/traittypes/tests/test_traittypes.py
+++ traittypes-0.2.3/traittypes/tests/test_traittypes.py
@@ -166,9 +166,9 @@ class TestSeries(TestCase):
             c = Series([])
             d = Series(Undefined)
         foo = Foo()
-        self.assertTrue(foo.a.equals(pd.Series()))
+        self.assertTrue(foo.a.equals(pd.Series(dtype=float)))
         self.assertTrue(foo.b is None)
-        self.assertTrue(foo.c.equals(pd.Series([])))
+        self.assertTrue(foo.c.equals(pd.Series([], dtype=float)))
         self.assertTrue(foo.d is Undefined)
 
     def test_allow_none(self):
Index: traittypes-0.2.3/traittypes/traittypes.py
===================================================================
--- traittypes-0.2.3.orig/traittypes/traittypes.py
+++ traittypes-0.2.3/traittypes/traittypes.py
@@ -225,10 +225,11 @@ class XarrayType(SciType):
             self.error(obj, value)
         if value is None or value is Undefined:
             return super(XarrayType, self).validate(obj, value)
-        try:
-            value = self.klass(value)
-        except (ValueError, TypeError) as e:
-            raise TraitError(e)
+        if not isinstance(value, self.klass):
+            try:
+                value = self.klass(value)
+            except (ValueError, TypeError) as e:
+                raise TraitError(e)
         return super(XarrayType, self).validate(obj, value)
 
     def set(self, obj, value):
@@ -251,7 +252,8 @@ class XarrayType(SciType):
         if default_value is Empty:
             default_value = klass()
         elif default_value is not None and default_value is not Undefined:
-            default_value = klass(default_value)
+            if not isinstance(default_value, klass):
+                default_value = klass(default_value)
         super(XarrayType, self).__init__(default_value=default_value, 
allow_none=allow_none, **kwargs)
 
     def make_dynamic_default(self):

++++++ traittypes-0.2.1.tar.gz -> traittypes-0.2.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/MANIFEST.in 
new/traittypes-0.2.3/MANIFEST.in
--- old/traittypes-0.2.1/MANIFEST.in    1970-01-01 01:00:00.000000000 +0100
+++ new/traittypes-0.2.3/MANIFEST.in    2025-10-21 09:43:15.000000000 +0200
@@ -0,0 +1,22 @@
+include CONTRIBUTING.md
+include README.md
+include LICENSE
+
+# Documentation
+graft docs
+exclude docs/\#*
+
+# Examples
+graft examples
+
+# docs subdirs we want to skip
+prune docs/build
+prune docs/gh-pages
+prune docs/dist
+
+# Patterns to exclude from any directory
+global-exclude *~
+global-exclude *.pyc
+global-exclude *.pyo
+global-exclude .git
+global-exclude .ipynb_checkpoints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/PKG-INFO 
new/traittypes-0.2.3/PKG-INFO
--- old/traittypes-0.2.1/PKG-INFO       2018-06-16 09:33:42.000000000 +0200
+++ new/traittypes-0.2.3/PKG-INFO       2025-10-22 13:05:24.443278800 +0200
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.4
 Name: traittypes
-Version: 0.2.1
+Version: 0.2.3
 Summary: Scipy trait types
 Home-page: http://ipython.org
 Author: IPython Development Team
 Author-email: [email protected]
 License: BSD
-Description: Custom trait types for scientific computing.
 Keywords: Interactive,Interpreter,Shell,Web
 Platform: Linux
 Platform: Mac OS X
@@ -20,3 +19,24 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
+License-File: LICENSE
+Requires-Dist: traitlets>=4.2.2
+Provides-Extra: test
+Requires-Dist: numpy; extra == "test"
+Requires-Dist: pandas; extra == "test"
+Requires-Dist: xarray; extra == "test"
+Requires-Dist: pytest; extra == "test"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: keywords
+Dynamic: license
+Dynamic: license-file
+Dynamic: platform
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: summary
+
+Custom trait types for scientific computing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/README.md 
new/traittypes-0.2.3/README.md
--- old/traittypes-0.2.1/README.md      2018-06-16 09:31:24.000000000 +0200
+++ new/traittypes-0.2.3/README.md      2025-10-22 10:14:42.000000000 +0200
@@ -42,7 +42,7 @@
 
 `traittypes` extends the `traitlets` library with an implementation of trait 
types for numpy arrays, pandas dataframes, pandas series, xarray datasets and 
xarray dataarrays.
  - `traittypes` works around some limitations with numpy array comparison to 
only trigger change events when necessary.
- - `traittypes` also extends the traitlets API for adding custom validators to 
constained proposed values for the attribute.
+ - `traittypes` also extends the traitlets API for adding custom validators to 
constrain proposed values for the attribute.
 
 For a general introduction to `traitlets`, check out the [traitlets 
documentation](https://traitlets.readthedocs.io/en/stable/).
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/setup.cfg 
new/traittypes-0.2.3/setup.cfg
--- old/traittypes-0.2.1/setup.cfg      2018-06-15 15:32:38.000000000 +0200
+++ new/traittypes-0.2.3/setup.cfg      2025-10-22 13:05:24.443496200 +0200
@@ -1,5 +1,10 @@
 [bdist_wheel]
-universal=1
+universal = 1
 
 [metadata]
 license_file = LICENSE
+
+[egg_info]
+tag_build = 
+tag_date = 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes/_version.py 
new/traittypes-0.2.3/traittypes/_version.py
--- old/traittypes-0.2.1/traittypes/_version.py 2018-06-16 09:32:53.000000000 
+0200
+++ new/traittypes-0.2.3/traittypes/_version.py 2025-10-22 13:05:03.000000000 
+0200
@@ -1,2 +1,2 @@
-version_info = (0, 2, 1)
+version_info = (0, 2, 3)
 __version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/traittypes-0.2.1/traittypes/tests/test_import_errors.py 
new/traittypes-0.2.3/traittypes/tests/test_import_errors.py
--- old/traittypes-0.2.1/traittypes/tests/test_import_errors.py 2018-04-27 
16:58:52.000000000 +0200
+++ new/traittypes-0.2.3/traittypes/tests/test_import_errors.py 2025-10-21 
09:43:15.000000000 +0200
@@ -1,10 +1,9 @@
 
-import nose.tools as nt
+import pytest
 
 from ..traittypes import _DelayedImportError
 
-
[email protected](RuntimeError)
 def test_delayed_access_raises():
     dummy = _DelayedImportError('mypackage')
-    dummy.asarray([1, 2, 3])
+    with pytest.raises(RuntimeError):
+        dummy.asarray([1, 2, 3])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes/tests/test_traittypes.py 
new/traittypes-0.2.3/traittypes/tests/test_traittypes.py
--- old/traittypes-0.2.1/traittypes/tests/test_traittypes.py    2018-06-15 
15:32:38.000000000 +0200
+++ new/traittypes-0.2.3/traittypes/tests/test_traittypes.py    2025-10-22 
10:15:19.000000000 +0200
@@ -17,17 +17,16 @@
 
 
 class IntArrayTrait(HasTraits):
-    value = Array().tag(dtype=np.int)
+    value = Array().tag(dtype=np.int32)
 
 
 class TestIntArray(TraitTestBase):
     """
-    Test dtype validation with a ``dtype=np.int``
+    Test dtype validation with a ``dtype=np.int32``
     """
     obj = IntArrayTrait()
 
     _good_values = [1, [1, 2, 3], [[1, 2, 3], [4, 5, 6]], np.array([1])]
-    _bad_values = [[1, [0, 0]]]
 
     def assertEqual(self, v1, v2):
         return np.testing.assert_array_equal(v1, v2)
@@ -150,7 +149,7 @@
     def test_series_equal(self):
         notifications = []
         class Foo(HasTraits):
-            bar = Series([1, 2])
+            bar = Series([1, 2], dtype=np.int64)
             @observe('bar')
             def _(self, change):
                 notifications.append(change)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes/traittypes.py 
new/traittypes-0.2.3/traittypes/traittypes.py
--- old/traittypes-0.2.1/traittypes/traittypes.py       2018-06-15 
15:32:38.000000000 +0200
+++ new/traittypes-0.2.3/traittypes/traittypes.py       2025-10-22 
13:04:57.000000000 +0200
@@ -1,7 +1,8 @@
 import inspect
 import warnings
 
-from traitlets import TraitType, TraitError, Undefined, Sentinel
+from traitlets import TraitType, TraitError, Undefined
+from .utils import Sentinel
 
 class _DelayedImportError(object):
     def __init__(self, package_name):
@@ -154,18 +155,20 @@
                 not old_value.equals(new_value)):
             obj._notify_trait(self.name, old_value, new_value)
 
-    def __init__(self, default_value=Empty, allow_none=False, klass=None, 
**kwargs):
+    def __init__(self, default_value=Empty, allow_none=False, klass=None, 
klass_kwargs=None, **kwargs):
         if klass is None:
             klass = self.klass
+        if klass_kwargs is None:
+            klass_kwargs = {}
         if (klass is not None) and inspect.isclass(klass):
             self.klass = klass
         else:
             raise TraitError('The klass attribute must be a class'
                                 ' not: %r' % klass)
         if default_value is Empty:
-            default_value = klass()
+            default_value = klass(**klass_kwargs)
         elif default_value is not None and default_value is not Undefined:
-            default_value = klass(default_value)
+            default_value = klass(default_value, **klass_kwargs)
         super(PandasType, self).__init__(default_value=default_value, 
allow_none=allow_none, **kwargs)
 
     def make_dynamic_default(self):
@@ -186,7 +189,8 @@
             import pandas as pd
             kwargs['klass'] = pd.DataFrame
         super(DataFrame, self).__init__(
-            default_value=default_value, allow_none=allow_none, dtype=dtype, 
**kwargs)
+            default_value=default_value, allow_none=allow_none, **kwargs)
+        self.tag(dtype=dtype)
 
 
 class Series(PandasType):
@@ -200,8 +204,11 @@
         if 'klass' not in kwargs and self.klass is None:
             import pandas as pd
             kwargs['klass'] = pd.Series
+        if dtype is None:
+            dtype = np.float64
         super(Series, self).__init__(
-            default_value=default_value, allow_none=allow_none, dtype=dtype, 
**kwargs)
+            default_value=default_value, allow_none=allow_none, 
klass_kwargs={"dtype": dtype}, **kwargs)
+        self.tag(dtype=dtype)
         self.dtype = dtype
 
 
@@ -265,7 +272,8 @@
             import xarray as xr
             kwargs['klass'] = xr.Dataset
         super(Dataset, self).__init__(
-            default_value=default_value, allow_none=allow_none, dtype=dtype, 
**kwargs)
+            default_value=default_value, allow_none=allow_none, **kwargs)
+        self.tag(dtype=dtype)
 
 
 class DataArray(XarrayType):
@@ -280,5 +288,6 @@
             import xarray as xr
             kwargs['klass'] = xr.DataArray
         super(DataArray, self).__init__(
-            default_value=default_value, allow_none=allow_none, dtype=dtype, 
**kwargs)
+            default_value=default_value, allow_none=allow_none, **kwargs)
+        self.tag(dtype=dtype)
         self.dtype = dtype
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes/utils.py 
new/traittypes-0.2.3/traittypes/utils.py
--- old/traittypes-0.2.1/traittypes/utils.py    1970-01-01 01:00:00.000000000 
+0100
+++ new/traittypes-0.2.3/traittypes/utils.py    2025-10-21 09:43:15.000000000 
+0200
@@ -0,0 +1,22 @@
+"""Sentinel class for constants with useful reprs"""
+
+# Copyright (c) Jupyter Development Team.
+# Distributed under the terms of the Modified BSD License.
+
+
+class Sentinel(object):
+
+    def __init__(self, name, module, docstring=None):
+        self.name = name
+        self.module = module
+        if docstring:
+            self.__doc__ = docstring
+
+    def __repr__(self):
+        return str(self.module) + '.' + self.name
+
+    def __copy__(self):
+        return self
+
+    def __deepcopy__(self, memo):
+        return self
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes.egg-info/PKG-INFO 
new/traittypes-0.2.3/traittypes.egg-info/PKG-INFO
--- old/traittypes-0.2.1/traittypes.egg-info/PKG-INFO   1970-01-01 
01:00:00.000000000 +0100
+++ new/traittypes-0.2.3/traittypes.egg-info/PKG-INFO   2025-10-22 
13:05:24.000000000 +0200
@@ -0,0 +1,42 @@
+Metadata-Version: 2.4
+Name: traittypes
+Version: 0.2.3
+Summary: Scipy trait types
+Home-page: http://ipython.org
+Author: IPython Development Team
+Author-email: [email protected]
+License: BSD
+Keywords: Interactive,Interpreter,Shell,Web
+Platform: Linux
+Platform: Mac OS X
+Platform: Windows
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+License-File: LICENSE
+Requires-Dist: traitlets>=4.2.2
+Provides-Extra: test
+Requires-Dist: numpy; extra == "test"
+Requires-Dist: pandas; extra == "test"
+Requires-Dist: xarray; extra == "test"
+Requires-Dist: pytest; extra == "test"
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: keywords
+Dynamic: license
+Dynamic: license-file
+Dynamic: platform
+Dynamic: provides-extra
+Dynamic: requires-dist
+Dynamic: summary
+
+Custom trait types for scientific computing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes.egg-info/SOURCES.txt 
new/traittypes-0.2.3/traittypes.egg-info/SOURCES.txt
--- old/traittypes-0.2.1/traittypes.egg-info/SOURCES.txt        1970-01-01 
01:00:00.000000000 +0100
+++ new/traittypes-0.2.3/traittypes.egg-info/SOURCES.txt        2025-10-22 
13:05:24.000000000 +0200
@@ -0,0 +1,26 @@
+LICENSE
+MANIFEST.in
+README.md
+setup.cfg
+setup.py
+docs/Makefile
+docs/make.bat
+docs/requirements.txt
+docs/source/api_documentation.rst
+docs/source/conf.py
+docs/source/index.rst
+docs/source/introduction.rst
+docs/source/usage.rst
+traittypes/__init__.py
+traittypes/_version.py
+traittypes/traittypes.py
+traittypes/utils.py
+traittypes.egg-info/PKG-INFO
+traittypes.egg-info/SOURCES.txt
+traittypes.egg-info/dependency_links.txt
+traittypes.egg-info/requires.txt
+traittypes.egg-info/top_level.txt
+traittypes/tests/__init__.py
+traittypes/tests/test_import_errors.py
+traittypes/tests/test_traittypes.py
+traittypes/tests/test_validators.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/traittypes-0.2.1/traittypes.egg-info/dependency_links.txt 
new/traittypes-0.2.3/traittypes.egg-info/dependency_links.txt
--- old/traittypes-0.2.1/traittypes.egg-info/dependency_links.txt       
1970-01-01 01:00:00.000000000 +0100
+++ new/traittypes-0.2.3/traittypes.egg-info/dependency_links.txt       
2025-10-22 13:05:24.000000000 +0200
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes.egg-info/requires.txt 
new/traittypes-0.2.3/traittypes.egg-info/requires.txt
--- old/traittypes-0.2.1/traittypes.egg-info/requires.txt       1970-01-01 
01:00:00.000000000 +0100
+++ new/traittypes-0.2.3/traittypes.egg-info/requires.txt       2025-10-22 
13:05:24.000000000 +0200
@@ -0,0 +1,7 @@
+traitlets>=4.2.2
+
+[test]
+numpy
+pandas
+xarray
+pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/traittypes-0.2.1/traittypes.egg-info/top_level.txt 
new/traittypes-0.2.3/traittypes.egg-info/top_level.txt
--- old/traittypes-0.2.1/traittypes.egg-info/top_level.txt      1970-01-01 
01:00:00.000000000 +0100
+++ new/traittypes-0.2.3/traittypes.egg-info/top_level.txt      2025-10-22 
13:05:24.000000000 +0200
@@ -0,0 +1 @@
+traittypes

Reply via email to