manifest: move pure parsing code out of pure
This lets us transition more smoothly.
--- 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):
--- 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)