From: Thomas Heller Date: Thu, 14 Nov 2002 18:45:11 +0000 (+0000) Subject: Enhancement for ModuleFinder, it can now handle _xmlplus aka PyXML. X-Git-Tag: v2.3c1~3420 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c7aaf953faf3f4f22c8a77209927dcacfba91490;p=thirdparty%2FPython%2Fcpython.git Enhancement for ModuleFinder, it can now handle _xmlplus aka PyXML. Fixes SF # 637835. --- diff --git a/Tools/freeze/modulefinder.py b/Tools/freeze/modulefinder.py index 96fc2f7822aa..5886e7be21b8 100644 --- a/Tools/freeze/modulefinder.py +++ b/Tools/freeze/modulefinder.py @@ -29,6 +29,17 @@ def AddPackagePath(packagename, path): paths.append(path) packagePathMap[packagename] = paths +replacePackageMap = {} + +# This ReplacePackage mechanism allows modulefinder to work around the +# way the _xmlplus package injects itself under the name "xml" into +# sys.modules at runtime by calling ReplacePackage("_xmlplus", "xml") +# before running ModuleFinder. + +def ReplacePackage(oldname, newname): + replacePackageMap[oldname] = newname + + class Module: def __init__(self, name, file=None, path=None): @@ -336,6 +347,9 @@ class ModuleFinder: def load_package(self, fqname, pathname): self.msgin(2, "load_package", fqname, pathname) + newname = replacePackageMap.get(fqname) + if newname: + fqname = newname m = self.add_module(fqname) m.__file__ = pathname m.__path__ = [pathname]