[PATCH 8 of 9 V2] pycompat: use unicode type to appease Python 3

Gregory Szorc gregory.szorc at gmail.com
Sat Jun 25 17:11:22 EDT 2016


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1466887129 25200
#      Sat Jun 25 13:38:49 2016 -0700
# Node ID 3d85e50896c8306d4186cc6600ebddb90cf6c93e
# Parent  7d1d3f3030b60be34cc21fb0c68f070a2124aaa3
pycompat: use unicode type to appease Python 3

The items list literals later in the file are using string literals.
These will get rewritten to bytes literals courtesy of our module
importer. We add some code to convert them back to str and use the
appropriate type for arguments to .replace().

diff --git a/mercurial/pycompat.py b/mercurial/pycompat.py
--- a/mercurial/pycompat.py
+++ b/mercurial/pycompat.py
@@ -35,18 +35,20 @@ class _pycompatstub(object):
     pass
 
 def _alias(alias, origin, items):
     """ populate a _pycompatstub
 
     copies items from origin to alias
     """
     def hgcase(item):
-        return item.replace('_', '').lower()
+        return item.replace(u'_', u'').lower()
     for item in items:
+        if not isinstance(item, str):
+            item = item.decode(u'latin1')
         try:
             setattr(alias, hgcase(item), getattr(origin, item))
         except AttributeError:
             pass
 
 urlreq = _pycompatstub()
 urlerr = _pycompatstub()
 try:
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
@@ -19,135 +19,135 @@
   tests/md5sum.py not using absolute_import
   tests/readlink.py not using absolute_import
   tests/run-tests.py not using absolute_import
   tests/test-demandimport.py not using absolute_import
 
 #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> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/acl.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/automv.py: error importing module: <SyntaxError> invalid syntax (commands.py, line *) (glob)
-  hgext/blackbox.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/blackbox.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/bugzilla.py: error importing module: <ImportError> No module named 'urlparse' (line *) (glob)
-  hgext/censor.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/censor.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/chgserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
-  hgext/children.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/churn.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/clonebundles.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/children.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/churn.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/clonebundles.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/color.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
   hgext/convert/bzr.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
-  hgext/convert/common.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/convcmd.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/cvs.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/cvsps.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/darcs.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/convert/common.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/convcmd.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/cvs.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/cvsps.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/darcs.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/convert/filemap.py: error importing module: <SystemError> Parent module 'hgext.convert' not loaded, cannot perform relative import (line *) (glob)
-  hgext/convert/git.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/gnuarch.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/hg.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/monotone.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/p4.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/convert/subversion.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/convert/git.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/gnuarch.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/hg.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/monotone.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/p4.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/convert/subversion.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/convert/transport.py: error importing module: <ImportError> No module named 'svn.client' (line *) (glob)
-  hgext/eol.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/eol.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/extdiff.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (glob)
   hgext/factotum.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
-  hgext/fetch.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/fsmonitor/state.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/gpg.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/graphlog.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/hgk.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/highlight/highlight.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/fetch.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/fsmonitor/state.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/fsmonitor/watchmanclient.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/gpg.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/graphlog.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/hgk.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/highlight/highlight.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/histedit.py: error importing module: <SyntaxError> invalid syntax (bundle2.py, line *) (glob)
-  hgext/keyword.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/largefiles/basestore.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/largefiles/lfcommands.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/largefiles/lfutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/keyword.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/largefiles/basestore.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/largefiles/lfcommands.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/largefiles/lfutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/largefiles/localstore.py: error importing module: <SystemError> Parent module 'hgext.largefiles' not loaded, cannot perform relative import (line *) (glob)
   hgext/largefiles/overrides.py: error importing module: <SyntaxError> invalid syntax (archival.py, line *) (glob)
   hgext/largefiles/proto.py: error importing: <ImportError> No module named 'httplib' (error at httppeer.py:*) (glob)
