diff --git a/traits/adaptation/adaptation_offer.py b/traits/adaptation/adaptation_offer.py index a78181a83..4dea6cdfe 100644 --- a/traits/adaptation/adaptation_offer.py +++ b/traits/adaptation/adaptation_offer.py @@ -28,12 +28,8 @@ class AdaptationOffer(HasTraits): def __repr__(self): """ Return a string representation of the object. """ - template = " '{to}'>" - - from_ = self.from_protocol_name - to = self.to_protocol_name - - return template.format(from_=from_, to=to) + return (f"<{self.__class__.__name__}: '{self.from_protocol_name}' " + f"-> '{self.to_protocol_name}'>") #### 'AdaptationOffer' protocol ########################################### diff --git a/traits/adaptation/tests/test_adaptation_offer.py b/traits/adaptation/tests/test_adaptation_offer.py index 29d8852d8..69bb64142 100644 --- a/traits/adaptation/tests/test_adaptation_offer.py +++ b/traits/adaptation/tests/test_adaptation_offer.py @@ -56,3 +56,20 @@ def test_lazy_loading(self): from traits.adaptation.tests.lazy_examples import IFoo self.assertIs(to_protocol, IFoo) + + def test_adaptation_offer_str_representation(self): + """ test string representation of the AdaptationOffer class. """ + + class Foo: + pass + + class Bar: + pass + + adaptation_offer = AdaptationOffer(from_protocol=Foo, to_protocol=Bar) + desired_repr = " '{}'>".format( + adaptation_offer.from_protocol_name, + adaptation_offer.to_protocol_name + ) + self.assertEqual(desired_repr, str(adaptation_offer)) + self.assertEqual(desired_repr, repr(adaptation_offer)) diff --git a/traits/observation/_dict_change_event.py b/traits/observation/_dict_change_event.py index d4b0c11ec..bf6f98c31 100644 --- a/traits/observation/_dict_change_event.py +++ b/traits/observation/_dict_change_event.py @@ -44,11 +44,10 @@ def __init__(self, *, object, removed, added): def __repr__(self): return ( - "{event.__class__.__name__}(" - "object={event.object!r}, " - "removed={event.removed!r}, " - "added={event.added!r}" - ")".format(event=self) + f"{self.__class__.__name__}(" + f"object={self.object!r}, " + f"removed={self.removed!r}, " + f"added={self.added!r})" ) diff --git a/traits/observation/_list_change_event.py b/traits/observation/_list_change_event.py index 1eaf3a2d1..c08f38e54 100644 --- a/traits/observation/_list_change_event.py +++ b/traits/observation/_list_change_event.py @@ -39,12 +39,11 @@ def __init__(self, *, object, index, removed, added): def __repr__(self): return ( - "{event.__class__.__name__}(" - "object={event.object!r}, " - "index={event.index!r}, " - "removed={event.removed!r}, " - "added={event.added!r}" - ")".format(event=self) + f"{self.__class__.__name__}(" + f"object={self.object!r}, " + f"index={self.index!r}, " + f"removed={self.removed!r}, " + f"added={self.added!r})" ) diff --git a/traits/observation/_set_change_event.py b/traits/observation/_set_change_event.py index 2ddb447d1..935fde5d1 100644 --- a/traits/observation/_set_change_event.py +++ b/traits/observation/_set_change_event.py @@ -34,11 +34,10 @@ def __init__(self, *, object, removed, added): def __repr__(self): return ( - "{event.__class__.__name__}(" - "object={event.object!r}, " - "removed={event.removed!r}, " - "added={event.added!r}" - ")".format(event=self) + f"{self.__class__.__name__}(" + f"object={self.object!r}, " + f"removed={self.removed!r}, " + f"added={self.added!r})" ) diff --git a/traits/tests/test_trait_dict_object.py b/traits/tests/test_trait_dict_object.py index 5e185c83f..0de71c20b 100644 --- a/traits/tests/test_trait_dict_object.py +++ b/traits/tests/test_trait_dict_object.py @@ -15,7 +15,7 @@ from unittest import mock from traits.api import HasTraits -from traits.trait_dict_object import TraitDict, TraitDictObject +from traits.trait_dict_object import TraitDict, TraitDictEvent, TraitDictObject from traits.trait_errors import TraitError from traits.trait_types import Dict, Int, Str @@ -433,3 +433,25 @@ def test_trait_dict_object_pickle(self): tdo_unpickled.value_validator("1") tdo_unpickled.value_validator(1) tdo_unpickled.value_validator(True) + + +class TestTraitDictEvent(unittest.TestCase): + + def test_trait_dict_event_str_representation(self): + """ Test string representation of the TraitDictEvent class. """ + desired_repr = "TraitDictEvent(removed={}, added={}, changed={})" + trait_dict_event = TraitDictEvent() + self.assertEqual(desired_repr, str(trait_dict_event)) + self.assertEqual(desired_repr, repr(trait_dict_event)) + + def test_trait_dict_event_subclass_str_representation(self): + """ Test string representation of a subclass of the TraitDictEvent + class. """ + + class DifferentName(TraitDictEvent): + pass + + desired_repr = "DifferentName(removed={}, added={}, changed={})" + differnt_name_subclass = DifferentName() + self.assertEqual(desired_repr, str(differnt_name_subclass)) + self.assertEqual(desired_repr, repr(differnt_name_subclass)) diff --git a/traits/tests/test_trait_list_object.py b/traits/tests/test_trait_list_object.py index 8af740cb4..ac79344bc 100644 --- a/traits/tests/test_trait_list_object.py +++ b/traits/tests/test_trait_list_object.py @@ -93,6 +93,25 @@ def test_defaults(self): self.assertEqual(event.removed, []) self.assertEqual(event.added, []) + def test_trait_list_event_str_representation(self): + """ Test string representation of the TraitListEvent class. """ + desired_repr = "TraitListEvent(index=0, removed=[], added=[])" + trait_list_event = TraitListEvent() + self.assertEqual(desired_repr, str(trait_list_event)) + self.assertEqual(desired_repr, repr(trait_list_event)) + + def test_trait_list_event_subclass_str_representation(self): + """ Test string representation of a subclass of the TraitListEvent + class. """ + + class DifferentName(TraitListEvent): + pass + + desired_repr = "DifferentName(index=0, removed=[], added=[])" + different_name_subclass = DifferentName() + self.assertEqual(desired_repr, str(different_name_subclass)) + self.assertEqual(desired_repr, repr(different_name_subclass)) + class TestTraitList(unittest.TestCase): diff --git a/traits/tests/test_trait_set_object.py b/traits/tests/test_trait_set_object.py index 4f17dda76..64bf41e2a 100644 --- a/traits/tests/test_trait_set_object.py +++ b/traits/tests/test_trait_set_object.py @@ -14,7 +14,7 @@ from traits.api import HasTraits, Set, Str from traits.trait_base import _validate_everything from traits.trait_errors import TraitError -from traits.trait_set_object import TraitSet +from traits.trait_set_object import TraitSet, TraitSetEvent from traits.trait_types import _validate_int @@ -516,3 +516,25 @@ class Foo(HasTraits): # then notifier.assert_not_called() + + +class TestTraitSetEvent(unittest.TestCase): + + def test_trait_set_event_str_representation(self): + """ Test string representation of the TraitSetEvent class. """ + desired_repr = "TraitSetEvent(removed=set(), added=set())" + trait_set_event = TraitSetEvent() + self.assertEqual(desired_repr, str(trait_set_event)) + self.assertEqual(desired_repr, repr(trait_set_event)) + + def test_trait_set_event_subclass_str_representation(self): + """ Test string representation of a subclass of the TraitSetEvent + class. """ + + class DifferentName(TraitSetEvent): + pass + + desired_repr = "DifferentName(removed=set(), added=set())" + different_name_subclass = DifferentName() + self.assertEqual(desired_repr, str(different_name_subclass)) + self.assertEqual(desired_repr, repr(different_name_subclass)) diff --git a/traits/trait_dict_object.py b/traits/trait_dict_object.py index fcf929b8b..6b26eefa7 100644 --- a/traits/trait_dict_object.py +++ b/traits/trait_dict_object.py @@ -53,8 +53,11 @@ def __init__(self, *, removed=None, added=None, changed=None): self.changed = changed def __repr__(self): - return "TraitDictEvent(removed={!r}, added={!r}, changed={!r})".format( - self.removed, self.added, self.changed + return ( + f"{self.__class__.__name__}(" + f"removed={self.removed!r}, " + f"added={self.added!r}, " + f"changed={self.changed!r})" ) diff --git a/traits/trait_list_object.py b/traits/trait_list_object.py index 3c74848c0..e4d448ee1 100644 --- a/traits/trait_list_object.py +++ b/traits/trait_list_object.py @@ -54,8 +54,11 @@ def __init__(self, index=0, removed=None, added=None): self.added = added def __repr__(self): - return "TraitListEvent(index={!r}, removed={!r}, added={!r})".format( - self.index, self.removed, self.added + return ( + f"{self.__class__.__name__}(" + f"index={self.index!r}, " + f"removed={self.removed!r}, " + f"added={self.added!r})" ) diff --git a/traits/trait_set_object.py b/traits/trait_set_object.py index bc63131d0..4b9264e81 100644 --- a/traits/trait_set_object.py +++ b/traits/trait_set_object.py @@ -47,8 +47,10 @@ def __init__(self, *, removed=None, added=None): self.added = added def __repr__(self): - return "TraitSetEvent(removed={!r}, added={!r})".format( - self.removed, self.added + return ( + f"{self.__class__.__name__}(" + f"removed={self.removed!r}, " + f"added={self.added!r})" ) diff --git a/traits/util/tests/test_weakidddict.py b/traits/util/tests/test_weakidddict.py index a9d85864a..9bc55c1b6 100644 --- a/traits/util/tests/test_weakidddict.py +++ b/traits/util/tests/test_weakidddict.py @@ -123,3 +123,17 @@ def test_weak_keys_values(self): self.assertEqual(len(wd), 1) del values[0:2] self.assertEqual(len(wd), 0) + + def test_weak_id_dict_str_representation(self): + """ test string representation of the WeakIDDict class. """ + weak_id_dict = WeakIDDict() + desired_repr = "".format(id(weak_id_dict)) + self.assertEqual(desired_repr, str(weak_id_dict)) + self.assertEqual(desired_repr, repr(weak_id_dict)) + + def test_weak_id_key_dict_str_representation(self): + """ test string representation of the WeakIDKeyDict class. """ + weak_id_key_dict = WeakIDKeyDict() + desired_repr = f"" + self.assertEqual(desired_repr, str(weak_id_key_dict)) + self.assertEqual(desired_repr, repr(weak_id_key_dict)) diff --git a/traits/util/weakiddict.py b/traits/util/weakiddict.py index 8e358365d..fb7a3462c 100644 --- a/traits/util/weakiddict.py +++ b/traits/util/weakiddict.py @@ -43,7 +43,7 @@ def __init__(self, dict=None): self.update(dict) def __repr__(self): - return "".format(id(self)) + return f"<{self.__class__.__name__} at 0x{id(self):x}>" def __delitem__(self, key): del self.data[id(key)]