[Zope3-checkins] CVS: Zope3/src/ZConfig - loader.py:1.22

Fred L. Drake, Jr. fred at zope.com
Fri Oct 3 12:32:41 EDT 2003


Update of /cvs-repository/Zope3/src/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv1758

Modified Files:
	loader.py 
Log Message:
When loading schema components, use the Python import mechanism to load the
package; we only need to look for the schema information within that.


=== Zope3/src/ZConfig/loader.py 1.21 => 1.22 ===
--- Zope3/src/ZConfig/loader.py:1.21	Wed Sep 10 16:14:01 2003
+++ Zope3/src/ZConfig/loader.py	Fri Oct  3 12:32:10 2003
@@ -150,15 +150,19 @@
             raise ZConfig.SchemaError(
                 "illegal schema component name: " + `package`)
         file = file or "component.xml"
-        for dir in sys.path:
-            dirname = os.path.join(os.path.abspath(dir), *parts)
+        __import__(package)
+        pkg = sys.modules[package]
+        if not hasattr(pkg, "__path__"):
+            raise ZConfig.SchemaError(
+                "import name does not refer to a package: " + `package`)
+        for dir in pkg.__path__:
+            dirname = os.path.abspath(dir)
             fn = os.path.join(dirname, file)
             if os.path.exists(fn):
-                break
+                return "file://" + urllib.pathname2url(fn)
         else:
             raise ZConfig.SchemaError(
                 "schema component not found: " + `package`)
-        return "file://" + urllib.pathname2url(fn)
 
 
 class ConfigLoader(BaseLoader):




More information about the Zope3-Checkins mailing list