-  hgext/largefiles/remotestore.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/largefiles/reposetup.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/largefiles/storefactory.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/largefiles/uisetup.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/largefiles/remotestore.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/largefiles/reposetup.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/largefiles/storefactory.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/largefiles/uisetup.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.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> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/notify.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/pager.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/patchbomb.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/purge.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/rebase.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/record.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/relink.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/schemes.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  hgext/share.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/mq.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/notify.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/pager.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/patchbomb.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/purge.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/rebase.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/record.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/relink.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/schemes.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  hgext/share.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/shelve.py: error importing module: <SyntaxError> invalid syntax (bundle2.py, line *) (glob)
-  hgext/strip.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/strip.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   hgext/transplant.py: error importing: <SyntaxError> invalid syntax (bundle2.py, line *) (glob)
-  hgext/win32text.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  hgext/win32text.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/archival.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
-  mercurial/bookmarks.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/branchmap.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  mercurial/bookmarks.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/branchmap.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/bundle2.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
   mercurial/bundlerepo.py: error importing module: <SyntaxError> invalid syntax (bundle2.py, line *) (glob)
-  mercurial/byterange.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/changegroup.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/changelog.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/cmdutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  mercurial/byterange.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/changegroup.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/changelog.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/cmdutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob)
   mercurial/commandserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob)
-  mercurial/config.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/context.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/copies.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/crecord.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/destutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/dirstate.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/discovery.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/dispatch.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/exchange.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/extensions.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/filelog.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/filemerge.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/fileset.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/formatter.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/graphmod.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/help.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/hg.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  mercurial/config.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/context.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/copies.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/crecord.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/destutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/dirstate.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/discovery.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/dispatch.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/exchange.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/extensions.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/filelog.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/filemerge.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/fileset.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/formatter.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/graphmod.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/help.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/hg.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/hgweb/common.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
   mercurial/hgweb/hgweb_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
   mercurial/hgweb/hgwebdir_mod.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
   mercurial/hgweb/protocol.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
   mercurial/hgweb/request.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
   mercurial/hgweb/server.py: error importing module: <ImportError> No module named 'BaseHTTPServer' (line *) (glob)
   mercurial/hgweb/webcommands.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
   mercurial/hgweb/webutil.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
   mercurial/hgweb/wsgicgi.py: error importing module: <SystemError> Parent module 'mercurial.hgweb' not loaded, cannot perform relative import (line *) (glob)
-  mercurial/hook.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  mercurial/hook.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/httpconnection.py: error importing: <ImportError> No module named 'rfc822' (error at __init__.py:*) (glob)
   mercurial/httppeer.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
   mercurial/keepalive.py: error importing module: <ImportError> No module named 'httplib' (line *) (glob)
-  mercurial/localrepo.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/lock.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/mail.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/manifest.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/match.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/mdiff.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/merge.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/minirst.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/namespaces.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/obsolete.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/patch.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/pathutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/peer.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  mercurial/localrepo.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/lock.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/mail.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/manifest.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/match.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/mdiff.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/merge.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/minirst.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/namespaces.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/obsolete.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/patch.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/pathutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/peer.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/pure/mpatch.py: error importing module: <ImportError> cannot import name 'pycompat' (line *) (glob)
   mercurial/pure/parsers.py: error importing module: <ImportError> No module named 'mercurial.pure.node' (line *) (glob)
-  mercurial/pushkey.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
-  mercurial/pvec.py: error importing: <TypeError> getattr(): attribute name must be string (error at pycompat.py:*) (glob)
+  mercurial/pushkey.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
+  mercurial/pvec.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/registrar.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/repair.py: error importing module: <SyntaxError> invalid syntax (bundle2.py, line *) (glob)
   mercurial/repoview.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/revlog.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/revset.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/scmutil.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)
   mercurial/scmwindows.py: error importing module: <ImportError> No module named '_winreg' (line *) (glob)
   mercurial/similar.py: error importing: <TypeError> getattr(): attribute name must be string (error at util.py:*) (glob)


More information about the Mercurial-devel mailing list