[Zodb-checkins] CVS: Zope/lib/python/ZConfig - SchemaContext.py:1.1.2.4 SchemaInterfaces.py:1.1.2.2

Chris McDonough chrism@zope.com
Mon, 25 Nov 2002 16:42:30 -0500


Update of /cvs-repository/Zope/lib/python/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv20928

Modified Files:
      Tag: chrism-install-branch
	SchemaContext.py SchemaInterfaces.py 
Log Message:
Document context interfaces and fix existing interfaces to match implementation.


=== Zope/lib/python/ZConfig/SchemaContext.py 1.1.2.3 => 1.1.2.4 ===
--- Zope/lib/python/ZConfig/SchemaContext.py:1.1.2.3	Mon Nov 25 13:02:45 2002
+++ Zope/lib/python/ZConfig/SchemaContext.py	Mon Nov 25 16:42:29 2002
@@ -17,10 +17,12 @@
 import os, urllib
 import SchemaParser
 from SchemaParser import SchemaError
+from SchemaInterfaces import ISchemaContext
 from Common import *
 import Context
 
 class SchemaContext(Context.Context):
+    __implements__ = ISchemaContext
     def load(self, url):
         if self.getConfig() is None:
             raise SchemaError, 'No schema set on context'


=== Zope/lib/python/ZConfig/SchemaInterfaces.py 1.1.2.1 => 1.1.2.2 ===
--- Zope/lib/python/ZConfig/SchemaInterfaces.py:1.1.2.1	Thu Nov 21 12:49:21 2002
+++ Zope/lib/python/ZConfig/SchemaInterfaces.py	Mon Nov 25 16:42:29 2002
@@ -2,11 +2,13 @@
 import Interface
 
 class IConfig(Interface.Interface):
-    def __init__(type, name, context):
+    def __init__(type, name, context, parent):
         """
         Initializes the configuration object.  The type is the
         configuration object type, the name is the configuration object
-        name, and the context is a SchemaContext object.
+        name, the context is a SchemaContext object, and the parent
+        is the parent object of the configuration object in
+        the configuration tree.
         """
         
     def getValue():
@@ -29,10 +31,7 @@
         """
         Returns a default value for the configuration object.
         If the configuration object does not have a default value (if it
-        is required), this method should not be overridden on a subclass,
-        as the base class definition will return a 'missing value'
-        marker that is understood by the rest of the configuration
-        machinery.
+        is required), this method should not be overridden on a subclass.
         """
 
 class IConfigKey(IConfig):
@@ -80,12 +79,12 @@
         sections found in the configuration file.
         """
 
-    def multidefault():
+    def default():
         """
         Returns a default value if no instances of a multiply-definable
-        key or section are found in the config file.  Do not override
-        this in a subclass if the multi-key or multi-section is required
-        (the base class definition will return a missing value marker).
+        key or section are found in the config file.  The method should
+        return a sequence.  Do not override this in a subclass if the
+        multi-key or multi-section is required.
         """
 
 class IConfigMultiKey(IConfigMulti, IConfigKey):
@@ -97,3 +96,27 @@
         'the ISection interface).'
         )
     pass
+
+class ISchemaContext(Interface.Interface):
+    def load(url):
+        """
+        Loads a configuration from a URL.  A schema must have been
+        loaded first or a SchemaError is raised.
+        """
+
+    def loadfile(file, url):
+        """
+        Loads a configuration from a file.   Has same semantics as load.
+        """
+
+    def loadschema(schema):
+        """
+        Loads a schema represented as a path to 'schema'.
+        """
+
+    def getConfig():
+        """
+        Returns the top-level object in the configuration tree
+        represented by the current schema.
+        """
+