ok that explains it, so unicode(obj) calls __unicode__ on that object and if it isn't there __repr__ is used __repr__ of list by default return a str even if __repr__ of element is unicode
so my only solution looks like to use my own list class everywhere i use list class mylist(list): def __unicode__(self): return u"["+u''.join(map(unicode,self))+u"]" -- http://mail.python.org/mailman/listinfo/python-list