Property getter return values are not validated
- Dominant language
- Python
- Stars
- 462
- Forks
- 90
- PR merge metrics
- No merged PRs in 30d
Description
Given the following code, one might expect the getter `_get_bar` to cause a `TraitError`, since the returned value (a string) is incompatible with the type declared in the `Property` (`Int()`). However, no `TraitError` is issued (or at least, not visibly).
The [docs](https://docs.enthought.com/traits/6.4/traits_user_manual/advanced.html) suggest that the intent is to validate:
> you can define a Property trait by simply passing another trait. For example:
>
> source = Property( Code )
> This line defines a trait whose value is validated by the Code trait, and whose getter and setter methods are defined elsewhere on the same class.
>
I doubt that we could change the behaviour now without breaking lots of code, but we could at least update the documentation to be accurate.
Example code:
```python
from traits.api import HasStrictTraits, Int, Property
class A(HasStrictTraits):
foo = Int()
bar = Property(Int(), observe="foo")
def _get_bar(self):
return "definitely not an integer"
a = A(foo=43)
print(a.bar)
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.