From: brian z. <bz...@us...> - 2005-04-04 01:24:40
|
Update of /cvsroot/jython/jython/org/python/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19646/org/python/core Modified Files: Tag: pep302 PySystemState.java imp.java Added Files: Tag: pep302 PrecompiledImporter.java Log Message: moved precompiled java loading to importer; added new importer to meta_path --- NEW FILE: PrecompiledImporter.java --- package org.python.core; /** * An importer for classes pre-compiled with JythonC. * */ public class PrecompiledImporter extends PyObject { public PrecompiledImporter() { this(Py.None); } public PrecompiledImporter(PyObject path) { super(); } /** * Find the module for the fully qualified name. * @param name the fully qualified name of the module * @return a loader instance if this importer can load the module, None otherwise */ public PyObject find_module(String name) { return find_module(name, Py.None); } /** * Find the module for the fully qualified name. * @param name the fully qualified name of the module * @param path if installed on the meta-path None or a module path * @return a loader instance if this importer can load the module, None otherwise */ public PyObject find_module(String name, PyObject path) { if (Py.frozenModules != null) { //System.out.println("precomp: "+name+", "+name); Class c; if (Py.frozenModules.get(name+".__init__") != null) { //System.err.println("trying: "+name+".__init__$_PyInner"); Py.writeComment("import", "trying " + name + " as precompiled package"); c = findPyClass(name+".__init__"); if (c == null) { return Py.None; } Py.writeComment("import", "'" + name + "' as " + "precompiled package"); //System.err.println("found: "+name+".__init__$_PyInner"); } else if (Py.frozenModules.get(name) != null) { Py.writeComment("import", "trying " + name + " as precompiled module"); c = findPyClass(name); if (c == null) { return Py.None; } Py.writeComment("import", "'" + name + "' as " + "precompiled module"); } else { return Py.None; } return this; } return Py.None; } public PyObject load_module(String name) { if (Py.frozenModules != null) { Class c; if (Py.frozenModules.get(name+".__init__") != null) { c = findPyClass(name+".__init__"); if (c == null) { throw Py.ImportError(name); } PyModule m = imp.addModule(name); m.__dict__.__setitem__("__path__", new PyList()); } else if (Py.frozenModules.get(name) != null) { c = findPyClass(name); if (c == null) { throw Py.ImportError(name); } } else { throw Py.ImportError(name); } return imp.createFromClass(name, c); } throw Py.ImportError(name); } private Class findPyClass(String name) { if (Py.frozenPackage != null) { name = Py.frozenPackage+"."+name; } return Py.findClassEx(name+"$_PyInner", "precompiled"); } } Index: PySystemState.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PySystemState.java,v retrieving revision 2.82.2.1 retrieving revision 2.82.2.2 diff -C2 -d -r2.82.2.1 -r2.82.2.2 *** PySystemState.java 1 Apr 2005 01:29:30 -0000 2.82.2.1 --- PySystemState.java 4 Apr 2005 01:24:31 -0000 2.82.2.2 *************** *** 232,235 **** --- 232,236 ---- meta_path = new PyList(); + meta_path.append(new PrecompiledImporter()); meta_path.append(new JavaImporter()); path_hooks = new PyList(); Index: imp.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/imp.java,v retrieving revision 2.65.2.1 retrieving revision 2.65.2.2 diff -C2 -d -r2.65.2.1 -r2.65.2.2 *** imp.java 1 Apr 2005 01:29:30 -0000 2.65.2.1 --- imp.java 4 Apr 2005 01:24:32 -0000 2.65.2.2 *************** *** 282,289 **** } ! PyObject ret = loadPrecompiled(moduleName); ! if (ret != null) return ret; ! ! ret = loadBuiltin(moduleName); if (ret != null) return ret; --- 282,286 ---- } ! PyObject ret = loadBuiltin(moduleName); if (ret != null) return ret; *************** *** 313,322 **** } - // JavaImporter java = new JavaImporter(); - // loader = java.find_module(moduleName); - // if(loader != Py.None) { - // ret = loadFromLoader(loader, moduleName); - // } - return ret; } --- 310,313 ---- *************** *** 350,390 **** } - private static Class findPyClass(String modName) { - if (Py.frozenPackage != null) { - modName = Py.frozenPackage+"."+modName; - } - return Py.findClassEx(modName+"$_PyInner", "precompiled"); - } - - private static PyObject loadPrecompiled(String modName) { - if (Py.frozenModules != null) { - //System.out.println("precomp: "+name+", "+modName); - Class c; - - if (Py.frozenModules.get(modName+".__init__") != null) { - //System.err.println("trying: "+modName+".__init__$_PyInner"); - c = findPyClass(modName+".__init__"); - if (c == null) return null; - Py.writeComment("import", "'" + modName + "' as " + - "precompiled package"); - - //System.err.println("found: "+modName+".__init__$_PyInner"); - PyModule m = addModule(modName); - m.__dict__.__setitem__("__path__", new PyList()); - } - else if (Py.frozenModules.get(modName) != null) { - c = findPyClass(modName); - if (c == null) return null; - Py.writeComment("import", "'" + modName + "' as " + - "precompiled module"); - } - else return null; - - //System.err.println("creating: "+modName+", "+c); - return createFromClass(modName, c); - } - return null; - } - static PyObject loadFromLoader(PyObject importer, String name) { PyObject load_module = importer.__getattr__("load_module"); --- 341,344 ---- |