Skip to content

Commit fac92d6

Browse files
committed
Merge pull request #27 from SylvainCorlay/add_traits
Allow adding multiple traits at once
2 parents 02d1ccc + 4fdc908 commit fac92d6

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

traitlets/tests/test_traitlets.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,12 +1576,12 @@ class A(HasTraits):
15761576
self.assertTrue(not hasattr(a, 'y'))
15771577

15781578
# Dynamically add trait x.
1579-
a.add_trait('x', Int())
1579+
a.add_traits(x=Int())
15801580
self.assertTrue(hasattr(a, 'x'))
15811581
self.assertTrue(isinstance(a, (A, )))
15821582

15831583
# Dynamically add trait y.
1584-
a.add_trait('y', Float())
1584+
a.add_traits(y=Float())
15851585
self.assertTrue(hasattr(a, 'y'))
15861586
self.assertTrue(isinstance(a, (A, )))
15871587
self.assertEqual(a.__class__.__name__, A.__name__)

traitlets/traitlets.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -845,11 +845,12 @@ def trait_metadata(self, traitname, key, default=None):
845845
else:
846846
return trait.get_metadata(key, default)
847847

848-
def add_trait(self, name, trait):
849-
"""Dynamically add a trait attribute to the HasTraits instance."""
848+
def add_traits(self, **traits):
849+
"""Dynamically add trait attributes to the HasTraits instance."""
850850
self.__class__ = type(self.__class__.__name__, (self.__class__,),
851-
{name: trait})
852-
trait.instance_init(self)
851+
traits)
852+
for trait in traits.values():
853+
trait.instance_init(self)
853854

854855
#-----------------------------------------------------------------------------
855856
# Actual TraitTypes implementations/subclasses

0 commit comments

Comments
 (0)