Author: Matti Picus <matti.pi...@gmail.com> Branch: py3.5 Changeset: r95506:b5e988c47134 Date: 2018-12-17 11:40 +0200 http://bitbucket.org/pypy/pypy/changeset/b5e988c47134/
Log: fix some datetime.py test failures. Should this file move to lib_pypy? diff --git a/lib-python/3/datetime.py b/lib-python/3/datetime.py --- a/lib-python/3/datetime.py +++ b/lib-python/3/datetime.py @@ -521,7 +521,11 @@ -self._microseconds) def __pos__(self): - return self + # for CPython compatibility, we cannot use + # our __class__ here, but need a real timedelta + return timedelta(self._days, + self._seconds, + self._microseconds) def __abs__(self): if self._days < 0: @@ -813,8 +817,7 @@ month = self._month if day is None: day = self._day - # PyPy fix: returns type(self)() instead of date() - return type(self)(year, month, day) + return date.__new__(type(self), year, month, day) # Comparisons of date objects with other. @@ -1289,8 +1292,8 @@ microsecond = self.microsecond if tzinfo is True: tzinfo = self.tzinfo - # PyPy fix: returns type(self)() instead of time() - return type(self)(hour, minute, second, microsecond, tzinfo) + return time.__new__(type(self), + hour, minute, second, microsecond, tzinfo) # Pickle support. @@ -1341,13 +1344,13 @@ hour, minute, second, microsecond) _check_tzinfo_arg(tzinfo) self = dateinterop.__new__(cls) - self._year = year - self._month = month - self._day = day - self._hour = hour - self._minute = minute - self._second = second - self._microsecond = microsecond + self._year = int(year) + self._month = int(month) + self._day = int(day) + self._hour = int(hour) + self._minute = int(minute) + self._second = int(second) + self._microsecond = int(microsecond) self._tzinfo = tzinfo self._hashcode = -1 return self @@ -1503,8 +1506,8 @@ if tzinfo is True: tzinfo = self.tzinfo # PyPy fix: returns type(self)() instead of datetime() - return type(self)(year, month, day, hour, minute, second, microsecond, - tzinfo) + return datetime.__new__(type(self), year, month, day, hour, minute, + second, microsecond, tzinfo) def astimezone(self, tz=None): if tz is None: @@ -1768,7 +1771,10 @@ if myoff == otoff: return base if myoff is None or otoff is None: - raise TypeError("cannot mix naive and timezone-aware time") + # The CPython _datetimemodule.c error message and the + # datetime.py one are different + raise TypeError("can't subtract offset-naive and " + "offset-aware datetimes") return base + otoff - myoff def __hash__(self): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit