Re: [PATCH 3 of 3] py3: make keys of keyword arguments strings
> 'cmdoptions' is passed to another function as a normal dict, which shouldn't > be a dict of unicode keys. Only **cmdoptions should be a unicode-key dict. > > Sorry I didn't notice it in earlier series. No problem, I will send a V6. ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Re: [PATCH 3 of 3] py3: make keys of keyword arguments strings
On Sat, 10 Dec 2016 05:10:27 +0530, Pulkit Goyal wrote: > # HG changeset patch > # User Pulkit Goyal <7895pul...@gmail.com> > # Date 1481085372 -19800 > # Wed Dec 07 10:06:12 2016 +0530 > # Node ID 28203092739274efcb8c691beb9c4025a2c45ff5 > # Parent 7fcea54acba98b7f1d994bd7311bb0f5ec566b65 > py3: make keys of keyword arguments strings > > keys of keyword arguments on Python 3 has to be string. We are dealing with > bytes in our codebase so the keys are also bytes. We need to convert the keys > to unicodes to make the code run. We have to also reverse this process so that > functions on args dictionary like get() etc. don't result in key not found. > > Also after this patch, `hg version` now runs on Python 3.5. Hurray! > > diff -r 7fcea54acba9 -r 282030927392 mercurial/dispatch.py > --- a/mercurial/dispatch.py Wed Dec 07 21:53:03 2016 +0530 > +++ b/mercurial/dispatch.py Wed Dec 07 10:06:12 2016 +0530 > @@ -803,6 +803,7 @@ > > msg = ' '.join(' ' in a and repr(a) or a for a in fullargs) > ui.log("command", '%s\n', msg) > +cmdoptions = pycompat.strkwargs(cmdoptions) > d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) > try: > return runcommand(lui, repo, cmd, fullargs, ui, options, d, 'cmdoptions' is passed to another function as a normal dict, which shouldn't be a dict of unicode keys. Only **cmdoptions should be a unicode-key dict. Sorry I didn't notice it in earlier series. ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
[PATCH 3 of 3] py3: make keys of keyword arguments strings
# HG changeset patch # User Pulkit Goyal <7895pul...@gmail.com> # Date 1481085372 -19800 # Wed Dec 07 10:06:12 2016 +0530 # Node ID 28203092739274efcb8c691beb9c4025a2c45ff5 # Parent 7fcea54acba98b7f1d994bd7311bb0f5ec566b65 py3: make keys of keyword arguments strings keys of keyword arguments on Python 3 has to be string. We are dealing with bytes in our codebase so the keys are also bytes. We need to convert the keys to unicodes to make the code run. We have to also reverse this process so that functions on args dictionary like get() etc. don't result in key not found. Also after this patch, `hg version` now runs on Python 3.5. Hurray! diff -r 7fcea54acba9 -r 282030927392 mercurial/dispatch.py --- a/mercurial/dispatch.py Wed Dec 07 21:53:03 2016 +0530 +++ b/mercurial/dispatch.py Wed Dec 07 10:06:12 2016 +0530 @@ -803,6 +803,7 @@ msg = ' '.join(' ' in a and repr(a) or a for a in fullargs) ui.log("command", '%s\n', msg) +cmdoptions = pycompat.strkwargs(cmdoptions) d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) try: return runcommand(lui, repo, cmd, fullargs, ui, options, d, diff -r 7fcea54acba9 -r 282030927392 tests/test-check-py3-commands.t --- a/tests/test-check-py3-commands.t Wed Dec 07 21:53:03 2016 +0530 +++ b/tests/test-check-py3-commands.t Wed Dec 07 10:06:12 2016 +0530 @@ -9,6 +9,6 @@ > $PYTHON3 `which hg` $cmd 2>&1 2>&1 | tail -1 > done version - TypeError: Can't convert 'bytes' object to str implicitly + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. debuginstall TypeError: Can't convert 'bytes' object to str implicitly ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel