Submitter | Pulkit Goyal |
---|---|
Date | Aug. 7, 2016, 7:54 p.m. |
Message ID | <c03543a126719097a1a6.1470599674@waste.org> |
Download | mbox | patch |
Permalink | /patch/16180/ |
State | Not Applicable |
Headers | show |
Comments
Kindly ignore this series, I tried hg push https://selenic.com/repo/hg-push -r some_changest, and the whole series got pushed :( On Mon, Aug 8, 2016 at 1:24 AM, Pulkit Goyal <7895pulkit@gmail.com> wrote: > # HG changeset patch > # User Pulkit Goyal <7895pulkit@gmail.com> > # Date 1470161385 -19800 > # Tue Aug 02 23:39:45 2016 +0530 > # Node ID c03543a126719097a1a61c8e5ef5fcb222262315 > # Parent 73ff159923c1f05899c27238409ca398342d9ae0 > py3: use unicode literals in encoding.py > > The custom module loader adds a b'' everywhere and hence making everything bytes. There are some instances > where we need to have unicodes. This patch deals with such instances in encoding.py. Moreover this patch also > updates the output of test-check-py3-compat.t at some places which was left unchanged. > > This series of patches is work of Gregory Szorc and are taken from https://hg.mozilla.org/users/gszorc_mozilla.com/hg/shortlog/py3. > > diff --git a/mercurial/encoding.py b/mercurial/encoding.py > --- a/mercurial/encoding.py > +++ b/mercurial/encoding.py > @@ -70,20 +70,20 @@ > return result > > _encodingfixers = { > - '646': lambda: 'ascii', > - 'ANSI_X3.4-1968': lambda: 'ascii', > - 'mac-roman': _getpreferredencoding > + u'646': lambda: u'ascii', > + u'ANSI_X3.4-1968': lambda: u'ascii', > + u'mac-roman': _getpreferredencoding > } > > try: > - encoding = os.environ.get("HGENCODING") > + encoding = os.environ.get(u"HGENCODING") > if not encoding: > - encoding = locale.getpreferredencoding() or 'ascii' > + encoding = locale.getpreferredencoding() or u'ascii' > encoding = _encodingfixers.get(encoding, lambda: encoding)() > except locale.Error: > - encoding = 'ascii' > -encodingmode = os.environ.get("HGENCODINGMODE", "strict") > -fallbackencoding = 'ISO-8859-1' > + encoding = u'ascii' > +encodingmode = os.environ.get(u"HGENCODINGMODE", u"strict") > +fallbackencoding = u'ISO-8859-1' > > class localstr(str): > '''This class allows strings that are unmodified to be > @@ -180,8 +180,8 @@ > raise error.Abort(k, hint="please check your locale settings") > > # How to treat ambiguous-width characters. Set to 'wide' to treat as wide. > -wide = (os.environ.get("HGENCODINGAMBIGUOUS", "narrow") == "wide" > - and "WFA" or "WF") > +wide = (os.environ.get(u"HGENCODINGAMBIGUOUS", u"narrow") == u"wide" > + and u"WFA" or u"WF") > > def colwidth(s): > "Find the column width of a string for display in the local encoding" > 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,90 +15,90 @@ > #if py3exe > $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py > doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) > - hgext/acl.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/automv.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/blackbox.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/bugzilla.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/censor.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/chgserver.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/children.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/churn.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/clonebundles.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + hgext/acl.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/automv.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/blackbox.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/bugzilla.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/censor.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/chgserver.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/children.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/churn.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/clonebundles.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) > - hgext/convert/bzr.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/common.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/convcmd.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/cvs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/cvsps.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/darcs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/filemap.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/git.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/gnuarch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/hg.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/monotone.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/p4.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/convert/subversion.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + hgext/convert/bzr.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/common.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/convcmd.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/cvs.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/cvsps.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/darcs.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/filemap.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/git.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/gnuarch.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/hg.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/monotone.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/p4.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/convert/subversion.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob) > - hgext/eol.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/extdiff.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/factotum.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/fetch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/fsmonitor/state.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/gpg.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/graphlog.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/hgk.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/highlight/highlight.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/histedit.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/journal.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/keyword.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/basestore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/lfcommands.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/lfutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/localstore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/overrides.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/proto.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/remotestore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/reposetup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/storefactory.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/largefiles/uisetup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + hgext/eol.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/extdiff.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/factotum.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/fetch.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/fsmonitor/state.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/gpg.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/graphlog.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/hgk.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/highlight/highlight.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/histedit.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/journal.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/keyword.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/basestore.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/lfcommands.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/lfutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/localstore.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/overrides.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/proto.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/remotestore.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/reposetup.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/storefactory.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/largefiles/uisetup.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > hgext/largefiles/wirestore.py: error importing module: <SystemError> Parent module 'hgext.largefiles' not loaded, cannot perform relative import (line *) (glob) > - hgext/mq.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/notify.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/pager.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/patchbomb.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/purge.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/rebase.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/record.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/relink.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/schemes.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/share.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/shelve.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/strip.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/transplant.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/win32mbcs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - hgext/win32text.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + hgext/mq.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/notify.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/pager.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/patchbomb.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/purge.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/rebase.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/record.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/relink.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/schemes.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/share.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/shelve.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/strip.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/transplant.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/win32mbcs.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + hgext/win32text.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) > - mercurial/bookmarks.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/branchmap.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + mercurial/bookmarks.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/branchmap.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > mercurial/bundle2.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) > - mercurial/bundlerepo.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/byterange.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/changegroup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/changelog.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/cmdutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + mercurial/bundlerepo.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/byterange.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/changegroup.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/changelog.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/cmdutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) > - mercurial/commandserver.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/config.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/context.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/copies.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/crecord.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/dagparser.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/dagutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/destutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/dirstate.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/discovery.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > - mercurial/dispatch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) > + mercurial/commandserver.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/config.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/context.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/copies.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/crecord.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/dagparser.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/dagutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/destutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/dirstate.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/discovery.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > + mercurial/dispatch.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > mercurial/exchange.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > mercurial/extensions.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > mercurial/fancyopts.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) > @@ -136,8 +136,9 @@ > mercurial/patch.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) > mercurial/pathutil.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) > mercurial/peer.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) > - mercurial/pure/mpatch.py: error importing module: <AttributeError> 'VendorImporter' object has no attribute 'find_spec' (line *) (glob) > - mercurial/pure/parsers.py: error importing module: <AttributeError> 'VendorImporter' object has no attribute 'find_spec' (line *) (glob) > + mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob) > + mercurial/pure/osutil.py: error importing module: <ImportError> cannot import name 'policy' (line *) (glob) > + mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob) > mercurial/pushkey.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) > mercurial/pvec.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) > mercurial/registrar.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) > _______________________________________________ > Mercurial-devel mailing list > Mercurial-devel@mercurial-scm.org > https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Patch
diff --git a/mercurial/encoding.py b/mercurial/encoding.py --- a/mercurial/encoding.py +++ b/mercurial/encoding.py @@ -70,20 +70,20 @@ return result _encodingfixers = { - '646': lambda: 'ascii', - 'ANSI_X3.4-1968': lambda: 'ascii', - 'mac-roman': _getpreferredencoding + u'646': lambda: u'ascii', + u'ANSI_X3.4-1968': lambda: u'ascii', + u'mac-roman': _getpreferredencoding } try: - encoding = os.environ.get("HGENCODING") + encoding = os.environ.get(u"HGENCODING") if not encoding: - encoding = locale.getpreferredencoding() or 'ascii' + encoding = locale.getpreferredencoding() or u'ascii' encoding = _encodingfixers.get(encoding, lambda: encoding)() except locale.Error: - encoding = 'ascii' -encodingmode = os.environ.get("HGENCODINGMODE", "strict") -fallbackencoding = 'ISO-8859-1' + encoding = u'ascii' +encodingmode = os.environ.get(u"HGENCODINGMODE", u"strict") +fallbackencoding = u'ISO-8859-1' class localstr(str): '''This class allows strings that are unmodified to be @@ -180,8 +180,8 @@ raise error.Abort(k, hint="please check your locale settings") # How to treat ambiguous-width characters. Set to 'wide' to treat as wide. -wide = (os.environ.get("HGENCODINGAMBIGUOUS", "narrow") == "wide" - and "WFA" or "WF") +wide = (os.environ.get(u"HGENCODINGAMBIGUOUS", u"narrow") == u"wide" + and u"WFA" or u"WF") def colwidth(s): "Find the column width of a string for display in the local encoding" 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,90 +15,90 @@ #if py3exe $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs $PYTHON3 contrib/check-py3-compat.py doc/hgmanpage.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) - hgext/acl.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/automv.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/blackbox.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/bugzilla.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/censor.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/chgserver.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/children.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/churn.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/clonebundles.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + hgext/acl.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/automv.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/blackbox.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/bugzilla.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/censor.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/chgserver.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/children.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/churn.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/clonebundles.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) - hgext/convert/bzr.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/common.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/convcmd.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/cvs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/cvsps.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/darcs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/filemap.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/git.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/gnuarch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/hg.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/monotone.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/p4.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/convert/subversion.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + hgext/convert/bzr.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/common.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/convcmd.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/cvs.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/cvsps.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/darcs.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/filemap.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/git.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/gnuarch.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/hg.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/monotone.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/p4.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/convert/subversion.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob) - hgext/eol.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/extdiff.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/factotum.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/fetch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/fsmonitor/state.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/gpg.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/graphlog.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/hgk.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/highlight/highlight.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/histedit.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/journal.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/keyword.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/basestore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/lfcommands.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/lfutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/localstore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/overrides.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/proto.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/remotestore.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/reposetup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/storefactory.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/largefiles/uisetup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + hgext/eol.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/extdiff.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/factotum.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/fetch.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/fsmonitor/state.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/gpg.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/graphlog.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/hgk.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/highlight/highlight.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/histedit.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/journal.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/keyword.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/basestore.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/lfcommands.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/lfutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/localstore.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/overrides.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/proto.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/remotestore.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/reposetup.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/storefactory.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/largefiles/uisetup.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) hgext/largefiles/wirestore.py: error importing module: <SystemError> Parent module 'hgext.largefiles' not loaded, cannot perform relative import (line *) (glob) - hgext/mq.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/notify.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/pager.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/patchbomb.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/purge.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/rebase.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/record.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/relink.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/schemes.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/share.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/shelve.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/strip.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/transplant.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/win32mbcs.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - hgext/win32text.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + hgext/mq.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/notify.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/pager.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/patchbomb.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/purge.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/rebase.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/record.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/relink.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/schemes.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/share.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/shelve.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/strip.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/transplant.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/win32mbcs.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + hgext/win32text.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) - mercurial/bookmarks.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/branchmap.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + mercurial/bookmarks.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/branchmap.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) mercurial/bundle2.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) - mercurial/bundlerepo.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/byterange.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/changegroup.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/changelog.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/cmdutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + mercurial/bundlerepo.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/byterange.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/changegroup.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/changelog.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/cmdutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) - mercurial/commandserver.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/config.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/context.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/copies.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/crecord.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/dagparser.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/dagutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/destutil.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/dirstate.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/discovery.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) - mercurial/dispatch.py: error importing: <TypeError> str expected, not bytes (error at encoding.py:*) (glob) + mercurial/commandserver.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/config.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/context.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/copies.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/crecord.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/dagparser.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/dagutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/destutil.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/dirstate.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/discovery.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) + mercurial/dispatch.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) mercurial/exchange.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) mercurial/extensions.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) mercurial/fancyopts.py: error importing: <TypeError> str expected, not bytes (error at i18n.py:*) (glob) @@ -136,8 +136,9 @@ mercurial/patch.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/pathutil.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/peer.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) - mercurial/pure/mpatch.py: error importing module: <AttributeError> 'VendorImporter' object has no attribute 'find_spec' (line *) (glob) - mercurial/pure/parsers.py: error importing module: <AttributeError> 'VendorImporter' object has no attribute 'find_spec' (line *) (glob) + mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob) + mercurial/pure/osutil.py: error importing module: <ImportError> cannot import name 'policy' (line *) (glob) + mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob) mercurial/pushkey.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/pvec.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob) mercurial/registrar.py: error importing: <TypeError> '_fields_' must be a sequence of (name, C type) pairs (error at osutil.py:*) (glob)