'Construct ListProperty.
Args:
item_type: Type for the list items; must be one of the allowed property
types.
verbose_name: Optional verbose name.
write_empty_list: Optional whether to write empty list properties or no
property
default: Optional default value; if omitted, an empty list is used.
**kwds: Optional additional keyword arguments, passed to base class.
Note that the only permissible value for \'required\' is True.'

def __init__(self, item_type, verbose_name=None, default=None, write_empty_list=None, **kwds):

    if (item_type is str):
        item_type = basestring
    if (not isinstance(item_type, type)):
        raise TypeError('Item    type    should    be    a    type    object')
    if (item_type not in _ALLOWED_PROPERTY_TYPES):
        raise ValueError(('Item    type    %s    is    not    acceptable' % item_type.__name__))
    if issubclass(item_type, (Blob, Text)):
        self._require_parameter(kwds, 'indexed', False)
        kwds['indexed'] = True
    self._require_parameter(kwds, 'required', True)
    if (default is None):
        default = []
    self.item_type = item_type
    if (write_empty_list is not None):
        self._write_empty_list = write_empty_list
    super(ListProperty, self).__init__(verbose_name, default=default, **kwds)
