https://github.com/python/cpython/commit/7b178f6cc293a8d230300bd8e0e90c2c75e70d2e
commit: 7b178f6cc293a8d230300bd8e0e90c2c75e70d2e
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: StanFromIreland <[email protected]>
date: 2026-07-06T15:13:32Z
summary:

[3.13] gh-152849: Fix `OverflowError` message for out-of-range timestamps in 
the `time` module (GH-152850) (#153207)

(cherry picked from commit 2d7a74ece7884c9a5f52cc6ac38a6e7ee691b26c)

Co-authored-by: tonghuaroot (童话) <[email protected]>
Co-authored-by: Stan Ulbrych <[email protected]>

files:
A Misc/NEWS.d/next/Library/2026-07-02-13-30-00.gh-issue-152849.K9dRvP.rst
M Lib/test/test_time.py
M Python/pytime.c

diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 5f5d8527a236fd0..5c7d560621c7ebb 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -974,6 +974,17 @@ def test_FromSecondsObject(self):
             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
 
diff --git 
a/Misc/NEWS.d/next/Library/2026-07-02-13-30-00.gh-issue-152849.K9dRvP.rst 
b/Misc/NEWS.d/next/Library/2026-07-02-13-30-00.gh-issue-152849.K9dRvP.rst
new file mode 100644
index 000000000000000..053a5dfea3f3ff4
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2026-07-02-13-30-00.gh-issue-152849.K9dRvP.rst
@@ -0,0 +1,2 @@
+Out-of-range float and integer timestamps now raise :exc:`OverflowError`
+with the same message. Patch by tonghuaroot.
diff --git a/Python/pytime.c b/Python/pytime.c
index 560aea33f201a07..f56246b1055b2d9 100644
--- a/Python/pytime.c
+++ b/Python/pytime.c
@@ -112,7 +112,7 @@ static void
 pytime_overflow(void)
 {
     PyErr_SetString(PyExc_OverflowError,
-                    "timestamp too large to convert to C PyTime_t");
+                    "timestamp out of range for C PyTime_t");
 }
 
 
@@ -572,7 +572,7 @@ pytime_from_double(PyTime_t *tp, double value, 
_PyTime_round_t round,
 
     /* 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;
     }

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to