[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