From patchwork Sun Aug 7 19:54:35 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2,of,8] py3: use unicode literals in i18n.py From: Pulkit Goyal <7895pulkit@gmail.com> X-Patchwork-Id: 16181 Message-Id: <9c65985526ca8aff6bdb.1470599675@waste.org> To: mercurial-devel@mercurial-scm.org Date: Sun, 07 Aug 2016 14:54:35 -0500 # HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 1470162549 -19800 # Tue Aug 02 23:59:09 2016 +0530 # Node ID 9c65985526ca8aff6bdb9234bbf584837ab15de8 # Parent c03543a126719097a1a61c8e5ef5fcb222262315 py3: use unicode literals in i18n.py diff --git a/mercurial/i18n.py b/mercurial/i18n.py --- a/mercurial/i18n.py +++ b/mercurial/i18n.py @@ -46,8 +46,11 @@ _ugettext = None def setdatapath(datapath): - localedir = os.path.join(datapath, 'locale') - t = gettextmod.translation('hg', localedir, _languages, fallback=True) + localedir = os.path.join(datapath, u'locale') + # gettext.find() performs a os.path.join() with string literal + # arguments. So passing a bytes localedir will fail because Python + # 3 insists all os.path.join() arguments are the same type. + t = gettextmod.translation(u'hg', localedir, _languages, fallback=True) global _ugettext try: _ugettext = t.ugettext @@ -92,10 +95,10 @@ return _msgcache[message] def _plain(): - if 'HGPLAIN' not in os.environ and 'HGPLAINEXCEPT' not in os.environ: + if u'HGPLAIN' not in os.environ and u'HGPLAINEXCEPT' not in os.environ: return False - exceptions = os.environ.get('HGPLAINEXCEPT', '').strip().split(',') - return 'i18n' not in exceptions + exceptions = os.environ.get(u'HGPLAINEXCEPT', u'').strip().split(u',') + return u'i18n' not in exceptions if _plain(): _ = lambda message: message 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 @@ -15,101 +15,96 @@ #if py3exe $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py doc/hgmanpage.py: invalid syntax: invalid syntax (, line *) (glob) - hgext/acl.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/automv.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/blackbox.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/bugzilla.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/censor.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/chgserver.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/children.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/churn.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/clonebundles.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + hgext/acl.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/automv.py: error importing module: invalid syntax (commands.py, line *) (line *) (glob) + hgext/blackbox.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/bugzilla.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/censor.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/chgserver.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/children.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/churn.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/clonebundles.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) hgext/color.py: invalid syntax: invalid syntax (, line *) (glob) - hgext/convert/bzr.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/common.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/convcmd.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/cvs.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/cvsps.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/darcs.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/filemap.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/git.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/gnuarch.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/hg.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/monotone.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/p4.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/convert/subversion.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/bzr.py: error importing module: Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob) + hgext/convert/common.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/convcmd.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/cvs.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/cvsps.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/darcs.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/filemap.py: error importing module: Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob) + hgext/convert/git.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/gnuarch.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/hg.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/monotone.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/p4.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/convert/subversion.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) hgext/convert/transport.py: error importing module: No module named 'svn.client' (line *) (glob) - hgext/eol.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/extdiff.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/factotum.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/fetch.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/fsmonitor/state.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/fsmonitor/watchmanclient.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/gpg.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/graphlog.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/hgk.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/highlight/highlight.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/histedit.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/journal.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/keyword.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/basestore.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/lfcommands.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/lfutil.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/localstore.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/overrides.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/proto.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/remotestore.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/reposetup.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/storefactory.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/largefiles/uisetup.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + hgext/eol.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/extdiff.py: error importing module: invalid syntax (archival.py, line *) (line *) (glob) + hgext/factotum.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/fetch.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/fsmonitor/state.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/fsmonitor/watchmanclient.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/gpg.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/graphlog.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/hgk.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/highlight/highlight.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/histedit.py: error importing module: invalid syntax (bundle2.py, line *) (line *) (glob) + hgext/journal.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/keyword.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/basestore.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/lfcommands.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/lfutil.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/localstore.py: error importing module: Parent module 'hgext.largefiles' not loaded, cannot perform relative import (line *) (glob) + hgext/largefiles/overrides.py: error importing module: invalid syntax (archival.py, line *) (line *) (glob) + hgext/largefiles/proto.py: error importing: invalid syntax (bundle2.py, line *) (error at httppeer.py:*) (glob) + hgext/largefiles/remotestore.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/reposetup.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/storefactory.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/largefiles/uisetup.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) hgext/largefiles/wirestore.py: error importing module: Parent module 'hgext.largefiles' not loaded, cannot perform relative import (line *) (glob) - hgext/mq.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/notify.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/pager.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/patchbomb.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/purge.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/rebase.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/record.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/relink.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/schemes.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/share.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/shelve.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/strip.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/transplant.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/win32mbcs.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - hgext/win32text.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + hgext/mq.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/notify.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/pager.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/patchbomb.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/purge.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/rebase.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/record.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/relink.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/schemes.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/share.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/shelve.py: error importing module: invalid syntax (bundle2.py, line 992) (line *) (glob) + hgext/strip.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + hgext/transplant.py: error importing: invalid syntax (bundle2.py, line 992) (error at bundlerepo.py:*) (glob) + hgext/win32text.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/archival.py: invalid syntax: invalid syntax (, line *) (glob) - mercurial/bookmarks.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/branchmap.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + mercurial/bookmarks.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/branchmap.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/bundle2.py: invalid syntax: invalid syntax (, line *) (glob) - mercurial/bundlerepo.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/byterange.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/changegroup.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/changelog.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/cmdutil.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + mercurial/bundlerepo.py: error importing module: invalid syntax (bundle2.py, line *) (line *) (glob) + mercurial/byterange.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/changegroup.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/changelog.py: error importing: getattr(): attribute name must be string (error at pycompat.py:*) (glob) + mercurial/cmdutil.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/commands.py: invalid syntax: invalid syntax (, line *) (glob) - mercurial/commandserver.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/config.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/context.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/copies.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/crecord.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/dagparser.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/dagutil.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/destutil.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/dirstate.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/discovery.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/dispatch.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/exchange.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/extensions.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/fancyopts.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/filelog.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/filemerge.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/fileset.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/formatter.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/graphmod.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/hbisect.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/help.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/hg.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + mercurial/commandserver.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/config.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/context.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/copies.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/crecord.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/destutil.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/dirstate.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/discovery.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/dispatch.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/exchange.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/extensions.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/filelog.py: error importing: getattr(): attribute name must be string (error at pycompat.py:*) (glob) + mercurial/filemerge.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/fileset.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/formatter.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/graphmod.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/help.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/hg.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/hgweb/common.py: error importing module: Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob) mercurial/hgweb/hgweb_mod.py: error importing module: Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob) mercurial/hgweb/hgwebdir_mod.py: error importing module: Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob) @@ -119,9 +114,9 @@ mercurial/hgweb/webcommands.py: error importing module: Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob) mercurial/hgweb/webutil.py: error importing module: Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob) mercurial/hgweb/wsgicgi.py: error importing module: Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob) - mercurial/hook.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/httpconnection.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) - mercurial/httppeer.py: error importing: str expected, not bytes (error at i18n.py:*) (glob) + mercurial/hook.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/httpconnection.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) + mercurial/httppeer.py: error importing module: invalid syntax (bundle2.py, line *) (line *) (glob) mercurial/keepalive.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/localrepo.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/lock.py: error importing: '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob)