def __init__(*args, **kwds):
if len(args) > <NUM_LIT:1>:<EOL><INDENT>raise TypeError('<STR_LIT>')<EOL><DEDENT>(self,) = args<EOL>get_arg = self.__get_arg<EOL>key = get_arg(kwds, '<STR_LIT:key>')<EOL>id = get_arg(kwds, '<STR_LIT:id>')<EOL>app = get_arg(kwds, '<STR_LIT>')<EOL>namespace = get_arg(kwds, '<STR_LIT>')<EOL>parent = get_arg(kwds, '<STR_LIT>')<EOL>projection = get_arg(kwds, '<STR_LIT>')<EOL>if key is not None:<EOL><INDENT>if (id is not None or parent is not None or<EOL>app is not None or namespace is not None):<EOL><INDENT>raise datastore_errors.BadArgumentError(<EOL>'<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>self._key = _validate_key(key, entity=self)<EOL><DEDENT>elif (id is not None or parent is not None or<EOL>app is not None or namespace is not None):<EOL><INDENT>self._key = Key(self._get_kind(), id,<EOL>parent=parent, app=app, namespace=namespace)<EOL><DEDENT>self._values = {}<EOL>self._set_attributes(kwds)<EOL>if projection:<EOL><INDENT>self._set_projection(projection)<EOL><DEDENT>
Creates a new instance of this model (a.k.a. an entity).

        The new entity must be written to Cloud 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.