---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-31-2fb9ce06acbf> in <module>
----> 1 c.x = 5
~/conda/lib/python3.6/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
583 raise TraitError('The "%s" trait is read-only.' % self.name)
584 else:
--> 585 self.set(obj, value)
586
587 def _validate(self, obj, value):
~/conda/lib/python3.6/site-packages/traitlets/traitlets.py in set(self, obj, value)
557
558 def set(self, obj, value):
--> 559 new_value = self._validate(obj, value)
560 try:
561 old_value = obj._trait_values[self.name]
~/conda/lib/python3.6/site-packages/traitlets/traitlets.py in _validate(self, obj, value)
591 value = self.validate(obj, value)
592 if obj._cross_validation_lock is False:
--> 593 value = self._cross_validate(obj, value)
594 return value
595
~/conda/lib/python3.6/site-packages/traitlets/traitlets.py in _cross_validate(self, obj, value)
597 if self.name in obj._trait_validators:
598 proposal = Bunch({'trait': self, 'value': value, 'owner': obj})
--> 599 value = obj._trait_validators[self.name](obj, proposal)
600 elif hasattr(obj, '_%s_validate' % self.name):
601 meth_name = '_%s_validate' % self.name
~/conda/lib/python3.6/site-packages/traitlets/traitlets.py in __call__(self, *args, **kwargs)
905 """Pass `*args` and `**kwargs` to the handler's function if it exists."""
906 if hasattr(self, 'func'):
--> 907 return self.func(*args, **kwargs)
908 else:
909 return self._init_call(*args, **kwargs)
<ipython-input-27-11311d9cefa6> in _x_must_be_even(self, proposal)
10 def _x_must_be_even(self, proposal):
11 if proposal.value % 2:
---> 12 raise ValueError("x must b even!")
13 y = EvenInteger()
ValueError: x must b even!