##// END OF EJS Templates
Split instance_init in two
Sylvain Corlay -
Show More
@@ -356,6 +356,9 b' class TraitType(object):'
356 """Create a new instance of the default value."""
356 """Create a new instance of the default value."""
357 return self.default_value
357 return self.default_value
358
358
359 def decorate(self, obj):
360 pass
361
359 def instance_init(self, obj):
362 def instance_init(self, obj):
360 """This is called by :meth:`HasTraits.__new__` to finish init'ing.
363 """This is called by :meth:`HasTraits.__new__` to finish init'ing.
361
364
@@ -559,7 +562,9 b' class HasTraits(py3compat.with_metaclass(MetaHasTraits, object)):'
559 pass
562 pass
560 else:
563 else:
561 if isinstance(value, TraitType):
564 if isinstance(value, TraitType):
562 value.instance_init(inst)
565 value.decorate(inst)
566 if key not in kw:
567 value.instance_init(inst)
563
568
564 return inst
569 return inst
565
570
@@ -872,9 +877,9 b' class Type(ClassBasedTraitType):'
872 return result + ' or None'
877 return result + ' or None'
873 return result
878 return result
874
879
875 def instance_init(self, obj):
880 def decorate(self, obj):
876 self._resolve_classes()
881 self._resolve_classes()
877 super(Type, self).instance_init(obj)
882 super(Type, self).decorate(obj)
878
883
879 def _resolve_classes(self):
884 def _resolve_classes(self):
880 if isinstance(self.klass, py3compat.string_types):
885 if isinstance(self.klass, py3compat.string_types):
@@ -981,9 +986,9 b' class Instance(ClassBasedTraitType):'
981
986
982 return result
987 return result
983
988
984 def instance_init(self, obj):
989 def decorate(self, obj):
985 self._resolve_classes()
990 self._resolve_classes()
986 super(Instance, self).instance_init(obj)
991 super(Instance, self).decorate(obj)
987
992
988 def _resolve_classes(self):
993 def _resolve_classes(self):
989 if isinstance(self.klass, py3compat.string_types):
994 if isinstance(self.klass, py3compat.string_types):
@@ -1078,16 +1083,13 b' class Union(TraitType):'
1078 self.default_value = self.trait_types[0].get_default_value()
1083 self.default_value = self.trait_types[0].get_default_value()
1079 super(Union, self).__init__(**metadata)
1084 super(Union, self).__init__(**metadata)
1080
1085
1081 def _resolve_classes(self):
1086 def decorate(self, obj):
1082 for trait_type in self.trait_types:
1087 for trait_type in self.trait_types:
1083 trait_type.name = self.name
1088 trait_type.name = self.name
1084 trait_type.this_class = self.this_class
1089 trait_type.this_class = self.this_class
1085 if hasattr(trait_type, '_resolve_classes'):
1090 if hasattr(trait_type, '_resolve_classes'):
1086 trait_type._resolve_classes()
1091 trait_type._resolve_classes()
1087
1092 super(Union, self).decorate(obj)
1088 def instance_init(self, obj):
1089 self._resolve_classes()
1090 super(Union, self).instance_init(obj)
1091
1093
1092 def validate(self, obj, value):
1094 def validate(self, obj, value):
1093 for trait_type in self.trait_types:
1095 for trait_type in self.trait_types:
@@ -1468,12 +1470,12 b' class Container(Instance):'
1468 validated.append(v)
1470 validated.append(v)
1469 return self.klass(validated)
1471 return self.klass(validated)
1470
1472
1471 def instance_init(self, obj):
1473 def decorate(self, obj):
1472 if isinstance(self._trait, TraitType):
1474 if isinstance(self._trait, TraitType):
1473 self._trait.this_class = self.this_class
1475 self._trait.this_class = self.this_class
1474 if hasattr(self._trait, '_resolve_classes'):
1476 if hasattr(self._trait, '_resolve_classes'):
1475 self._trait._resolve_classes()
1477 self._trait._resolve_classes()
1476 super(Container, self).instance_init(obj)
1478 super(Container, self).decorate(obj)
1477
1479
1478
1480
1479 class List(Container):
1481 class List(Container):
@@ -1639,13 +1641,13 b' class Tuple(Container):'
1639 validated.append(v)
1641 validated.append(v)
1640 return tuple(validated)
1642 return tuple(validated)
1641
1643
1642 def instance_init(self, obj):
1644 def decorate(self, obj):
1643 for trait in self._traits:
1645 for trait in self._traits:
1644 if isinstance(trait, TraitType):
1646 if isinstance(trait, TraitType):
1645 trait.this_class = self.this_class
1647 trait.this_class = self.this_class
1646 if hasattr(trait, '_resolve_classes'):
1648 if hasattr(trait, '_resolve_classes'):
1647 trait._resolve_classes()
1649 trait._resolve_classes()
1648 super(Container, self).instance_init(obj)
1650 super(Container, self).decorate(obj)
1649
1651
1650
1652
1651 class Dict(Instance):
1653 class Dict(Instance):
General Comments 0
You need to be logged in to leave comments. Login now