'Creates a entity from a list of property values.
Args:
values: list/tuple of str
key_name: if provided, the name for the (single) resulting entity
parent: A datastore.Key instance for the parent, or None
Returns:
list of db.Model
The returned entities are populated with the property values from the
argument, converted to native types using the properties map given in
the constructor, and passed through handle_entity. They\'re ready to be
inserted.
Raises:
AssertionError: if the number of values doesn\'t match the number
of properties in the properties map.
ValueError: if any element of values is None or empty.
TypeError: if values is not a list or tuple.'

def create_entity(self, values, key_name=None, parent=None):

    Validate(values, (list, tuple))
    assert (len(values) == len(self.__properties)), ('Expected    %d    columns,    found    %d.' % (len(self.__properties), len(values)))
    model_class = GetImplementationClass(self.kind)
    properties = {'key_name': key_name, 'parent': parent}
    for ((name, converter), val) in zip(self.__properties, values):
        if ((converter is bool) and (val.lower() in ('0', 'false', 'no'))):
            val = False
        properties[name] = converter(val)
    entity = model_class(**properties)
    entities = self.handle_entity(entity)
    if entities:
        if (not isinstance(entities, (list, tuple))):
            entities = [entities]
        for entity in entities:
            if (not isinstance(entity, db.Model)):
                raise TypeError(('Expected    a    db.Model,    received    %s    (a    %s).' % (entity, entity.__class__)))
    return entities
