robustify UserList constructor -- will now accept any sequence
add test cases for non-UserList class, tuple, & string
diff --git a/Lib/UserList.py b/Lib/UserList.py
index 1680327..7bd0298 100644
--- a/Lib/UserList.py
+++ b/Lib/UserList.py
@@ -1,13 +1,16 @@
 """A more or less complete user-defined wrapper around list objects."""
 
 class UserList:
-    def __init__(self, list=None):
+    def __init__(self, initlist=None):
         self.data = []
-        if list is not None:
-            if type(list) == type(self.data):
-                self.data[:] = list
+        if initlist is not None:
+            # XXX should this accept an arbitary sequence?
+            if type(initlist) == type(self.data):
+                self.data[:] = initlist
+            elif isinstance(initlist, UserList):
+                self.data[:] = initlist.data[:]
             else:
-                self.data[:] = list.data[:]
+                self.data = list(initlist)
     def __repr__(self): return repr(self.data)
     def __cmp__(self, other):
         if isinstance(other, UserList):
diff --git a/Lib/test/test_userlist.py b/Lib/test/test_userlist.py
index b684689..6c627c0 100644
--- a/Lib/test/test_userlist.py
+++ b/Lib/test/test_userlist.py
@@ -18,6 +18,17 @@
 uu1 = UserList(u1)
 uu2 = UserList(u2)
 
+v = UserList(tuple(u))
+class OtherList:
+    def __init__(self, initlist):
+        self.__data = initlist
+    def __len__(self):
+        return len(self.__data)
+    def __getitem__(self, i):
+        return self.__data[i]
+v0 = UserList(OtherList(u0))
+vv = UserList("this is also a sequence")
+
 # Test __repr__
 
 assert str(u0) == str(l0)