Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r77326:795f867b8407 Date: 2015-05-15 08:00 +0200 http://bitbucket.org/pypy/pypy/changeset/795f867b8407/
Log: Issue #2048 Don't call "divmod(t, 1.0)". This is just a compatibility trick with the C version of the datetime module in CPython, which doesn't call t.__divmod__() even if it is defined on the class of t. diff --git a/lib_pypy/datetime.py b/lib_pypy/datetime.py --- a/lib_pypy/datetime.py +++ b/lib_pypy/datetime.py @@ -1507,8 +1507,13 @@ converter = _time.localtime if tz is None else _time.gmtime - t, frac = divmod(t, 1.0) - us = _round(frac * 1e6) + if isinstance(t, int): + us = 0 + else: + t_full = t + t = int(_math.floor(t)) + frac = t_full - t + us = _round(frac * 1e6) # If timestamp is less than one microsecond smaller than a # full second, us can be rounded up to 1000000. In this case, @@ -1527,8 +1532,13 @@ @classmethod def utcfromtimestamp(cls, t): "Construct a UTC datetime from a POSIX timestamp (like time.time())." - t, frac = divmod(t, 1.0) - us = _round(frac * 1e6) + if isinstance(t, int): + us = 0 + else: + t_full = t + t = int(_math.floor(t)) + frac = t_full - t + us = _round(frac * 1e6) # If timestamp is less than one microsecond smaller than a # full second, us can be rounded up to 1000000. In this case, _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit