# HG changeset patch # User Brodie Rao # Date 1247060928 14400 # Node ID 5e4654f5522dc44dddd18c5e473fa2ecc84086c0 # Parent 431462bd84782c34670d53d8e6c8d907e408cf27 win32mbcs: look up modules using sys.modules (issue1729) globals()[module] doesn't work for modules inside of packages, such as os.path. diff -r 431462bd8478 -r 5e4654f5522d hgext/win32mbcs.py --- a/hgext/win32mbcs.py Thu Jul 09 17:10:07 2009 -0500 +++ b/hgext/win32mbcs.py Wed Jul 08 09:48:48 2009 -0400 @@ -38,7 +38,7 @@ setting or HGENCODING. ''' -import os +import os, sys from mercurial.i18n import _ from mercurial import util, encoding @@ -79,10 +79,8 @@ " %s encoding\n") % (encoding.encoding)) def wrapname(name): - idx = name.rfind('.') - module = name[:idx] - name = name[idx+1:] - module = globals()[module] + module, name = name.rsplit('.', 1) + module = sys.modules[module] func = getattr(module, name) def f(*args): return wrapper(func, args) @@ -97,7 +95,8 @@ # they use result of os.path.split() funcs = '''os.path.join os.path.split os.path.splitext os.path.splitunc os.path.normpath os.path.normcase os.makedirs - util.endswithsep util.splitpath util.checkcase util.fspath''' + mercurial.util.endswithsep mercurial.util.splitpath mercurial.util.checkcase + mercurial.util.fspath''' # codec and alias names of sjis and big5 to be faked. problematic_encodings = '''big5 big5-tw csbig5 big5hkscs big5-hkscs