code: def unique(self, key=None):
          
          if isinstance(key, basestring):
              key = lambda r, attr=key: getattr(r, attr, None)
          ret = self.copy_template()
          seen = set()
          for ob in self:
              if key is None:
                  try:
                      ob_dict = vars(ob)
                  except TypeError:
                      ob_dict = dict((k, getattr(ob, k)) for k in _object_attrnames(ob))
                  reckey = tuple(sorted(ob_dict.items()))
              else:
                  reckey = key(ob)
              if reckey not in seen:
                  seen.add(reckey)
                  ret.insert(ob)
          return ret
docs: Create a new table of objects,containing no duplicate values.
  
          @param key: (default=None) optional callable for computing a representative unique key for each
          object in the table. If None, then a key will be composed as a tuple of all the values in the object.
          @type key: callable, takes the record as an argument, and returns the key value or tuple to be used
          to represent uniqueness.