From 34a2b39b314e57789eece67a21f5280ac83216ee Mon Sep 17 00:00:00 2001 From: dongjiao Date: Sat, 11 May 2024 17:27:53 +0800 Subject: [PATCH] bugfix:Fix assigning string value to Set --- ...rt-fix-assigning-string-value-to-Set.patch | 60 +++++++++++++++++++ python-traitlets.spec | 6 +- 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 backport-fix-assigning-string-value-to-Set.patch diff --git a/backport-fix-assigning-string-value-to-Set.patch b/backport-fix-assigning-string-value-to-Set.patch new file mode 100644 index 0000000..d2ba045 --- /dev/null +++ b/backport-fix-assigning-string-value-to-Set.patch @@ -0,0 +1,60 @@ +From 5cf34f6c42b6e39aa1e53394443efca3d7329e3b Mon Sep 17 00:00:00 2001 +From: azjps +Date: Fri, 19 Apr 2024 23:07:41 +1200 +Subject: [PATCH] Fix assigning string value to Set (#903) +url:https://github.com/ipython/traitlets/pull/903/commits/4143e7eb0c3e474fe3cb031666b4620cf1e0d832 +--- + tests/test_traitlets.py | 18 ++++++++++++++++++ + traitlets/traitlets.py | 7 +------ + 2 files changed, 19 insertions(+), 6 deletions(-) + +diff --git a/tests/test_traitlets.py b/tests/test_traitlets.py +index dfcf3f0..f9f623b 100644 +--- a/tests/test_traitlets.py ++++ b/tests/test_traitlets.py +@@ -1658,6 +1658,24 @@ class TestList(TraitTestBase): + return value + + ++class SetTrait(HasTraits): ++ value = Set(Unicode()) ++ ++ ++class TestSet(TraitTestBase): ++ obj = SetTrait() ++ ++ _default_value: t.Set[str] = set() ++ _good_values = [{"a", "b"}, "ab"] ++ _bad_values = [1] ++ ++ def coerce(self, value): ++ if isinstance(value, str): ++ # compatibility handling: convert string to set containing string ++ value = {value} ++ return value ++ ++ + class Foo: + pass + +diff --git a/traitlets/traitlets.py b/traitlets/traitlets.py +index 1d1675a..ecd0d7c 100644 +--- a/traitlets/traitlets.py ++++ b/traitlets/traitlets.py +@@ -3698,12 +3698,7 @@ class Set(Container[t.Set[t.Any]]): + + def set(self, obj: t.Any, value: t.Any) -> None: + if isinstance(value, str): +- return super().set( +- obj, +- set( +- value, +- ), +- ) ++ return super().set(obj, {value}) + else: + return super().set(obj, value) + +-- +2.27.0 + diff --git a/python-traitlets.spec b/python-traitlets.spec index 7f4e50c..2bdcebf 100644 --- a/python-traitlets.spec +++ b/python-traitlets.spec @@ -1,11 +1,12 @@ Name: python-traitlets Version: 5.14.1 -Release: 1 +Release: 2 Summary: A lightweight Traits like module. License: BSD-3-Clause URL: https://github.com/ipython/traitlets Source0: https://files.pythonhosted.org/packages/source/t/traitlets/traitlets-%{version}.tar.gz +Patch0: backport-fix-assigning-string-value-to-Set.patch BuildArch: noarch %description @@ -46,6 +47,9 @@ py.test-3 -v traitlets/tests/ %{python3_sitelib}/traitlets*.dist-info/ %changelog +* Sat May 11 2024 dongjiao - 5.14.1-2 +- bugfix:Fix assigning string value to Set + * Fri Mar 1 2024 Dongxing Wang - 5.14.1-1 - Upgrade package with version 5.14.1 Add option to load traitlets values from environement.