enthought / enthought/traits

Date traits accepts datetime values, expect TraitsError instead

Open
#398 3 comments 0 reactions 0 assignees View on GitHub
good first issue
Dominant language
Python
Stars
462
Forks
90
PR merge metrics
No merged PRs in 30d

Description

When an attribute has a `Date` type, then it is meant to be just *Date*, not *Date and Time*. So I would expect assigning a `datetime` object to a Date trait to fail, but it does not.

```
import datetime
from traits.api import Date, HasTraits

class A(HasTraits):
date = Date()
```

```
>>> a = A()
>>> a.date = datetime.datetime(1920, 3, 2) # Expect to raise TraitsError here
>>> a.date
datetime.datetime(1920, 3, 2, 0, 0)
```

This behaviour comes from the fact that `datetime` is a subclass of `date` in Python:
```
>>> isinstance(datetime.datetime(1920, 3, 2), datetime.date)
True
```
See also https://bugs.python.org/issue28878

Propose deprecating allowing `datetime` objects for `Date` type.

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.