comparison cutils/treesum.py @ 340:cfa544fbb9f9

treesum: allow parsing of files again where sizes are printed with grouping with standard separators out of "., '_"
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 31 Mar 2025 14:51:32 +0200
parents 9c7a03199092
children 728ad9c639f2
comparison
equal deleted inserted replaced
339:9c7a03199092 340:cfa544fbb9f9
1641 """ 1641 """
1642 1642
1643 PATTERN0 = re.compile(br"\A[ \t]*\r?\n\Z") # empty lines 1643 PATTERN0 = re.compile(br"\A[ \t]*\r?\n\Z") # empty lines
1644 PATTERN1 = re.compile(br"\A(VERSION|FSENCODING|FLAGS|TIMESTAMP|ISOTIMESTAMP|CRC32)[ \t]*=[ \t]*([^ \t]+)[ \t]*\r?\n\Z") # noqa: E501 line too long 1644 PATTERN1 = re.compile(br"\A(VERSION|FSENCODING|FLAGS|TIMESTAMP|ISOTIMESTAMP|CRC32)[ \t]*=[ \t]*([^ \t]+)[ \t]*\r?\n\Z") # noqa: E501 line too long
1645 PATTERN2 = re.compile(br"\A(ROOT|COMMENT|ERROR|GENERATOR|FNMATCH|ACCEPT-TREESUM)[ \t]*\((.*)\)[ \t]*\r?\n\Z") # noqa: E501 line too long 1645 PATTERN2 = re.compile(br"\A(ROOT|COMMENT|ERROR|GENERATOR|FNMATCH|ACCEPT-TREESUM)[ \t]*\((.*)\)[ \t]*\r?\n\Z") # noqa: E501 line too long
1646 PATTERN3 = re.compile(br"\ASIZE[ \t]*\((.*)\)([ \t]*=[ \t]*(\d+))?[ \t]*\r?\n\Z") # noqa: E501 line too long 1646 PATTERN3 = re.compile(br"\ASIZE[ \t]*\((.*)\)([ \t]*=[ \t]*([0-9., '_]*[0-9]))?[ \t]*\r?\n\Z") # noqa: E501 line too long
1647 PATTERN4 = re.compile(br"\A([A-Za-z0-9_-]+)[ \t]*\((.*)\)([ \t]*=[ \t]*([A-Za-z0-9=+/]+)?(,(\d+)?)?)?[ \t]*\r?\n\Z") # noqa: E501 line too long 1647 PATTERN4 = re.compile(br"\A([A-Za-z0-9_-]+)[ \t]*\((.*)\)([ \t]*=[ \t]*([A-Za-z0-9=+/]+)?(,([0-9., '_]*[0-9])?)?)?[ \t]*\r?\n\Z") # noqa: E501 line too long
1648 1648
1649 def __init__(self, _fp, _filename, _own_fp): 1649 def __init__(self, _fp, _filename, _own_fp):
1650 self._fp = _fp 1650 self._fp = _fp
1651 self._own_fp = _own_fp 1651 self._own_fp = _own_fp
1652 self._filename = _filename 1652 self._filename = _filename
1781 mo = self.PATTERN3.search(line) 1781 mo = self.PATTERN3.search(line)
1782 if mo: 1782 if mo:
1783 self._update_crc(line) 1783 self._update_crc(line)
1784 if mo.group(2): 1784 if mo.group(2):
1785 return ("SIZE", mo.group(1), 1785 return ("SIZE", mo.group(1),
1786 int(util.n(mo.group(3)), 10)) 1786 int(util.n(mo.group(3))
1787 .translate(None, "., '_"),
1788 10))
1787 else: 1789 else:
1788 return ("SIZE", mo.group(1), None) 1790 return ("SIZE", mo.group(1), None)
1789 else: 1791 else:
1790 mo = self.PATTERN4.search(line) 1792 mo = self.PATTERN4.search(line)
1791 if mo: 1793 if mo:
1802 digest = base64.b64decode(mo.group(4)) 1804 digest = base64.b64decode(mo.group(4))
1803 else: 1805 else:
1804 digest = None 1806 digest = None
1805 if mo.group(5): 1807 if mo.group(5):
1806 if mo.group(6): 1808 if mo.group(6):
1807 size = int(util.n(mo.group(6)), 10) 1809 size = int(util.n(mo.group(6))
1810 .translate(None, "., '_"),
1811 10)
1808 else: 1812 else:
1809 size = None 1813 size = None
1810 else: 1814 else:
1811 size = None 1815 size = None
1812 return (algo_name, mo.group(2), digest, size) 1816 return (algo_name, mo.group(2), digest, size)