Regression: Dynamic defaults for dynamic Enums are now validated
- Dominant language
- Python
- Stars
- 462
- Forks
- 90
- PR merge metrics
- No merged PRs in 30d
Description
PR #1388 fixed validation for dynamic `Enum`s inside a container (e.g., a `List` or `Tuple`).
An unanticipated side-effect of that change is that dynamic defaults for dynamic `Enum`s are also now validated, where previously they weren't. (The same will be true for dynamic `Range` traits.) This broke some code in a Traits-using project.
Given the following code:
```python
from traits.api import Enum, HasStrictTraits, List
class HasDynamicEnumTrait(HasStrictTraits):
allowed_languages = List(["JavaScript", "PHP"])
selected_language = Enum(values="allowed_languages")
def _selected_language_default(self):
return "Python"
print(HasDynamicEnumTrait().selected_language)
```
Running this code under Traits 6.1.1 gives:
```
(traits) mdickinson@mirzakhani canopy_data % python ~/Desktop/bug.py
JavaScript
```
while running the code under Traits 6.2.0 gives:
```
(traits) mdickinson@mirzakhani canopy_data % python ~/Desktop/bug.py
Traceback (most recent call last):
File "/Users/mdickinson/Desktop/bug.py", line 13, in
print(HasDynamicEnumTrait().selected_language)
File "/Users/mdickinson/.venvs/traits/lib/python3.9/site-packages/traits/trait_types.py", line 2101, in _get
value = self.get_value(object, name, trait)
File "/Users/mdickinson/.venvs/traits/lib/python3.9/site-packages/traits/trait_type.py", line 323, in get_value
object.__dict__[cname] = value = trait.default_value_for(
File "/Users/mdickinson/.venvs/traits/lib/python3.9/site-packages/traits/trait_types.py", line 2119, in _validate
self.error(object, name, value)
File "/Users/mdickinson/.venvs/traits/lib/python3.9/site-packages/traits/base_trait_handler.py", line 74, in error
raise TraitError(
traits.trait_errors.TraitError: The 'selected_language' trait of a HasDynamicEnumTrait instance must be 'JavaScript' or 'PHP', but a value of 'Python' was specified.
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.