From 8da9920a80c60fb3fc326c623e0f217c84011c1d Mon Sep 17 00:00:00 2001 From: Beomsoo Kim Date: Wed, 20 Nov 2024 04:40:52 +0900 Subject: gh-126947: Typechecking for _pydatetime.timedelta.__new__ arguments (#126949) Co-authored-by: sobolevn Co-authored-by: Peter Bierma --- Lib/_pydatetime.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'Lib/_pydatetime.py') diff --git a/Lib/_pydatetime.py b/Lib/_pydatetime.py index 78e03e32896..ed01670cfec 100644 --- a/Lib/_pydatetime.py +++ b/Lib/_pydatetime.py @@ -651,7 +651,19 @@ class timedelta: # guide the C implementation; it's way more convoluted than speed- # ignoring auto-overflow-to-long idiomatic Python could be. - # XXX Check that all inputs are ints or floats. + for name, value in ( + ("days", days), + ("seconds", seconds), + ("microseconds", microseconds), + ("milliseconds", milliseconds), + ("minutes", minutes), + ("hours", hours), + ("weeks", weeks) + ): + if not isinstance(value, (int, float)): + raise TypeError( + f"unsupported type for timedelta {name} component: {type(value).__name__}" + ) # Final values, all integer. # s and us fit in 32-bit signed ints; d isn't bounded. -- cgit v1.2.3