New issue 2635: datetime.replace always returns datetime.datetime in pypy3
https://bitbucket.org/pypy/pypy/issues/2635/datetimereplace-always-returns
Paul G:
MWE:
`demo_datetime_replace.py`:
```
#!python
from datetime import datetime
class SuperDatetime(datetime):
pass
if __name__ == "__main__":
sdt0 = SuperDatetime(2017, 8, 1)
sdt1 = sdt0.replace(2016, 8, 1)
print(repr(sdt0))
print(repr(sdt1))
```
```
#! bash
$ python2 demo_datetime_replace.py
SuperDatetime(2017, 8, 1, 0, 0)
SuperDatetime(2016, 8, 1, 0, 0)
$ python3 demo_datetime_replace.py
SuperDatetime(2017, 8, 1, 0, 0)
SuperDatetime(2016, 8, 1, 0, 0)
$ pypy demo_datetime_replace.py
SuperDatetime(2017, 8, 1, 0, 0)
SuperDatetime(2016, 8, 1, 0, 0)
$ pypy3 demo_datetime_replace.py
__main__.SuperDatetime(2017, 8, 1, 0, 0)
datetime.datetime(2016, 8, 1, 0, 0)
```
It seems that `pypy3` is *also* the odd man out with respect to how `repr` is
treated, but that's a separate and less important issue.
It's not clear to me how much "`datetime.replace` returns the same class of
object" is part of the Python spec, but it seems reasonable and it's definitely
a shift in behavior. There's [something about subclasses of builtin types
here](http://doc.pypy.org/en/latest/cpython_differences.html#subclasses-of-built-in-types),
but it doesn't seem relevant to me, if I'm understanding it right.
_______________________________________________
pypy-issue mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-issue