[PATCH 2 of 2] py3: make encodefun in store.py compatible with py3k
Martijn Pieters
mj at zopatista.com
Sat Oct 8 12:04:34 EDT 2016
On 8 October 2016 at 17:55, Mateusz Kwapich <mitrandir at fb.com> wrote:
> # HG changeset patch
> # User Mateusz Kwapich <mitrandir at fb.com>
> # Date 1475942045 25200
> # Sat Oct 08 08:54:05 2016 -0700
> # Node ID 086b25d1866e33fb7ebbe6c51522e6b573e281e2
> # Parent 225efa4bf7f497e55f0ba57f64a33dce39eaeb29
> py3: make encodefun in store.py compatible with py3k
>
> This ensures that the filename encoding functions always map bytestrings
> to bytestrings regardless of python version.
>
These two look good.
> diff --git a/mercurial/store.py b/mercurial/store.py
> --- a/mercurial/store.py
> +++ b/mercurial/store.py
> @@ -16,6 +16,7 @@ from .i18n import _
> from . import (
> error,
> parsers,
> + pycompat,
> scmutil,
> util,
> )
> @@ -98,11 +99,20 @@ def _buildencodefun():
> 'the\\x07quick\\xadshot'
> '''
> e = '_'
> - cmap = dict([(chr(x), chr(x)) for x in xrange(127)])
> + if pycompat.ispy3:
> + xchr = lambda x: bytes([x])
> + asciistr = bytes(xrange(127))
> + else:
> + xchr = chr
> + asciistr = map(chr, xrange(127))
> + capitals = list(range(ord("A"), ord("Z") + 1))
> +
> + cmap = {x:x for x in asciistr}
> for x in _reserved():
> - cmap[chr(x)] = "~%02x" % x
> - for x in list(range(ord("A"), ord("Z") + 1)) + [ord(e)]:
> - cmap[chr(x)] = e + chr(x).lower()
> + cmap[xchr(x)] = "~%02x" % x
> + for x in capitals + [ord(e)]:
> + cmap[xchr(x)] = e + xchr(x).lower()
> +
> dmap = {}
> for k, v in cmap.iteritems():
> dmap[v] = k
> diff --git a/tests/test-check-py3-compat.t b/tests/test-check-py3-compat.t
> --- a/tests/test-check-py3-compat.t
> +++ b/tests/test-check-py3-compat.t
> @@ -134,7 +134,6 @@
> mercurial/sshserver.py: error importing: <AttributeError> module
> 'mercurial.util' has no attribute 'stringio' (error at patch.py:*)
> mercurial/statichttprepo.py: error importing: <AttributeError> module
> 'mercurial.util' has no attribute 'urlerr' (error at byterange.py:*)
> mercurial/store.py: error importing module: <NameError> name 'xrange'
> is not defined (line *)
> - mercurial/streamclone.py: error importing: <TypeError> can't concat
> bytes to str (error at store.py:*)
> mercurial/subrepo.py: error importing: <AttributeError> module
> 'mercurial.util' has no attribute 'stringio' (error at patch.py:*)
> mercurial/templatefilters.py: error importing: <AttributeError> module
> 'mercurial.util' has no attribute 'stringio' (error at patch.py:*)
> mercurial/templatekw.py: error importing: <AttributeError> module
> 'mercurial.util' has no attribute 'stringio' (error at patch.py:*)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
--
Martijn Pieters
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20161008/7934bcd2/attachment.html>
More information about the Mercurial-devel
mailing list