# HG changeset patch # User Gregory Szorc # Date 1548205733 28800 # Node ID 4ad002b2584d3cf3b6aeb2e3d3bc457db494c820 # Parent 8df3471931cccfd80345e1ec3f3d31f1b94247c1 config: reject str sections and keys on Python 3 Otherwise we could end up with a dict having both the str and bytes versions of a particular config item. This may cause some tests to regress. I haven't checked. But it is better behavior to fail fast. We could just as easily change this to normalize the values. But I like catching all non-compliant call sites first. Differential Revision: https://phab.mercurial-scm.org/D5649 diff -r 8df3471931cc -r 4ad002b2584d mercurial/config.py --- a/mercurial/config.py Tue Jan 22 17:02:40 2019 -0800 +++ b/mercurial/config.py Tue Jan 22 17:08:53 2019 -0800 @@ -78,6 +78,10 @@ return list(self._data.get(section, {}).iteritems()) def set(self, section, item, value, source=""): if pycompat.ispy3: + assert not isinstance(section, str), ( + 'config section may not be unicode strings on Python 3') + assert not isinstance(item, str), ( + 'config item may not be unicode strings on Python 3') assert not isinstance(value, str), ( 'config values may not be unicode strings on Python 3') if section not in self: