from __future__ import absolute_import, unicode_literals
class CoerciveList(list):
    """List subclass that coerces every element in the list
    to an appropriate type.
    def __init__(self, coerce, iterable=None):
        """Initialize the coercive list, saving the field class that
        knows how to do the coercison, as well as any list sent.
        super(CoerciveList, self).__init__()
        self.coerce = coerce
        if iterable:
    def __copy__(self):
        """Create a copy of this list."""
        return self.__class__(self.coerce, self)
    def __repr__(self):
        return super(CoerciveList, self).__repr__()
    def append(self, item):
        item = self.coerce(item)
        super(CoerciveList, self).append(item)
    def extend(self, iterable):
        for item in iterable:
    def insert(self, index, item):
        item = self.coerce(item)
        super(CoerciveList, self).insert(index, item)