New issue 2127: datetime.timedelta.__mul__ causes OverflowError for random 
multiplier
https://bitbucket.org/pypy/pypy/issues/2127/datetimetimedelta__mul__-causes

Victor Sergienko:

timezone.timedelta(weeks=52) * random.random() causes OverflowError:

      File "/Users/vic/Documents/pypy3/lib-python/3/datetime.py", line 534, in 
__mul__
        return self * a / b
      File "/Users/vic/Documents/pypy3/lib-python/3/datetime.py", line 531, in 
__mul__
        self._microseconds * other)
      File "/Users/vic/Documents/pypy3/lib-python/3/datetime.py", line 430, in 
__new__
        raise OverflowError("timedelta # of days is too large: %d" % d)
    OverflowError: timedelta # of days is too large: 2492507137960926996

Probably it's because of this implementation:

    def __mul__(self, other):
        ...
        if isinstance(other, float):
            a, b = other.as_integer_ratio()
            return self * a / b

where `as_integer_ratio()` returns a very big nominator and denominator - which 
is reasonable for random numbers.


_______________________________________________
pypy-issue mailing list
pypy-issue@python.org
https://mail.python.org/mailman/listinfo/pypy-issue

Reply via email to