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 pypy-issue@python.org https://mail.python.org/mailman/listinfo/pypy-issue