From 7798cee44658eb31f0e99f958d29fd9261bc4e5a Mon Sep 17 00:00:00 2001 From: pengWang002 <3363461465@qq.com> Date: Fri, 5 Dec 2025 16:39:33 +0800 Subject: [PATCH 1/2] feat: implementation by feat-internal model --- src/humanize/__init__.py | 2 ++ src/humanize/bitrate.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/humanize/bitrate.py diff --git a/src/humanize/__init__.py b/src/humanize/__init__.py index 6fb9959..9b37194 100644 --- a/src/humanize/__init__.py +++ b/src/humanize/__init__.py @@ -3,6 +3,7 @@ from __future__ import annotations from humanize.filesize import naturalsize +from humanize.bitrate import natural_bitrate from humanize.i18n import activate, deactivate, decimal_separator, thousands_separator from humanize.lists import natural_list from humanize.number import ( @@ -36,6 +37,7 @@ "intcomma", "intword", "metric", + "natural_bitrate", "natural_list", "naturaldate", "naturalday", diff --git a/src/humanize/bitrate.py b/src/humanize/bitrate.py new file mode 100644 index 0000000..5c8ee7c --- /dev/null +++ b/src/humanize/bitrate.py @@ -0,0 +1,35 @@ +def natural_bitrate(value: float | int) -> str: + """将比特率数值转换为人类可读的字符串格式。 + + Args: + value: 比特率数值,单位为bps (bits per second) + + Returns: + 格式化后的字符串,如 "1 kbps"、"5.2 Mbps" 等 + + 注意:使用1000进制 (SI Standard),而非1024。 + 单位范围覆盖:bps 到 Tbps + """ + if value < 0: + raise ValueError("Bitrate value cannot be negative") + + units = [ + "bps", + "kbps", + "Mbps", + "Gbps", + "Tbps", + ] + + for i, unit in enumerate(units): + if value < 1000: + if i == 0: + # 对于 bps,不保留小数 + return f"{int(value)} {unit}" + else: + # 对于其他单位,保留一位小数 + return f"{value:.1f} {unit}" + value /= 1000 + + # 如果值超过 Tbps,使用 Tbps 并保留一位小数 + return f"{value:.1f} {units[-1]}" From abe3a931f21bc4b35c55e90b7d5d9e6d9d46b769 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 08:41:38 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/humanize/__init__.py | 2 +- src/humanize/bitrate.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/humanize/__init__.py b/src/humanize/__init__.py index 9b37194..ab3aaef 100644 --- a/src/humanize/__init__.py +++ b/src/humanize/__init__.py @@ -2,8 +2,8 @@ from __future__ import annotations -from humanize.filesize import naturalsize from humanize.bitrate import natural_bitrate +from humanize.filesize import naturalsize from humanize.i18n import activate, deactivate, decimal_separator, thousands_separator from humanize.lists import natural_list from humanize.number import ( diff --git a/src/humanize/bitrate.py b/src/humanize/bitrate.py index 5c8ee7c..c3d1e86 100644 --- a/src/humanize/bitrate.py +++ b/src/humanize/bitrate.py @@ -1,4 +1,7 @@ -def natural_bitrate(value: float | int) -> str: +from __future__ import annotations + + +def natural_bitrate(value: float) -> str: """将比特率数值转换为人类可读的字符串格式。 Args: