enthought / enthought/traits

Property getter return values are not validated

Open
#1,834 0 comments 0 reactions 0 assignees View on GitHub
component: core component: documentation
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.