[wwwsearch-commits] r17751 - wwwsearch/ClientForm/trunk

jjlee at codespeak.net jjlee at codespeak.net
Thu Sep 22 00:27:06 CEST 2005


Author: jjlee
Date: Thu Sep 22 00:27:06 2005
New Revision: 17751

Modified:
   wwwsearch/ClientForm/trunk/ClientForm.py
Log:
Remove AList and MapBase :-)

Modified: wwwsearch/ClientForm/trunk/ClientForm.py
==============================================================================
--- wwwsearch/ClientForm/trunk/ClientForm.py	(original)
+++ wwwsearch/ClientForm/trunk/ClientForm.py	Thu Sep 22 00:27:06 2005
@@ -27,7 +27,6 @@
 # XXXX
 # _find_control &c. and ambiguous control labels
 # SelectControl and labels -- backwards compat., multiple labels
-# Get rid of AList &c
 # choose_boundary .-replacement: merge with cut-n-pasted code from
 #  mimetools!
 
@@ -57,7 +56,7 @@
 #  application/x-www-form-urlencoded and there's a FILE control present.
 #  Strictly, it should be 'name=data' (see HTML 4.01 spec., section
 #  17.13.2), but I send "name=" ATM.  What about multiple file upload??
-# Get rid of MapBase, AList and MimeWriter.
+# Get rid of MimeWriter.
 # Should really use sgmllib, not htmllib.
 
 # Would be nice, but I'm not going to do it myself:
@@ -209,155 +208,7 @@
     else: return True
 
 
-# XXX don't really want to drag this along (MapBase, AList, MimeWriter,
-#  _choose_boundary)
-
-# This is essentially the same as UserDict.DictMixin.  I wrote this before
-# that appeared, and DictMixin is only available in >= 2.3 anyway.
-class MapBase:
-    """Mapping designed to be easily derived from.
-
-    Subclass it and override __init__, __setitem__, __getitem__, __delitem__
-    and keys.  Nothing else should need to be overridden, unlike UserDict.
-    This significantly simplifies dictionary-like classes.
-
-    Also different from UserDict in that it has a redonly flag, and can be
-    updated (and initialised) with a sequence of pairs (key, value).
-
-    """
-    def __init__(self, init=None):
-        self._data = {}
-        self.readonly = False
-        if init is not None: self.update(init)
-
-    def __getitem__(self, key):
-        return self._data[key]
-
-    def __setitem__(self, key, item):
-        if not self.readonly:
-            self._data[key] = item
-        else:
-            raise TypeError("object doesn't support item assignment")
-
-    def __delitem__(self, key):
-        if not self.readonly:
-            del self._data[key]
-        else:
-            raise TypeError("object doesn't support item deletion")
-
-    def keys(self):
-        return self._data.keys()
-
-    # now the internal workings, there should be no need to override these:
-
-    def clear(self):
-        for k in self.keys():
-            del self[k]
-
-    def __repr__(self):
-        rep = []
-        for k, v in self.items():
-            rep.append("%s: %s" % (repr(k), repr(v)))
-        return self.__class__.__name__+"{"+(string.join(rep, ", "))+"}"
-
-    def copy(self):
-        return copy.copy(self)
-
-    def __cmp__(self, dict):
-        # note: return value is *not* boolean
-        for k, v in self.items():
-            if not (dict.has_key(k) and dict[k] == v):
-                return 1  # different
-        return 0  # the same
-
-    def __len__(self):
-        return len(self.keys())
-
-    def values(self):
-        r = []
-        for k in self.keys():
-            r.append(self[k])
-        return r
-
-    def items(self):
-        keys = self.keys()
-        vals = self.values()
-        r = []
-        for i in len(self):
-            r.append((keys[i], vals[i]))
-        return r
-
-    def has_key(self, key):
-        return key in self.keys()
-
-    def update(self, map):
-        if issequence(map) and not isstringlike(map):
-            items = map
-        else:
-            items = map.items()
-        for tup in items:
-            if not isinstance(tup, TupleType):
-                raise TypeError(
-                    "MapBase.update requires a map or a sequence of pairs")
-            k, v = tup
-            self[k] = v
-
-    def get(self, key, failobj=None):
-        if key in self.keys():
-            return self[key]
-        else:
-            return failobj
-
-    def setdefault(self, key, failobj=None):
-        if not self.has_key(key):
-            self[key] = failobj
-        return self[key]
-
-
-class AList(MapBase):
-    """Read-only ordered mapping."""
-    def __init__(self, seq=[]):
-        self.readonly = True
-        self._inverted = False
-        self._data = list(seq[:])
-        self._keys = []
-        self._values = []
-        for key, value in seq:
-            self._keys.append(key)
-            self._values.append(value)
-
-    def set_inverted(self, inverted):
-        if (inverted and not self._inverted) or (
-            not inverted and self._inverted):
-            self._keys, self._values = self._values, self._keys
-        if inverted: self._inverted = True
-        else: self._inverted = False
-
-    def __getitem__(self, key):
-        try:
-            i = self._keys.index(key)
-        except ValueError:
-            raise KeyError(key)
-        return self._values[i]
-
-    def __delitem__(self, key):
-        try:
-            i = self._keys.index[key]
-        except ValueError:
-            raise KeyError(key)
-        del self._values[i]
-
-    def keys(self): return list(self._keys[:])
-    def values(self): return list(self._values[:])
-    def items(self):
-        data = self._data[:]
-        if not self._inverted:
-            return data
-        else:
-            newdata = []
-            for k, v in data:
-                newdata.append((v, k))
-            return newdata
+# XXX don't really want to drag this along (MimeWriter, _choose_boundary)
 
 # --------------------------------------------------------------------
 # grabbed from Python standard library mimetools module and tweaked to


More information about the wwwsearch-commits mailing list