py3: make util.datapath a bytes variable
authorPulkit Goyal <7895pulkit@gmail.com>
Sun, 06 Nov 2016 12:18:23 +0900
changeset 30301 8321b083a83d
parent 30300 42af0590f4b9
child 30302 3874ddba1ab4
py3: make util.datapath a bytes variable In this patch we make util.datapath a bytes variable, but we have to pass a unicode to gettext.translation otherwise it will cry. Used pycompat.fsdecode() to decode it back to unicode as it was converted to bytes using pycompat.fsencode().
mercurial/i18n.py
mercurial/util.py
--- a/mercurial/i18n.py	Sun Nov 06 03:12:40 2016 +0530
+++ b/mercurial/i18n.py	Sun Nov 06 12:18:23 2016 +0900
@@ -49,6 +49,7 @@
 _ugettext = None
 
 def setdatapath(datapath):
+    datapath = pycompat.fsdecode(datapath)
     localedir = os.path.join(datapath, pycompat.sysstr('locale'))
     t = gettextmod.translation('hg', localedir, _languages, fallback=True)
     global _ugettext
--- a/mercurial/util.py	Sun Nov 06 03:12:40 2016 +0530
+++ b/mercurial/util.py	Sun Nov 06 12:18:23 2016 +0900
@@ -938,6 +938,9 @@
 else:
     datapath = os.path.dirname(__file__)
 
+if not isinstance(datapath, bytes):
+    datapath = pycompat.fsencode(datapath)
+
 i18n.setdatapath(datapath)
 
 _hgexecutable = None