traits
traits copied to clipboard
Observable typed attributes for Python classes
This is a reminder to myself to revisit the pickling infrastructure for `TraitListObject` at some point before the 6.1.0 release. In particular: - we don't have good tests for pickling...
Currently `trait_added` and `trait_modified` are reported by public methods `HasTraits.traits` and `HasTraits.class_traits`. Both of these traits are defined by `traits` for internal use and are typically not useful for downstream...
This would be straightforward to write using the standard library URL parsing module. Would potentially be useful in a number of places, most immediately for things like the `HTMLEditor` in...
The error messages produced by operations on nested collections are incorrect. After: ```python >>> from traits.api import * >>> class A(HasTraits): ... foo = List(List(Int)) ... >>> a = A(foo=[[1,...
Currently setting up `Delegate` traits (and the related `DelegatesTo` and `PrototypedFrom`) is very expensive in terms of time - not just for setting up dynamic listeners, but also because trait...
Consider this: ```python from traits.api import HasTraits, Instance, Str class Foo(HasTraits): name = Str() def handler(object, name, old, new): print("Changed!", (object, name, old, new)) foo = Foo() foo.add_trait("child", Instance(Foo)) foo.on_trait_change(handler,...
We should no longer need `__newobj__` when pickling; we should be able to get rid of the `__reduce__` and `__reduce_ex__` methods that make use of it. I'd like to get...
I suggest that we document the `_trait*` portion of the namespace of a `HasTraits` object as reserved for use by Traits itself: that is, users should avoid methods or traits...
I came across the following base class and subclass: ``` class Base(HasTraits): a = Str("a") class Child(Base): a = "overridden" ``` If you try to inspect the default value for...
Some part-dynamic Range traits don't work correctly. The following definition raises a `ValueError` at class-creation time: ``` >>> class A(HasTraits): ... low = Int(0) ... value = Int(3) ... r...