[Zope3-checkins] CVS: Packages/ZConfig - info.py:1.7 loader.py:1.7 schema.py:1.11

Fred L. Drake, Jr. fred@zope.com
Thu, 9 Jan 2003 00:43:02 -0500


Update of /cvs-repository/Packages/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv29797

Modified Files:
	info.py loader.py schema.py 
Log Message:
Change some naming based on a discussion with Chris and Shane; the primary
intent being to make this easier to explain.

- <sectiongroup type="foo"/> becomes <abstracttype name="foo"/>
- <sectiontype type="foo"/> becomes <sectiontype name="foo"/>
- <sectiontype ... group="foo"/> becomes <sectiontype ... implements="foo"/>
- several internal names get changed to use names consistent with the
  new terminology


=== Packages/ZConfig/info.py 1.6 => 1.7 ===
--- Packages/ZConfig/info.py:1.6	Mon Jan  6 17:30:18 2003
+++ Packages/ZConfig/info.py	Thu Jan  9 00:42:28 2003
@@ -88,7 +88,7 @@
         clsname = self.__class__.__name__
         return "<%s for %s>" % (clsname, `self.name`)
 
-    def istypegroup(self):
+    def isabstract(self):
         return False
 
     def ismulti(self):
@@ -160,7 +160,7 @@
                 raise ZConfig.SchemaError(
                     "sections which can occur more than once must"
                     " specify a target attribute name")
-        if sectiontype.istypegroup():
+        if sectiontype.isabstract():
             datatype = None
         else:
             datatype = sectiontype.datatype
@@ -197,7 +197,7 @@
             return None
 
 
-class GroupType:
+class AbstractType:
     def __init__(self, name):
         self._subtypes = {}
         self.name = name
@@ -209,7 +209,7 @@
         try:
             return self._subtypes[name]
         except KeyError:
-            raise ZConfig.SchemaError("no subtype %s in group %s"
+            raise ZConfig.SchemaError("no sectiontype %s in abstracttype %s"
                                       % (`name`, `self.name`))
 
     def getsubtypenames(self):
@@ -217,7 +217,7 @@
         L.sort()
         return L
 
-    def istypegroup(self):
+    def isabstract(self):
         return True
 
 
@@ -315,7 +315,7 @@
                         raise ZConfig.ConfigurationError(
                             "section name %s already in use for key" % key)
                     st = info.sectiontype
-                    if st.istypegroup():
+                    if st.isabstract():
                         try:
                             st = st.getsubtype(type)
                         except ZConfig.ConfigurationError:
@@ -327,17 +327,17 @@
                             "name %s must be used for a %s section"
                             % (`name`, `st.name`))
                     return index
-            # else must be a section or a sectiongroup:
+            # else must be a sectiontype or an abstracttype:
             elif info.sectiontype.name == type:
                 if not (name or info.allowUnnamed()):
                     raise ZConfig.ConfigurationError(
                         `type` + " sections must be named")
                 return index
-            elif info.sectiontype.istypegroup():
+            elif info.sectiontype.isabstract():
                 st = info.sectiontype
                 if st.name == type:
                     raise ZConfig.ConfigurationError(
-                        "cannot define section with a sectiongroup type")
+                        "cannot define section with an abstract type")
                 try:
                     st = st.getsubtype(type)
                 except ZConfig.ConfigurationError:
@@ -350,11 +350,11 @@
     def getsectioninfo(self, type, name):
         i = self.getsectionindex(type, name)
         st = self._children[i][1]
-        if st.istypegroup():
+        if st.isabstract():
             st = st.gettype(type)
         return st
 
-    def istypegroup(self):
+    def isabstract(self):
         return False
 
 


=== Packages/ZConfig/loader.py 1.6 => 1.7 ===
--- Packages/ZConfig/loader.py:1.6	Tue Jan  7 15:02:35 2003
+++ Packages/ZConfig/loader.py	Thu Jan  9 00:42:28 2003
@@ -168,7 +168,7 @@
 
 class ConfigLoader(BaseLoader):
     def __init__(self, schema):
-        if schema.istypegroup():
+        if schema.isabstract():
             raise ZConfig.SchemaError(
                 "cannot check a configuration an abstract type")
         BaseLoader.__init__(self)
