# HG changeset patch # User Matt Mackall # Date 1425682842 21600 # Node ID feddc528472414d6913ef288aa7c1922669a5840 # Parent a5f1bccd2996e76d1d9de82c37129078151e240d manifest: move pure parsing code out of pure This lets us transition more smoothly. diff -r a5f1bccd2996 -r feddc5284724 mercurial/manifest.py --- a/mercurial/manifest.py Tue Jan 13 14:31:38 2015 -0800 +++ b/mercurial/manifest.py Fri Mar 06 17:00:42 2015 -0600 @@ -217,9 +217,23 @@ + content for start, end, content in x) return deltatext, newaddlist +# Pure Python fallback +def _parsemanifest(mfdict, fdict, lines): + bin = revlog.bin + for l in lines.splitlines(): + f, n = l.split('\0') + if len(n) > 40: + fdict[f] = n[40:] + mfdict[f] = bin(n[:40]) + else: + mfdict[f] = bin(n) + def _parse(lines): mfdict = manifestdict() - parsers.parse_manifest(mfdict, mfdict._flags, lines) + try: + parsers.parse_manifest(mfdict, mfdict._flags, lines) + except AttributeError: + _parsemanifest(mfdict, mfdict._flags, lines) return mfdict class manifest(revlog.revlog): diff -r a5f1bccd2996 -r feddc5284724 mercurial/pure/parsers.py --- a/mercurial/pure/parsers.py Tue Jan 13 14:31:38 2015 -0800 +++ b/mercurial/pure/parsers.py Fri Mar 06 17:00:42 2015 -0600 @@ -5,7 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -from mercurial.node import bin, nullid +from mercurial.node import nullid from mercurial import util import struct, zlib, cStringIO @@ -21,15 +21,6 @@ # x is a tuple return x -def parse_manifest(mfdict, fdict, lines): - for l in lines.splitlines(): - f, n = l.split('\0') - if len(n) > 40: - fdict[f] = n[40:] - mfdict[f] = bin(n[:40]) - else: - mfdict[f] = bin(n) - def parse_index2(data, inline): def gettype(q): return int(q & 0xFFFF)