# HG changeset patch # User Gregory Szorc # Date 2016-03-12 05:27:26 # Node ID 3c6e94d0811ce186094f8da72a297707bdc0426a # Parent 9bcbd941222561ae3abf3a40a484d2da7d8dccf0 encoding: use range() instead of xrange() Python 3 doesn't have xrange(). Instead, range() on Python 3 is a generator, like xrange() is on Python 2. The benefits of xrange() over range() are when there are very large ranges that are too expensive to pre-allocate. The code here is only creating <128 values, so the benefits of xrange() should be negligible. With this patch, encoding.py imports safely on Python 3. diff --git a/mercurial/encoding.py b/mercurial/encoding.py --- a/mercurial/encoding.py +++ b/mercurial/encoding.py @@ -387,8 +387,8 @@ class normcasespecs(object): other = 0 _jsonmap = [] -_jsonmap.extend("\\u%04x" % x for x in xrange(32)) -_jsonmap.extend(chr(x) for x in xrange(32, 127)) +_jsonmap.extend("\\u%04x" % x for x in range(32)) +_jsonmap.extend(chr(x) for x in range(32, 127)) _jsonmap.append('\\u007f') _jsonmap[0x09] = '\\t' _jsonmap[0x0a] = '\\n' @@ -400,7 +400,7 @@ class normcasespecs(object): _paranoidjsonmap = _jsonmap[:] _paranoidjsonmap[0x3c] = '\\u003c' # '<' (e.g. escape "") _paranoidjsonmap[0x3e] = '\\u003e' # '>' -_jsonmap.extend(chr(x) for x in xrange(128, 256)) +_jsonmap.extend(chr(x) for x in range(128, 256)) def jsonescape(s, paranoid=False): '''returns a string suitable for JSON