From 1fd876c965fd7c2b1b493e188868a504a01d33de Mon Sep 17 00:00:00 2001 From: Kotesh Kumar Yelamati Date: Mon, 20 Jul 2026 17:58:55 -0400 Subject: [PATCH] fix: catch OverflowError in naturalsize() for very large integers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit naturalsize(10**309) raises OverflowError because float(value) is called unconditionally and int→float conversion overflows for very large integers. Fix: wrap float(value) in try/except (ValueError, OverflowError) and re-raise with a clear message. Reproducer: >>> import humanize >>> humanize.naturalsize(10**309) OverflowError: int too large to convert to float --- src/humanize/filesize.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/humanize/filesize.py b/src/humanize/filesize.py index fb675fd..1bb2678 100644 --- a/src/humanize/filesize.py +++ b/src/humanize/filesize.py @@ -89,7 +89,12 @@ def naturalsize( suffix = suffixes["decimal"] base = 1024 if (gnu or binary) else 1000 - bytes_ = float(value) + try: + bytes_ = float(value) + except (ValueError, OverflowError) as exc: + raise ValueError( + f"naturalsize() argument must be a number, not {type(value).__name__!r}" + ) from exc abs_bytes = abs(bytes_) if abs_bytes == 1 and not gnu: