# HG changeset patch # User Franz Glasner # Date 1747044764 -7200 # Node ID 6d7659a709f28cfc9f21d653932afeb7ba0cdcd4 # Parent 32b937a73068967b8d780a19a4ce82cd15a068f9 FIX: treesum: str.translate() behaves differently in Python3: make it PY3-compatible diff -r 32b937a73068 -r 6d7659a709f2 cutils/treesum.py --- a/cutils/treesum.py Mon May 12 09:48:23 2025 +0200 +++ b/cutils/treesum.py Mon May 12 12:12:44 2025 +0200 @@ -1844,10 +1844,9 @@ if mo: self._update_crc(line) if mo.group(2): - return ("SIZE", mo.group(1), - int(util.n(mo.group(3)) - .translate(None, "., '_"), - 10)) + return ("SIZE", + mo.group(1), + util.parse_grouped_decimal_number(mo.group(3))) else: return ("SIZE", mo.group(1), None) else: @@ -1868,9 +1867,8 @@ digest = None if mo.group(5): if mo.group(6): - size = int(util.n(mo.group(6)) - .translate(None, "., '_"), - 10) + size = util.parse_grouped_decimal_number( + mo.group(6)) else: size = None else: diff -r 32b937a73068 -r 6d7659a709f2 cutils/util/__init__.py --- a/cutils/util/__init__.py Mon May 12 09:48:23 2025 +0200 +++ b/cutils/util/__init__.py Mon May 12 12:12:44 2025 +0200 @@ -13,6 +13,7 @@ __all__ = ["PY2", "PY35", "n", "b", "u", + "parse_grouped_decimal_number", "normalize_filename", "escape_for_output", "argv2algo", @@ -57,6 +58,9 @@ return s.decode(encoding) return s + def parse_grouped_decimal_number(s): + return int(n(s).translate(None, "., '_"), 10) + else: def n(s, encoding="ascii"): @@ -73,6 +77,17 @@ u = n + def parse_grouped_decimal_number(s): + return int(n(s).translate(NORMALIZATION_DELETE_CHARS), 10) + + NORMALIZATION_DELETE_CHARS = { + ord('.'): None, + ord(','): None, + ord(' '): None, + ord("'"): None, + ord('_'): None + } + def escape_for_output(what): """Escape `what` in such a way that the output can be safely written into