'Creates a new instance of this model (a.k.a. an entity).
The new entity must be written to the datastore using an explicit
call to .put().
Keyword Args:
key: Key instance for this model. If key is used, id and parent must
be None.
id: Key id for this model. If id is used, key must be None.
parent: Key instance for the parent model or None for a top-level one.
If parent is used, key must be None.
namespace: Optional namespace.
app: Optional app ID.
**kwds: Keyword arguments mapping to properties of this model.
Note: you cannot define a property named key; the .key attribute
always refers to the entity\'s key.  But you can define properties
named id or parent.  Values for the latter cannot be passed
through the constructor, but can be assigned to entity attributes
after the entity has been created.'

def __init__(*args, **kwds):

    if (len(args) > 1):
        raise TypeError('Model    constructor    takes    no    positional    arguments.')
    (self,) = args
    get_arg = self.__get_arg
    key = get_arg(kwds, 'key')
    id = get_arg(kwds, 'id')
    app = get_arg(kwds, 'app')
    namespace = get_arg(kwds, 'namespace')
    parent = get_arg(kwds, 'parent')
    projection = get_arg(kwds, 'projection')
    if (key is not None):
        if ((id is not None) or (parent is not None) or (app is not None) or (namespace is not None)):
            raise datastore_errors.BadArgumentError('Model    constructor    given    key=    does    not    accept    id=,    app=,    namespace=,    or    parent=.')
        self._key = _validate_key(key, entity=self)
    elif ((id is not None) or (parent is not None) or (app is not None) or (namespace is not None)):
        self._key = Key(self._get_kind(), id, parent=parent, app=app, namespace=namespace)
    self._values = {}
    self._set_attributes(kwds)
    if projection:
        self._set_projection(projection)
