Skip to content

Commit

Permalink
Merge pull request #27 from SylvainCorlay/add_traits
Browse files Browse the repository at this point in the history
Allow adding multiple traits at once
  • Loading branch information
minrk committed Jun 5, 2015
2 parents 02d1ccc + 4fdc908 commit fac92d6
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
4 changes: 2 additions & 2 deletions traitlets/tests/test_traitlets.py
Original file line number Diff line number Diff line change
Expand Up @@ -1576,12 +1576,12 @@ class A(HasTraits):
self.assertTrue(not hasattr(a, 'y'))

# Dynamically add trait x.
a.add_trait('x', Int())
a.add_traits(x=Int())
self.assertTrue(hasattr(a, 'x'))
self.assertTrue(isinstance(a, (A, )))

# Dynamically add trait y.
a.add_trait('y', Float())
a.add_traits(y=Float())
self.assertTrue(hasattr(a, 'y'))
self.assertTrue(isinstance(a, (A, )))
self.assertEqual(a.__class__.__name__, A.__name__)
Expand Down
9 changes: 5 additions & 4 deletions traitlets/traitlets.py
Original file line number Diff line number Diff line change
Expand Up @@ -845,11 +845,12 @@ def trait_metadata(self, traitname, key, default=None):
else:
return trait.get_metadata(key, default)

def add_trait(self, name, trait):
"""Dynamically add a trait attribute to the HasTraits instance."""
def add_traits(self, **traits):
"""Dynamically add trait attributes to the HasTraits instance."""
self.__class__ = type(self.__class__.__name__, (self.__class__,),
{name: trait})
trait.instance_init(self)
traits)
for trait in traits.values():
trait.instance_init(self)

#-----------------------------------------------------------------------------
# Actual TraitTypes implementations/subclasses
Expand Down

0 comments on commit fac92d6

Please sign in to comment.