@@ -186,12 +186,12 @@
         if delegatename:
             raise NotImpementedError("section delegation is not yet supported")
         t = self.schema.gettype(type)
-        if t.istypegroup():
+        if t.isabstract():
             raise ZConfig.ConfigurationError(
                 "concrete sections cannot match abstract section types;"
                 " found abstract type " + `type`)
         ci = parent.type.getsectioninfo(type, name)
-        assert not ci.istypegroup()
+        assert not ci.isabstract()
         if not ci.isAllowedName(name):
             raise ZConfig.ConfigurationError(
                 "%s is not an allowed name for %s sections"


=== Packages/ZConfig/schema.py 1.10 => 1.11 ===
--- Packages/ZConfig/schema.py:1.10	Tue Jan  7 17:24:55 2003
+++ Packages/ZConfig/schema.py	Thu Jan  9 00:42:28 2003
@@ -47,7 +47,7 @@
 class BaseParser(xml.sax.ContentHandler):
 
     _cdata_tags = "description", "metadefault", "example", "default"
-    _handled_tags = ("import", "sectiongroup", "sectiontype",
+    _handled_tags = ("import", "abstracttype", "sectiontype",
                      "key", "multikey", "section", "multisection")
 
     def __init__(self, registry, loader, url):
@@ -60,7 +60,6 @@
         self._prefixes = []
         self._schema = None
         self._stack = []
-        self._group = None
         self._url = url
         self._components = {}
 
@@ -285,9 +284,9 @@
         pass
 
     def start_sectiontype(self, attrs):
-        name = attrs.get("type")
+        name = attrs.get("name")
         if not name:
-            self.error("sectiontype type must not be omitted or empty")
+            self.error("sectiontype name must not be omitted or empty")
         name = self.basic_key(name)
         self.push_prefix(attrs)
         keytype, valuetype, datatype = self.get_sect_typeinfo(attrs)
@@ -296,7 +295,7 @@
             base = self._schema.gettype(basename)
             if not self._localtypes.has_key(basename):
                 self.error("cannot extend type derived outside component")
-            if base.istypegroup():
+            if base.isabstract():
                 self.error("sectiontype cannot extend an abstract type")
             if attrs.has_key("keytype"):
                 self.error("derived sectiontype may not specify a keytype")
@@ -305,17 +304,13 @@
         else:
             sectinfo = self._schema.createSectionType(
                 name, keytype, valuetype, datatype)
-        if self._group is not None:
-            if attrs.has_key("group"):
-                self.error("sectiontype cannot specify group"
-                           " if nested in a sectiongroup")
-            self._group.addsubtype(sectinfo)
-        elif attrs.has_key("group"):
-            groupname = self.basic_key(attrs["group"])
-            group = self._schema.gettype(groupname)
-            if not group.istypegroup():
-                self.error("type specified as group is not a sectiongroup")
-            group.addsubtype(sectinfo)
+        if attrs.has_key("implements"):
+            ifname = self.basic_key(attrs["implements"])
+            interface = self._schema.gettype(ifname)
+            if not interface.isabstract():
+                self.error(
+                    "type specified by implements is not an abstracttype")
+            interface.addsubtype(sectinfo)
         self._stack.append(sectinfo)
 
     def end_sectiontype(self):
@@ -353,21 +348,16 @@
     def end_multisection(self):
         self._stack.pop()
 
-    def start_sectiongroup(self, attrs):
-        if self._group is not None:
-            self.error("sectiongroup elements cannot be nested")
-        self.push_prefix(attrs)
-        name = attrs.get("type")
+    def start_abstracttype(self, attrs):
+        name = attrs.get("name")
         if not name:
-            self.error("sectiongroup must be named")
+            self.error("abstracttype name must not be omitted or empty")
         name = self.basic_key(name)
-        self._group = info.GroupType(name)
-        self._schema.addtype(self._group)
-        self._stack.append(self._group)
+        abstype = info.AbstractType(name)
+        self._schema.addtype(abstype)
+        self._stack.append(abstype)
 
-    def end_sectiongroup(self):
-        self.pop_prefix()
-        self._group = None
+    def end_abstracttype(self):
         self._stack.pop()
 
     def start_key(self, attrs):