* test_*.py: new lambda syntax (also affects tests for filter, map,
  reduce)
* ftplib.py: added default callback for retrlines; added dir() method
* ftplib.py: don't return self in self.connect(); added hack so that if
  'CDUP' is not understood, 'CWD ..' is tried.
* ftplib.py: second method called init() should have been called
  connect(); if __init__ sees more than one argument, it will also try to
  login().
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
new file mode 100644
index 0000000..f6b2f82
--- /dev/null
+++ b/Lib/UserDict.py
@@ -0,0 +1,18 @@
+# A more or less complete user-defined wrapper around dictionary objects
+
+class UserDict:
+	def __init__(self): self.data = {}
+	def __repr__(self): return repr(self.data)
+	def __cmp__(self, dict):
+		if type(dict) == type(self.data):
+			return cmp(self.data, dict)
+		else:
+			return cmp(self.data, dict.data)
+	def __len__(self): return len(self.data)
+	def __getitem__(self, key): return self.data[key]
+	def __setitem__(self, key, item): self.data[key] = item
+	def __delitem__(self, key): del self.data[key]
+	def keys(self): return self.data.keys()
+	def items(self): return self.data.items()
+	def values(self): return self.data.values()
+	def has_key(self, key): return self.data.has_key(key)