'Fails if any element in the ``list`` is found from it more than once.
The default error message lists all the elements that were found
from the ``list`` multiple times, but it can be overridden by giving
a custom ``msg``. All multiple times found items and their counts are
also logged.
This keyword works with all iterables that can be converted to a list.
The original iterable is never altered.'

def list_should_not_contain_duplicates(self, list_, msg=None):

    if (not isinstance(list_, list)):
        list_ = list(list_)
    dupes = []
    for item in list_:
        if (item not in dupes):
            count = list_.count(item)
            if (count > 1):
                logger.info(("'%s'    found    %d    times." % (item, count)))
                dupes.append(item)
    if dupes:
        raise AssertionError((msg or ('%s    found    multiple    times.' % seq2str(dupes))))
