refactor: consolidate five duplicate byte formatters into hermes_cli.sizefmt
Five modules each carried a private near-identical human-readable byte formatter (backup._format_size, checkpoints._fmt_bytes, doctor._human_bytes, context_references._human_bytes, curator_backup.format_size). Three of them silently topped out at GB and rendered a 1 TiB value as '1024.0 GB'. All five now alias one shared format_bytes in hermes_cli/sizefmt.py (sibling of timefmt.py, same zero-dependency rationale), keeping each module's established local name so no caller churns. Deliberately NOT migrated (behavior differs on purpose): - session_recovery._format_bytes: binary suffixes (KiB/MiB/GiB) - qqbot chunked_upload.format_size: '100.0 B' one-decimal style, pinned by its protocol tests Net -33 production LOC before the new module; parity verified over a 16-value corpus against all five verbatim originals (only divergence: the TB tier fix). Contract tests mutation-checked red-green.
This commit is contained in:
@@ -13,6 +13,7 @@ from typing import Awaitable, Callable
|
||||
|
||||
from agent.model_metadata import estimate_tokens_rough
|
||||
from hermes_cli._subprocess_compat import IS_WINDOWS, windows_hide_flags
|
||||
from hermes_cli.sizefmt import format_bytes as _human_bytes
|
||||
|
||||
_QUOTED_REFERENCE_VALUE = r'(?:`[^`\n]+`|"[^"\n]+"|\'[^\'\n]+\')'
|
||||
REFERENCE_PATTERN = re.compile(
|
||||
@@ -554,15 +555,6 @@ def _rg_files(path: Path, cwd: Path, limit: int) -> list[Path] | None:
|
||||
return files[:limit]
|
||||
|
||||
|
||||
def _human_bytes(n: int) -> str:
|
||||
size = float(n)
|
||||
for unit in ("B", "KB", "MB", "GB"):
|
||||
if size < 1024 or unit == "GB":
|
||||
return f"{int(size)} {unit}" if unit == "B" else f"{size:.1f} {unit}"
|
||||
size /= 1024
|
||||
return f"{size:.1f} GB"
|
||||
|
||||
|
||||
def _binary_reference_block(ref: ContextReference, path: Path) -> str:
|
||||
mime, _ = mimetypes.guess_type(path.name)
|
||||
mime = mime or "application/octet-stream"
|
||||
|
||||
Reference in New Issue
Block a user