[PATCH 01 of 10] contrib: have import-checker work mostly with native strings for mod names

Augie Fackler raf at durin42.com
Wed Aug 23 14:55:00 UTC 2017


# HG changeset patch
# User Augie Fackler <raf at durin42.com>
# Date 1503421161 14400
#      Tue Aug 22 12:59:21 2017 -0400
# Node ID e915b9703f675b2f76c512347ddff0f6c65a9748
# Parent  edf503e5dfd408f900f3bad0a6923573813e276b
contrib: have import-checker work mostly with native strings for mod names

Module names are a bit awkward to deal with portably otherwise.

diff --git a/contrib/import-checker.py b/contrib/import-checker.py
--- a/contrib/import-checker.py
+++ b/contrib/import-checker.py
@@ -147,6 +147,8 @@ def fromlocalfunc(modulename, localmods)
     >>> fromlocal2('bar', 2)
     ('foo.bar', 'foo.bar.__init__', True)
     """
+    if not isinstance(modulename, str):
+        modulename = modulename.decode('ascii')
     prefix = '.'.join(modulename.split('.')[:-1])
     if prefix:
         prefix += '.'
@@ -406,6 +408,8 @@ def verify_modern_convention(module, roo
     * Certain modules must be aliased to alternate names to avoid aliasing
       and readability problems. See `requirealias`.
     """
+    if not isinstance(module, str):
+        module = module.decode('ascii')
     topmodule = module.split('.')[0]
     fromlocal = fromlocalfunc(module, localmods)
 
@@ -724,6 +728,9 @@ def main(argv):
         localmodpaths[modname] = source_path
     localmods = populateextmods(localmodpaths)
     for localmodname, source_path in sorted(localmodpaths.items()):
+        if not isinstance(localmodname, bytes):
+            # This is only safe because all hg's files are ascii
+            localmodname = localmodname.encode('ascii')
         for src, modname, name, line in sources(source_path, localmodname):
             try:
                 used_imports[modname] = sorted(


More information about the Mercurial-devel mailing list