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
