[New-bugs-announce] [issue34023] timedelta(seconds=x) strange results when type(x) == np.int32

Mark Dickinson report at bugs.python.org
Mon Jul 2 09:43:51 EDT 2018


New submission from Mark Dickinson <dickinsm at gmail.com>:

On Python 2.x on Windows, creating a timedelta with an `np.int32` instance for the number of seconds can (somewhat) silently give wrong results.

Enthought Deployment Manager -- https://www.enthought.com
Python 2.7.13 |Enthought, Inc. (x86_64)| (default, Mar  2 2017, 16:05:12) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import datetime
>>> datetime.timedelta(seconds=np.int32(123456789))
__main__:1: RuntimeWarning: overflow encountered in long_scalars
datetime.timedelta(-1, 84354, 76480)

There's at least a warning from NumPy there as NumPy attempts to scale the np.int32 by 10**6, but depending on settings and on how the code is invoked, the user may not see that warning.

This is not an issue on Python 3.x / Windows or on Python 2.x / Unix; in both those cases, the same code gives a TypeError.

This is related to, but not the same as, #5476.

This may well count as a "won't fix", but it seemed at least worth reporting.

----------
components: Extension Modules
messages: 320884
nosy: mark.dickinson
priority: normal
severity: normal
status: open
title: timedelta(seconds=x) strange results when type(x) ==  np.int32
type: behavior
versions: Python 2.7

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue34023>
_______________________________________


More information about the New-bugs-announce mailing list