# HG changeset patch # User Franz Glasner # Date 1747481559 -7200 # Node ID dd0bc31064e471391a8fcc97515238c494ba9c35 # Parent ff4424a7a8cf41b48b0ff4641b9b34882c587b3c treesum: Replace "DigestSizeCollector" by "TreesumInfo" diff -r ff4424a7a8cf -r dd0bc31064e4 cutils/treesum.py --- a/cutils/treesum.py Sat May 17 13:25:48 2025 +0200 +++ b/cutils/treesum.py Sat May 17 13:32:39 2025 +0200 @@ -793,9 +793,10 @@ if self._fnmatcher.shall_accept_treesum(fpath): # Yes we have hit a treesum digest file logging.debug("Accepting existing treesum from: %s", fpath) - collector = DigestSizeCollector() + treesum_info = None try: - collector.collect_from_file(os.path.join(root, fpath)) + treesum_info = TreesumInfo.collect_last_from_file( + os.path.join(root, fpath)) except OSError as e: eno = e.errno emsg = e.strerror @@ -818,7 +819,7 @@ # (digest, size). # if self._size_only: - if collector.size is None: + if treesum_info.size is None: # # This is a severe error here: just the size # is required, but we have not got one. @@ -832,7 +833,7 @@ return (errno.ESRCH, None, None, None) else: if self._print_size: - if collector.size is None: + if treesum_info.size is None: # # XXX FIXME: Is this a **severe** error # here? Currently: no @@ -843,10 +844,10 @@ fso.npath, self._utf8_mode)) sz = -1 else: - sz = collector.size + sz = treesum_info.size else: sz = None - if collector.digest is None: + if treesum_info.digest is None: # # This is really a severe error. Most probably # the treesum file was created with @@ -858,7 +859,7 @@ walk.WalkDirEntry.alt_bytes( fso.npath, self._utf8_mode)) self._writer.write_file_digest( - collector.algorithm or "MD5", + treesum_info.algorithm or "MD5", opath, None, sz) @@ -866,15 +867,17 @@ # We got all required infos without errors self._writer.write_accept_treesum_file(fpath) if self._size_only: - self._writer.write_size(opath, collector.size) + self._writer.write_size(opath, treesum_info.size) else: self._writer.write_file_digest( - collector.algorithm, opath, collector.digest, + treesum_info.algorithm, + opath, + treesum_info.digest, sz) return (0, - collector.algorithm, - collector.digest, - collector.size) + treesum_info.algorithm, + treesum_info.digest, + treesum_info.size) else: # # treesum file could not be read @@ -2036,34 +2039,6 @@ print(" Errors: ") -class DigestSizeCollector(object): - - def __init__(self): - self._algorithm = self._digest = self._size = None - - def __call__(self, block_no, tag, generator, fsencoding, flags, - fnmatch_filters, comments, errors, - algorithm, digest, size): - self._algorithm = algorithm - self._digest = digest - self._size = size - - @property - def algorithm(self): - return self._algorithm - - @property - def digest(self): - return self._digest - - @property - def size(self): - return self._size - - def collect_from_file(self, digest_file): - get_infos_from_digestfile([digest_file], self, True) - - class TreesumInfo(object): def __init__(self):