with self.assertRaises(ValueError):
_PyTime_FromSecondsObject(float('nan'), time_rnd)
+ def test_FromSecondsObject_float_overflow_message(self):
+ # Float path must report a PyTime_t overflow, like the integer path.
+ from _testinternalcapi import _PyTime_FromSecondsObject
+ for value in (PyTime_MAX, PyTime_MIN):
+ for time_rnd, _ in ROUNDING_MODES:
+ with self.subTest(value=value, time_rnd=time_rnd):
+ with self.assertRaisesRegex(
+ OverflowError,
+ "timestamp out of range for C PyTime_t"):
+ _PyTime_FromSecondsObject(value, time_rnd)
+
def test_AsSecondsDouble(self):
from _testcapi import PyTime_AsSecondsDouble
pytime_overflow(void)
{
PyErr_SetString(PyExc_OverflowError,
- "timestamp too large to convert to C PyTime_t");
+ "timestamp out of range for C PyTime_t");
}
/* See comments in pytime_double_to_denominator */
if (!((double)PyTime_MIN <= d && d < -(double)PyTime_MIN)) {
- pytime_time_t_overflow();
+ pytime_overflow();
*tp = 0;
return -1;
}